Skip to content
This repository was archived by the owner on Dec 6, 2024. It is now read-only.

Commit 3e61226

Browse files
committed
chore: streamline errors
Signed-off-by: Mateusz Urbanek <[email protected]>
1 parent c719575 commit 3e61226

File tree

3 files changed

+34
-31
lines changed

3 files changed

+34
-31
lines changed

Diff for: container-object-storage-interface-provisioner-sidecar/go.sum

-2
Original file line numberDiff line numberDiff line change
@@ -725,8 +725,6 @@ k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/
725725
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
726726
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
727727
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
728-
sigs.k8s.io/container-object-storage-interface-api v0.1.1-0.20231116171305-97700454b010 h1:8Lw3AyLbbkRGlB9GRu9prtSPEp8DLlXjUzaXN6b9gxM=
729-
sigs.k8s.io/container-object-storage-interface-api v0.1.1-0.20231116171305-97700454b010/go.mod h1:YiB+i/UGkzqgODDhRG3u7jkbWkQcoUeLEJ7hwOT/2Qk=
730728
sigs.k8s.io/container-object-storage-interface-api v0.1.1-0.20240208184109-05444273ee49 h1:Ax4j3ThWolmk6yH6jvL3Yf0Fzxe0ZfVuDlSLNILU3GA=
731729
sigs.k8s.io/container-object-storage-interface-api v0.1.1-0.20240208184109-05444273ee49/go.mod h1:YiB+i/UGkzqgODDhRG3u7jkbWkQcoUeLEJ7hwOT/2Qk=
732730
sigs.k8s.io/container-object-storage-interface-spec v0.1.1-0.20221006174327-ec782953b8ac h1:M1ZBBDJVWw3gDmE+kZZmwQ6+29GbWhG9RMqx9oV0tEs=

Diff for: container-object-storage-interface-provisioner-sidecar/pkg/bucketaccess/bucketaccess_controller.go

+25-21
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"strings"
2323
"time"
2424

25-
"github.com/pkg/errors"
2625
"google.golang.org/grpc/codes"
2726
"google.golang.org/grpc/status"
2827
v1 "k8s.io/api/core/v1"
@@ -94,11 +93,11 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
9493

9594
bucketAccessClass, err := bal.bucketAccessClasses().Get(ctx, bucketAccessClassName, metav1.GetOptions{})
9695
if kubeerrors.IsNotFound(err) {
97-
bal.recordEvent(inputBucketAccess, v1.EventTypeWarning, events.FailedGrantAccess, "BucketAccessClass %v provided in the BucketAccess does not exist: %v", bucketAccessClass.Name, err)
96+
bal.recordEvent(inputBucketAccess, v1.EventTypeWarning, events.FailedGrantAccess, err.Error())
9897
return err
9998
} else if err != nil {
10099
klog.ErrorS(err, "Failed to fetch bucketAccessClass", "bucketAccessClass", bucketAccessClassName)
101-
return errors.Wrap(err, "Failed to fetch BucketAccessClass")
100+
return fmt.Errorf("failed to fetch BucketAccessClass: %w", err)
102101
}
103102

104103
if !strings.EqualFold(bucketAccessClass.DriverName, bal.driverName) {
@@ -113,7 +112,7 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
113112
bucketClaim, err := bal.bucketClaims(namespace).Get(ctx, bucketClaimName, metav1.GetOptions{})
114113
if err != nil {
115114
klog.V(3).ErrorS(err, "Failed to fetch bucketClaim", "bucketClaim", bucketClaimName)
116-
return errors.Wrap(err, "Failed to fetch bucketClaim")
115+
return fmt.Errorf("failed to fetch bucketClaim: %w", err)
117116
}
118117

119118
if bucketClaim.Status.BucketName == "" || bucketClaim.Status.BucketReady != true {
@@ -123,7 +122,7 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
123122
"bucketClaim", bucketClaim.Name,
124123
"bucketAccess", bucketAccess.ObjectMeta.Name,
125124
)
126-
return errors.Wrap(err, "Invalid arguments")
125+
return fmt.Errorf("invalid bucket state: %w", err)
127126
}
128127

129128
authType := cosi.AuthenticationType_UnknownAuthenticationType
@@ -134,8 +133,9 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
134133
}
135134

136135
if authType == cosi.AuthenticationType_IAM && bucketAccess.Spec.ServiceAccountName == "" {
137-
bal.recordEvent(inputBucketAccess, v1.EventTypeWarning, events.FailedGrantAccess, "Must define ServiceAccountName when AuthenticationType is IAM.")
138-
return errors.New("Must define ServiceAccountName when AuthenticationType is IAM")
136+
err = consts.ErrUndefinedServiceAccountName
137+
bal.recordEvent(inputBucketAccess, v1.EventTypeWarning, events.FailedGrantAccess, err.Error())
138+
return err
139139
}
140140

