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

Commit 00f904a

Browse files
committed
The creation of a static bucket requires verification of whether there is a corresponding bucket on the storage, otherwise binding should fail
1 parent 80979e8 commit 00f904a

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

pkg/bucket/bucket_controller.go

+30-2
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,36 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
9797
var bucketID string
9898

9999
if bucket.Spec.ExistingBucketID != "" {
100-
bucketReady = true
101-
bucketID = bucket.Spec.ExistingBucketID
100+
//如果bucket
101+
req := &cosi.DriverCreateBucketRequest{
102+
Parameters: bucket.Spec.Parameters,
103+
Name: bucket.ObjectMeta.Name,
104+
}
105+
106+
rsp, err := b.provisionerClient.DriverCreateBucket(ctx, req)
107+
if err != nil {
108+
if status.Code(err) != codes.PermissionDenied {
109+
//events.FailedCreateBucket indicates that the corresponding bucket does not exist on the storage
110+
return b.recordError(inputBucket, v1.EventTypeWarning, events.FailedCreateBucket, fmt.Errorf("failed to create bucket: %w", err))
111+
}
112+
}
113+
114+
if rsp == nil {
115+
err = consts.ErrInternal
116+
klog.V(3).ErrorS(err, "Internal Error from driver",
117+
"bucket", bucket.ObjectMeta.Name)
118+
return fmt.Errorf("%w for Bucket %v", err, bucket.Name)
119+
}
120+
121+
if rsp.BucketId != "" {
122+
bucketID = rsp.BucketId
123+
bucketReady = true
124+
} else {
125+
klog.V(3).ErrorS(err, "DriverCreateBucket returned an empty bucketID",
126+
"bucket", bucket.ObjectMeta.Name)
127+
return fmt.Errorf("%w for Bucket %v", consts.ErrEmptyBucketID, bucket.Name)
128+
}
129+
102130
if bucket.Spec.Parameters == nil {
103131
bucketClass, err := b.bucketClasses().Get(ctx, bucket.Spec.BucketClassName, metav1.GetOptions{})
104132
if kubeerrors.IsNotFound(err) {

0 commit comments

Comments
 (0)