@@ -19,6 +19,7 @@ package bucket
19
19
import (
20
20
"context"
21
21
"fmt"
22
+ "github.com/pkg/errors"
22
23
"strings"
23
24
"time"
24
25
@@ -101,20 +102,28 @@ func (bl *bucketListener) Add(ctx context.Context, obj *v1alpha1.Bucket) error {
101
102
}
102
103
103
104
req := osspec.ProvisionerCreateBucketRequest {
104
- BucketName : obj .Name ,
105
- BucketContext : bl .getParams (obj ),
105
+ Parameters : bl .getParams (obj ),
106
106
}
107
+ if req .Parameters == nil {
108
+ req .Parameters = make (map [string ]string )
109
+ }
110
+
111
+ proto , err := obj .Spec .Protocol .ConvertToExternal ()
112
+ if err != nil {
113
+ return errors .Wrap (err , "failed to parse protocol for API" )
114
+ }
115
+ req .Protocol = proto
107
116
108
- req .BucketContext ["ProtocolVersion" ] = obj .Spec .Protocol .Version
117
+ req .Parameters ["ProtocolVersion" ] = obj .Spec .Protocol .Version
109
118
110
119
if obj .Spec .AnonymousAccessMode .Private {
111
- req .AnonymousBucketAccessMode = osspec .ProvisionerCreateBucketRequest_BUCKET_PRIVATE
120
+ req .AnonymousBucketAccessMode = osspec .AnonymousBucketAccessMode_Private
112
121
} else if obj .Spec .AnonymousAccessMode .PublicReadOnly {
113
- req .AnonymousBucketAccessMode = osspec .ProvisionerCreateBucketRequest_BUCKET_READ_ONLY
122
+ req .AnonymousBucketAccessMode = osspec .AnonymousBucketAccessMode_ReadOnly
114
123
} else if obj .Spec .AnonymousAccessMode .PublicReadWrite {
115
- req .AnonymousBucketAccessMode = osspec .ProvisionerCreateBucketRequest_BUCKET_WRITE_ONLY
124
+ req .AnonymousBucketAccessMode = osspec .AnonymousBucketAccessMode_ReadWrite
116
125
} else if obj .Spec .AnonymousAccessMode .PublicWriteOnly {
117
- req .AnonymousBucketAccessMode = osspec .ProvisionerCreateBucketRequest_BUCKET_READ_WRITE
126
+ req .AnonymousBucketAccessMode = osspec .AnonymousBucketAccessMode_WriteOnly
118
127
}
119
128
120
129
// TODO set grpc timeout
@@ -147,28 +156,19 @@ func (bl *bucketListener) Delete(ctx context.Context, obj *v1alpha1.Bucket) erro
147
156
}
148
157
149
158
req := osspec.ProvisionerDeleteBucketRequest {
150
- BucketContext : bl .getParams (obj ),
159
+ Parameters : bl .getParams (obj ),
160
+ }
161
+ if req .Parameters == nil {
162
+ req .Parameters = make (map [string ]string )
151
163
}
152
164
153
- switch obj .Spec .Protocol .Name {
154
- case v1alpha1 .ProtocolNameS3 :
155
- req .BucketName = obj .Spec .Protocol .S3 .BucketName
156
- req .BucketContext ["Region" ] = obj .Spec .Protocol .S3 .Region
157
- req .BucketContext ["SignatureVersion" ] = string (obj .Spec .Protocol .S3 .SignatureVersion )
158
- req .BucketContext ["Endpoint" ] = obj .Spec .Protocol .S3 .Endpoint
159
- case v1alpha1 .ProtocolNameAzure :
160
- req .BucketName = obj .Spec .Protocol .AzureBlob .ContainerName
161
- req .BucketContext ["StorageAccount" ] = obj .Spec .Protocol .AzureBlob .StorageAccount
162
- case v1alpha1 .ProtocolNameGCS :
163
- req .BucketName = obj .Spec .Protocol .GCS .BucketName
164
- req .BucketContext ["ServiceAccount" ] = obj .Spec .Protocol .GCS .ServiceAccount
165
- req .BucketContext ["PrivateKeyName" ] = obj .Spec .Protocol .GCS .PrivateKeyName
166
- req .BucketContext ["ProjectID" ] = obj .Spec .Protocol .GCS .ProjectID
167
- default :
168
- return fmt .Errorf ("unknown protocol: %s" , obj .Spec .Protocol .Name )
165
+ proto , err := obj .Spec .Protocol .ConvertToExternal ()
166
+ if err != nil {
167
+ return errors .Wrap (err , "failed to parse protocol for API" )
169
168
}
169
+ req .Protocol = proto
170
170
171
- req .BucketContext ["ProtocolVersion" ] = obj .Spec .Protocol .Version
171
+ req .Parameters ["ProtocolVersion" ] = obj .Spec .Protocol .Version
172
172
173
173
// TODO set grpc timeout
174
174
rsp , err := bl .provisionerClient .ProvisionerDeleteBucket (ctx , & req )
0 commit comments