Skip to content

Commit c0a4aa4

Browse files
committed
fix : reset workspace storage defaults when PVC config removed
Previously, removing a workspace PVC Config (e.g., `perUserStrategyPvcConfig`) did not reset workspaceConfig fields. As a result, stale values in persisted instead of reverting to defaults. This change explicitly resets: - `StorageAccessMode` to `{ReadWriteOnce}` - `StorageClassName` to `nil` - `DefaultStorageSize` to `nil` before applying any PVC config, ensuring that removing PVC config restores default workspace storage settings. Signed-off-by: Rohan Kumar <rohaan@redhat.com>
1 parent 84b0bb6 commit c0a4aa4

File tree

3 files changed

+59
-9
lines changed

3 files changed

+59
-9
lines changed

pkg/common/constants/constants.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313
package constants
1414

15+
import corev1 "k8s.io/api/core/v1"
16+
1517
const (
1618
// Dashboard
1719
DefaultDashboardMemoryLimit = "1024Mi"
@@ -145,4 +147,5 @@ var (
145147
"app": "che",
146148
"component": "che-gateway-config",
147149
}
150+
DefaultWorkspaceStorageAccessMode = []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce}
148151
)

pkg/deploy/dev-workspace-config/dev_workspace_config.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,9 @@ func updateWorkspaceStorageConfig(devEnvironments *chev2.CheClusterDevEnvironmen
176176
constants.CommonPVCStorageStrategy: devEnvironments.Storage.PerUserStrategyPvcConfig,
177177
constants.PerWorkspacePVCStorageStrategy: devEnvironments.Storage.PerWorkspaceStrategyPvcConfig,
178178
}[pvcStrategy]
179-
179+
workspaceConfig.StorageAccessMode = constants.DefaultWorkspaceStorageAccessMode
180+
workspaceConfig.StorageClassName = nil
181+
workspaceConfig.DefaultStorageSize = nil
180182
if pvc != nil {
181183
workspaceConfig.StorageAccessMode = pvc.StorageAccessMode
182184
if pvc.StorageClass != "" {

pkg/deploy/dev-workspace-config/dev_workspace_config_test.go

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ func TestReconcileDevWorkspaceConfigStorage(t *testing.T) {
9191
},
9292
},
9393
},
94-
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{Workspace: &controllerv1alpha1.WorkspaceConfig{DeploymentStrategy: "Recreate"}},
94+
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{Workspace: &controllerv1alpha1.WorkspaceConfig{DeploymentStrategy: "Recreate", StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce}}},
9595
},
9696
{
9797
name: "Create DevWorkspaceOperatorConfig with ephemeral storage strategy",
@@ -117,7 +117,7 @@ func TestReconcileDevWorkspaceConfigStorage(t *testing.T) {
117117
},
118118
},
119119
},
120-
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{Workspace: &controllerv1alpha1.WorkspaceConfig{DeploymentStrategy: "Recreate"}},
120+
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{Workspace: &controllerv1alpha1.WorkspaceConfig{DeploymentStrategy: "Recreate", StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce}}},
121121
},
122122
{
123123
name: "Create DevWorkspaceOperatorConfig with StorageClassName only",
@@ -175,6 +175,29 @@ func TestReconcileDevWorkspaceConfigStorage(t *testing.T) {
175175
},
176176
},
177177
},
178+
{
179+
name: "Not setting PerUserStrategyPvcConfig should reset DevWorkspaceConfig to default StorageAccessMode",
180+
cheCluster: &chev2.CheCluster{
181+
ObjectMeta: metav1.ObjectMeta{
182+
Namespace: "eclipse-che",
183+
Name: "eclipse-che",
184+
},
185+
Spec: chev2.CheClusterSpec{
186+
DevEnvironments: chev2.CheClusterDevEnvironments{
187+
DisableContainerBuildCapabilities: pointer.Bool(true),
188+
Storage: chev2.WorkspaceStorage{
189+
PvcStrategy: constants.PerUserPVCStorageStrategy,
190+
},
191+
},
192+
},
193+
},
194+
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{
195+
Workspace: &controllerv1alpha1.WorkspaceConfig{
196+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
197+
DeploymentStrategy: "Recreate",
198+
},
199+
},
200+
},
178201
{
179202
name: "Create DevWorkspaceOperatorConfig with nil StorageAccessMode",
180203
cheCluster: &chev2.CheCluster{
@@ -232,6 +255,7 @@ func TestReconcileDevWorkspaceConfigStorage(t *testing.T) {
232255
corev1.ResourceMemory: resource.MustParse("64Mi"),
233256
},
234257
},
258+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
235259
DeploymentStrategy: "Recreate",
236260
},
237261
},
@@ -254,6 +278,7 @@ func TestReconcileDevWorkspaceConfigStorage(t *testing.T) {
254278
Workspace: &controllerv1alpha1.WorkspaceConfig{
255279
DefaultContainerResources: nil,
256280
DeploymentStrategy: "Recreate",
281+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
257282
},
258283
},
259284
},
@@ -522,7 +547,7 @@ func TestReconcileDevWorkspaceConfigForContainerCapabilities(t *testing.T) {
522547
},
523548
},
524549
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{
525-
Workspace: &controllerv1alpha1.WorkspaceConfig{},
550+
Workspace: &controllerv1alpha1.WorkspaceConfig{StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce}},
526551
},
527552
},
528553
{
@@ -550,6 +575,7 @@ func TestReconcileDevWorkspaceConfigForContainerCapabilities(t *testing.T) {
550575
},
551576
AllowPrivilegeEscalation: pointer.Bool(true),
552577
},
578+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
553579
},
554580
},
555581
},
@@ -599,6 +625,7 @@ func TestReconcileDevWorkspaceConfigForContainerCapabilities(t *testing.T) {
599625
},
600626
},
601627
DeploymentStrategy: "Recreate",
628+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
602629
},
603630
},
604631
},
@@ -642,6 +669,7 @@ func TestReconcileDevWorkspaceConfigForContainerCapabilities(t *testing.T) {
642669
},
643670
AllowPrivilegeEscalation: pointer.Bool(true),
644671
},
672+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
645673
},
646674
},
647675
},
@@ -679,12 +707,15 @@ func TestReconcileDevWorkspaceConfigForContainerCapabilities(t *testing.T) {
679707
},
680708
AllowPrivilegeEscalation: pointer.Bool(true),
681709
},
710+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
682711
},
683712
},
684713
},
685714
},
686715
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{
687-
Workspace: &controllerv1alpha1.WorkspaceConfig{},
716+
Workspace: &controllerv1alpha1.WorkspaceConfig{
717+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
718+
},
688719
},
689720
},
690721
{
@@ -733,6 +764,7 @@ func TestReconcileDevWorkspaceConfigForContainerCapabilities(t *testing.T) {
733764
},
734765
},
735766
DeploymentStrategy: "Recreate",
767+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
736768
},
737769
},
738770
},
@@ -783,6 +815,7 @@ func TestReconcileDevWorkspaceConfigProgressTimeout(t *testing.T) {
783815
Workspace: &controllerv1alpha1.WorkspaceConfig{
784816
ProgressTimeout: "600s",
785817
DeploymentStrategy: "Recreate",
818+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
786819
},
787820
},
788821
},
@@ -817,7 +850,8 @@ func TestReconcileDevWorkspaceConfigProgressTimeout(t *testing.T) {
817850
},
818851
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{
819852
Workspace: &controllerv1alpha1.WorkspaceConfig{
820-
ProgressTimeout: "600s",
853+
ProgressTimeout: "600s",
854+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
821855
},
822856
},
823857
},
@@ -854,7 +888,8 @@ func TestReconcileDevWorkspaceConfigProgressTimeout(t *testing.T) {
854888
},
855889
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{
856890
Workspace: &controllerv1alpha1.WorkspaceConfig{
857-
ProgressTimeout: "420s",
891+
ProgressTimeout: "420s",
892+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
858893
},
859894
},
860895
},
@@ -889,7 +924,9 @@ func TestReconcileDevWorkspaceConfigProgressTimeout(t *testing.T) {
889924
},
890925
},
891926
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{
892-
Workspace: &controllerv1alpha1.WorkspaceConfig{},
927+
Workspace: &controllerv1alpha1.WorkspaceConfig{
928+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
929+
},
893930
},
894931
},
895932
}
@@ -1905,6 +1942,7 @@ func TestReconcileDevWorkspaceConfigPersistUserHome(t *testing.T) {
19051942
PersistUserHome: &controllerv1alpha1.PersistentHomeConfig{
19061943
Enabled: pointer.Bool(true),
19071944
},
1945+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
19081946
},
19091947
},
19101948
},
@@ -1940,6 +1978,7 @@ func TestReconcileDevWorkspaceConfigPersistUserHome(t *testing.T) {
19401978
PersistUserHome: &controllerv1alpha1.PersistentHomeConfig{
19411979
Enabled: pointer.Bool(true),
19421980
},
1981+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
19431982
},
19441983
},
19451984
},
@@ -1982,6 +2021,7 @@ func TestReconcileDevWorkspaceConfigPersistUserHome(t *testing.T) {
19822021
PersistUserHome: &controllerv1alpha1.PersistentHomeConfig{
19832022
Enabled: pointer.Bool(true),
19842023
},
2024+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
19852025
},
19862026
},
19872027
},
@@ -2026,6 +2066,7 @@ func TestReconcileDevWorkspaceConfigPersistUserHome(t *testing.T) {
20262066
Enabled: pointer.Bool(true),
20272067
DisableInitContainer: pointer.Bool(true),
20282068
},
2069+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
20292070
},
20302071
},
20312072
},
@@ -2071,6 +2112,7 @@ func TestReconcileDevWorkspaceConfigPersistUserHome(t *testing.T) {
20712112
Enabled: pointer.Bool(true),
20722113
DisableInitContainer: pointer.Bool(false),
20732114
},
2115+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
20742116
},
20752117
},
20762118
},
@@ -2113,6 +2155,7 @@ func TestReconcileDevWorkspaceConfigPersistUserHome(t *testing.T) {
21132155
PersistUserHome: &controllerv1alpha1.PersistentHomeConfig{
21142156
Enabled: pointer.Bool(false),
21152157
},
2158+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
21162159
},
21172160
},
21182161
},
@@ -2147,7 +2190,9 @@ func TestReconcileDevWorkspaceConfigPersistUserHome(t *testing.T) {
21472190
},
21482191
},
21492192
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{
2150-
Workspace: &controllerv1alpha1.WorkspaceConfig{},
2193+
Workspace: &controllerv1alpha1.WorkspaceConfig{
2194+
StorageAccessMode: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
2195+
},
21512196
},
21522197
},
21532198
}

0 commit comments

Comments
 (0)