141141
if bucketAccess.Status.AccessGranted == true {
@@ -149,12 +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 errors.Wrap(err, "Failed to fetch bucket")
152+
return fmt.Errorf("failed to fetch bucket: %w", err)
153153
}
154154

155155
if bucket.Status.BucketReady != true || bucket.Status.BucketID == "" {
156-
bal.recordEvent(inputBucketAccess, v1.EventTypeWarning, events.WaitingForBucket, "BucketAccess can't be granted to Bucket %v not in Ready state (isReady? %t) or without a bucketID (ID empty? %t).", bucket.Name, bucket.Status.BucketReady, bucket.Status.BucketID == "")
157-
return consts.ErrInvalidBucketState
156+
err = fmt.Errorf("%w: (isReady? %t), (ID empty? %t)",
157+
consts.ErrInvalidBucketState,
158+
bucket.Status.BucketReady,
159+
bucket.Status.BucketID == "")
160+
bal.recordEvent(inputBucketAccess, v1.EventTypeWarning, events.WaitingForBucket, err.Error())
161+
return err
158162
}
159163

160164
accountName := consts.AccountNamePrefix + string(bucketAccess.UID)
@@ -170,23 +174,23 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
170174
rsp, err := bal.provisionerClient.DriverGrantBucketAccess(ctx, req)
171175
if err != nil {
172176
if status.Code(err) != codes.AlreadyExists {
173-
bal.recordEvent(inputBucketAccess, v1.EventTypeWarning, events.FailedGrantAccess, "Failed to grant access.")
174-
return errors.Wrap(err, "failed to grant access")
177+
bal.recordEvent(inputBucketAccess, v1.EventTypeWarning, events.FailedGrantAccess, err.Error())
178+
return fmt.Errorf("failed to grant access: %w", err)
175179
}
176180

177181
}
178182

179183
if rsp.AccountId == "" {
180184
err = consts.ErrUndefinedAccountID
181185
klog.V(3).ErrorS(err, "BucketAccess", bucketAccess.ObjectMeta.Name)
182-
return errors.Wrap(err, fmt.Sprintf("BucketAccess %s", bucketAccess.ObjectMeta.Name))
186+
return fmt.Errorf("BucketAccess %s: %w", bucketAccess.ObjectMeta.Name, err)
183187
}
184188

185189
credentials := rsp.Credentials
186190
if len(credentials) != 1 {
187191
err = consts.ErrInvalidCredentials
188192
klog.V(3).ErrorS(err, "BucketAccess", bucketAccess.ObjectMeta.Name)
189-
return errors.Wrap(err, fmt.Sprintf("BucketAccess %s", bucketAccess.ObjectMeta.Name))
193+
return fmt.Errorf("BucketAccess %s: %w", bucketAccess.ObjectMeta.Name, err)
190194
}
191195

192196
bucketInfoName := consts.BucketInfoPrefix + string(bucketAccess.ObjectMeta.UID)
@@ -237,7 +241,7 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
237241
"Failed to create secrets",
238242
"bucketAccess", bucketAccess.ObjectMeta.Name,
239243
"bucket", bucket.ObjectMeta.Name)
240-
return errors.Wrap(err, "failed to fetch secrets")
244+
return fmt.Errorf("failed to fetch secrets: %w", err)
241245
}
242246

243247
if _, err := bal.secrets(namespace).Create(ctx, &v1.Secret{
@@ -256,7 +260,7 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
256260
"Failed to create minted secret",
257261
"bucketAccess", bucketAccess.ObjectMeta.Name,
258262
"bucket", bucket.ObjectMeta.Name)
259-
return errors.Wrap(err, "Failed to create minted secret")
263+
return fmt.Errorf("failed to create minted secret: %w", err)
260264
}
261265
}
262266
}
@@ -274,7 +278,7 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
274278
klog.V(3).ErrorS(err, "Failed to update BucketAccess finalizer",
275279
"bucketAccess", bucketAccess.ObjectMeta.Name,
276280
"bucket", bucket.ObjectMeta.Name)
277-
return errors.Wrap(err, fmt.Sprintf("Failed to update BucketAccess finalizer. BucketAccess: %s", bucketAccess.ObjectMeta.Name))
281+
return fmt.Errorf("failed to update finalizer on BucketAccess %s: %w", bucketAccess.ObjectMeta.Name, err)
278282
}
279283
}
280284

