Skip to content

Commit 6ea11f9

Browse files
committed
[ws-manager-mk2] Ensure workspace enters stopped
1 parent c0826d5 commit 6ea11f9

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func NewWorkspaceOperations(config content.Config, store *session.Store, reg pro
8686
func (wso *WorkspaceOperations) InitWorkspaceContent(ctx context.Context, options InitContentOptions) (bool, string, error) {
8787
res, err := wso.store.NewWorkspace(
8888
ctx, options.Meta.InstanceId, filepath.Join(wso.store.Location, options.Meta.InstanceId),
89-
wso.creator(options.Meta.Owner, options.Meta.WorkspaceId, options.Meta.InstanceId, options.Initializer, options.Headless))
89+
wso.creator(options.Meta.Owner, options.Meta.WorkspaceId, options.Meta.InstanceId, options.Initializer, false))
9090
if errors.Is(err, storage.ErrNotFound) {
9191
return false, "", nil
9292
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,10 @@ func updateWorkspaceStatus(ctx context.Context, workspace *workspacev1.Workspace
175175
case workspace.Status.Headless && (pod.Status.Phase == corev1.PodSucceeded || pod.Status.Phase == corev1.PodFailed):
176176
workspace.Status.Phase = workspacev1.WorkspacePhaseStopping
177177

178+
if isDisposalFinished(workspace) {
179+
workspace.Status.Phase = workspacev1.WorkspacePhaseStopped
180+
}
181+
178182
case pod.Status.Phase == corev1.PodUnknown:
179183
workspace.Status.Phase = workspacev1.WorkspacePhaseUnknown
180184

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,16 @@ func (r *WorkspaceReconciler) actOnStatus(ctx context.Context, workspace *worksp
241241
return ctrl.Result{Requeue: true}, err
242242
}
243243

244+
case workspace.Status.Headless && workspace.Status.Phase == workspacev1.WorkspacePhaseStopped && !isPodBeingDeleted(pod):
245+
// Workspace was requested to be deleted, propagate by deleting the Pod.
246+
// The Pod deletion will then trigger workspace disposal steps.
247+
err := r.Client.Delete(ctx, pod)
248+
if errors.IsNotFound(err) {
249+
// pod is gone - nothing to do here
250+
} else {
251+
return ctrl.Result{Requeue: true}, err
252+
}
253+
244254
// we've disposed already - try to remove the finalizer and call it a day
245255
case workspace.Status.Phase == workspacev1.WorkspacePhaseStopped:
246256
hadFinalizer := controllerutil.ContainsFinalizer(pod, workspacev1.GitpodFinalizerName)

0 commit comments

Comments
 (0)