@@ -237,6 +237,8 @@ func (b *BucketListener) Update(ctx context.Context, old, new *v1alpha1.Bucket)
237237}
238238
239239// 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.
240242// Return values
241243// nil - Bucket successfully deleted
242244// non-nil err - Internal error [requeue'd with exponential backoff]
@@ -246,6 +248,29 @@ func (b *BucketListener) Delete(ctx context.Context, inputBucket *v1alpha1.Bucke
246248 "bucketclass" , inputBucket .Spec .BucketClassName ,
247249 )
248250
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+
249274 return nil
250275
251276}
0 commit comments