diff --git a/controllers/workspace/devworkspace_controller.go b/controllers/workspace/devworkspace_controller.go index 23f264bd8..9deb28a73 100644 --- a/controllers/workspace/devworkspace_controller.go +++ b/controllers/workspace/devworkspace_controller.go @@ -291,7 +291,7 @@ func (r *DevWorkspaceReconciler) Reconcile(ctx context.Context, req ctrl.Request return r.failWorkspace(workspace, fmt.Sprintf("Error provisioning storage: %s", err), metrics.ReasonBadRequest, reqLogger, &reconcileStatus), nil } - if storageProvisioner.NeedsStorage(&workspace.Spec.Template) && home.NeedsPersistentHomeDirectory(workspace) { + if home.StorageStrategySupportsPersistentHome(workspace) && home.NeedsPersistentHomeDirectory(workspace) { workspaceWithHomeVolume, err := home.AddPersistentHomeVolume(workspace) if err != nil { reconcileStatus.addWarning(fmt.Sprintf("Info: default persistentHome volume is not being used: %s", err.Error())) diff --git a/pkg/library/home/persistentHome.go b/pkg/library/home/persistentHome.go index 61626971b..e4d9db97a 100644 --- a/pkg/library/home/persistentHome.go +++ b/pkg/library/home/persistentHome.go @@ -59,6 +59,14 @@ func AddPersistentHomeVolume(workspace *common.DevWorkspaceWithConfig) (*v1alpha return dwTemplateSpecCopy, nil } +// Returns true if the workspace's storage strategy supports persisting the user home directory. +// The storage strategies which support home persistence are: per-user/common, per-workspace & async. +// The ephemeral storage strategy does not support home persistence. +func StorageStrategySupportsPersistentHome(workspace *common.DevWorkspaceWithConfig) bool { + storageClass := workspace.Spec.Template.Attributes.GetString(constants.DevWorkspaceStorageTypeAttribute, nil) + return storageClass != constants.EphemeralStorageClassType +} + // Returns true if `persistUserHome` is enabled in the DevWorkspaceOperatorConfig // and none of the container components in the DevWorkspace mount a volume to `/home/user/`. // Returns false otherwise.