@@ -93,11 +93,11 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
9393
9494 bucketAccessClass , err := bal .bucketAccessClasses ().Get (ctx , bucketAccessClassName , metav1.GetOptions {})
9595 if kubeerrors .IsNotFound (err ) {
96- bal .recordEvent (inputBucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess , err .Error ())
97- return err
96+ return bal .recordError (bucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess , err )
9897 } else if err != nil {
9998 klog .ErrorS (err , "Failed to fetch bucketAccessClass" , "bucketAccessClass" , bucketAccessClassName )
100- return fmt .Errorf ("failed to fetch BucketAccessClass: %w" , err )
99+ return bal .recordError (bucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess ,
100+ fmt .Errorf ("failed to fetch BucketAccessClass: %w" , err ))
101101 }
102102
103103 if ! strings .EqualFold (bucketAccessClass .DriverName , bal .driverName ) {
@@ -122,7 +122,8 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
122122 "bucketClaim" , bucketClaim .Name ,
123123 "bucketAccess" , bucketAccess .ObjectMeta .Name ,
124124 )
125- return fmt .Errorf ("invalid bucket state: %w" , err )
125+ return bal .recordError (bucketAccess , v1 .EventTypeWarning , events .WaitingForBucket ,
126+ fmt .Errorf ("invalid bucket state: %w" , err ))
126127 }
127128
128129 authType := cosi .AuthenticationType_UnknownAuthenticationType
@@ -134,8 +135,7 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
134135
135136 if authType == cosi .AuthenticationType_IAM && bucketAccess .Spec .ServiceAccountName == "" {
136137 err = consts .ErrUndefinedServiceAccountName
137- bal .recordEvent (inputBucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess , err .Error ())
138- return err
138+ return bal .recordError (bucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess , err )
139139 }
140140
141141 if bucketAccess .Status .AccessGranted == true {
@@ -149,16 +149,16 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
149149 bucket , err := bal .buckets ().Get (ctx , bucketClaim .Status .BucketName , metav1.GetOptions {})
150150 if err != nil {
151151 klog .V (3 ).ErrorS (err , "Failed to fetch bucket" , "bucket" , bucketClaim .Status .BucketName )
152- return fmt .Errorf ("failed to fetch bucket: %w" , err )
152+ return bal .recordError (bucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess ,
153+ fmt .Errorf ("failed to fetch bucket: %w" , err ))
153154 }
154155
155156 if bucket .Status .BucketReady != true || bucket .Status .BucketID == "" {
156157 err = fmt .Errorf ("%w: (isReady? %t), (ID empty? %t)" ,
157158 consts .ErrInvalidBucketState ,
158159 bucket .Status .BucketReady ,
159160 bucket .Status .BucketID == "" )
160- bal .recordEvent (inputBucketAccess , v1 .EventTypeWarning , events .WaitingForBucket , err .Error ())
161- return err
161+ return bal .recordError (bucketAccess , v1 .EventTypeWarning , events .WaitingForBucket , err )
162162 }
163163
164164 accountName := consts .AccountNamePrefix + string (bucketAccess .UID )
@@ -174,23 +174,24 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
174174 rsp , err := bal .provisionerClient .DriverGrantBucketAccess (ctx , req )
175175 if err != nil {
176176 if status .Code (err ) != codes .AlreadyExists {
177- bal .recordEvent (inputBucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess , err . Error ())
178- return fmt .Errorf ("failed to grant access: %w" , err )
177+ return bal .recordError (inputBucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess ,
178+ fmt .Errorf ("failed to grant bucket access: %w" , err ) )
179179 }
180-
181180 }
182181
183182 if rsp .AccountId == "" {
184183 err = consts .ErrUndefinedAccountID
185184 klog .V (3 ).ErrorS (err , "BucketAccess" , bucketAccess .ObjectMeta .Name )
186- return fmt .Errorf ("BucketAccess %s: %w" , bucketAccess .ObjectMeta .Name , err )
185+ return bal .recordError (inputBucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess ,
186+ fmt .Errorf ("BucketAccess %s: %w" , bucketAccess .ObjectMeta .Name , err ))
187187 }
188188
189189 credentials := rsp .Credentials
190190 if len (credentials ) != 1 {
191191 err = consts .ErrInvalidCredentials
192192 klog .V (3 ).ErrorS (err , "BucketAccess" , bucketAccess .ObjectMeta .Name )
193- return fmt .Errorf ("BucketAccess %s: %w" , bucketAccess .ObjectMeta .Name , err )
193+ return bal .recordError (inputBucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess ,
194+ fmt .Errorf ("BucketAccess %s: %w" , bucketAccess .ObjectMeta .Name , err ))
194195 }
195196
196197 bucketInfoName := consts .BucketInfoPrefix + string (bucketAccess .ObjectMeta .UID )
@@ -232,7 +233,7 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
232233
233234 stringData , err := json .Marshal (bucketInfo )
234235 if err != nil {
235- return consts .ErrBucketInfoConversionFailed
236+ return bal . recordError ( inputBucketAccess , v1 . EventTypeWarning , events . FailedGrantAccess , consts .ErrBucketInfoConversionFailed )
236237 }
237238
238239 if _ , err := bal .secrets (namespace ).Get (ctx , secretCredName , metav1.GetOptions {}); err != nil {
@@ -241,7 +242,8 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
241242 "Failed to create secrets" ,
242243 "bucketAccess" , bucketAccess .ObjectMeta .Name ,
243244 "bucket" , bucket .ObjectMeta .Name )
244- return fmt .Errorf ("failed to fetch secrets: %w" , err )
245+ return bal .recordError (inputBucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess ,
246+ fmt .Errorf ("failed to fetch secrets: %w" , err ))
245247 }
246248
247249 if _ , err := bal .secrets (namespace ).Create (ctx , & v1.Secret {
@@ -260,15 +262,16 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
260262 "Failed to create minted secret" ,
261263 "bucketAccess" , bucketAccess .ObjectMeta .Name ,
262264 "bucket" , bucket .ObjectMeta .Name )
263- return fmt .Errorf ("failed to create minted secret: %w" , err )
265+ return bal .recordError (inputBucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess ,
266+ fmt .Errorf ("failed to create minted secret: %w" , err ))
264267 }
265268 }
266269 }
267270
268271 if controllerutil .AddFinalizer (bucket , consts .BABucketFinalizer ) {
269272 _ , err = bal .buckets ().Update (ctx , bucket , metav1.UpdateOptions {})
270273 if err != nil {
271- return err
274+ return bal . recordError ( inputBucketAccess , v1 . EventTypeWarning , events . FailedGrantAccess , err )
272275 }
273276 }
274277
@@ -278,7 +281,8 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
278281 klog .V (3 ).ErrorS (err , "Failed to update BucketAccess finalizer" ,
279282 "bucketAccess" , bucketAccess .ObjectMeta .Name ,
280283 "bucket" , bucket .ObjectMeta .Name )
281- return fmt .Errorf ("failed to update finalizer on BucketAccess %s: %w" , bucketAccess .ObjectMeta .Name , err )
284+ return bal .recordError (inputBucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess ,
285+ fmt .Errorf ("failed to update finalizer on BucketAccess %s: %w" , bucketAccess .ObjectMeta .Name , err ))
282286 }
283287 }
284288
@@ -290,7 +294,8 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
290294 klog .V (3 ).ErrorS (err , "Failed to update BucketAccess Status" ,
291295 "bucketAccess" , bucketAccess .ObjectMeta .Name ,
292296 "bucket" , bucket .ObjectMeta .Name )
293- return fmt .Errorf ("failed to update Status on BucketAccess %s: %w" , bucketAccess .ObjectMeta .Name , err )
297+ return bal .recordError (inputBucketAccess , v1 .EventTypeWarning , events .FailedGrantAccess ,
298+ fmt .Errorf ("failed to update Status on BucketAccess %s: %w" , bucketAccess .ObjectMeta .Name , err ))
294299 }
295300
296301 return nil
@@ -308,7 +313,7 @@ func (bal *BucketAccessListener) Update(ctx context.Context, old, new *v1alpha1.
308313 if ! bucketAccess .GetDeletionTimestamp ().IsZero () {
309314 err := bal .deleteBucketAccessOp (ctx , bucketAccess )
310315 if err != nil {
311- return err
316+ return bal . recordError ( bucketAccess , v1 . EventTypeWarning , events . FailedRevokeAccess , err )
312317 }
313318 }
314319
@@ -353,7 +358,6 @@ func (bal *BucketAccessListener) deleteBucketAccessOp(ctx context.Context, bucke
353358
354359 // First we revoke the bucketAccess from the driver
355360 if _ , err := bal .provisionerClient .DriverRevokeBucketAccess (ctx , req ); err != nil {
356- bal .recordEvent (bucketAccess , v1 .EventTypeWarning , events .FailedRevokeAccess , err .Error ())
357361 return fmt .Errorf ("failed to revoke access: %w" , err )
358362 }
359363
@@ -448,6 +452,16 @@ func (bal *BucketAccessListener) InitializeEventRecorder(er record.EventRecorder
448452 bal .eventRecorder = er
449453}
450454
455+ // recordError during the processing of the objects
456+ func (b * BucketAccessListener ) recordError (subject runtime.Object , eventtype , reason string , err error ) error {
457+ if b .eventRecorder == nil {
458+ return err
459+ }
460+ b .eventRecorder .Event (subject , eventtype , reason , err .Error ())
461+
462+ return err
463+ }
464+
451465// recordEvent during the processing of the objects
452466func (bal * BucketAccessListener ) recordEvent (subject runtime.Object , eventtype , reason , message string , args ... any ) {
453467 if bal .eventRecorder == nil {
0 commit comments