@@ -182,24 +182,24 @@ extend google.protobuf.ServiceOptions {
182
182
service Identity {
183
183
// This call is meant to retrieve the unique provisioner Identity.
184
184
// This identity will have to be set in BucketRequest.Provisioner field in order to invoke this specific provisioner.
185
- rpc ProvisionerGetInfo (ProvisionerGetInfoRequest ) returns (ProvisionerGetInfoResponse ) {}
185
+ rpc DriverGetInfo (DriverGetInfoRequest ) returns (DriverGetInfoResponse ) {}
186
186
}
187
187
188
188
service Provisioner {
189
189
// This call is made to create the bucket in the backend.
190
190
// This call is idempotent
191
191
// 1. If a bucket that matches both name and parameters already exists, then OK (success) must be returned.
192
192
// 2. If a bucket by same name, but different parameters is provided, then the appropriate error code ALREADY_EXISTS must be returned.
193
- rpc ProvisionerCreateBucket (ProvisionerCreateBucketRequest ) returns (ProvisionerCreateBucketResponse ) {}
193
+ rpc DriverCreateBucket (DriverCreateBucketRequest ) returns (DriverCreateBucketResponse ) {}
194
194
// This call is made to delete the bucket in the backend.
195
195
// If the bucket has already been deleted, then no error should be returned.
196
- rpc ProvisionerDeleteBucket (ProvisionerDeleteBucketRequest ) returns (ProvisionerDeleteBucketResponse ) {}
196
+ rpc DriverDeleteBucket (DriverDeleteBucketRequest ) returns (DriverDeleteBucketResponse ) {}
197
197
198
198
// This call grants access to an account. The account_name in the request shall be used as a unique identifier to create credentials.
199
- // The account_id returned in the response will be used as the unique identifier for deleting this access when calling ProvisionerRevokeBucketAccess .
200
- rpc ProvisionerGrantBucketAccess (ProvisionerGrantBucketAccessRequest ) returns (ProvisionerGrantBucketAccessResponse );
199
+ // The account_id returned in the response will be used as the unique identifier for deleting this access when calling DriverRevokeBucketAccess .
200
+ rpc DriverGrantBucketAccess (DriverGrantBucketAccessRequest ) returns (DriverGrantBucketAccessResponse );
201
201
// This call revokes all access to a particular bucket from a principal.
202
- rpc ProvisionerRevokeBucketAccess (ProvisionerRevokeBucketAccessRequest ) returns (ProvisionerRevokeBucketAccessResponse );
202
+ rpc DriverRevokeBucketAccess (DriverRevokeBucketAccessRequest ) returns (DriverRevokeBucketAccessResponse );
203
203
}
204
204
205
205
// S3SignatureVersion is the version of the signing algorithm for all s3 requests
@@ -223,6 +223,14 @@ enum AnonymousBucketAccessMode {
223
223
ReadWrite = 4;
224
224
}
225
225
226
+ enum AuthenticationType {
227
+ UnknownAuthenticationType = 0;
228
+ // Default, KEY based authentication.
229
+ Key = 1;
230
+ // Storageaccount based authentication.
231
+ IAM = 2;
232
+ }
233
+
226
234
message S3 {
227
235
// region denotes the geographical region where the S3 server is running
228
236
string region = 1;
@@ -252,11 +260,11 @@ message Protocol {
252
260
}
253
261
}
254
262
255
- message ProvisionerGetInfoRequest {
263
+ message DriverGetInfoRequest {
256
264
// Intentionally left blank
257
265
}
258
266
259
- message ProvisionerGetInfoResponse {
267
+ message DriverGetInfoResponse {
260
268
// This field is REQUIRED
261
269
// The name MUST follow domain name notation format
262
270
// (https://tools.ietf.org/html/rfc1035#section-2.3.1). It SHOULD
@@ -268,72 +276,71 @@ message ProvisionerGetInfoResponse {
268
276
string name = 1;
269
277
}
270
278
271
- message ProvisionerCreateBucketRequest {
279
+ message DriverCreateBucketRequest {
272
280
// This field is REQUIRED
273
281
// name specifies the name of the bucket that should be created.
274
282
string name = 1;
275
283
276
- // This field is REQUIRED
277
- // Protocol specific information required by the call is passed in as key,value pairs.
278
- Protocol protocol = 2;
279
-
280
284
// This field is OPTIONAL
281
285
// The caller should treat the values in parameters as opaque.
282
286
// The receiver is responsible for parsing and validating the values.
283
- map<string,string> parameters = 3 ;
287
+ map<string,string> parameters = 2 ;
284
288
}
285
289
286
- message ProvisionerCreateBucketResponse {
290
+ message DriverCreateBucketResponse {
287
291
// bucket_id returned here is expected to be the globally unique
288
- // identifier for the bucket in the object storage provider
292
+ // identifier for the bucket in the object storage provider.
289
293
string bucket_id = 1;
294
+
295
+ // bucket_info returned here stores the data specific to the
296
+ // bucket required by the object storage provider to connect to the bucket.
297
+ Protocol bucket_info = 2;
290
298
}
291
299
292
- message ProvisionerDeleteBucketRequest {
300
+ message DriverDeleteBucketRequest {
293
301
// This field is REQUIRED
294
302
// bucket_id is a globally unique identifier for the bucket
295
303
// in the object storage provider
296
304
string bucket_id = 1;
297
305
}
298
306
299
- message ProvisionerDeleteBucketResponse {
307
+ message DriverDeleteBucketResponse {
300
308
// Intentionally left blank
301
309
}
302
310
303
- message ProvisionerGrantBucketAccessRequest {
311
+ message DriverGrantBucketAccessRequest {
304
312
// This field is REQUIRED
305
313
// bucket_id is a globally unique identifier for the bucket
306
314
// in the object storage provider
307
315
string bucket_id = 1;
308
316
309
317
// This field is REQUIRED
310
- // account_name is a identifier for object storage provider
311
- // to ensure that multiple requests for the same account
312
- // result in only one access token being created
313
- string account_name = 2;
318
+ // name field is used to define the name of the bucket access object.
319
+ string name = 2;
314
320
315
321
// This field is REQUIRED
316
- // Requested Access policy, ex: {"Effect":"Allow","Action":"s3:PutObject","Resource":"arn:aws:s3:::profilepics/*"}
317
- string access_policy = 3;
322
+ // Requested authentication type for the bucket access.
323
+ // Supported authentication types are KEY or IAM.
324
+ AuthenticationType authentication_type = 3;
318
325
319
326
// This field is OPTIONAL
320
327
// The caller should treat the values in parameters as opaque.
321
328
// The receiver is responsible for parsing and validating the values.
322
329
map<string,string> parameters = 4;
323
330
}
324
331
325
- message ProvisionerGrantBucketAccessResponse {
326
- // This field is OPTIONAL
332
+ message DriverGrantBucketAccessResponse {
333
+ // This field is REQUIRED
327
334
// This is the account_id that is being provided access. This will
328
335
// be required later to revoke access.
329
336
string account_id = 1;
330
337
331
- // This field is OPTIONAL
338
+ // This field is REQUIRED
332
339
// Credentials supplied for accessing the bucket ex: aws access key id and secret, etc.
333
340
string credentials = 2;
334
341
}
335
342
336
- message ProvisionerRevokeBucketAccessRequest {
343
+ message DriverRevokeBucketAccessRequest {
337
344
// This field is REQUIRED
338
345
// bucket_id is a globally unique identifier for the bucket
339
346
// in the object storage provider.
@@ -344,7 +351,7 @@ message ProvisionerRevokeBucketAccessRequest {
344
351
string account_id = 2;
345
352
}
346
353
347
- message ProvisionerRevokeBucketAccessResponse {
354
+ message DriverRevokeBucketAccessResponse {
348
355
// Intentionally left blank
349
356
}
350
357
@@ -423,19 +430,14 @@ The general flow of the success case MAY be as follows (protos illustrated in YA
423
430
request:
424
431
response:
425
432
name: org.foo.whizbang.super-plugin
426
- version: blue-green
427
- manifest:
428
- baz: qaz
429
433
```
430
434
```
431
- message ProvisionerGetInfoRequest {
435
+ message DriverGetInfoRequest {
432
436
// Intentionally left blank
433
437
}
434
438
435
- message ProvisionerGetInfoResponse {
439
+ message DriverGetInfoResponse {
436
440
string name = 1;
437
- string version = 2;
438
- map<string,string> manifest = 3;
439
441
}
440
442
```
441
443
0 commit comments