@@ -17,6 +17,7 @@ package bucket
17
17
18
18
import (
19
19
"context"
20
+ "fmt"
20
21
"strings"
21
22
22
23
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -66,9 +67,13 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
66
67
var err error
67
68
68
69
klog .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
+ }
72
77
73
78
if ! strings .EqualFold (bucket .Spec .DriverName , b .driverName ) {
74
79
klog .V (5 ).InfoS ("Skipping bucket for driver" ,
@@ -93,6 +98,24 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
93
98
if bucket .Spec .ExistingBucketID != "" {
94
99
bucketReady = true
95
100
bucketID = 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
+ }
96
119
} else {
97
120
req := & cosi.DriverCreateBucketRequest {
98
121
Parameters : bucket .Spec .Parameters ,
@@ -110,7 +133,7 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
110
133
}
111
134
112
135
if 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 ) )
114
137
klog .V (3 ).ErrorS (err , "Internal Error from driver" ,
115
138
"bucket" , bucket .ObjectMeta .Name )
116
139
return err
@@ -122,7 +145,7 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
122
145
} else {
123
146
klog .V (3 ).ErrorS (err , "DriverCreateBucket returned an empty bucketID" ,
124
147
"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 ) )
126
149
return err
127
150
}
128
151
@@ -245,12 +268,11 @@ func (b *BucketListener) Update(ctx context.Context, old, new *v1alpha1.Bucket)
245
268
func (b * BucketListener ) Delete (ctx context.Context , inputBucket * v1alpha1.Bucket ) error {
246
269
klog .V (3 ).InfoS ("Delete Bucket" ,
247
270
"name" , inputBucket .ObjectMeta .Name ,
248
- "bucketclass" , inputBucket .Spec .BucketClassName ,
249
- )
271
+ "bucketclass" , inputBucket .Spec .BucketClassName )
250
272
251
273
if inputBucket .Spec .BucketClaim != nil {
252
- klog .V (3 ).Infof ("Removing dependent BucketClaim finalizer" )
253
274
ref := inputBucket .Spec .BucketClaim
275
+ klog .V (3 ).Infof ("Removing finalizer of bucketClaim: %s before deleting bucket: %s" , ref .Name , inputBucket .ObjectMeta .Name )
254
276
255
277
bucketClaim , err := b .bucketClaims (ref .Namespace ).Get (ctx , ref .Name , metav1.GetOptions {})
256
278
if err != nil {
@@ -261,7 +283,7 @@ func (b *BucketListener) Delete(ctx context.Context, inputBucket *v1alpha1.Bucke
261
283
}
262
284
263
285
if 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 {})
265
287
if err != nil {
266
288
klog .V (3 ).ErrorS (err , "Error removing bucketClaim finalizer" ,
267
289
"bucket" , inputBucket .ObjectMeta .Name ,
@@ -352,6 +374,13 @@ func (b *BucketListener) buckets() bucketapi.BucketInterface {
352
374
panic ("uninitialized listener" )
353
375
}
354
376
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
+
355
384
func (b * BucketListener ) bucketClaims (namespace string ) bucketapi.BucketClaimInterface {
356
385
if b .bucketClient != nil {
357
386
return b .bucketClient .ObjectstorageV1alpha1 ().BucketClaims (namespace )
0 commit comments