Skip to content

Commit 26644c3

Browse files
committed
Implement sc name change and add new sc
1 parent 9066ac3 commit 26644c3

11 files changed

+131
-68
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Build the manager binary
2-
FROM golang:1.20 as builder
2+
FROM golang:1.22 as builder
33
ARG TARGETOS
44
ARG TARGETARCH
55

config/crd/bases/objectdriver.csi.ibm.com_ibmobjectcsis.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.14.0
6+
controller-gen.kubebuilder.io/version: v0.15.0
77
name: ibmobjectcsis.objectdriver.csi.ibm.com
88
spec:
99
group: objectdriver.csi.ibm.com

config/crd/bases/objectdriver.csi.ibm.com_recoverstalevolumes.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.14.0
6+
controller-gen.kubebuilder.io/version: v0.15.0
77
name: recoverstalevolumes.objectdriver.csi.ibm.com
88
spec:
99
group: objectdriver.csi.ibm.com

config/manager/kustomization.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1
44
kind: Kustomization
55
images:
66
- name: controller
7-
newName: ashimagarg/csi
8-
newTag: "53"
7+
newName: bhagyak1/ibm-object-csi-driver-operator
8+
newTag: m1402

controllers/ibmobjectcsi_controller.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ func (r *IBMObjectCSIReconciler) isNodeReady(node *appsv1.DaemonSet) bool {
282282
func (r *IBMObjectCSIReconciler) getNodeDaemonSet(instance *crutils.IBMObjectCSI) (*appsv1.DaemonSet, error) {
283283
node := &appsv1.DaemonSet{}
284284
err := r.Get(context.TODO(), types.NamespacedName{
285-
Name: oconfig.GetNameForResource(oconfig.CSINode, instance.Name),
285+
Name: oconfig.GetNameForResource(oconfig.CSINode, oconfig.DriverPrefix),
286286
Namespace: instance.Namespace,
287287
}, node)
288288
return node, err
@@ -291,7 +291,7 @@ func (r *IBMObjectCSIReconciler) getNodeDaemonSet(instance *crutils.IBMObjectCSI
291291
func (r *IBMObjectCSIReconciler) getControllerDeployment(instance *crutils.IBMObjectCSI) (*appsv1.Deployment, error) {
292292
controllerDeployment := &appsv1.Deployment{}
293293
err := r.Get(context.TODO(), types.NamespacedName{
294-
Name: oconfig.GetNameForResource(oconfig.CSIController, instance.Name),
294+
Name: oconfig.GetNameForResource(oconfig.CSIController, oconfig.DriverPrefix),
295295
Namespace: instance.Namespace,
296296
}, controllerDeployment)
297297
return controllerDeployment, err
@@ -318,8 +318,8 @@ func (r *IBMObjectCSIReconciler) reconcileServiceAccount(instance *crutils.IBMOb
318318
controller := instance.GenerateControllerServiceAccount()
319319
node := instance.GenerateNodeServiceAccount()
320320

321-
controllerServiceAccountName := oconfig.GetNameForResource(oconfig.CSIControllerServiceAccount, instance.Name)
322-
nodeServiceAccountName := oconfig.GetNameForResource(oconfig.CSINodeServiceAccount, instance.Name)
321+
controllerServiceAccountName := oconfig.GetNameForResource(oconfig.CSIControllerServiceAccount, oconfig.DriverPrefix)
322+
nodeServiceAccountName := oconfig.GetNameForResource(oconfig.CSINodeServiceAccount, oconfig.DriverPrefix)
323323

324324
for _, sa := range []*corev1.ServiceAccount{
325325
controller,
@@ -472,11 +472,16 @@ func (r *IBMObjectCSIReconciler) getClusterRoleBindings(instance *crutils.IBMObj
472472
}
473473

474474
func (r *IBMObjectCSIReconciler) getStorageClasses(instance *crutils.IBMObjectCSI) []*storagev1.StorageClass {
475-
rcloneSC := instance.GenerateRcloneSC()
476-
s3fsSC := instance.Generates3fsSC()
475+
rcloneRetainSC := instance.GenerateRcloneSC(oconfig.RcloneRetainStorageClass, corev1.PersistentVolumeReclaimRetain)
476+
rcloneSC := instance.GenerateRcloneSC(oconfig.RcloneStorageClass, corev1.PersistentVolumeReclaimDelete)
477+
478+
s3fsRetainSC := instance.GenerateS3fsSC(oconfig.S3fsRetainStorageClass, corev1.PersistentVolumeReclaimRetain)
479+
s3fsSC := instance.GenerateS3fsSC(oconfig.S3fsStorageClass, corev1.PersistentVolumeReclaimDelete)
477480

478481
return []*storagev1.StorageClass{
482+
rcloneRetainSC,
479483
rcloneSC,
484+
s3fsRetainSC,
480485
s3fsSC,
481486
}
482487
}

controllers/ibmobjectcsi_controller_test.go

Lines changed: 76 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package controllers
22

33
import (
44
"errors"
5+
"fmt"
56
"testing"
67

78
"github.com/IBM/ibm-object-csi-driver-operator/api/v1alpha1"
@@ -33,7 +34,8 @@ import (
3334

3435
var (
3536
defaultFSGroupPolicy = storagev1.FileFSGroupPolicy
36-
reclaimPolicy = corev1.PersistentVolumeReclaimRetain
37+
reclaimPolicyRetain = corev1.PersistentVolumeReclaimRetain
38+
reclaimPolicyDelete = corev1.PersistentVolumeReclaimDelete
3739
secrets = crutils.GetImagePullSecrets(ibmObjectCSICR.Spec.ImagePullSecrets)
3840

3941
ibmObjectCSIReconcileRequest = reconcile.Request{
@@ -155,7 +157,7 @@ var (
155157

156158
csiNode = &appsv1.DaemonSet{
157159
ObjectMeta: metav1.ObjectMeta{
158-
Name: config.GetNameForResource(config.CSINode, ibmObjectCSICRName),
160+
Name: config.GetNameForResource(config.CSINode, config.DriverPrefix),
159161
Namespace: TestNamespace,
160162
Annotations: annotations,
161163
},
@@ -166,7 +168,7 @@ var (
166168

167169
controllerDeployment = &appsv1.Deployment{
168170
ObjectMeta: metav1.ObjectMeta{
169-
Name: config.GetNameForResource(config.CSIController, ibmObjectCSICRName),
171+
Name: config.GetNameForResource(config.CSIController, config.DriverPrefix),
170172
Namespace: TestNamespace,
171173
Annotations: annotations,
172174
},
@@ -196,77 +198,77 @@ var (
196198

197199
controllerSA = &corev1.ServiceAccount{
198200
ObjectMeta: metav1.ObjectMeta{
199-
Name: config.GetNameForResource(config.CSIControllerServiceAccount, ibmObjectCSICRName),
201+
Name: config.GetNameForResource(config.CSIControllerServiceAccount, config.DriverPrefix),
200202
Namespace: TestNamespace,
201203
},
202204
ImagePullSecrets: secrets,
203205
}
204206

205207
nodeSA = &corev1.ServiceAccount{
206208
ObjectMeta: metav1.ObjectMeta{
207-
Name: config.GetNameForResource(config.CSINodeServiceAccount, ibmObjectCSICRName),
209+
Name: config.GetNameForResource(config.CSINodeServiceAccount, config.DriverPrefix),
208210
Namespace: TestNamespace,
209211
},
210212
ImagePullSecrets: secrets,
211213
}
212214

213215
externalProvisionerCRB = &rbacv1.ClusterRoleBinding{
214216
ObjectMeta: metav1.ObjectMeta{
215-
Name: config.GetNameForResource(config.ExternalProvisionerClusterRoleBinding, ibmObjectCSICRName),
217+
Name: config.GetNameForResource(config.ExternalProvisionerClusterRoleBinding, config.DriverPrefix),
216218
},
217219
Subjects: []rbacv1.Subject{
218220
{
219221
Kind: "ServiceAccount",
220-
Name: config.GetNameForResource(config.CSIControllerServiceAccount, ibmObjectCSICRName),
222+
Name: config.GetNameForResource(config.CSIControllerServiceAccount, config.DriverPrefix),
221223
Namespace: TestNamespace,
222224
},
223225
},
224226
RoleRef: rbacv1.RoleRef{
225227
Kind: "ClusterRole",
226-
Name: config.GetNameForResource(config.ExternalProvisionerClusterRole, ibmObjectCSICRName),
228+
Name: config.GetNameForResource(config.ExternalProvisionerClusterRole, config.DriverPrefix),
227229
APIGroup: config.RbacAuthorizationAPIGroup,
228230
},
229231
}
230232

231233
controllerSCCCRB = &rbacv1.ClusterRoleBinding{
232234
ObjectMeta: metav1.ObjectMeta{
233-
Name: config.GetNameForResource(config.CSIControllerSCCClusterRoleBinding, ibmObjectCSICRName),
235+
Name: config.GetNameForResource(config.CSIControllerSCCClusterRoleBinding, config.DriverPrefix),
234236
},
235237
Subjects: []rbacv1.Subject{
236238
{
237239
Kind: "ServiceAccount",
238-
Name: config.GetNameForResource(config.CSIControllerServiceAccount, ibmObjectCSICRName),
240+
Name: config.GetNameForResource(config.CSIControllerServiceAccount, config.DriverPrefix),
239241
Namespace: TestNamespace,
240242
},
241243
},
242244
RoleRef: rbacv1.RoleRef{
243245
Kind: "ClusterRole",
244-
Name: config.GetNameForResource(config.CSIControllerSCCClusterRole, ibmObjectCSICRName),
246+
Name: config.GetNameForResource(config.CSIControllerSCCClusterRole, config.DriverPrefix),
245247
APIGroup: config.RbacAuthorizationAPIGroup,
246248
},
247249
}
248250

249251
nodeSCCCRB = &rbacv1.ClusterRoleBinding{
250252
ObjectMeta: metav1.ObjectMeta{
251-
Name: config.GetNameForResource(config.CSINodeSCCClusterRoleBinding, ibmObjectCSICRName),
253+
Name: config.GetNameForResource(config.CSINodeSCCClusterRoleBinding, config.DriverPrefix),
252254
},
253255
Subjects: []rbacv1.Subject{
254256
{
255257
Kind: "ServiceAccount",
256-
Name: config.GetNameForResource(config.CSINodeServiceAccount, ibmObjectCSICRName),
258+
Name: config.GetNameForResource(config.CSINodeServiceAccount, config.DriverPrefix),
257259
Namespace: TestNamespace,
258260
},
259261
},
260262
RoleRef: rbacv1.RoleRef{
261263
Kind: "ClusterRole",
262-
Name: config.GetNameForResource(config.CSINodeSCCClusterRole, ibmObjectCSICRName),
264+
Name: config.GetNameForResource(config.CSINodeSCCClusterRole, config.DriverPrefix),
263265
APIGroup: config.RbacAuthorizationAPIGroup,
264266
},
265267
}
266268

267269
externalProvisionerCR = &rbacv1.ClusterRole{
268270
ObjectMeta: metav1.ObjectMeta{
269-
Name: config.GetNameForResource(config.ExternalProvisionerClusterRole, ibmObjectCSICRName),
271+
Name: config.GetNameForResource(config.ExternalProvisionerClusterRole, config.DriverPrefix),
270272
},
271273
Rules: []rbacv1.PolicyRule{
272274
{
@@ -309,7 +311,7 @@ var (
309311

310312
controllerSCCCR = &rbacv1.ClusterRole{
311313
ObjectMeta: metav1.ObjectMeta{
312-
Name: config.GetNameForResource(config.CSIControllerSCCClusterRole, ibmObjectCSICRName),
314+
Name: config.GetNameForResource(config.CSIControllerSCCClusterRole, config.DriverPrefix),
313315
},
314316
Rules: []rbacv1.PolicyRule{
315317
{
@@ -323,7 +325,7 @@ var (
323325

324326
nodeSCCCR = &rbacv1.ClusterRole{
325327
ObjectMeta: metav1.ObjectMeta{
326-
Name: config.GetNameForResource(config.CSINodeSCCClusterRole, ibmObjectCSICRName),
328+
Name: config.GetNameForResource(config.CSINodeSCCClusterRole, config.DriverPrefix),
327329
},
328330
Rules: []rbacv1.PolicyRule{
329331
{
@@ -342,10 +344,37 @@ var (
342344

343345
rCloneSC = &storagev1.StorageClass{
344346
ObjectMeta: metav1.ObjectMeta{
345-
Name: config.GetNameForResource(config.RcloneStorageClass, ibmObjectCSICRName),
347+
Name: fmt.Sprintf("%s", config.RcloneStorageClass),
346348
},
347349
Provisioner: config.DriverName,
348-
ReclaimPolicy: &reclaimPolicy,
350+
ReclaimPolicy: &reclaimPolicyDelete,
351+
MountOptions: []string{
352+
"acl=private",
353+
"bucket_acl=private",
354+
"upload_cutoff=256Mi",
355+
"chunk_size=64Mi",
356+
"max_upload_parts=64",
357+
"upload_concurrency=20",
358+
"copy_cutoff=1Gi",
359+
"memory_pool_flush_time=30s",
360+
"disable_checksum=true",
361+
},
362+
Parameters: map[string]string{
363+
"mounter": "rclone",
364+
"client": "awss3",
365+
"csi.storage.k8s.io/provisioner-secret-name": "${pvc.name}",
366+
"csi.storage.k8s.io/provisioner-secret-namespace": "${pvc.namespace}",
367+
"csi.storage.k8s.io/node-publish-secret-name": "${pvc.name}",
368+
"csi.storage.k8s.io/node-publish-secret-namespace": "${pvc.namespace}",
369+
},
370+
}
371+
372+
rCloneRetainSC = &storagev1.StorageClass{
373+
ObjectMeta: metav1.ObjectMeta{
374+
Name: fmt.Sprintf("%s", config.RcloneRetainStorageClass),
375+
},
376+
Provisioner: config.DriverName,
377+
ReclaimPolicy: &reclaimPolicyRetain,
349378
MountOptions: []string{
350379
"acl=private",
351380
"bucket_acl=private",
@@ -369,10 +398,34 @@ var (
369398

370399
s3fsSC = &storagev1.StorageClass{
371400
ObjectMeta: metav1.ObjectMeta{
372-
Name: config.GetNameForResource(config.S3fsStorageClass, ibmObjectCSICRName),
401+
Name: fmt.Sprintf("%s", config.S3fsStorageClass),
402+
},
403+
Provisioner: config.DriverName,
404+
ReclaimPolicy: &reclaimPolicyDelete,
405+
MountOptions: []string{
406+
"multipart_size=62",
407+
"max_dirty_data=51200",
408+
"parallel_count=8",
409+
"max_stat_cache_size=100000",
410+
"retries=5",
411+
"kernel_cache",
412+
},
413+
Parameters: map[string]string{
414+
"mounter": "s3fs",
415+
"client": "awss3",
416+
"csi.storage.k8s.io/provisioner-secret-name": "${pvc.name}",
417+
"csi.storage.k8s.io/provisioner-secret-namespace": "${pvc.namespace}",
418+
"csi.storage.k8s.io/node-publish-secret-name": "${pvc.name}",
419+
"csi.storage.k8s.io/node-publish-secret-namespace": "${pvc.namespace}",
420+
},
421+
}
422+
423+
s3fsRetainSC = &storagev1.StorageClass{
424+
ObjectMeta: metav1.ObjectMeta{
425+
Name: fmt.Sprintf("%s", config.S3fsRetainStorageClass),
373426
},
374427
Provisioner: config.DriverName,
375-
ReclaimPolicy: &reclaimPolicy,
428+
ReclaimPolicy: &reclaimPolicyRetain,
376429
MountOptions: []string{
377430
"multipart_size=62",
378431
"max_dirty_data=51200",
@@ -738,7 +791,9 @@ func TestIBMObjectCSIReconcile(t *testing.T) {
738791
objects: []runtime.Object{
739792
ibmObjectCSICRWithDeletionTS,
740793
rCloneSC,
794+
rCloneRetainSC,
741795
s3fsSC,
796+
s3fsRetainSC,
742797
},
743798
clientFunc: func(objs []runtime.Object) client.WithWatch {
744799
return fakedelete.NewClientBuilder().WithRuntimeObjects(objs...).Build()
@@ -809,7 +864,6 @@ func TestIBMObjectCSIReconcile(t *testing.T) {
809864
assert.Equal(t, testcase.expectedResp, res)
810865

811866
if testcase.expectedErr != nil {
812-
assert.Error(t, err)
813867
assert.Contains(t, err.Error(), testcase.expectedErr.Error())
814868
} else {
815869
assert.NoError(t, err)

0 commit comments

Comments
 (0)