Skip to content

Commit 9de9d22

Browse files
committed
feat : [CRW-5722] Add configuration option in DevWorkspaceOperatorConfig for storage access mode (#1019)
- Add configuration option named StorageAccessMode in WorkspaceConfig struct - Set PVC accessMode if abovementioned option is set in WorkspaceConfig, default to ReadWriteOnce Signed-off-by: Rohan Kumar <[email protected]>
1 parent 2e7face commit 9de9d22

13 files changed

+128
-10
lines changed

apis/controller/v1alpha1/devworkspaceoperatorconfig_types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,9 @@ type WorkspaceConfig struct {
135135
// DefaultStorageSize defines an optional struct with fields to specify the sizes of Persistent Volume Claims for storage
136136
// classes used by DevWorkspaces.
137137
DefaultStorageSize *StorageSizes `json:"defaultStorageSize,omitempty"`
138+
// StorageAccessMode are the desired access modes the volume should have. It defaults
139+
// to ReadWriteOnce if not specified
140+
StorageAccessMode []corev1.PersistentVolumeAccessMode `json:"storageAccessMode,omitempty"`
138141
// PersistUserHome defines configuration options for persisting the `/home/user/`
139142
// directory in workspaces.
140143
PersistUserHome *PersistentHomeConfig `json:"persistUserHome,omitempty"`

apis/controller/v1alpha1/zz_generated.deepcopy.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/bundle/manifests/controller.devfile.io_devworkspaceoperatorconfigs.yaml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/deployment/kubernetes/combined.yaml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/deployment/kubernetes/objects/devworkspaceoperatorconfigs.controller.devfile.io.CustomResourceDefinition.yaml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/deployment/openshift/combined.yaml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/deployment/openshift/objects/devworkspaceoperatorconfigs.controller.devfile.io.CustomResourceDefinition.yaml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/templates/crd/bases/controller.devfile.io_devworkspaceoperatorconfigs.yaml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/config/sync_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,9 @@ func TestMergesAllFieldsFromClusterConfig(t *testing.T) {
107107
*deploymentStrategy = appsv1.RecreateDeploymentStrategyType
108108
}
109109
},
110+
func(accessModes *[]corev1.PersistentVolumeAccessMode, c fuzz.Continue) {
111+
accessModes = nil
112+
},
110113
fuzzQuantity,
111114
fuzzResourceList,
112115
fuzzResourceRequirements,
@@ -428,6 +431,9 @@ func TestMergeConfigHandlesProxySettings(t *testing.T) {
428431
func TestMergeConfigLooksAtAllFields(t *testing.T) {
429432
f := fuzz.New().NilChance(0).Funcs(
430433
func(embeddedResource *runtime.RawExtension, c fuzz.Continue) {},
434+
func(accessModes *[]corev1.PersistentVolumeAccessMode, c fuzz.Continue) {
435+
accessModes = nil
436+
},
431437
fuzzQuantity,
432438
fuzzResourceList,
433439
fuzzResourceRequirements,

pkg/provision/storage/commonStorage_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,13 @@ func TestUseCommonStorageProvisionerForPerUserStorageClass(t *testing.T) {
130130
func TestProvisionStorageForCommonStorageClass(t *testing.T) {
131131
tests := loadAllTestCasesOrPanic(t, "testdata/common-storage")
132132
commonStorage := CommonStorageProvisioner{}
133-
commonPVC, err := getPVCSpec("claim-devworkspace", "test-namespace", nil, resource.MustParse("10Gi"))
133+
commonPVC, err := getPVCSpec("claim-devworkspace", "test-namespace", nil, resource.MustParse("10Gi"), nil)
134134
if err != nil {
135135
t.Fatalf("Failure during setup: %s", err)
136136
}
137137
commonPVC.Status.Phase = corev1.ClaimBound
138138
clusterAPI := sync.ClusterAPI{
139-
Client: fake.NewFakeClientWithScheme(scheme, commonPVC),
139+
Client: fake.NewClientBuilder().WithScheme(scheme).WithObjects(commonPVC).Build(),
140140
Logger: zap.New(),
141141
}
142142

@@ -166,15 +166,15 @@ func TestProvisionStorageForCommonStorageClass(t *testing.T) {
166166

167167
func TestTerminatingPVC(t *testing.T) {
168168
commonStorage := CommonStorageProvisioner{}
169-
commonPVC, err := getPVCSpec("claim-devworkspace", "test-namespace", nil, resource.MustParse("10Gi"))
169+
commonPVC, err := getPVCSpec("claim-devworkspace", "test-namespace", nil, resource.MustParse("10Gi"), nil)
170170
if err != nil {
171171
t.Fatalf("Failure during setup: %s", err)
172172
}
173173
testTime := metav1.Now()
174174
commonPVC.SetDeletionTimestamp(&testTime)
175175

176176
clusterAPI := sync.ClusterAPI{
177-
Client: fake.NewFakeClientWithScheme(scheme, commonPVC),
177+
Client: fake.NewClientBuilder().WithScheme(scheme).WithObjects(commonPVC).Build(),
178178
Logger: zap.New(),
179179
}
180180
testCase := loadTestCaseOrPanic(t, "testdata/common-storage/rewrites-volumes-for-common-pvc-strategy.yaml")

0 commit comments

Comments
 (0)