@@ -2,6 +2,7 @@ package controllers
2
2
3
3
import (
4
4
"errors"
5
+ "fmt"
5
6
"testing"
6
7
7
8
"github.com/IBM/ibm-object-csi-driver-operator/api/v1alpha1"
@@ -33,7 +34,8 @@ import (
33
34
34
35
var (
35
36
defaultFSGroupPolicy = storagev1 .FileFSGroupPolicy
36
- reclaimPolicy = corev1 .PersistentVolumeReclaimRetain
37
+ reclaimPolicyRetain = corev1 .PersistentVolumeReclaimRetain
38
+ reclaimPolicyDelete = corev1 .PersistentVolumeReclaimDelete
37
39
secrets = crutils .GetImagePullSecrets (ibmObjectCSICR .Spec .ImagePullSecrets )
38
40
39
41
ibmObjectCSIReconcileRequest = reconcile.Request {
@@ -155,7 +157,7 @@ var (
155
157
156
158
csiNode = & appsv1.DaemonSet {
157
159
ObjectMeta : metav1.ObjectMeta {
158
- Name : config .GetNameForResource (config .CSINode , ibmObjectCSICRName ),
160
+ Name : config .GetNameForResource (config .CSINode , config . DriverPrefix ),
159
161
Namespace : TestNamespace ,
160
162
Annotations : annotations ,
161
163
},
@@ -166,7 +168,7 @@ var (
166
168
167
169
controllerDeployment = & appsv1.Deployment {
168
170
ObjectMeta : metav1.ObjectMeta {
169
- Name : config .GetNameForResource (config .CSIController , ibmObjectCSICRName ),
171
+ Name : config .GetNameForResource (config .CSIController , config . DriverPrefix ),
170
172
Namespace : TestNamespace ,
171
173
Annotations : annotations ,
172
174
},
@@ -196,77 +198,77 @@ var (
196
198
197
199
controllerSA = & corev1.ServiceAccount {
198
200
ObjectMeta : metav1.ObjectMeta {
199
- Name : config .GetNameForResource (config .CSIControllerServiceAccount , ibmObjectCSICRName ),
201
+ Name : config .GetNameForResource (config .CSIControllerServiceAccount , config . DriverPrefix ),
200
202
Namespace : TestNamespace ,
201
203
},
202
204
ImagePullSecrets : secrets ,
203
205
}
204
206
205
207
nodeSA = & corev1.ServiceAccount {
206
208
ObjectMeta : metav1.ObjectMeta {
207
- Name : config .GetNameForResource (config .CSINodeServiceAccount , ibmObjectCSICRName ),
209
+ Name : config .GetNameForResource (config .CSINodeServiceAccount , config . DriverPrefix ),
208
210
Namespace : TestNamespace ,
209
211
},
210
212
ImagePullSecrets : secrets ,
211
213
}
212
214
213
215
externalProvisionerCRB = & rbacv1.ClusterRoleBinding {
214
216
ObjectMeta : metav1.ObjectMeta {
215
- Name : config .GetNameForResource (config .ExternalProvisionerClusterRoleBinding , ibmObjectCSICRName ),
217
+ Name : config .GetNameForResource (config .ExternalProvisionerClusterRoleBinding , config . DriverPrefix ),
216
218
},
217
219
Subjects : []rbacv1.Subject {
218
220
{
219
221
Kind : "ServiceAccount" ,
220
- Name : config .GetNameForResource (config .CSIControllerServiceAccount , ibmObjectCSICRName ),
222
+ Name : config .GetNameForResource (config .CSIControllerServiceAccount , config . DriverPrefix ),
221
223
Namespace : TestNamespace ,
222
224
},
223
225
},
224
226
RoleRef : rbacv1.RoleRef {
225
227
Kind : "ClusterRole" ,
226
- Name : config .GetNameForResource (config .ExternalProvisionerClusterRole , ibmObjectCSICRName ),
228
+ Name : config .GetNameForResource (config .ExternalProvisionerClusterRole , config . DriverPrefix ),
227
229
APIGroup : config .RbacAuthorizationAPIGroup ,
228
230
},
229
231
}
230
232
231
233
controllerSCCCRB = & rbacv1.ClusterRoleBinding {
232
234
ObjectMeta : metav1.ObjectMeta {
233
- Name : config .GetNameForResource (config .CSIControllerSCCClusterRoleBinding , ibmObjectCSICRName ),
235
+ Name : config .GetNameForResource (config .CSIControllerSCCClusterRoleBinding , config . DriverPrefix ),
234
236
},
235
237
Subjects : []rbacv1.Subject {
236
238
{
237
239
Kind : "ServiceAccount" ,
238
- Name : config .GetNameForResource (config .CSIControllerServiceAccount , ibmObjectCSICRName ),
240
+ Name : config .GetNameForResource (config .CSIControllerServiceAccount , config . DriverPrefix ),
239
241
Namespace : TestNamespace ,
240
242
},
241
243
},
242
244
RoleRef : rbacv1.RoleRef {
243
245
Kind : "ClusterRole" ,
244
- Name : config .GetNameForResource (config .CSIControllerSCCClusterRole , ibmObjectCSICRName ),
246
+ Name : config .GetNameForResource (config .CSIControllerSCCClusterRole , config . DriverPrefix ),
245
247
APIGroup : config .RbacAuthorizationAPIGroup ,
246
248
},
247
249
}
248
250
249
251
nodeSCCCRB = & rbacv1.ClusterRoleBinding {
250
252
ObjectMeta : metav1.ObjectMeta {
251
- Name : config .GetNameForResource (config .CSINodeSCCClusterRoleBinding , ibmObjectCSICRName ),
253
+ Name : config .GetNameForResource (config .CSINodeSCCClusterRoleBinding , config . DriverPrefix ),
252
254
},
253
255
Subjects : []rbacv1.Subject {
254
256
{
255
257
Kind : "ServiceAccount" ,
256
- Name : config .GetNameForResource (config .CSINodeServiceAccount , ibmObjectCSICRName ),
258
+ Name : config .GetNameForResource (config .CSINodeServiceAccount , config . DriverPrefix ),
257
259
Namespace : TestNamespace ,
258
260
},
259
261
},
260
262
RoleRef : rbacv1.RoleRef {
261
263
Kind : "ClusterRole" ,
262
- Name : config .GetNameForResource (config .CSINodeSCCClusterRole , ibmObjectCSICRName ),
264
+ Name : config .GetNameForResource (config .CSINodeSCCClusterRole , config . DriverPrefix ),
263
265
APIGroup : config .RbacAuthorizationAPIGroup ,
264
266
},
265
267
}
266
268
267
269
externalProvisionerCR = & rbacv1.ClusterRole {
268
270
ObjectMeta : metav1.ObjectMeta {
269
- Name : config .GetNameForResource (config .ExternalProvisionerClusterRole , ibmObjectCSICRName ),
271
+ Name : config .GetNameForResource (config .ExternalProvisionerClusterRole , config . DriverPrefix ),
270
272
},
271
273
Rules : []rbacv1.PolicyRule {
272
274
{
@@ -309,7 +311,7 @@ var (
309
311
310
312
controllerSCCCR = & rbacv1.ClusterRole {
311
313
ObjectMeta : metav1.ObjectMeta {
312
- Name : config .GetNameForResource (config .CSIControllerSCCClusterRole , ibmObjectCSICRName ),
314
+ Name : config .GetNameForResource (config .CSIControllerSCCClusterRole , config . DriverPrefix ),
313
315
},
314
316
Rules : []rbacv1.PolicyRule {
315
317
{
@@ -323,7 +325,7 @@ var (
323
325
324
326
nodeSCCCR = & rbacv1.ClusterRole {
325
327
ObjectMeta : metav1.ObjectMeta {
326
- Name : config .GetNameForResource (config .CSINodeSCCClusterRole , ibmObjectCSICRName ),
328
+ Name : config .GetNameForResource (config .CSINodeSCCClusterRole , config . DriverPrefix ),
327
329
},
328
330
Rules : []rbacv1.PolicyRule {
329
331
{
@@ -342,10 +344,37 @@ var (
342
344
343
345
rCloneSC = & storagev1.StorageClass {
344
346
ObjectMeta : metav1.ObjectMeta {
345
- Name : config . GetNameForResource ( config .RcloneStorageClass , ibmObjectCSICRName ),
347
+ Name : fmt . Sprintf ( "%s" , config .RcloneStorageClass ),
346
348
},
347
349
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 ,
349
378
MountOptions : []string {
350
379
"acl=private" ,
351
380
"bucket_acl=private" ,
@@ -369,10 +398,34 @@ var (
369
398
370
399
s3fsSC = & storagev1.StorageClass {
371
400
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 ),
373
426
},
374
427
Provisioner : config .DriverName ,
375
- ReclaimPolicy : & reclaimPolicy ,
428
+ ReclaimPolicy : & reclaimPolicyRetain ,
376
429
MountOptions : []string {
377
430
"multipart_size=62" ,
378
431
"max_dirty_data=51200" ,
@@ -738,7 +791,9 @@ func TestIBMObjectCSIReconcile(t *testing.T) {
738
791
objects : []runtime.Object {
739
792
ibmObjectCSICRWithDeletionTS ,
740
793
rCloneSC ,
794
+ rCloneRetainSC ,
741
795
s3fsSC ,
796
+ s3fsRetainSC ,
742
797
},
743
798
clientFunc : func (objs []runtime.Object ) client.WithWatch {
744
799
return fakedelete .NewClientBuilder ().WithRuntimeObjects (objs ... ).Build ()
@@ -809,7 +864,6 @@ func TestIBMObjectCSIReconcile(t *testing.T) {
809
864
assert .Equal (t , testcase .expectedResp , res )
810
865
811
866
if testcase .expectedErr != nil {
812
- assert .Error (t , err )
813
867
assert .Contains (t , err .Error (), testcase .expectedErr .Error ())
814
868
} else {
815
869
assert .NoError (t , err )
0 commit comments