@@ -286,7 +290,7 @@ func (bal *BucketAccessListener) Add(ctx context.Context, inputBucketAccess *v1a
286290
klog.V(3).ErrorS(err, "Failed to update BucketAccess Status",
287291
"bucketAccess", bucketAccess.ObjectMeta.Name,
288292
"bucket", bucket.ObjectMeta.Name)
289-
return errors.Wrap(err, fmt.Sprintf("Failed to update BucketAccess Status. BucketAccess: %s", bucketAccess.ObjectMeta.Name))
293+
return fmt.Errorf("failed to update Status on BucketAccess %s: %w", bucketAccess.ObjectMeta.Name, err)
290294
}
291295

292296
return nil
@@ -333,13 +337,13 @@ func (bal *BucketAccessListener) deleteBucketAccessOp(ctx context.Context, bucke
333337
bucketClaim, err := bal.bucketClaims(bucketAccess.ObjectMeta.Namespace).Get(ctx, bucketClaimName, metav1.GetOptions{})
334338
if err != nil {
335339
klog.V(3).ErrorS(err, "Failed to fetch bucketClaim", "bucketClaim", bucketClaimName)
336-
return errors.Wrap(err, "Failed to fetch bucketClaim")
340+
return fmt.Errorf("failed to fetch bucketClaim: %w", err)
337341
}
338342

339343
bucket, err := bal.buckets().Get(ctx, bucketClaim.Status.BucketName, metav1.GetOptions{})
340344
if err != nil {
341345
klog.V(3).ErrorS(err, "Failed to fetch bucket", "bucket", bucketClaim.Status.BucketName)
342-
return errors.Wrap(err, "Failed to fetch bucket")
346+
return fmt.Errorf("failed to fetch bucket: %w", err)
343347
}
344348

345349
req := &cosi.DriverRevokeBucketAccessRequest{
@@ -350,7 +354,7 @@ func (bal *BucketAccessListener) deleteBucketAccessOp(ctx context.Context, bucke
350354
// First we revoke the bucketAccess from the driver
351355
if _, err := bal.provisionerClient.DriverRevokeBucketAccess(ctx, req); err != nil {
352356
bal.recordEvent(bucketAccess, v1.EventTypeWarning, events.FailedRevokeAccess, "Failed to revoke bucket access.")
353-
return errors.Wrap(err, "failed to revoke access")
357+
return fmt.Errorf("failed to revoke access: %w", err)
354358
}
355359

356360
credSecretName := bucketAccess.Spec.CredentialsSecretName

Diff for: container-object-storage-interface-provisioner-sidecar/pkg/consts/consts.go

+9-8
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,13 @@ const (
3939
)
4040

4141
var (
42-
ErrInternal = errors.New("driverCreateBucket returned a nil response")
43-
ErrBucketInfoConversionFailed = errors.New("error converting bucketInfo into Secret")
44-
ErrEmptyBucketID = errors.New("driverCreateBucket returned an empty bucketID")
45-
ErrUndefinedBucketClassName = errors.New("BucketClassName not defined")
46-
ErrUndefinedAccountID = errors.New("AccountId not defined in DriverGrantBucketAccess")
47-
ErrUndefinedSecretName = errors.New("CredentialsSecretName not defined in the BucketAccess")
48-
ErrInvalidBucketState = errors.New("BucketName cannot be empty or BucketNotReady in bucketClaim")
49-
ErrInvalidCredentials = errors.New("Credentials returned in DriverGrantBucketAccessResponse should be of length 1")
42+
ErrInternal = errors.New("driverCreateBucket returned a nil response")
43+
ErrBucketInfoConversionFailed = errors.New("error converting bucketInfo into Secret")
44+
ErrEmptyBucketID = errors.New("driverCreateBucket returned an empty bucketID")
45+
ErrUndefinedBucketClassName = errors.New("BucketClassName not defined")
46+
ErrUndefinedAccountID = errors.New("AccountId not defined in DriverGrantBucketAccess")
47+
ErrUndefinedSecretName = errors.New("CredentialsSecretName not defined in the BucketAccess")
48+
ErrInvalidBucketState = errors.New("BucketAccess can't be granted to Bucket not in Ready state")
49+
ErrInvalidCredentials = errors.New("Credentials returned in DriverGrantBucketAccessResponse should be of length 1")
50+
ErrUndefinedServiceAccountName = errors.New("ServiceAccountName required when AuthenticationType is IAM")
5051
)

0 commit comments

Comments
 (0)