@@ -17,6 +17,7 @@ package bucket
1717
1818import (
1919"context"
20+ "fmt"
2021"strings"
2122
2223metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -66,9 +67,13 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
6667var err error
6768
6869klog .V (3 ).InfoS ("Add Bucket" ,
69- "name" , bucket .ObjectMeta .Name ,
70- "bucketclass" , bucket .Spec .BucketClassName ,
71- )
70+ "name" , bucket .ObjectMeta .Name )
71+
72+ if bucket .Spec .BucketClassName == "" {
73+ err = errors .New (fmt .Sprintf ("BucketClassName not defined for bucket %s" , bucket .ObjectMeta .Name ))
74+ klog .V (3 ).ErrorS (err , "BucketClassName not defined" )
75+ return err
76+ }
7277
7378if ! strings .EqualFold (bucket .Spec .DriverName , b .driverName ) {
7479klog .V (5 ).InfoS ("Skipping bucket for driver" ,
@@ -93,6 +98,24 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
9398if bucket .Spec .ExistingBucketID != "" {
9499bucketReady = true
95100bucketID = bucket .Spec .ExistingBucketID
101+ if bucket .Spec .Parameters == nil {
102+ bucketClass , err := b .bucketClasses ().Get (ctx , bucket .Spec .BucketClassName , metav1.GetOptions {})
103+ if err != nil {
104+ klog .V (3 ).ErrorS (err , "Error fetching bucketClass" ,
105+ "bucketClass" , bucket .Spec .BucketClassName ,
106+ "bucket" , bucket .ObjectMeta .Name )
107+ return err
108+ }
109+
110+ if bucketClass .Parameters != nil {
111+ var param map [string ]string
112+ for k , v := range bucketClass .Parameters {
113+ param [k ] = v
114+ }
115+
116+ bucket .Spec .Parameters = param
117+ }
118+ }
96119} else {
97120req := & cosi.DriverCreateBucketRequest {
98121Parameters : bucket .Spec .Parameters ,
@@ -110,7 +133,7 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
110133}
111134
112135if rsp == nil {
113- err = errors .New ("DriverCreateBucket returned a nil response" )
136+ err = errors .New (fmt . Sprintf ( "DriverCreateBucket returned a nil response for bucket: %s" , bucket . ObjectMeta . Name ) )
114137klog .V (3 ).ErrorS (err , "Internal Error from driver" ,
115138"bucket" , bucket .ObjectMeta .Name )
116139return err
@@ -122,7 +145,7 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
122145} else {
123146klog .V (3 ).ErrorS (err , "DriverCreateBucket returned an empty bucketID" ,
124147"bucket" , bucket .ObjectMeta .Name )
125- err = errors .New ("DriverCreateBucket returned an empty bucketID" )
148+ err = errors .New (fmt . Sprintf ( "DriverCreateBucket returned an empty bucketID for bucket: %s" , bucket . ObjectMeta . Name ) )
126149return err
127150}
128151
@@ -245,12 +268,11 @@ func (b *BucketListener) Update(ctx context.Context, old, new *v1alpha1.Bucket)
245268func (b * BucketListener ) Delete (ctx context.Context , inputBucket * v1alpha1.Bucket ) error {
246269klog .V (3 ).InfoS ("Delete Bucket" ,
247270"name" , inputBucket .ObjectMeta .Name ,
248- "bucketclass" , inputBucket .Spec .BucketClassName ,
249- )
271+ "bucketclass" , inputBucket .Spec .BucketClassName )
250272
251273if inputBucket .Spec .BucketClaim != nil {
252- klog .V (3 ).Infof ("Removing dependent BucketClaim finalizer" )
253274ref := inputBucket .Spec .BucketClaim
275+ klog .V (3 ).Infof ("Removing finalizer of bucketClaim: %s before deleting bucket: %s" , ref .Name , inputBucket .ObjectMeta .Name )
254276
255277bucketClaim , err := b .bucketClaims (ref .Namespace ).Get (ctx , ref .Name , metav1.GetOptions {})
256278if err != nil {
@@ -261,7 +283,7 @@ func (b *BucketListener) Delete(ctx context.Context, inputBucket *v1alpha1.Bucke
261283}
262284
263285if controllerutil .RemoveFinalizer (bucketClaim , consts .BCFinalizer ) {
264- _ , err := b .bucketClaims (bucketClaim .ObjectMeta .Namespace ).UpdateStatus (ctx , bucketClaim , metav1.UpdateOptions {})
286+ _ , err := b .bucketClaims (bucketClaim .ObjectMeta .Namespace ).Update (ctx , bucketClaim , metav1.UpdateOptions {})
265287if err != nil {
266288klog .V (3 ).ErrorS (err , "Error removing bucketClaim finalizer" ,
267289"bucket" , inputBucket .ObjectMeta .Name ,
@@ -352,6 +374,13 @@ func (b *BucketListener) buckets() bucketapi.BucketInterface {
352374panic ("uninitialized listener" )
353375}
354376
377+ func (b * BucketListener ) bucketClasses () bucketapi.BucketClassInterface {
378+ if b .bucketClient != nil {
379+ return b .bucketClient .ObjectstorageV1alpha1 ().BucketClasses ()
380+ }
381+ panic ("uninitialized listener" )
382+ }
383+
355384func (b * BucketListener ) bucketClaims (namespace string ) bucketapi.BucketClaimInterface {
356385if b .bucketClient != nil {
357386return b .bucketClient .ObjectstorageV1alpha1 ().BucketClaims (namespace )
0 commit comments