-
Notifications
You must be signed in to change notification settings - Fork 11
Added versioning configuration for COS buckets in CSI driver #172
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
pkg/driver/controllerserver.go
Outdated
if val, ok := secretMap["BucketVersioning"]; ok && val != "" { | ||
enable := strings.ToLower(strings.TrimSpace(val)) | ||
if enable != "true" && enable != "false" { | ||
return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("Invalid BucketVersioning value in secret: %s. Must be 'true' or 'false'", val)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please log secret name as well her.
status.Error(codes.InvalidArgument, fmt.Sprintf("Invalid BucketVersioning value in secret: %s. Value set %s. Must be 'true' or 'false'", secretName, val))
pkg/driver/controllerserver.go
Outdated
fmt.Sprintf("Invalid BucketVersioning value in storage class: %s. Must be 'true' or 'false'", val)) | ||
} | ||
BucketVersioning = enable | ||
klog.Infof("BucketVersioning set via storage class: %s", BucketVersioning) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
klog.Infof("BucketVersioning value that will be set via storage class params: %s", BucketVersioning)
pkg/driver/controllerserver.go
Outdated
@@ -48,6 +48,7 @@ func (cs *controllerServer) CreateVolume(_ context.Context, req *csi.CreateVolum | |||
kpRootKeyCrn string | |||
pvcName string | |||
pvcNamespace string | |||
BucketVersioning string |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bucketVersioning
pkg/driver/controllerserver.go
Outdated
return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("Invalid BucketVersioning value in secret: %s. Must be 'true' or 'false'", val)) | ||
} | ||
BucketVersioning = enable | ||
klog.Infof("BucketVersioning set via secret: %s", BucketVersioning) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
klog.Infof("BucketVersioning value that will be set via secret: %s", BucketVersioning)
pkg/driver/controllerserver.go
Outdated
@@ -441,6 +479,7 @@ func parseCustomSecret(secret *v1.Secret) map[string]string { | |||
iamEndpoint string | |||
cosEndpoint string | |||
locationConstraint string | |||
BucketVersioning string |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bucketVersioning
pkg/driver/controllerserver.go
Outdated
@@ -479,6 +518,10 @@ func parseCustomSecret(secret *v1.Secret) map[string]string { | |||
locationConstraint = string(bytesVal) | |||
} | |||
|
|||
if bytesVal, ok := secret.Data["BucketVersioning"]; ok { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bucketVersioning
-> small case in the start to comply with how other params are set in the secret.
Negative Test Scenarios:
apiVersion: v1
kind: Secret
type: cos-s3-csi-driver
metadata:
name: cos-s3fs-invalid-secret
namespace: default
data:
accessKey: !!invalidbase64==
secretKey: yyy
bucketName: cHJhLXNlY3Jlbi1idWNrZXRuYW1lbmFibGU=
BucketVersioning: dHJ1ZQ==
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cos-s3fs-invalid-pvc
namespace: default
annotations:
cos.csi.driver/secret: "cos-s3fs-invalid-secret"
cos.csi.driver/secret-namespace: "default"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 256Mi
storageClassName: ibm-object-storage-standard-s3fs ibm-object-csi-driver % kubectl create -f examples/kubernetes/cos-s3-csi-s3fs-secret.yaml
secret/cos-s3fs-invalid-secret created
ibm-object-csi-driver % kubectl create -f examples/kubernetes/cos-s3-csi-s3fs-pvc.yaml
persistentvolumeclaim/cos-s3fs-invalid-pvc created
ibm-object-csi-driver % kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
cos-s3fs-invalid-pvc Pending ibm-object-storage-standard-s3fs <unset> 5s
ibm-object-csi-driver % kubectl describe pvc cos-s3fs-invalid-pvc
% kubectl describe pvc cos-s3fs-invalid-pvc
Name: cos-s3fs-invalid-pvc
Namespace: default
StorageClass: ibm-object-storage-standard-s3fs
Status: Pending
Volume:
Labels: <none>
Annotations: cos.csi.driver/secret: cos-s3fs-invalid-secret
cos.csi.driver/secret-namespace: default
volume.beta.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
volume.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalProvisioning 14s (x2 over 19s) persistentvolume-controller Waiting for a volume to be created either by the external provisioner 'cos.s3.csi.ibm.io' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
Normal Provisioning 4s (x5 over 19s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f External provisioner is provisioning volume for claim "default/cos-s3fs-invalid-pvc"
Warning ProvisioningFailed 4s (x5 over 19s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f failed to provision volume with StorageClass "ibm-object-storage-standard-s3fs": rpc error: code = InvalidArgument desc = Error in getting credentials rpc error: code = Unauthenticated desc = Valid access credentials are not provided in the secret| serviceId/accessKey/secretKey unknown
apiVersion: v1
kind: Secret
type: cos-s3-csi-driver
metadata:
name: cos-s3fs-miss-secret
namespace: default
data:
secretKey: ZDJiOTMzYWMzMTg4Mzc2YWRlMzE5OGZlMjZhZTIxYTI1ODJmNWMwYzg5MGJlNGVm
bucketName: cHNyY29kZS1kZXZ0ZXN0
BucketVersioning: ZmFsc2U=
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cos-s3fs-miss-pvc
namespace: default
annotations:
cos.csi.driver/secret: "cos-s3fs-miss-secret"
cos.csi.driver/secret-namespace: "default"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 256Mi
storageClassName: ibm-object-storage-standard-s3fs % kubectl create -f examples/kubernetes/cos-s3-csi-s3fs-secret.yaml
secret/cos-s3fs-miss-secret created
% kubectl create -f examples/kubernetes/cos-s3-csi-s3fs-pvc.yaml
persistentvolumeclaim/cos-s3fs-miss-pvc created
% kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
cos-s3fs-miss-pvc Pending ibm-object-storage-standard-s3fs <unset> 21s
% kubectl describe pvc cos-s3fs-miss-pvc
Name: cos-s3fs-miss-pvc
Namespace: default
StorageClass: ibm-object-storage-standard-s3fs
Status: Pending
Volume:
Labels: <none>
Annotations: cos.csi.driver/secret: cos-s3fs-miss-secret
cos.csi.driver/secret-namespace: default
volume.beta.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
volume.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalProvisioning 5s (x2 over 19s) persistentvolume-controller Waiting for a volume to be created either by the external provisioner 'cos.s3.csi.ibm.io' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
Normal Provisioning 4s (x5 over 19s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f External provisioner is provisioning volume for claim "default/cos-s3fs-miss-pvc"
Warning ProvisioningFailed 4s (x5 over 19s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f failed to provision volume with StorageClass "ibm-object-storage-standard-s3fs": rpc error: code = InvalidArgument desc = Error in getting credentials rpc error: code = Unauthenticated desc = Valid access credentials are not provided in the secret| serviceId/accessKey/secretKey unknown
apiVersion: v1
kind: Secret
type: cos-s3-csi-driver
metadata:
name: cos-s3fs-bucket-secret
namespace: default
data:
bucketName: U3RvcmFnZUJ1Y2tldFdpdGhVcHBlcmNhc2U=
accessKey: xxx
secretKey: yyy
# BucketVersioning: ZmFsc2U=
stringData:
# uid: "3000" # Provide uid to run as non root user. This must match runAsUser in SecurityContext of pod spec.
mountOptions: |
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cos-s3fs-bucket-pvc
namespace: default
annotations:
cos.csi.driver/secret: "cos-s3fs-bucket-secret"
cos.csi.driver/secret-namespace: "default"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 256Mi
storageClassName: ibm-object-storage-standard-s3fs % kubectl create -f examples/kubernetes/cos-s3-csi-s3fs-secret.yaml
secret/cos-s3fs-bucket-secret created
% kubectl create -f examples/kubernetes/cos-s3-csi-s3fs-pvc.yaml
persistentvolumeclaim/cos-s3fs-bucket-pvc created
% kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
cos-s3fs-bucket-pvc Pending ibm-object-storage-standard-s3fs <unset> 3s
14eb3cb0731e 256Mi RWO ibm-object-storage-standard-s3fs <unset> 40m
prachishivanandanure@Prachis-MacBook-Pro ibm-object-csi-driver % kubectl describe pvc cos-s3fs-bucketss-pvc
Name: cos-s3fs-bucketss-pvc
Namespace: default
StorageClass: ibm-object-storage-standard-s3fs
Status: Pending
Volume:
Labels: <none>
Annotations: cos.csi.driver/secret: cos-s3fs-bucket-secret
cos.csi.driver/secret-namespace: default
volume.beta.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
volume.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalProvisioning 8s (x2 over 22s) persistentvolume-controller Waiting for a volume to be created either by the external provisioner 'cos.s3.csi.ibm.io' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
Normal Provisioning 5s (x5 over 22s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f External provisioner is provisioning volume for claim "default/cos-s3fs-bucketss-pvc"
Warning ProvisioningFailed 5s (x5 over 21s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f failed to provision volume with StorageClass "ibm-object-storage-standard-s3fs": rpc error: code = PermissionDenied desc = unable to create the bucket: StorageBucketWithUppercase
apiVersion: v1
kind: Secret
type: cos-s3-csi-driver
metadata:
name: cos-s3fs-truen-secret
namespace: default
data:
bucketName: cHNhLXNlY3JldC10cnVl
accessKey: xxx
secretKey: yyy
BucketVersioning: ZW5hYmxl # enable
stringData:
mountOptions: |
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cos-s3fs-bucketss-pvc-1
namespace: default
annotations:
cos.csi.driver/secret: "cos-s3fs-truen-secret"
cos.csi.driver/secret-namespace: "default"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 256Mi
storageClassName: ibm-object-storage-standard-s3fs % kubectl create -f examples/kubernetes/cos-s3-csi-s3fs-secret.yaml
secret/cos-s3fs-truen-secret created
% kubectl create -f examples/kubernetes/cos-s3-csi-s3fs-pvc.yaml
persistentvolumeclaim/cos-s3fs-bucketss-pvc-1 created
% kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
cos-s3fs-bucketss-pvc-1 Pending ibm-object-storage-standard-s3fs <unset> 3s
% kubectl describe pvc cos-s3fs-bucketss-pvc-1
Name: cos-s3fs-bucketss-pvc-1
Namespace: default
StorageClass: ibm-object-storage-standard-s3fs
Status: Pending
Volume:
Labels: <none>
Annotations: cos.csi.driver/secret: cos-s3fs-truen-secret
cos.csi.driver/secret-namespace: default
volume.beta.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
volume.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Provisioning 4s (x4 over 11s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f External provisioner is provisioning volume for claim "default/cos-s3fs-bucketss-pvc-1"
Warning ProvisioningFailed 4s (x4 over 11s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f failed to provision volume with StorageClass "ibm-object-storage-standard-s3fs": rpc error: code = InvalidArgument desc = Invalid BucketVersioning value in secret: cos-s3fs-truen-secret. Value set enable. Must be 'true' or 'false'
Normal ExternalProvisioning 0s (x2 over 11s) persistentvolume-controller Waiting for a volume to be created either by the external provisioner 'cos.s3.csi.ibm.io' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered. |
Negative Test Scenarios:
apiVersion: v1
kind: Secret
type: cos-s3-csi-driver
metadata:
name: cos-rclone-secret-1
data:
# Bucket name: echo -n "nkcode-devtest01" | base64
bucketName: cHNhLWRpc2FibGUtcmNsb25lYnVja2V0
accessKey: ZZZ
secretKey: NNN
bucketVersioning: ZmFsc2U=
stringData:
mountOptions: |
% kubectl create -f examples/kubernetes/cos-s3-csi-rclone-secret.yaml
secret/cos-rclone-secret-1 created
% kubectl create -f examples/kubernetes/cos-s3-csi-rclone-pvc.yaml
persistentvolumeclaim/cos-rclone-pvc-1 created
% kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
cos-rclone-pvc-1 Pending ibm-object-storage-smart-rclone <unset> 7s
% kubectl describe pvc cos-rclone-pvc-1
Name: cos-rclone-pvc-1
Namespace: default
StorageClass: ibm-object-storage-smart-rclone
Status: Pending
Volume:
Labels: <none>
Annotations: cos.csi.driver/secret: cos-rclone-secret-1
cos.csi.driver/secret-namespace: default
volume.beta.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
volume.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Provisioning 28s (x6 over 59s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f External provisioner is provisioning volume for claim "default/cos-rclone-pvc-1"
Warning ProvisioningFailed 28s (x6 over 59s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f failed to provision volume with StorageClass "ibm-object-storage-smart-rclone": "${pvc.annotations['cos.csi.driver/secret']}" resolved to " cos-rclone-secret-1" which is not a valid secret name
Normal ExternalProvisioning 4s (x5 over 59s) persistentvolume-controller Waiting for a volume to be created either by the external provisioner 'cos.s3.csi.ibm.io' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
apiVersion: v1
kind: Secret
type: cos-s3-csi-driver
metadata:
name: cos-rclone-secret-2
data:
# Bucket name: echo -n "nkcode-devtest01" | base64
bucketName: U3RvcmFnZUJ1Y2tldFdpdGhVcHBlcmNhc2U=
accessKey: ZZZ
secretKey: NNN
bucketVersioning: ZmFsc2U=
stringData:
mountOptions: |
% kubectl create -f examples/kubernetes/cos-s3-csi-rclone-secret.yaml
secret/cos-rclone-secret-2 created
% kubectl create -f examples/kubernetes/cos-s3-csi-rclone-pvc.yaml
persistentvolumeclaim/cos-rclone-pvc-2 created
% kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
cos-rclone-pvc-2 Pending ibm-object-storage-smart-rclone <unset> 3s
% kubectl describe pvc cos-rclone-pvc-2
Name: cos-rclone-pvc-2
Namespace: default
StorageClass: ibm-object-storage-smart-rclone
Status: Pending
Volume:
Labels: <none>
Annotations: cos.csi.driver/secret: cos-rclone-secret-2
cos.csi.driver/secret-namespace: default
volume.beta.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
volume.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalProvisioning 8s persistentvolume-controller Waiting for a volume to be created either by the external provisioner 'cos.s3.csi.ibm.io' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
Normal Provisioning 4s (x3 over 8s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f External provisioner is provisioning volume for claim "default/cos-rclone-pvc-2"
Warning ProvisioningFailed 3s (x3 over 7s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-xz5n6_d2ea50e6-333a-430b-9ef8-6ecf79cc151f failed to provision volume with StorageClass "ibm-object-storage-smart-rclone": rpc error: code = PermissionDenied desc = unable to create the bucket: StorageBucketWithUppercase |
Negative Scenario
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibm-object-storage-standard-s3fs
labels:
ibm.cos.storageclass/tier: standard
provisioner: cos.s3.csi.ibm.io
mountOptions:
- "multipart_size=62"
- "max_dirty_data=51200"
- "parallel_count=8"
- "max_stat_cache_size=100000"
- "retries=5"
- "kernel_cache"
parameters:
mounter: "s3fs"
client: "awss3"
cosEndpoint: "https://s3.direct.us-west.cloud-object-storage.appdomain.cloud"
locationConstraint: "us-west-standard"
BucketVersioning: "true"
csi.storage.k8s.io/node-publish-secret-name: ${pvc.annotations['cos.csi.driver/secret']}
csi.storage.k8s.io/node-publish-secret-namespace: ${pvc.namespace}
reclaimPolicy: Delete
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cos-s3fs-non-pvc
namespace: default
annotations:
cos.csi.driver/secret: "cos-s3fs-nonexisting-secret"
cos.csi.driver/secret-namespace: "default"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 256Mi
storageClassName: ibm-object-storage-standard-s3fs prachishivanandanure@Prachis-MacBook-Pro ibm-object-csi-driver % kubectl create -f examples/kubernetes/cos-s3-csi-s3fs-pvc.yaml
persistentvolumeclaim/cos-s3fs-non-pvc created
prachishivanandanure@Prachis-MacBook-Pro ibm-object-csi-driver % kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
cos-s3fs-non-pvc Pending ibm-object-storage-standard-s3fs <unset> 6s
% kubectl describe pvc cos-s3fs-non-pvc
Name: cos-s3fs-non-pvc
Namespace: default
StorageClass: ibm-object-storage-standard-s3fs
Status: Pending
Volume:
Labels: <none>
Annotations: cos.csi.driver/secret: cos-s3fs-nonexisting-secret
cos.csi.driver/secret-namespace: default
volume.beta.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
volume.kubernetes.io/storage-provisioner: cos.s3.csi.ibm.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalProvisioning 2s (x6 over 65s) persistentvolume-controller Waiting for a volume to be created either by the external provisioner 'cos.s3.csi.ibm.io' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
Normal Provisioning 1s (x7 over 65s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-mbbgx_263d176f-dc5a-4842-aa15-cdcca7626ed4 External provisioner is provisioning volume for claim "default/cos-s3fs-non-pvc"
Warning ProvisioningFailed 1s (x7 over 65s) cos.s3.csi.ibm.io_ibm-object-csi-controller-5fbcf6874c-mbbgx_263d176f-dc5a-4842-aa15-cdcca7626ed4 failed to provision volume with StorageClass "ibm-object-storage-standard-s3fs": rpc error: code = InvalidArgument desc = Secret resource not found error getting Secret: secrets "cos-s3fs-nonexisting-secret" not found |
pkg/s3client/s3client.go
Outdated
@@ -182,6 +185,26 @@ func (s *COSSession) DeleteBucket(bucket string) error { | |||
return err | |||
} | |||
|
|||
func (s *COSSession) SetBucketVersioning(bucket string, enable bool) error { | |||
status := "Suspended" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lets use constant provided by s3 package
status = s3.BucketVersioningStatusSuspended
if enable {
status = s3.BucketVersioningStatusEnabled
}
Link for |
Adds support for enabling versioning on COS buckets via the IBM COS CSI driver