Skip to content

Commit eb162f9

Browse files
committed
[ws-manager-mk2] Remove headless from status
1 parent 26c520c commit eb162f9

File tree

7 files changed

+22
-24
lines changed

7 files changed

+22
-24
lines changed

components/ws-daemon/pkg/controller/workspace_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ func (wsc *WorkspaceController) handleWorkspaceInit(ctx context.Context, ws *wor
147147
InstanceId: ws.Name,
148148
},
149149
Initializer: &init,
150-
Headless: ws.Status.Headless,
150+
Headless: ws.IsHeadless(),
151151
})
152152

153153
if alreadyInit {

components/ws-manager-api/go/crd/v1/workspace_types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,11 @@ type WorkspaceList struct {
250250
Items []Workspace `json:"items"`
251251
}
252252

253+
// IsHeadless returns whether the workspace is a headless type.
254+
func (w *Workspace) IsHeadless() bool {
255+
return w.Spec.Type != WorkspaceTypeRegular
256+
}
257+
253258
func init() {
254259
SchemeBuilder.Register(&Workspace{}, &WorkspaceList{})
255260
}

components/ws-manager-mk2/controllers/status.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,6 @@ func updateWorkspaceStatus(ctx context.Context, workspace *workspacev1.Workspace
8484
workspace.Status.Runtime.PodName = pod.Name
8585
}
8686

87-
if workspace.Spec.Type != workspacev1.WorkspaceTypeRegular {
88-
workspace.Status.Headless = true
89-
}
90-
9187
if workspace.Status.URL == "" {
9288
url, err := config.RenderWorkspaceURL(cfg.WorkspaceURLTemplate, workspace.Name, workspace.Spec.Ownership.WorkspaceID, cfg.GitpodHostURL)
9389
if err != nil {
@@ -172,7 +168,7 @@ func updateWorkspaceStatus(ctx context.Context, workspace *workspacev1.Workspace
172168
workspace.Status.Phase = workspacev1.WorkspacePhaseInitializing
173169
}
174170

175-
case workspace.Status.Headless && (pod.Status.Phase == corev1.PodSucceeded || pod.Status.Phase == corev1.PodFailed):
171+
case workspace.IsHeadless() && (pod.Status.Phase == corev1.PodSucceeded || pod.Status.Phase == corev1.PodFailed):
176172
workspace.Status.Phase = workspacev1.WorkspacePhaseStopping
177173

178174
case pod.Status.Phase == corev1.PodUnknown:
@@ -249,7 +245,7 @@ func extractFailure(ws *workspacev1.Workspace, pod *corev1.Pod) (string, *worksp
249245
return fmt.Sprintf("container %s ran with an error: exit code %d", cs.Name, terminationState.ExitCode), &phase
250246
}
251247
} else if terminationState.Reason == "Completed" && !isPodBeingDeleted(pod) {
252-
if ws.Status.Headless {
248+
if ws.IsHeadless() {
253249
// headless workspaces are expected to finish
254250
return "", nil
255251
}

components/ws-manager-mk2/controllers/timeout_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ func (r *TimeoutReconciler) isWorkspaceTimedOut(ws *workspacev1.Workspace) (reas
182182
timeout = util.Duration(customTimeout.Duration)
183183
}
184184
activity := activityNone
185-
if ws.Status.Headless {
185+
if ws.IsHeadless() {
186186
timeout = timeouts.HeadlessWorkspace
187187
lastActivity = &start
188188
activity = activityRunningHeadless

components/ws-manager-mk2/controllers/timeout_controller_test.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ var _ = Describe("TimeoutController", func() {
4444
lastActivityAgo *time.Duration
4545
age time.Duration
4646
customTimeout *time.Duration
47+
update func(ws *workspacev1.Workspace)
4748
updateStatus func(ws *workspacev1.Workspace)
4849
controllerRestart time.Time
4950
expectTimeout bool
@@ -59,11 +60,14 @@ var _ = Describe("TimeoutController", func() {
5960
r.activity.Store(ws.Name, now.Add(-*tc.lastActivityAgo))
6061
}
6162

62-
if tc.customTimeout != nil {
63-
updateObjWithRetries(fakeClient, ws, false, func(ws *workspacev1.Workspace) {
63+
updateObjWithRetries(fakeClient, ws, false, func(ws *workspacev1.Workspace) {
64+
if tc.customTimeout != nil {
6465
ws.Spec.Timeout.Time = &metav1.Duration{Duration: *tc.customTimeout}
65-
})
66-
}
66+
}
67+
if tc.update != nil {
68+
tc.update(ws)
69+
}
70+
})
6771
updateObjWithRetries(fakeClient, ws, true, func(ws *workspacev1.Workspace) {
6872
ws.Status.Phase = tc.phase
6973
if tc.updateStatus != nil {
@@ -131,8 +135,8 @@ var _ = Describe("TimeoutController", func() {
131135
}),
132136
Entry("should timeout headless workspace", testCase{
133137
phase: workspacev1.WorkspacePhaseRunning,
134-
updateStatus: func(ws *workspacev1.Workspace) {
135-
ws.Status.Headless = true
138+
update: func(ws *workspacev1.Workspace) {
139+
ws.Spec.Type = workspacev1.WorkspaceTypePrebuild
136140
},
137141
age: 2 * time.Hour,
138142
lastActivityAgo: nil,

components/ws-manager-mk2/controllers/workspace_controller_test.go

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ var _ = Describe("WorkspaceController", func() {
5454
g.Expect(k8sClient.Get(ctx, types.NamespacedName{Name: ws.Name, Namespace: ws.Namespace}, ws)).To(Succeed())
5555
g.Expect(ws.Status.OwnerToken).ToNot(BeEmpty())
5656
g.Expect(ws.Status.URL).ToNot(BeEmpty())
57-
g.Expect(ws.Status.Headless).To(BeFalse())
5857
}, timeout, interval).Should(Succeed())
5958

6059
// TODO(wv): Once implemented, expect EverReady condition.
@@ -196,14 +195,8 @@ var _ = Describe("WorkspaceController", func() {
196195
ws.Spec.Type = workspacev1.WorkspaceTypePrebuild
197196
pod = createWorkspaceExpectPod(ws)
198197

199-
// Expect headless status to be reported.
200-
Eventually(func() (bool, error) {
201-
err := k8sClient.Get(ctx, types.NamespacedName{Name: ws.Name, Namespace: ws.Namespace}, ws)
202-
if err != nil {
203-
return false, err
204-
}
205-
return ws.Status.Headless, nil
206-
}, timeout, interval).Should(BeTrue())
198+
// Expect headless.
199+
Expect(ws.IsHeadless()).To(BeTrue())
207200

208201
// Expect runtime status also gets reported for headless workspaces.
209202
expectRuntimeStatus(ws, pod)

components/ws-manager-mk2/service/manager.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,7 @@ func extractWorkspaceStatus(ws *workspacev1.Workspace) *wsmanapi.WorkspaceStatus
819819
SupervisorRef: ws.Spec.Image.IDE.Supervisor,
820820
},
821821
IdeImageLayers: ws.Spec.Image.IDE.Refs,
822-
Headless: ws.Status.Headless,
822+
Headless: ws.IsHeadless(),
823823
Url: ws.Status.URL,
824824
Type: tpe,
825825
Timeout: timeout,

0 commit comments

Comments
 (0)