@@ -97,8 +97,36 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
97
97
var bucketID string
98
98
99
99
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
+
102
130
if bucket .Spec .Parameters == nil {
103
131
bucketClass , err := b .bucketClasses ().Get (ctx , bucket .Spec .BucketClassName , metav1.GetOptions {})
104
132
if kubeerrors .IsNotFound (err ) {
0 commit comments