@@ -237,6 +237,8 @@ func (b *BucketListener) Update(ctx context.Context, old, new *v1alpha1.Bucket)
237
237
}
238
238
239
239
// Delete attemps to delete a bucket. This function must be idempotent
240
+ // Delete function is called when the bucket was not able to add finalizers while creation.
241
+ // Hence we will take care of removing the BucketClaim finalizer before deleting the Bucket object.
240
242
// Return values
241
243
// nil - Bucket successfully deleted
242
244
// non-nil err - Internal error [requeue'd with exponential backoff]
@@ -246,6 +248,29 @@ func (b *BucketListener) Delete(ctx context.Context, inputBucket *v1alpha1.Bucke
246
248
"bucketclass" , inputBucket .Spec .BucketClassName ,
247
249
)
248
250
251
+ if inputBucket .Spec .BucketClaim != nil {
252
+ klog .V (3 ).Infof ("Removing dependent BucketClaim finalizer" )
253
+ ref := inputBucket .Spec .BucketClaim
254
+
255
+ bucketClaim , err := b .bucketClaims (ref .Namespace ).Get (ctx , ref .Name , metav1.GetOptions {})
256
+ if err != nil {
257
+ klog .V (3 ).ErrorS (err , "Error getting bucketClaim for removing finalizer" ,
258
+ "bucket" , inputBucket .ObjectMeta .Name ,
259
+ "bucketClaim" , ref .Name )
260
+ return err
261
+ }
262
+
263
+ if controllerutil .RemoveFinalizer (bucketClaim , consts .BCFinalizer ) {
264
+ _ , err := b .bucketClaims (bucketClaim .ObjectMeta .Namespace ).UpdateStatus (ctx , bucketClaim , metav1.UpdateOptions {})
265
+ if err != nil {
266
+ klog .V (3 ).ErrorS (err , "Error removing bucketClaim finalizer" ,
267
+ "bucket" , inputBucket .ObjectMeta .Name ,
268
+ "bucketClaim" , bucketClaim .ObjectMeta .Name )
269
+ return err
270
+ }
271
+ }
272
+ }
273
+
249
274
return nil
250
275
251
276
}
0 commit comments