@@ -68,6 +68,10 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
6868
6969 var err error
7070
71+ if ! bucket .GetDeletionTimestamp ().IsZero () {
72+ return b .handleDeletion (ctx , bucket )
73+ }
74+
7175 klog .V (3 ).InfoS ("Add Bucket" ,
7276 "name" , bucket .ObjectMeta .Name )
7377
@@ -212,55 +216,60 @@ func (b *BucketListener) Update(ctx context.Context, old, new *v1alpha1.Bucket)
212216 var err error
213217
214218 if ! bucket .GetDeletionTimestamp ().IsZero () {
215- if controllerutil .ContainsFinalizer (bucket , consts .BABucketFinalizer ) {
216- bucketClaimNs := bucket .Spec .BucketClaim .Namespace
217- bucketClaimName := bucket .Spec .BucketClaim .Name
218- bucketAccessList , err := b .bucketAccesses (bucketClaimNs ).List (ctx , metav1.ListOptions {})
219- if err != nil {
220- klog .V (3 ).ErrorS (err , "Error fetching BucketAccessList" ,
221- "bucket" , bucket .ObjectMeta .Name )
222- return err
223- }
224-
225- for _ , bucketAccess := range bucketAccessList .Items {
226- if strings .EqualFold (bucketAccess .Spec .BucketClaimName , bucketClaimName ) {
227- err = b .bucketAccesses (bucketClaimNs ).Delete (ctx , bucketAccess .Name , metav1.DeleteOptions {})
228- if err != nil {
229- klog .V (3 ).ErrorS (err , "Error deleting BucketAccess" ,
230- "name" , bucketAccess .Name ,
231- "bucket" , bucket .ObjectMeta .Name )
232- return err
233- }
234- }
235- }
219+ return b .handleDeletion (ctx , bucket )
220+ }
236221
237- klog .V (5 ).Infof ("Successfully deleted dependent bucketAccess of bucket:%s" , bucket .ObjectMeta .Name )
222+ if err = b .Add (ctx , bucket ); err != nil {
223+ return err
224+ }
238225
239- controllerutil .RemoveFinalizer (bucket , consts .BABucketFinalizer )
240- klog .V (5 ).Infof ("Successfully removed finalizer: %s of bucket: %s" , consts .BABucketFinalizer , bucket .ObjectMeta .Name )
241- }
226+ klog .V (3 ).InfoS ("Update Bucket success" ,
227+ "name" , bucket .ObjectMeta .Name ,
228+ "ns" , bucket .ObjectMeta .Namespace )
229+ return nil
230+ }
242231
243- if controllerutil .ContainsFinalizer (bucket , consts .BucketFinalizer ) {
244- err = b .deleteBucketOp (ctx , bucket )
245- if err != nil {
246- return b .recordError (bucket , v1 .EventTypeWarning , v1alpha1 .FailedDeleteBucket , err )
247- }
232+ func (b * BucketListener ) handleDeletion (ctx context.Context , bucket * v1alpha1.Bucket ) error {
233+ var err error
248234
249- controllerutil .RemoveFinalizer (bucket , consts .BucketFinalizer )
250- klog . V ( 5 ). Infof ( "Successfully removed finalizer: %s of bucket: %s" , consts . BucketFinalizer , bucket . ObjectMeta . Name )
251- }
235+ if controllerutil .ContainsFinalizer (bucket , consts .BABucketFinalizer ) {
236+ bucketClaimNs := bucket . Spec . BucketClaim . Namespace
237+ bucketClaimName := bucket . Spec . BucketClaim . Name
252238
253- _ , err = b .buckets (). Update (ctx , bucket , metav1.UpdateOptions {})
239+ bucketAccessList , err : = b .bucketAccesses ( bucketClaimNs ). List (ctx , metav1.ListOptions {})
254240 if err != nil {
255- klog .V (3 ).ErrorS (err , "Error updating bucket after removing finalizers " ,
241+ klog .V (3 ).ErrorS (err , "Error fetching BucketAccessList " ,
256242 "bucket" , bucket .ObjectMeta .Name )
257243 return err
258244 }
245+
246+ for _ , ba := range bucketAccessList .Items {
247+ if strings .EqualFold (ba .Spec .BucketClaimName , bucketClaimName ) {
248+ if err = b .bucketAccesses (bucketClaimNs ).Delete (ctx , ba .Name , metav1.DeleteOptions {}); err != nil {
249+ klog .V (3 ).ErrorS (err , "Error deleting BucketAccess" ,
250+ "name" , ba .Name ,
251+ "bucket" , bucket .ObjectMeta .Name )
252+ return err
253+ }
254+ }
255+ }
256+
257+ controllerutil .RemoveFinalizer (bucket , consts .BABucketFinalizer )
258+ }
259+
260+ if controllerutil .ContainsFinalizer (bucket , consts .BucketFinalizer ) {
261+ if err = b .deleteBucketOp (ctx , bucket ); err != nil {
262+ return b .recordError (bucket , v1 .EventTypeWarning , v1alpha1 .FailedDeleteBucket , err )
263+ }
264+ controllerutil .RemoveFinalizer (bucket , consts .BucketFinalizer )
265+ }
266+
267+ if _ , err = b .buckets ().Update (ctx , bucket , metav1.UpdateOptions {}); err != nil {
268+ klog .V (3 ).ErrorS (err , "Error updating bucket after removing finalizers" ,
269+ "bucket" , bucket .ObjectMeta .Name )
270+ return err
259271 }
260272
261- klog .V (3 ).InfoS ("Update Bucket success" ,
262- "name" , bucket .ObjectMeta .Name ,
263- "ns" , bucket .ObjectMeta .Namespace )
264273 return nil
265274}
266275
0 commit comments