@@ -93,11 +93,11 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
93
93
94
94
bucketAccessClass , err := bal .bucketAccessClasses ().Get (ctx , bucketAccessClassName , metav1.GetOptions {})
95
95
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 )
98
97
} else if err != nil {
99
98
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 ))
101
101
}
102
102
103
103
if ! strings .EqualFold (bucketAccessClass .DriverName , bal .driverName ) {
@@ -122,7 +122,8 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
122
122
"bucketClaim" , bucketClaim .Name ,
123
123
"bucketAccess" , bucketAccess .ObjectMeta .Name ,
124
124
)
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 ))
126
127
}
127
128
128
129
authType := cosi .AuthenticationType_UnknownAuthenticationType
@@ -134,8 +135,7 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
134
135
135
136
if authType == cosi .AuthenticationType_IAM && bucketAccess .Spec .ServiceAccountName == "" {
136
137
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 )
139
139
}
140
140
141
141
if bucketAccess .Status .AccessGranted == true {
@@ -149,16 +149,16 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
149
149
bucket , err := bal .buckets ().Get (ctx , bucketClaim .Status .BucketName , metav1.GetOptions {})
150
150
if err != nil {
151
151
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 ))
153
154
}
154
155
155
156
if bucket .Status .BucketReady != true || bucket .Status .BucketID == "" {
156
157
err = fmt .Errorf ("%w: (isReady? %t), (ID empty? %t)" ,
157
158
consts .ErrInvalidBucketState ,
158
159
bucket .Status .BucketReady ,
159
160
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 )
162
162
}
163
163
164
164
accountName := consts .AccountNamePrefix + string (bucketAccess .UID )
@@ -174,23 +174,24 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
174
174
rsp , err := bal .provisionerClient .DriverGrantBucketAccess (ctx , req )
175
175
if err != nil {
176
176
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 ) )
179
179
}
180
-
181
180
}
182
181
183
182
if rsp .AccountId == "" {
184
183
err = consts .ErrUndefinedAccountID
185
184
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 ))
187
187
}
188
188
189
189
credentials := rsp .Credentials
190
190
if len (credentials ) != 1 {
191
191
err = consts .ErrInvalidCredentials
192
192
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 ))
194
195
}
195
196
196
197
bucketInfoName := consts .BucketInfoPrefix + string (bucketAccess .ObjectMeta .UID )
@@ -232,7 +233,7 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
232
233
233
234
stringData , err := json .Marshal (bucketInfo )
234
235
if err != nil {
235
- return consts .ErrBucketInfoConversionFailed
236
+ return bal . recordError ( inputBucketAccess , v1 . EventTypeWarning , events . FailedGrantAccess , consts .ErrBucketInfoConversionFailed )
236
237
}
237
238
238
239
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
241
242
"Failed to create secrets" ,
242
243
"bucketAccess" , bucketAccess .ObjectMeta .Name ,
243
244
"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 ))
245
247
}
246
248
247
249
if _ , err := bal .secrets (namespace ).Create (ctx , & v1.Secret {
@@ -260,15 +262,16 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
260
262
"Failed to create minted secret" ,
261
263
"bucketAccess" , bucketAccess .ObjectMeta .Name ,
262
264
"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 ))
264
267
}
265
268
}
266
269
}
267
270
268
271
if controllerutil .AddFinalizer (bucket , consts .BABucketFinalizer ) {
269
272
_ , err = bal .buckets ().Update (ctx , bucket , metav1.UpdateOptions {})
270
273
if err != nil {
271
- return err
274
+ return bal . recordError ( inputBucketAccess , v1 . EventTypeWarning , events . FailedGrantAccess , err )
272
275
}
273
276
}
274
277
@@ -278,7 +281,8 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
278
281
klog .V (3 ).ErrorS (err , "Failed to update BucketAccess finalizer" ,
279
282
"bucketAccess" , bucketAccess .ObjectMeta .Name ,
280
283
"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 ))
282
286
}
283
287
}
284
288
@@ -290,7 +294,8 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
290
294
klog .V (3 ).ErrorS (err , "Failed to update BucketAccess Status" ,
291
295
"bucketAccess" , bucketAccess .ObjectMeta .Name ,
292
296
"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 ))
294
299
}
295
300
296
301
return nil
@@ -308,7 +313,7 @@ func (bal *BucketAccessListener) Update(ctx context.Context, old, new *v1alpha1.
308
313
if ! bucketAccess .GetDeletionTimestamp ().IsZero () {
309
314
err := bal .deleteBucketAccessOp (ctx , bucketAccess )
310
315
if err != nil {
311
- return err
316
+ return bal . recordError ( bucketAccess , v1 . EventTypeWarning , events . FailedRevokeAccess , err )
312
317
}
313
318
}
314
319
@@ -353,7 +358,6 @@ func (bal *BucketAccessListener) deleteBucketAccessOp(ctx context.Context, bucke
353
358
354
359
// First we revoke the bucketAccess from the driver
355
360
if _ , err := bal .provisionerClient .DriverRevokeBucketAccess (ctx , req ); err != nil {
356
- bal .recordEvent (bucketAccess , v1 .EventTypeWarning , events .FailedRevokeAccess , err .Error ())
357
361
return fmt .Errorf ("failed to revoke access: %w" , err )
358
362
}
359
363
@@ -448,6 +452,16 @@ func (bal *BucketAccessListener) InitializeEventRecorder(er record.EventRecorder
448
452
bal .eventRecorder = er
449
453
}
450
454
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
+
451
465
// recordEvent during the processing of the objects
452
466
func (bal * BucketAccessListener ) recordEvent (subject runtime.Object , eventtype , reason , message string , args ... any ) {
453
467
if bal .eventRecorder == nil {
0 commit comments