diff --git a/Makefile b/Makefile index 5d044cf..d34cf5d 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ export GOPATH # Only set PROTOC_VER if it has an empty value. ifeq (,$(strip $(PROTOC_VER))) -PROTOC_VER := 3.9.1 +PROTOC_VER := 3.14.0 endif PROTOC_OS := $(shell uname -s) @@ -36,14 +36,16 @@ endif PROTOC := ./protoc PROTOC_ZIP := protoc-$(PROTOC_VER)-$(PROTOC_OS)-$(PROTOC_ARCH).zip -PROTOC_URL := https://github.com/google/protobuf/releases/download/v$(PROTOC_VER)/$(PROTOC_ZIP) +PROTOC_URL := https://github.com/protocolbuffers/protobuf/releases/download/v$(PROTOC_VER)/$(PROTOC_ZIP) PROTOC_TMP_DIR := .protoc PROTOC_TMP_BIN := $(PROTOC_TMP_DIR)/bin/protoc +PROTOC_TMP_INC := $(PROTOC_TMP_DIR)/include $(PROTOC): -mkdir -p "$(PROTOC_TMP_DIR)" && \ curl -L $(PROTOC_URL) -o "$(PROTOC_TMP_DIR)/$(PROTOC_ZIP)" && \ - unzip "$(PROTOC_TMP_DIR)/$(PROTOC_ZIP)" -d "$(PROTOC_TMP_DIR)" && \ + unzip -o "$(PROTOC_TMP_DIR)/$(PROTOC_ZIP)" -d "$(PROTOC_TMP_DIR)" && \ + unzip -o "$(PROTOC_TMP_DIR)/$(PROTOC_ZIP)" -d "$(PROTOC_TMP_INC)/*" && \ chmod 0755 "$(PROTOC_TMP_BIN)" && \ cp -f "$(PROTOC_TMP_BIN)" "$@" stat "$@" > /dev/null 2>&1 @@ -77,7 +79,7 @@ $(PROTOC_GEN_GO): # for protoc-gen-go PROTOC_GEN_GO_JSON_PKG := github.com/mitchellh/protoc-gen-go-json PROTOC_GEN_GO_JSON := protoc-gen-go-json -$(PROTOC_GEN_GO_JSON): PROTOC_GEN_GO_JSON_VERSION := v1.0.0 +$(PROTOC_GEN_GO_JSON): PROTOC_GEN_GO_JSON_VERSION := v1.1.0 $(PROTOC_GEN_GO_JSON): mkdir -p $(dir $(GOPATH)/src/$(PROTOC_GEN_GO_JSON_PKG)) test -d $(GOPATH)/src/$(PROTOC_GEN_GO_JSON_PKG)/.git || git clone https://$(PROTOC_GEN_GO_JSON_PKG) $(GOPATH)/src/$(PROTOC_GEN_GO_JSON_PKG) @@ -170,7 +172,7 @@ $(COSI_GO_TMP): GO_OUT := plugins=grpc $(COSI_GO_TMP): GO_OUT := $(GO_OUT),Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor $(COSI_GO_TMP): GO_OUT := $(GO_OUT),Mgoogle/protobuf/wrappers.proto=$(PTYPES_PKG)/wrappers $(COSI_GO_TMP): GO_OUT := $(GO_OUT):"$(HERE)/$(COSI_BUILD)" -$(COSI_GO_TMP): GO_JSON_OUT := emit_defaults +$(COSI_GO_TMP): GO_JSON_OUT := emit_defaults=true $(COSI_GO_TMP): GO_JSON_OUT := $(GO_JSON_OUT):"$(HERE)/$(COSI_BUILD)" $(COSI_GO_TMP): GO_FAKE_OUT := emit_defaults $(COSI_GO_TMP): GO_FAKE_OUT := $(GO_FAKE_OUT),packagePath=sigs.k8s.io/container-object-storage-interface-spec diff --git a/cosi.pb.go b/cosi.pb.go index ec33085..d25d1b2 100644 --- a/cosi.pb.go +++ b/cosi.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0 -// protoc v3.9.1 +// protoc v3.14.0 // source: sigs.k8s.io/container-object-storage-interface-spec/cosi.proto package cosi @@ -143,6 +143,57 @@ func (AnonymousBucketAccessMode) EnumDescriptor() ([]byte, []int) { return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{1} } +type AuthenticationType int32 + +const ( + AuthenticationType_UnknownAuthenticationType AuthenticationType = 0 + // Default, KEY based authentication. + AuthenticationType_Key AuthenticationType = 1 + // Storageaccount based authentication. + AuthenticationType_IAM AuthenticationType = 2 +) + +// Enum value maps for AuthenticationType. +var ( + AuthenticationType_name = map[int32]string{ + 0: "UnknownAuthenticationType", + 1: "Key", + 2: "IAM", + } + AuthenticationType_value = map[string]int32{ + "UnknownAuthenticationType": 0, + "Key": 1, + "IAM": 2, + } +) + +func (x AuthenticationType) Enum() *AuthenticationType { + p := new(AuthenticationType) + *p = x + return p +} + +func (x AuthenticationType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AuthenticationType) Descriptor() protoreflect.EnumDescriptor { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_enumTypes[2].Descriptor() +} + +func (AuthenticationType) Type() protoreflect.EnumType { + return &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_enumTypes[2] +} + +func (x AuthenticationType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AuthenticationType.Descriptor instead. +func (AuthenticationType) EnumDescriptor() ([]byte, []int) { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{2} +} + type S3 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -408,14 +459,17 @@ func (*Protocol_AzureBlob) isProtocol_Type() {} func (*Protocol_Gcs) isProtocol_Type() {} -type ProvisionerGetInfoRequest struct { +type CredentialDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // map of the details in the secrets for the protocol string + Secrets map[string]string `protobuf:"bytes,1,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *ProvisionerGetInfoRequest) Reset() { - *x = ProvisionerGetInfoRequest{} +func (x *CredentialDetails) Reset() { + *x = CredentialDetails{} if protoimpl.UnsafeEnabled { mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -423,13 +477,13 @@ func (x *ProvisionerGetInfoRequest) Reset() { } } -func (x *ProvisionerGetInfoRequest) String() string { +func (x *CredentialDetails) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProvisionerGetInfoRequest) ProtoMessage() {} +func (*CredentialDetails) ProtoMessage() {} -func (x *ProvisionerGetInfoRequest) ProtoReflect() protoreflect.Message { +func (x *CredentialDetails) ProtoReflect() protoreflect.Message { mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -441,12 +495,57 @@ func (x *ProvisionerGetInfoRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProvisionerGetInfoRequest.ProtoReflect.Descriptor instead. -func (*ProvisionerGetInfoRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CredentialDetails.ProtoReflect.Descriptor instead. +func (*CredentialDetails) Descriptor() ([]byte, []int) { return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{4} } -type ProvisionerGetInfoResponse struct { +func (x *CredentialDetails) GetSecrets() map[string]string { + if x != nil { + return x.Secrets + } + return nil +} + +type DriverGetInfoRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DriverGetInfoRequest) Reset() { + *x = DriverGetInfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DriverGetInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DriverGetInfoRequest) ProtoMessage() {} + +func (x *DriverGetInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DriverGetInfoRequest.ProtoReflect.Descriptor instead. +func (*DriverGetInfoRequest) Descriptor() ([]byte, []int) { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{5} +} + +type DriverGetInfoResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -462,23 +561,23 @@ type ProvisionerGetInfoResponse struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ProvisionerGetInfoResponse) Reset() { - *x = ProvisionerGetInfoResponse{} +func (x *DriverGetInfoResponse) Reset() { + *x = DriverGetInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[5] + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProvisionerGetInfoResponse) String() string { +func (x *DriverGetInfoResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProvisionerGetInfoResponse) ProtoMessage() {} +func (*DriverGetInfoResponse) ProtoMessage() {} -func (x *ProvisionerGetInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[5] +func (x *DriverGetInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -489,19 +588,19 @@ func (x *ProvisionerGetInfoResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProvisionerGetInfoResponse.ProtoReflect.Descriptor instead. -func (*ProvisionerGetInfoResponse) Descriptor() ([]byte, []int) { - return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{5} +// Deprecated: Use DriverGetInfoResponse.ProtoReflect.Descriptor instead. +func (*DriverGetInfoResponse) Descriptor() ([]byte, []int) { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{6} } -func (x *ProvisionerGetInfoResponse) GetName() string { +func (x *DriverGetInfoResponse) GetName() string { if x != nil { return x.Name } return "" } -type ProvisionerCreateBucketRequest struct { +type DriverCreateBucketRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -509,32 +608,29 @@ type ProvisionerCreateBucketRequest struct { // This field is REQUIRED // name specifies the name of the bucket that should be created. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // This field is REQUIRED - // Protocol specific information required by the call is passed in as key,value pairs. - Protocol *Protocol `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` // This field is OPTIONAL // The caller should treat the values in parameters as opaque. // The receiver is responsible for parsing and validating the values. - Parameters map[string]string `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Parameters map[string]string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *ProvisionerCreateBucketRequest) Reset() { - *x = ProvisionerCreateBucketRequest{} +func (x *DriverCreateBucketRequest) Reset() { + *x = DriverCreateBucketRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[6] + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProvisionerCreateBucketRequest) String() string { +func (x *DriverCreateBucketRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProvisionerCreateBucketRequest) ProtoMessage() {} +func (*DriverCreateBucketRequest) ProtoMessage() {} -func (x *ProvisionerCreateBucketRequest) ProtoReflect() protoreflect.Message { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[6] +func (x *DriverCreateBucketRequest) ProtoReflect() protoreflect.Message { + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -545,59 +641,55 @@ func (x *ProvisionerCreateBucketRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProvisionerCreateBucketRequest.ProtoReflect.Descriptor instead. -func (*ProvisionerCreateBucketRequest) Descriptor() ([]byte, []int) { - return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{6} +// Deprecated: Use DriverCreateBucketRequest.ProtoReflect.Descriptor instead. +func (*DriverCreateBucketRequest) Descriptor() ([]byte, []int) { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{7} } -func (x *ProvisionerCreateBucketRequest) GetName() string { +func (x *DriverCreateBucketRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *ProvisionerCreateBucketRequest) GetProtocol() *Protocol { - if x != nil { - return x.Protocol - } - return nil -} - -func (x *ProvisionerCreateBucketRequest) GetParameters() map[string]string { +func (x *DriverCreateBucketRequest) GetParameters() map[string]string { if x != nil { return x.Parameters } return nil } -type ProvisionerCreateBucketResponse struct { +type DriverCreateBucketResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // bucket_id returned here is expected to be the globally unique - // identifier for the bucket in the object storage provider + // identifier for the bucket in the object storage provider. BucketId string `protobuf:"bytes,1,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"` + // bucket_info returned here stores the data specific to the + // bucket required by the object storage provider to connect to the bucket. + BucketInfo *Protocol `protobuf:"bytes,2,opt,name=bucket_info,json=bucketInfo,proto3" json:"bucket_info,omitempty"` } -func (x *ProvisionerCreateBucketResponse) Reset() { - *x = ProvisionerCreateBucketResponse{} +func (x *DriverCreateBucketResponse) Reset() { + *x = DriverCreateBucketResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[7] + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProvisionerCreateBucketResponse) String() string { +func (x *DriverCreateBucketResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProvisionerCreateBucketResponse) ProtoMessage() {} +func (*DriverCreateBucketResponse) ProtoMessage() {} -func (x *ProvisionerCreateBucketResponse) ProtoReflect() protoreflect.Message { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[7] +func (x *DriverCreateBucketResponse) ProtoReflect() protoreflect.Message { + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -608,19 +700,26 @@ func (x *ProvisionerCreateBucketResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProvisionerCreateBucketResponse.ProtoReflect.Descriptor instead. -func (*ProvisionerCreateBucketResponse) Descriptor() ([]byte, []int) { - return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{7} +// Deprecated: Use DriverCreateBucketResponse.ProtoReflect.Descriptor instead. +func (*DriverCreateBucketResponse) Descriptor() ([]byte, []int) { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{8} } -func (x *ProvisionerCreateBucketResponse) GetBucketId() string { +func (x *DriverCreateBucketResponse) GetBucketId() string { if x != nil { return x.BucketId } return "" } -type ProvisionerDeleteBucketRequest struct { +func (x *DriverCreateBucketResponse) GetBucketInfo() *Protocol { + if x != nil { + return x.BucketInfo + } + return nil +} + +type DriverDeleteBucketRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -631,23 +730,23 @@ type ProvisionerDeleteBucketRequest struct { BucketId string `protobuf:"bytes,1,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"` } -func (x *ProvisionerDeleteBucketRequest) Reset() { - *x = ProvisionerDeleteBucketRequest{} +func (x *DriverDeleteBucketRequest) Reset() { + *x = DriverDeleteBucketRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[8] + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProvisionerDeleteBucketRequest) String() string { +func (x *DriverDeleteBucketRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProvisionerDeleteBucketRequest) ProtoMessage() {} +func (*DriverDeleteBucketRequest) ProtoMessage() {} -func (x *ProvisionerDeleteBucketRequest) ProtoReflect() protoreflect.Message { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[8] +func (x *DriverDeleteBucketRequest) ProtoReflect() protoreflect.Message { + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -658,41 +757,41 @@ func (x *ProvisionerDeleteBucketRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProvisionerDeleteBucketRequest.ProtoReflect.Descriptor instead. -func (*ProvisionerDeleteBucketRequest) Descriptor() ([]byte, []int) { - return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{8} +// Deprecated: Use DriverDeleteBucketRequest.ProtoReflect.Descriptor instead. +func (*DriverDeleteBucketRequest) Descriptor() ([]byte, []int) { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{9} } -func (x *ProvisionerDeleteBucketRequest) GetBucketId() string { +func (x *DriverDeleteBucketRequest) GetBucketId() string { if x != nil { return x.BucketId } return "" } -type ProvisionerDeleteBucketResponse struct { +type DriverDeleteBucketResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *ProvisionerDeleteBucketResponse) Reset() { - *x = ProvisionerDeleteBucketResponse{} +func (x *DriverDeleteBucketResponse) Reset() { + *x = DriverDeleteBucketResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[9] + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProvisionerDeleteBucketResponse) String() string { +func (x *DriverDeleteBucketResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProvisionerDeleteBucketResponse) ProtoMessage() {} +func (*DriverDeleteBucketResponse) ProtoMessage() {} -func (x *ProvisionerDeleteBucketResponse) ProtoReflect() protoreflect.Message { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[9] +func (x *DriverDeleteBucketResponse) ProtoReflect() protoreflect.Message { + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -703,12 +802,12 @@ func (x *ProvisionerDeleteBucketResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProvisionerDeleteBucketResponse.ProtoReflect.Descriptor instead. -func (*ProvisionerDeleteBucketResponse) Descriptor() ([]byte, []int) { - return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{9} +// Deprecated: Use DriverDeleteBucketResponse.ProtoReflect.Descriptor instead. +func (*DriverDeleteBucketResponse) Descriptor() ([]byte, []int) { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{10} } -type ProvisionerGrantBucketAccessRequest struct { +type DriverGrantBucketAccessRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -718,36 +817,35 @@ type ProvisionerGrantBucketAccessRequest struct { // in the object storage provider BucketId string `protobuf:"bytes,1,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"` // This field is REQUIRED - // account_name is a identifier for object storage provider - // to ensure that multiple requests for the same account - // result in only one access token being created - AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` + // name field is used to define the name of the bucket access object. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // This field is REQUIRED - // Requested Access policy, ex: {"Effect":"Allow","Action":"s3:PutObject","Resource":"arn:aws:s3:::profilepics/*"} - AccessPolicy string `protobuf:"bytes,3,opt,name=access_policy,json=accessPolicy,proto3" json:"access_policy,omitempty"` + // Requested authentication type for the bucket access. + // Supported authentication types are KEY or IAM. + AuthenticationType AuthenticationType `protobuf:"varint,3,opt,name=authentication_type,json=authenticationType,proto3,enum=cosi.v1alpha1.AuthenticationType" json:"authentication_type,omitempty"` // This field is OPTIONAL // The caller should treat the values in parameters as opaque. // The receiver is responsible for parsing and validating the values. Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *ProvisionerGrantBucketAccessRequest) Reset() { - *x = ProvisionerGrantBucketAccessRequest{} +func (x *DriverGrantBucketAccessRequest) Reset() { + *x = DriverGrantBucketAccessRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[10] + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProvisionerGrantBucketAccessRequest) String() string { +func (x *DriverGrantBucketAccessRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProvisionerGrantBucketAccessRequest) ProtoMessage() {} +func (*DriverGrantBucketAccessRequest) ProtoMessage() {} -func (x *ProvisionerGrantBucketAccessRequest) ProtoReflect() protoreflect.Message { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[10] +func (x *DriverGrantBucketAccessRequest) ProtoReflect() protoreflect.Message { + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -758,70 +856,70 @@ func (x *ProvisionerGrantBucketAccessRequest) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use ProvisionerGrantBucketAccessRequest.ProtoReflect.Descriptor instead. -func (*ProvisionerGrantBucketAccessRequest) Descriptor() ([]byte, []int) { - return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{10} +// Deprecated: Use DriverGrantBucketAccessRequest.ProtoReflect.Descriptor instead. +func (*DriverGrantBucketAccessRequest) Descriptor() ([]byte, []int) { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{11} } -func (x *ProvisionerGrantBucketAccessRequest) GetBucketId() string { +func (x *DriverGrantBucketAccessRequest) GetBucketId() string { if x != nil { return x.BucketId } return "" } -func (x *ProvisionerGrantBucketAccessRequest) GetAccountName() string { +func (x *DriverGrantBucketAccessRequest) GetName() string { if x != nil { - return x.AccountName + return x.Name } return "" } -func (x *ProvisionerGrantBucketAccessRequest) GetAccessPolicy() string { +func (x *DriverGrantBucketAccessRequest) GetAuthenticationType() AuthenticationType { if x != nil { - return x.AccessPolicy + return x.AuthenticationType } - return "" + return AuthenticationType_UnknownAuthenticationType } -func (x *ProvisionerGrantBucketAccessRequest) GetParameters() map[string]string { +func (x *DriverGrantBucketAccessRequest) GetParameters() map[string]string { if x != nil { return x.Parameters } return nil } -type ProvisionerGrantBucketAccessResponse struct { +type DriverGrantBucketAccessResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // This field is OPTIONAL + // This field is REQUIRED // This is the account_id that is being provided access. This will // be required later to revoke access. AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` - // This field is OPTIONAL + // This field is REQUIRED // Credentials supplied for accessing the bucket ex: aws access key id and secret, etc. - Credentials string `protobuf:"bytes,2,opt,name=credentials,proto3" json:"credentials,omitempty"` + Credentials map[string]*CredentialDetails `protobuf:"bytes,2,rep,name=credentials,proto3" json:"credentials,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *ProvisionerGrantBucketAccessResponse) Reset() { - *x = ProvisionerGrantBucketAccessResponse{} +func (x *DriverGrantBucketAccessResponse) Reset() { + *x = DriverGrantBucketAccessResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[11] + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProvisionerGrantBucketAccessResponse) String() string { +func (x *DriverGrantBucketAccessResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProvisionerGrantBucketAccessResponse) ProtoMessage() {} +func (*DriverGrantBucketAccessResponse) ProtoMessage() {} -func (x *ProvisionerGrantBucketAccessResponse) ProtoReflect() protoreflect.Message { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[11] +func (x *DriverGrantBucketAccessResponse) ProtoReflect() protoreflect.Message { + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -832,26 +930,26 @@ func (x *ProvisionerGrantBucketAccessResponse) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ProvisionerGrantBucketAccessResponse.ProtoReflect.Descriptor instead. -func (*ProvisionerGrantBucketAccessResponse) Descriptor() ([]byte, []int) { - return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{11} +// Deprecated: Use DriverGrantBucketAccessResponse.ProtoReflect.Descriptor instead. +func (*DriverGrantBucketAccessResponse) Descriptor() ([]byte, []int) { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{12} } -func (x *ProvisionerGrantBucketAccessResponse) GetAccountId() string { +func (x *DriverGrantBucketAccessResponse) GetAccountId() string { if x != nil { return x.AccountId } return "" } -func (x *ProvisionerGrantBucketAccessResponse) GetCredentials() string { +func (x *DriverGrantBucketAccessResponse) GetCredentials() map[string]*CredentialDetails { if x != nil { return x.Credentials } - return "" + return nil } -type ProvisionerRevokeBucketAccessRequest struct { +type DriverRevokeBucketAccessRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -865,23 +963,23 @@ type ProvisionerRevokeBucketAccessRequest struct { AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` } -func (x *ProvisionerRevokeBucketAccessRequest) Reset() { - *x = ProvisionerRevokeBucketAccessRequest{} +func (x *DriverRevokeBucketAccessRequest) Reset() { + *x = DriverRevokeBucketAccessRequest{} if protoimpl.UnsafeEnabled { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[12] + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProvisionerRevokeBucketAccessRequest) String() string { +func (x *DriverRevokeBucketAccessRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProvisionerRevokeBucketAccessRequest) ProtoMessage() {} +func (*DriverRevokeBucketAccessRequest) ProtoMessage() {} -func (x *ProvisionerRevokeBucketAccessRequest) ProtoReflect() protoreflect.Message { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[12] +func (x *DriverRevokeBucketAccessRequest) ProtoReflect() protoreflect.Message { + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -892,48 +990,48 @@ func (x *ProvisionerRevokeBucketAccessRequest) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ProvisionerRevokeBucketAccessRequest.ProtoReflect.Descriptor instead. -func (*ProvisionerRevokeBucketAccessRequest) Descriptor() ([]byte, []int) { - return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{12} +// Deprecated: Use DriverRevokeBucketAccessRequest.ProtoReflect.Descriptor instead. +func (*DriverRevokeBucketAccessRequest) Descriptor() ([]byte, []int) { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{13} } -func (x *ProvisionerRevokeBucketAccessRequest) GetBucketId() string { +func (x *DriverRevokeBucketAccessRequest) GetBucketId() string { if x != nil { return x.BucketId } return "" } -func (x *ProvisionerRevokeBucketAccessRequest) GetAccountId() string { +func (x *DriverRevokeBucketAccessRequest) GetAccountId() string { if x != nil { return x.AccountId } return "" } -type ProvisionerRevokeBucketAccessResponse struct { +type DriverRevokeBucketAccessResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *ProvisionerRevokeBucketAccessResponse) Reset() { - *x = ProvisionerRevokeBucketAccessResponse{} +func (x *DriverRevokeBucketAccessResponse) Reset() { + *x = DriverRevokeBucketAccessResponse{} if protoimpl.UnsafeEnabled { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[13] + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ProvisionerRevokeBucketAccessResponse) String() string { +func (x *DriverRevokeBucketAccessResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProvisionerRevokeBucketAccessResponse) ProtoMessage() {} +func (*DriverRevokeBucketAccessResponse) ProtoMessage() {} -func (x *ProvisionerRevokeBucketAccessResponse) ProtoReflect() protoreflect.Message { - mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[13] +func (x *DriverRevokeBucketAccessResponse) ProtoReflect() protoreflect.Message { + mi := &file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -944,9 +1042,9 @@ func (x *ProvisionerRevokeBucketAccessResponse) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use ProvisionerRevokeBucketAccessResponse.ProtoReflect.Descriptor instead. -func (*ProvisionerRevokeBucketAccessResponse) Descriptor() ([]byte, []int) { - return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{13} +// Deprecated: Use DriverRevokeBucketAccessResponse.ProtoReflect.Descriptor instead. +func (*DriverRevokeBucketAccessResponse) Descriptor() ([]byte, []int) { + return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescGZIP(), []int{14} } var file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_extTypes = []protoimpl.ExtensionInfo{ @@ -1110,160 +1208,178 @@ var file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDesc 0x09, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x26, 0x0a, 0x03, 0x67, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x43, 0x53, 0x48, 0x00, 0x52, 0x03, 0x67, - 0x63, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x30, 0x0a, 0x1a, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x87, 0x02, 0x0a, 0x1e, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x33, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x5d, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x63, 0x6f, 0x73, 0x69, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x3e, 0x0a, 0x1f, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x1e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x22, 0x21, 0x0a, 0x1f, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, - 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, 0x02, 0x0a, 0x23, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, - 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x62, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x63, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x11, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x47, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2b, 0x0a, + 0x15, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x19, 0x44, + 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0a, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x38, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x67, 0x0a, 0x24, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x62, - 0x0a, 0x24, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x64, 0x22, 0x27, 0x0a, 0x25, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, - 0x72, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x3e, 0x0a, 0x12, 0x53, - 0x33, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x33, 0x56, 0x32, 0x10, - 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x33, 0x56, 0x34, 0x10, 0x02, 0x2a, 0x71, 0x0a, 0x19, 0x41, - 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, - 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x10, 0x02, - 0x12, 0x0d, 0x0a, 0x09, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x10, 0x03, 0x12, - 0x0d, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, 0x10, 0x04, 0x32, 0x77, - 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x6b, 0x0a, 0x12, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x47, 0x65, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6f, 0x73, - 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0x9c, 0x04, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x7a, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x12, 0x2d, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x7a, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x2d, - 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, - 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x87, 0x01, 0x0a, 0x1c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x47, - 0x72, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x12, 0x32, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, - 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, - 0x47, 0x72, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1d, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x33, 0x2e, 0x63, 0x6f, - 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x76, 0x6f, - 0x6b, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x3c, 0x0a, 0x0a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, - 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0xdc, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x4c, 0x0a, 0x10, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x65, 0x6e, - 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xdc, 0x08, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x3f, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x69, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xdb, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x6f, 0x73, 0x69, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x3a, 0x3f, 0x0a, 0x0b, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0xdc, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x3a, 0x45, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xdc, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x42, 0x0a, 0x0c, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1e, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xdc, 0x08, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, - 0x45, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0xdc, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x3a, 0x5a, 0x38, 0x73, 0x69, 0x67, 0x73, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2d, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2d, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x3b, 0x63, 0x6f, - 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x73, 0x0a, 0x1a, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x38, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x0a, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x38, 0x0a, 0x19, 0x44, 0x72, + 0x69, 0x76, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xc3, 0x02, 0x0a, 0x1e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x47, 0x72, 0x61, + 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x52, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x12, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5d, 0x0a, 0x0a, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, + 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, + 0x72, 0x69, 0x76, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x85, 0x02, 0x0a, 0x1f, 0x44, 0x72, 0x69, + 0x76, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x61, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3f, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x1a, 0x60, + 0x0a, 0x10, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x5d, 0x0a, 0x1f, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, + 0x22, 0x0a, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2a, 0x3e, 0x0a, 0x12, 0x53, 0x33, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x10, 0x00, 0x12, + 0x08, 0x0a, 0x04, 0x53, 0x33, 0x56, 0x32, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x33, 0x56, + 0x34, 0x10, 0x02, 0x2a, 0x71, 0x0a, 0x19, 0x41, 0x6e, 0x6f, 0x6e, 0x79, 0x6d, 0x6f, 0x75, 0x73, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, + 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x10, 0x00, 0x12, 0x0b, 0x0a, + 0x07, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, + 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x10, 0x04, 0x2a, 0x45, 0x0a, 0x12, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, + 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4b, + 0x65, 0x79, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x41, 0x4d, 0x10, 0x02, 0x32, 0x68, 0x0a, + 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x5c, 0x0a, 0x0d, 0x44, 0x72, 0x69, + 0x76, 0x65, 0x72, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, + 0x72, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0xde, 0x03, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x72, 0x12, 0x6b, 0x0a, 0x12, 0x44, 0x72, 0x69, 0x76, 0x65, + 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x28, 0x2e, + 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x72, + 0x69, 0x76, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x12, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x28, 0x2e, 0x63, 0x6f, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, + 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x78, 0x0a, 0x17, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x2e, 0x63, + 0x6f, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x72, 0x69, + 0x76, 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x6f, + 0x73, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x72, 0x69, 0x76, + 0x65, 0x72, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x18, 0x44, + 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x2e, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x6f, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x3c, 0x0a, 0x0a, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xdc, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x4c, 0x0a, 0x10, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, + 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xdc, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x45, 0x6e, 0x75, 0x6d, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x3f, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x69, 0x5f, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0xdb, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x6f, 0x73, 0x69, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x3a, 0x3f, 0x0a, 0x0b, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0xdc, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x3a, 0x45, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xdc, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x42, 0x0a, + 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xdc, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x3a, 0x45, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0xdc, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x3a, 0x5a, 0x38, 0x73, 0x69, 0x67, 0x73, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x2d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x3b, + 0x63, 0x6f, 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1278,64 +1394,72 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDesc return file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDescData } -var file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes = make([]protoimpl.MessageInfo, 19) var file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_goTypes = []interface{}{ - (S3SignatureVersion)(0), // 0: cosi.v1alpha1.S3SignatureVersion - (AnonymousBucketAccessMode)(0), // 1: cosi.v1alpha1.AnonymousBucketAccessMode - (*S3)(nil), // 2: cosi.v1alpha1.S3 - (*AzureBlob)(nil), // 3: cosi.v1alpha1.AzureBlob - (*GCS)(nil), // 4: cosi.v1alpha1.GCS - (*Protocol)(nil), // 5: cosi.v1alpha1.Protocol - (*ProvisionerGetInfoRequest)(nil), // 6: cosi.v1alpha1.ProvisionerGetInfoRequest - (*ProvisionerGetInfoResponse)(nil), // 7: cosi.v1alpha1.ProvisionerGetInfoResponse - (*ProvisionerCreateBucketRequest)(nil), // 8: cosi.v1alpha1.ProvisionerCreateBucketRequest - (*ProvisionerCreateBucketResponse)(nil), // 9: cosi.v1alpha1.ProvisionerCreateBucketResponse - (*ProvisionerDeleteBucketRequest)(nil), // 10: cosi.v1alpha1.ProvisionerDeleteBucketRequest - (*ProvisionerDeleteBucketResponse)(nil), // 11: cosi.v1alpha1.ProvisionerDeleteBucketResponse - (*ProvisionerGrantBucketAccessRequest)(nil), // 12: cosi.v1alpha1.ProvisionerGrantBucketAccessRequest - (*ProvisionerGrantBucketAccessResponse)(nil), // 13: cosi.v1alpha1.ProvisionerGrantBucketAccessResponse - (*ProvisionerRevokeBucketAccessRequest)(nil), // 14: cosi.v1alpha1.ProvisionerRevokeBucketAccessRequest - (*ProvisionerRevokeBucketAccessResponse)(nil), // 15: cosi.v1alpha1.ProvisionerRevokeBucketAccessResponse - nil, // 16: cosi.v1alpha1.ProvisionerCreateBucketRequest.ParametersEntry - nil, // 17: cosi.v1alpha1.ProvisionerGrantBucketAccessRequest.ParametersEntry - (*descriptor.EnumOptions)(nil), // 18: google.protobuf.EnumOptions - (*descriptor.EnumValueOptions)(nil), // 19: google.protobuf.EnumValueOptions - (*descriptor.FieldOptions)(nil), // 20: google.protobuf.FieldOptions - (*descriptor.MessageOptions)(nil), // 21: google.protobuf.MessageOptions - (*descriptor.MethodOptions)(nil), // 22: google.protobuf.MethodOptions - (*descriptor.ServiceOptions)(nil), // 23: google.protobuf.ServiceOptions + (S3SignatureVersion)(0), // 0: cosi.v1alpha1.S3SignatureVersion + (AnonymousBucketAccessMode)(0), // 1: cosi.v1alpha1.AnonymousBucketAccessMode + (AuthenticationType)(0), // 2: cosi.v1alpha1.AuthenticationType + (*S3)(nil), // 3: cosi.v1alpha1.S3 + (*AzureBlob)(nil), // 4: cosi.v1alpha1.AzureBlob + (*GCS)(nil), // 5: cosi.v1alpha1.GCS + (*Protocol)(nil), // 6: cosi.v1alpha1.Protocol + (*CredentialDetails)(nil), // 7: cosi.v1alpha1.CredentialDetails + (*DriverGetInfoRequest)(nil), // 8: cosi.v1alpha1.DriverGetInfoRequest + (*DriverGetInfoResponse)(nil), // 9: cosi.v1alpha1.DriverGetInfoResponse + (*DriverCreateBucketRequest)(nil), // 10: cosi.v1alpha1.DriverCreateBucketRequest + (*DriverCreateBucketResponse)(nil), // 11: cosi.v1alpha1.DriverCreateBucketResponse + (*DriverDeleteBucketRequest)(nil), // 12: cosi.v1alpha1.DriverDeleteBucketRequest + (*DriverDeleteBucketResponse)(nil), // 13: cosi.v1alpha1.DriverDeleteBucketResponse + (*DriverGrantBucketAccessRequest)(nil), // 14: cosi.v1alpha1.DriverGrantBucketAccessRequest + (*DriverGrantBucketAccessResponse)(nil), // 15: cosi.v1alpha1.DriverGrantBucketAccessResponse + (*DriverRevokeBucketAccessRequest)(nil), // 16: cosi.v1alpha1.DriverRevokeBucketAccessRequest + (*DriverRevokeBucketAccessResponse)(nil), // 17: cosi.v1alpha1.DriverRevokeBucketAccessResponse + nil, // 18: cosi.v1alpha1.CredentialDetails.SecretsEntry + nil, // 19: cosi.v1alpha1.DriverCreateBucketRequest.ParametersEntry + nil, // 20: cosi.v1alpha1.DriverGrantBucketAccessRequest.ParametersEntry + nil, // 21: cosi.v1alpha1.DriverGrantBucketAccessResponse.CredentialsEntry + (*descriptor.EnumOptions)(nil), // 22: google.protobuf.EnumOptions + (*descriptor.EnumValueOptions)(nil), // 23: google.protobuf.EnumValueOptions + (*descriptor.FieldOptions)(nil), // 24: google.protobuf.FieldOptions + (*descriptor.MessageOptions)(nil), // 25: google.protobuf.MessageOptions + (*descriptor.MethodOptions)(nil), // 26: google.protobuf.MethodOptions + (*descriptor.ServiceOptions)(nil), // 27: google.protobuf.ServiceOptions } var file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_depIdxs = []int32{ 0, // 0: cosi.v1alpha1.S3.signature_version:type_name -> cosi.v1alpha1.S3SignatureVersion - 2, // 1: cosi.v1alpha1.Protocol.s3:type_name -> cosi.v1alpha1.S3 - 3, // 2: cosi.v1alpha1.Protocol.azureBlob:type_name -> cosi.v1alpha1.AzureBlob - 4, // 3: cosi.v1alpha1.Protocol.gcs:type_name -> cosi.v1alpha1.GCS - 5, // 4: cosi.v1alpha1.ProvisionerCreateBucketRequest.protocol:type_name -> cosi.v1alpha1.Protocol - 16, // 5: cosi.v1alpha1.ProvisionerCreateBucketRequest.parameters:type_name -> cosi.v1alpha1.ProvisionerCreateBucketRequest.ParametersEntry - 17, // 6: cosi.v1alpha1.ProvisionerGrantBucketAccessRequest.parameters:type_name -> cosi.v1alpha1.ProvisionerGrantBucketAccessRequest.ParametersEntry - 18, // 7: cosi.v1alpha1.alpha_enum:extendee -> google.protobuf.EnumOptions - 19, // 8: cosi.v1alpha1.alpha_enum_value:extendee -> google.protobuf.EnumValueOptions - 20, // 9: cosi.v1alpha1.cosi_secret:extendee -> google.protobuf.FieldOptions - 20, // 10: cosi.v1alpha1.alpha_field:extendee -> google.protobuf.FieldOptions - 21, // 11: cosi.v1alpha1.alpha_message:extendee -> google.protobuf.MessageOptions - 22, // 12: cosi.v1alpha1.alpha_method:extendee -> google.protobuf.MethodOptions - 23, // 13: cosi.v1alpha1.alpha_service:extendee -> google.protobuf.ServiceOptions - 6, // 14: cosi.v1alpha1.Identity.ProvisionerGetInfo:input_type -> cosi.v1alpha1.ProvisionerGetInfoRequest - 8, // 15: cosi.v1alpha1.Provisioner.ProvisionerCreateBucket:input_type -> cosi.v1alpha1.ProvisionerCreateBucketRequest - 10, // 16: cosi.v1alpha1.Provisioner.ProvisionerDeleteBucket:input_type -> cosi.v1alpha1.ProvisionerDeleteBucketRequest - 12, // 17: cosi.v1alpha1.Provisioner.ProvisionerGrantBucketAccess:input_type -> cosi.v1alpha1.ProvisionerGrantBucketAccessRequest - 14, // 18: cosi.v1alpha1.Provisioner.ProvisionerRevokeBucketAccess:input_type -> cosi.v1alpha1.ProvisionerRevokeBucketAccessRequest - 7, // 19: cosi.v1alpha1.Identity.ProvisionerGetInfo:output_type -> cosi.v1alpha1.ProvisionerGetInfoResponse - 9, // 20: cosi.v1alpha1.Provisioner.ProvisionerCreateBucket:output_type -> cosi.v1alpha1.ProvisionerCreateBucketResponse - 11, // 21: cosi.v1alpha1.Provisioner.ProvisionerDeleteBucket:output_type -> cosi.v1alpha1.ProvisionerDeleteBucketResponse - 13, // 22: cosi.v1alpha1.Provisioner.ProvisionerGrantBucketAccess:output_type -> cosi.v1alpha1.ProvisionerGrantBucketAccessResponse - 15, // 23: cosi.v1alpha1.Provisioner.ProvisionerRevokeBucketAccess:output_type -> cosi.v1alpha1.ProvisionerRevokeBucketAccessResponse - 19, // [19:24] is the sub-list for method output_type - 14, // [14:19] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 7, // [7:14] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 3, // 1: cosi.v1alpha1.Protocol.s3:type_name -> cosi.v1alpha1.S3 + 4, // 2: cosi.v1alpha1.Protocol.azureBlob:type_name -> cosi.v1alpha1.AzureBlob + 5, // 3: cosi.v1alpha1.Protocol.gcs:type_name -> cosi.v1alpha1.GCS + 18, // 4: cosi.v1alpha1.CredentialDetails.secrets:type_name -> cosi.v1alpha1.CredentialDetails.SecretsEntry + 19, // 5: cosi.v1alpha1.DriverCreateBucketRequest.parameters:type_name -> cosi.v1alpha1.DriverCreateBucketRequest.ParametersEntry + 6, // 6: cosi.v1alpha1.DriverCreateBucketResponse.bucket_info:type_name -> cosi.v1alpha1.Protocol + 2, // 7: cosi.v1alpha1.DriverGrantBucketAccessRequest.authentication_type:type_name -> cosi.v1alpha1.AuthenticationType + 20, // 8: cosi.v1alpha1.DriverGrantBucketAccessRequest.parameters:type_name -> cosi.v1alpha1.DriverGrantBucketAccessRequest.ParametersEntry + 21, // 9: cosi.v1alpha1.DriverGrantBucketAccessResponse.credentials:type_name -> cosi.v1alpha1.DriverGrantBucketAccessResponse.CredentialsEntry + 7, // 10: cosi.v1alpha1.DriverGrantBucketAccessResponse.CredentialsEntry.value:type_name -> cosi.v1alpha1.CredentialDetails + 22, // 11: cosi.v1alpha1.alpha_enum:extendee -> google.protobuf.EnumOptions + 23, // 12: cosi.v1alpha1.alpha_enum_value:extendee -> google.protobuf.EnumValueOptions + 24, // 13: cosi.v1alpha1.cosi_secret:extendee -> google.protobuf.FieldOptions + 24, // 14: cosi.v1alpha1.alpha_field:extendee -> google.protobuf.FieldOptions + 25, // 15: cosi.v1alpha1.alpha_message:extendee -> google.protobuf.MessageOptions + 26, // 16: cosi.v1alpha1.alpha_method:extendee -> google.protobuf.MethodOptions + 27, // 17: cosi.v1alpha1.alpha_service:extendee -> google.protobuf.ServiceOptions + 8, // 18: cosi.v1alpha1.Identity.DriverGetInfo:input_type -> cosi.v1alpha1.DriverGetInfoRequest + 10, // 19: cosi.v1alpha1.Provisioner.DriverCreateBucket:input_type -> cosi.v1alpha1.DriverCreateBucketRequest + 12, // 20: cosi.v1alpha1.Provisioner.DriverDeleteBucket:input_type -> cosi.v1alpha1.DriverDeleteBucketRequest + 14, // 21: cosi.v1alpha1.Provisioner.DriverGrantBucketAccess:input_type -> cosi.v1alpha1.DriverGrantBucketAccessRequest + 16, // 22: cosi.v1alpha1.Provisioner.DriverRevokeBucketAccess:input_type -> cosi.v1alpha1.DriverRevokeBucketAccessRequest + 9, // 23: cosi.v1alpha1.Identity.DriverGetInfo:output_type -> cosi.v1alpha1.DriverGetInfoResponse + 11, // 24: cosi.v1alpha1.Provisioner.DriverCreateBucket:output_type -> cosi.v1alpha1.DriverCreateBucketResponse + 13, // 25: cosi.v1alpha1.Provisioner.DriverDeleteBucket:output_type -> cosi.v1alpha1.DriverDeleteBucketResponse + 15, // 26: cosi.v1alpha1.Provisioner.DriverGrantBucketAccess:output_type -> cosi.v1alpha1.DriverGrantBucketAccessResponse + 17, // 27: cosi.v1alpha1.Provisioner.DriverRevokeBucketAccess:output_type -> cosi.v1alpha1.DriverRevokeBucketAccessResponse + 23, // [23:28] is the sub-list for method output_type + 18, // [18:23] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 11, // [11:18] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() } @@ -1393,7 +1517,7 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() } } file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProvisionerGetInfoRequest); i { + switch v := v.(*CredentialDetails); i { case 0: return &v.state case 1: @@ -1405,7 +1529,7 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() } } file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProvisionerGetInfoResponse); i { + switch v := v.(*DriverGetInfoRequest); i { case 0: return &v.state case 1: @@ -1417,7 +1541,7 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() } } file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProvisionerCreateBucketRequest); i { + switch v := v.(*DriverGetInfoResponse); i { case 0: return &v.state case 1: @@ -1429,7 +1553,7 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() } } file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProvisionerCreateBucketResponse); i { + switch v := v.(*DriverCreateBucketRequest); i { case 0: return &v.state case 1: @@ -1441,7 +1565,7 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() } } file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProvisionerDeleteBucketRequest); i { + switch v := v.(*DriverCreateBucketResponse); i { case 0: return &v.state case 1: @@ -1453,7 +1577,7 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() } } file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProvisionerDeleteBucketResponse); i { + switch v := v.(*DriverDeleteBucketRequest); i { case 0: return &v.state case 1: @@ -1465,7 +1589,7 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() } } file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProvisionerGrantBucketAccessRequest); i { + switch v := v.(*DriverDeleteBucketResponse); i { case 0: return &v.state case 1: @@ -1477,7 +1601,7 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() } } file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProvisionerGrantBucketAccessResponse); i { + switch v := v.(*DriverGrantBucketAccessRequest); i { case 0: return &v.state case 1: @@ -1489,7 +1613,7 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() } } file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProvisionerRevokeBucketAccessRequest); i { + switch v := v.(*DriverGrantBucketAccessResponse); i { case 0: return &v.state case 1: @@ -1501,7 +1625,19 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() } } file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProvisionerRevokeBucketAccessResponse); i { + switch v := v.(*DriverRevokeBucketAccessRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DriverRevokeBucketAccessResponse); i { case 0: return &v.state case 1: @@ -1523,8 +1659,8 @@ func file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_init() File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_sigs_k8s_io_container_object_storage_interface_spec_cosi_proto_rawDesc, - NumEnums: 2, - NumMessages: 16, + NumEnums: 3, + NumMessages: 19, NumExtensions: 7, NumServices: 2, }, @@ -1553,8 +1689,8 @@ const _ = grpc.SupportPackageIsVersion6 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type IdentityClient interface { // This call is meant to retrieve the unique provisioner Identity. - // This identity will have to be set in BucketRequest.Provisioner field in order to invoke this specific provisioner. - ProvisionerGetInfo(ctx context.Context, in *ProvisionerGetInfoRequest, opts ...grpc.CallOption) (*ProvisionerGetInfoResponse, error) + // This identity will have to be set in BucketClaim.DriverName field in order to invoke this specific provisioner. + DriverGetInfo(ctx context.Context, in *DriverGetInfoRequest, opts ...grpc.CallOption) (*DriverGetInfoResponse, error) } type identityClient struct { @@ -1565,9 +1701,9 @@ func NewIdentityClient(cc grpc.ClientConnInterface) IdentityClient { return &identityClient{cc} } -func (c *identityClient) ProvisionerGetInfo(ctx context.Context, in *ProvisionerGetInfoRequest, opts ...grpc.CallOption) (*ProvisionerGetInfoResponse, error) { - out := new(ProvisionerGetInfoResponse) - err := c.cc.Invoke(ctx, "/cosi.v1alpha1.Identity/ProvisionerGetInfo", in, out, opts...) +func (c *identityClient) DriverGetInfo(ctx context.Context, in *DriverGetInfoRequest, opts ...grpc.CallOption) (*DriverGetInfoResponse, error) { + out := new(DriverGetInfoResponse) + err := c.cc.Invoke(ctx, "/cosi.v1alpha1.Identity/DriverGetInfo", in, out, opts...) if err != nil { return nil, err } @@ -1577,36 +1713,36 @@ func (c *identityClient) ProvisionerGetInfo(ctx context.Context, in *Provisioner // IdentityServer is the server API for Identity service. type IdentityServer interface { // This call is meant to retrieve the unique provisioner Identity. - // This identity will have to be set in BucketRequest.Provisioner field in order to invoke this specific provisioner. - ProvisionerGetInfo(context.Context, *ProvisionerGetInfoRequest) (*ProvisionerGetInfoResponse, error) + // This identity will have to be set in BucketClaim.DriverName field in order to invoke this specific provisioner. + DriverGetInfo(context.Context, *DriverGetInfoRequest) (*DriverGetInfoResponse, error) } // UnimplementedIdentityServer can be embedded to have forward compatible implementations. type UnimplementedIdentityServer struct { } -func (*UnimplementedIdentityServer) ProvisionerGetInfo(context.Context, *ProvisionerGetInfoRequest) (*ProvisionerGetInfoResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ProvisionerGetInfo not implemented") +func (*UnimplementedIdentityServer) DriverGetInfo(context.Context, *DriverGetInfoRequest) (*DriverGetInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DriverGetInfo not implemented") } func RegisterIdentityServer(s *grpc.Server, srv IdentityServer) { s.RegisterService(&_Identity_serviceDesc, srv) } -func _Identity_ProvisionerGetInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProvisionerGetInfoRequest) +func _Identity_DriverGetInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DriverGetInfoRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(IdentityServer).ProvisionerGetInfo(ctx, in) + return srv.(IdentityServer).DriverGetInfo(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cosi.v1alpha1.Identity/ProvisionerGetInfo", + FullMethod: "/cosi.v1alpha1.Identity/DriverGetInfo", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IdentityServer).ProvisionerGetInfo(ctx, req.(*ProvisionerGetInfoRequest)) + return srv.(IdentityServer).DriverGetInfo(ctx, req.(*DriverGetInfoRequest)) } return interceptor(ctx, in, info, handler) } @@ -1616,8 +1752,8 @@ var _Identity_serviceDesc = grpc.ServiceDesc{ HandlerType: (*IdentityServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "ProvisionerGetInfo", - Handler: _Identity_ProvisionerGetInfo_Handler, + MethodName: "DriverGetInfo", + Handler: _Identity_DriverGetInfo_Handler, }, }, Streams: []grpc.StreamDesc{}, @@ -1632,15 +1768,15 @@ type ProvisionerClient interface { // This call is idempotent // 1. If a bucket that matches both name and parameters already exists, then OK (success) must be returned. // 2. If a bucket by same name, but different parameters is provided, then the appropriate error code ALREADY_EXISTS must be returned. - ProvisionerCreateBucket(ctx context.Context, in *ProvisionerCreateBucketRequest, opts ...grpc.CallOption) (*ProvisionerCreateBucketResponse, error) + DriverCreateBucket(ctx context.Context, in *DriverCreateBucketRequest, opts ...grpc.CallOption) (*DriverCreateBucketResponse, error) // This call is made to delete the bucket in the backend. // If the bucket has already been deleted, then no error should be returned. - ProvisionerDeleteBucket(ctx context.Context, in *ProvisionerDeleteBucketRequest, opts ...grpc.CallOption) (*ProvisionerDeleteBucketResponse, error) + DriverDeleteBucket(ctx context.Context, in *DriverDeleteBucketRequest, opts ...grpc.CallOption) (*DriverDeleteBucketResponse, error) // This call grants access to an account. The account_name in the request shall be used as a unique identifier to create credentials. - // The account_id returned in the response will be used as the unique identifier for deleting this access when calling ProvisionerRevokeBucketAccess. - ProvisionerGrantBucketAccess(ctx context.Context, in *ProvisionerGrantBucketAccessRequest, opts ...grpc.CallOption) (*ProvisionerGrantBucketAccessResponse, error) + // The account_id returned in the response will be used as the unique identifier for deleting this access when calling DriverRevokeBucketAccess. + DriverGrantBucketAccess(ctx context.Context, in *DriverGrantBucketAccessRequest, opts ...grpc.CallOption) (*DriverGrantBucketAccessResponse, error) // This call revokes all access to a particular bucket from a principal. - ProvisionerRevokeBucketAccess(ctx context.Context, in *ProvisionerRevokeBucketAccessRequest, opts ...grpc.CallOption) (*ProvisionerRevokeBucketAccessResponse, error) + DriverRevokeBucketAccess(ctx context.Context, in *DriverRevokeBucketAccessRequest, opts ...grpc.CallOption) (*DriverRevokeBucketAccessResponse, error) } type provisionerClient struct { @@ -1651,36 +1787,36 @@ func NewProvisionerClient(cc grpc.ClientConnInterface) ProvisionerClient { return &provisionerClient{cc} } -func (c *provisionerClient) ProvisionerCreateBucket(ctx context.Context, in *ProvisionerCreateBucketRequest, opts ...grpc.CallOption) (*ProvisionerCreateBucketResponse, error) { - out := new(ProvisionerCreateBucketResponse) - err := c.cc.Invoke(ctx, "/cosi.v1alpha1.Provisioner/ProvisionerCreateBucket", in, out, opts...) +func (c *provisionerClient) DriverCreateBucket(ctx context.Context, in *DriverCreateBucketRequest, opts ...grpc.CallOption) (*DriverCreateBucketResponse, error) { + out := new(DriverCreateBucketResponse) + err := c.cc.Invoke(ctx, "/cosi.v1alpha1.Provisioner/DriverCreateBucket", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *provisionerClient) ProvisionerDeleteBucket(ctx context.Context, in *ProvisionerDeleteBucketRequest, opts ...grpc.CallOption) (*ProvisionerDeleteBucketResponse, error) { - out := new(ProvisionerDeleteBucketResponse) - err := c.cc.Invoke(ctx, "/cosi.v1alpha1.Provisioner/ProvisionerDeleteBucket", in, out, opts...) +func (c *provisionerClient) DriverDeleteBucket(ctx context.Context, in *DriverDeleteBucketRequest, opts ...grpc.CallOption) (*DriverDeleteBucketResponse, error) { + out := new(DriverDeleteBucketResponse) + err := c.cc.Invoke(ctx, "/cosi.v1alpha1.Provisioner/DriverDeleteBucket", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *provisionerClient) ProvisionerGrantBucketAccess(ctx context.Context, in *ProvisionerGrantBucketAccessRequest, opts ...grpc.CallOption) (*ProvisionerGrantBucketAccessResponse, error) { - out := new(ProvisionerGrantBucketAccessResponse) - err := c.cc.Invoke(ctx, "/cosi.v1alpha1.Provisioner/ProvisionerGrantBucketAccess", in, out, opts...) +func (c *provisionerClient) DriverGrantBucketAccess(ctx context.Context, in *DriverGrantBucketAccessRequest, opts ...grpc.CallOption) (*DriverGrantBucketAccessResponse, error) { + out := new(DriverGrantBucketAccessResponse) + err := c.cc.Invoke(ctx, "/cosi.v1alpha1.Provisioner/DriverGrantBucketAccess", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *provisionerClient) ProvisionerRevokeBucketAccess(ctx context.Context, in *ProvisionerRevokeBucketAccessRequest, opts ...grpc.CallOption) (*ProvisionerRevokeBucketAccessResponse, error) { - out := new(ProvisionerRevokeBucketAccessResponse) - err := c.cc.Invoke(ctx, "/cosi.v1alpha1.Provisioner/ProvisionerRevokeBucketAccess", in, out, opts...) +func (c *provisionerClient) DriverRevokeBucketAccess(ctx context.Context, in *DriverRevokeBucketAccessRequest, opts ...grpc.CallOption) (*DriverRevokeBucketAccessResponse, error) { + out := new(DriverRevokeBucketAccessResponse) + err := c.cc.Invoke(ctx, "/cosi.v1alpha1.Provisioner/DriverRevokeBucketAccess", in, out, opts...) if err != nil { return nil, err } @@ -1693,106 +1829,106 @@ type ProvisionerServer interface { // This call is idempotent // 1. If a bucket that matches both name and parameters already exists, then OK (success) must be returned. // 2. If a bucket by same name, but different parameters is provided, then the appropriate error code ALREADY_EXISTS must be returned. - ProvisionerCreateBucket(context.Context, *ProvisionerCreateBucketRequest) (*ProvisionerCreateBucketResponse, error) + DriverCreateBucket(context.Context, *DriverCreateBucketRequest) (*DriverCreateBucketResponse, error) // This call is made to delete the bucket in the backend. // If the bucket has already been deleted, then no error should be returned. - ProvisionerDeleteBucket(context.Context, *ProvisionerDeleteBucketRequest) (*ProvisionerDeleteBucketResponse, error) + DriverDeleteBucket(context.Context, *DriverDeleteBucketRequest) (*DriverDeleteBucketResponse, error) // This call grants access to an account. The account_name in the request shall be used as a unique identifier to create credentials. - // The account_id returned in the response will be used as the unique identifier for deleting this access when calling ProvisionerRevokeBucketAccess. - ProvisionerGrantBucketAccess(context.Context, *ProvisionerGrantBucketAccessRequest) (*ProvisionerGrantBucketAccessResponse, error) + // The account_id returned in the response will be used as the unique identifier for deleting this access when calling DriverRevokeBucketAccess. + DriverGrantBucketAccess(context.Context, *DriverGrantBucketAccessRequest) (*DriverGrantBucketAccessResponse, error) // This call revokes all access to a particular bucket from a principal. - ProvisionerRevokeBucketAccess(context.Context, *ProvisionerRevokeBucketAccessRequest) (*ProvisionerRevokeBucketAccessResponse, error) + DriverRevokeBucketAccess(context.Context, *DriverRevokeBucketAccessRequest) (*DriverRevokeBucketAccessResponse, error) } // UnimplementedProvisionerServer can be embedded to have forward compatible implementations. type UnimplementedProvisionerServer struct { } -func (*UnimplementedProvisionerServer) ProvisionerCreateBucket(context.Context, *ProvisionerCreateBucketRequest) (*ProvisionerCreateBucketResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ProvisionerCreateBucket not implemented") +func (*UnimplementedProvisionerServer) DriverCreateBucket(context.Context, *DriverCreateBucketRequest) (*DriverCreateBucketResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DriverCreateBucket not implemented") } -func (*UnimplementedProvisionerServer) ProvisionerDeleteBucket(context.Context, *ProvisionerDeleteBucketRequest) (*ProvisionerDeleteBucketResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ProvisionerDeleteBucket not implemented") +func (*UnimplementedProvisionerServer) DriverDeleteBucket(context.Context, *DriverDeleteBucketRequest) (*DriverDeleteBucketResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DriverDeleteBucket not implemented") } -func (*UnimplementedProvisionerServer) ProvisionerGrantBucketAccess(context.Context, *ProvisionerGrantBucketAccessRequest) (*ProvisionerGrantBucketAccessResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ProvisionerGrantBucketAccess not implemented") +func (*UnimplementedProvisionerServer) DriverGrantBucketAccess(context.Context, *DriverGrantBucketAccessRequest) (*DriverGrantBucketAccessResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DriverGrantBucketAccess not implemented") } -func (*UnimplementedProvisionerServer) ProvisionerRevokeBucketAccess(context.Context, *ProvisionerRevokeBucketAccessRequest) (*ProvisionerRevokeBucketAccessResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ProvisionerRevokeBucketAccess not implemented") +func (*UnimplementedProvisionerServer) DriverRevokeBucketAccess(context.Context, *DriverRevokeBucketAccessRequest) (*DriverRevokeBucketAccessResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DriverRevokeBucketAccess not implemented") } func RegisterProvisionerServer(s *grpc.Server, srv ProvisionerServer) { s.RegisterService(&_Provisioner_serviceDesc, srv) } -func _Provisioner_ProvisionerCreateBucket_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProvisionerCreateBucketRequest) +func _Provisioner_DriverCreateBucket_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DriverCreateBucketRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ProvisionerServer).ProvisionerCreateBucket(ctx, in) + return srv.(ProvisionerServer).DriverCreateBucket(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cosi.v1alpha1.Provisioner/ProvisionerCreateBucket", + FullMethod: "/cosi.v1alpha1.Provisioner/DriverCreateBucket", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProvisionerServer).ProvisionerCreateBucket(ctx, req.(*ProvisionerCreateBucketRequest)) + return srv.(ProvisionerServer).DriverCreateBucket(ctx, req.(*DriverCreateBucketRequest)) } return interceptor(ctx, in, info, handler) } -func _Provisioner_ProvisionerDeleteBucket_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProvisionerDeleteBucketRequest) +func _Provisioner_DriverDeleteBucket_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DriverDeleteBucketRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ProvisionerServer).ProvisionerDeleteBucket(ctx, in) + return srv.(ProvisionerServer).DriverDeleteBucket(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cosi.v1alpha1.Provisioner/ProvisionerDeleteBucket", + FullMethod: "/cosi.v1alpha1.Provisioner/DriverDeleteBucket", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProvisionerServer).ProvisionerDeleteBucket(ctx, req.(*ProvisionerDeleteBucketRequest)) + return srv.(ProvisionerServer).DriverDeleteBucket(ctx, req.(*DriverDeleteBucketRequest)) } return interceptor(ctx, in, info, handler) } -func _Provisioner_ProvisionerGrantBucketAccess_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProvisionerGrantBucketAccessRequest) +func _Provisioner_DriverGrantBucketAccess_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DriverGrantBucketAccessRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ProvisionerServer).ProvisionerGrantBucketAccess(ctx, in) + return srv.(ProvisionerServer).DriverGrantBucketAccess(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cosi.v1alpha1.Provisioner/ProvisionerGrantBucketAccess", + FullMethod: "/cosi.v1alpha1.Provisioner/DriverGrantBucketAccess", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProvisionerServer).ProvisionerGrantBucketAccess(ctx, req.(*ProvisionerGrantBucketAccessRequest)) + return srv.(ProvisionerServer).DriverGrantBucketAccess(ctx, req.(*DriverGrantBucketAccessRequest)) } return interceptor(ctx, in, info, handler) } -func _Provisioner_ProvisionerRevokeBucketAccess_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProvisionerRevokeBucketAccessRequest) +func _Provisioner_DriverRevokeBucketAccess_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DriverRevokeBucketAccessRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ProvisionerServer).ProvisionerRevokeBucketAccess(ctx, in) + return srv.(ProvisionerServer).DriverRevokeBucketAccess(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cosi.v1alpha1.Provisioner/ProvisionerRevokeBucketAccess", + FullMethod: "/cosi.v1alpha1.Provisioner/DriverRevokeBucketAccess", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProvisionerServer).ProvisionerRevokeBucketAccess(ctx, req.(*ProvisionerRevokeBucketAccessRequest)) + return srv.(ProvisionerServer).DriverRevokeBucketAccess(ctx, req.(*DriverRevokeBucketAccessRequest)) } return interceptor(ctx, in, info, handler) } @@ -1802,20 +1938,20 @@ var _Provisioner_serviceDesc = grpc.ServiceDesc{ HandlerType: (*ProvisionerServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "ProvisionerCreateBucket", - Handler: _Provisioner_ProvisionerCreateBucket_Handler, + MethodName: "DriverCreateBucket", + Handler: _Provisioner_DriverCreateBucket_Handler, }, { - MethodName: "ProvisionerDeleteBucket", - Handler: _Provisioner_ProvisionerDeleteBucket_Handler, + MethodName: "DriverDeleteBucket", + Handler: _Provisioner_DriverDeleteBucket_Handler, }, { - MethodName: "ProvisionerGrantBucketAccess", - Handler: _Provisioner_ProvisionerGrantBucketAccess_Handler, + MethodName: "DriverGrantBucketAccess", + Handler: _Provisioner_DriverGrantBucketAccess_Handler, }, { - MethodName: "ProvisionerRevokeBucketAccess", - Handler: _Provisioner_ProvisionerRevokeBucketAccess_Handler, + MethodName: "DriverRevokeBucketAccess", + Handler: _Provisioner_DriverRevokeBucketAccess_Handler, }, }, Streams: []grpc.StreamDesc{}, diff --git a/cosi.pb.json.go b/cosi.pb.json.go index 57bd9cf..8d30f4f 100644 --- a/cosi.pb.json.go +++ b/cosi.pb.json.go @@ -4,259 +4,245 @@ package cosi import ( - "bytes" - - "github.com/golang/protobuf/jsonpb" + "google.golang.org/protobuf/encoding/protojson" ) // MarshalJSON implements json.Marshaler func (msg *S3) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler func (msg *S3) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler func (msg *AzureBlob) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler func (msg *AzureBlob) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler func (msg *GCS) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler func (msg *GCS) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler func (msg *Protocol) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler func (msg *Protocol) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CredentialDetails) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CredentialDetails) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler -func (msg *ProvisionerGetInfoRequest) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err +func (msg *DriverGetInfoRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler -func (msg *ProvisionerGetInfoRequest) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) +func (msg *DriverGetInfoRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler -func (msg *ProvisionerGetInfoResponse) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err +func (msg *DriverGetInfoResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler -func (msg *ProvisionerGetInfoResponse) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) +func (msg *DriverGetInfoResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler -func (msg *ProvisionerCreateBucketRequest) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err +func (msg *DriverCreateBucketRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler -func (msg *ProvisionerCreateBucketRequest) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) +func (msg *DriverCreateBucketRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler -func (msg *ProvisionerCreateBucketResponse) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err +func (msg *DriverCreateBucketResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler -func (msg *ProvisionerCreateBucketResponse) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) +func (msg *DriverCreateBucketResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler -func (msg *ProvisionerDeleteBucketRequest) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err +func (msg *DriverDeleteBucketRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler -func (msg *ProvisionerDeleteBucketRequest) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) +func (msg *DriverDeleteBucketRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler -func (msg *ProvisionerDeleteBucketResponse) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err +func (msg *DriverDeleteBucketResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler -func (msg *ProvisionerDeleteBucketResponse) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) +func (msg *DriverDeleteBucketResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler -func (msg *ProvisionerGrantBucketAccessRequest) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err +func (msg *DriverGrantBucketAccessRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler -func (msg *ProvisionerGrantBucketAccessRequest) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) +func (msg *DriverGrantBucketAccessRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler -func (msg *ProvisionerGrantBucketAccessResponse) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err +func (msg *DriverGrantBucketAccessResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler -func (msg *ProvisionerGrantBucketAccessResponse) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) +func (msg *DriverGrantBucketAccessResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler -func (msg *ProvisionerRevokeBucketAccessRequest) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err +func (msg *DriverRevokeBucketAccessRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler -func (msg *ProvisionerRevokeBucketAccessRequest) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) +func (msg *DriverRevokeBucketAccessRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } // MarshalJSON implements json.Marshaler -func (msg *ProvisionerRevokeBucketAccessResponse) MarshalJSON() ([]byte, error) { - var buf bytes.Buffer - err := (&jsonpb.Marshaler{ - EnumsAsInts: false, - EmitDefaults: true, - OrigName: false, - }).Marshal(&buf, msg) - return buf.Bytes(), err +func (msg *DriverRevokeBucketAccessResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: false, + }.Marshal(msg) } // UnmarshalJSON implements json.Unmarshaler -func (msg *ProvisionerRevokeBucketAccessResponse) UnmarshalJSON(b []byte) error { - return (&jsonpb.Unmarshaler{ - AllowUnknownFields: false, - }).Unmarshal(bytes.NewReader(b), msg) +func (msg *DriverRevokeBucketAccessResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: false, + }.Unmarshal(b, msg) } diff --git a/cosi.proto b/cosi.proto index 29455ec..c9e0a3f 100644 --- a/cosi.proto +++ b/cosi.proto @@ -54,8 +54,8 @@ extend google.protobuf.ServiceOptions { service Identity { // This call is meant to retrieve the unique provisioner Identity. - // This identity will have to be set in BucketRequest.Provisioner field in order to invoke this specific provisioner. - rpc ProvisionerGetInfo (ProvisionerGetInfoRequest) returns (ProvisionerGetInfoResponse) {} + // This identity will have to be set in BucketClaim.DriverName field in order to invoke this specific provisioner. + rpc DriverGetInfo (DriverGetInfoRequest) returns (DriverGetInfoResponse) {} } service Provisioner { @@ -63,16 +63,16 @@ service Provisioner { // This call is idempotent // 1. If a bucket that matches both name and parameters already exists, then OK (success) must be returned. // 2. If a bucket by same name, but different parameters is provided, then the appropriate error code ALREADY_EXISTS must be returned. - rpc ProvisionerCreateBucket (ProvisionerCreateBucketRequest) returns (ProvisionerCreateBucketResponse) {} + rpc DriverCreateBucket (DriverCreateBucketRequest) returns (DriverCreateBucketResponse) {} // This call is made to delete the bucket in the backend. // If the bucket has already been deleted, then no error should be returned. - rpc ProvisionerDeleteBucket (ProvisionerDeleteBucketRequest) returns (ProvisionerDeleteBucketResponse) {} + rpc DriverDeleteBucket (DriverDeleteBucketRequest) returns (DriverDeleteBucketResponse) {} // This call grants access to an account. The account_name in the request shall be used as a unique identifier to create credentials. - // The account_id returned in the response will be used as the unique identifier for deleting this access when calling ProvisionerRevokeBucketAccess. - rpc ProvisionerGrantBucketAccess (ProvisionerGrantBucketAccessRequest) returns (ProvisionerGrantBucketAccessResponse); + // The account_id returned in the response will be used as the unique identifier for deleting this access when calling DriverRevokeBucketAccess. + rpc DriverGrantBucketAccess (DriverGrantBucketAccessRequest) returns (DriverGrantBucketAccessResponse); // This call revokes all access to a particular bucket from a principal. - rpc ProvisionerRevokeBucketAccess (ProvisionerRevokeBucketAccessRequest) returns (ProvisionerRevokeBucketAccessResponse); + rpc DriverRevokeBucketAccess (DriverRevokeBucketAccessRequest) returns (DriverRevokeBucketAccessResponse); } // S3SignatureVersion is the version of the signing algorithm for all s3 requests @@ -96,6 +96,14 @@ enum AnonymousBucketAccessMode { ReadWrite = 4; } +enum AuthenticationType { + UnknownAuthenticationType = 0; + // Default, KEY based authentication. + Key = 1; + // Storageaccount based authentication. + IAM = 2; +} + message S3 { // region denotes the geographical region where the S3 server is running string region = 1; @@ -125,11 +133,16 @@ message Protocol { } } -message ProvisionerGetInfoRequest { +message CredentialDetails { + // map of the details in the secrets for the protocol string + map secrets = 1; +} + +message DriverGetInfoRequest { // Intentionally left blank } -message ProvisionerGetInfoResponse { +message DriverGetInfoResponse { // This field is REQUIRED // The name MUST follow domain name notation format // (https://tools.ietf.org/html/rfc1035#section-2.3.1). It SHOULD @@ -141,53 +154,52 @@ message ProvisionerGetInfoResponse { string name = 1; } -message ProvisionerCreateBucketRequest { +message DriverCreateBucketRequest { // This field is REQUIRED // name specifies the name of the bucket that should be created. string name = 1; - // This field is REQUIRED - // Protocol specific information required by the call is passed in as key,value pairs. - Protocol protocol = 2; - // This field is OPTIONAL // The caller should treat the values in parameters as opaque. // The receiver is responsible for parsing and validating the values. - map parameters = 3; + map parameters = 2; } -message ProvisionerCreateBucketResponse { +message DriverCreateBucketResponse { // bucket_id returned here is expected to be the globally unique - // identifier for the bucket in the object storage provider + // identifier for the bucket in the object storage provider. string bucket_id = 1; + + // bucket_info returned here stores the data specific to the + // bucket required by the object storage provider to connect to the bucket. + Protocol bucket_info = 2; } -message ProvisionerDeleteBucketRequest { +message DriverDeleteBucketRequest { // This field is REQUIRED // bucket_id is a globally unique identifier for the bucket // in the object storage provider string bucket_id = 1; } -message ProvisionerDeleteBucketResponse { +message DriverDeleteBucketResponse { // Intentionally left blank } -message ProvisionerGrantBucketAccessRequest { +message DriverGrantBucketAccessRequest { // This field is REQUIRED // bucket_id is a globally unique identifier for the bucket // in the object storage provider string bucket_id = 1; // This field is REQUIRED - // account_name is a identifier for object storage provider - // to ensure that multiple requests for the same account - // result in only one access token being created - string account_name = 2; + // name field is used to define the name of the bucket access object. + string name = 2; // This field is REQUIRED - // Requested Access policy, ex: {"Effect":"Allow","Action":"s3:PutObject","Resource":"arn:aws:s3:::profilepics/*"} - string access_policy = 3; + // Requested authentication type for the bucket access. + // Supported authentication types are KEY or IAM. + AuthenticationType authentication_type = 3; // This field is OPTIONAL // The caller should treat the values in parameters as opaque. @@ -195,18 +207,18 @@ message ProvisionerGrantBucketAccessRequest { map parameters = 4; } -message ProvisionerGrantBucketAccessResponse { - // This field is OPTIONAL +message DriverGrantBucketAccessResponse { + // This field is REQUIRED // This is the account_id that is being provided access. This will // be required later to revoke access. string account_id = 1; - // This field is OPTIONAL + // This field is REQUIRED // Credentials supplied for accessing the bucket ex: aws access key id and secret, etc. - string credentials = 2; + map credentials = 2; } -message ProvisionerRevokeBucketAccessRequest { +message DriverRevokeBucketAccessRequest { // This field is REQUIRED // bucket_id is a globally unique identifier for the bucket // in the object storage provider. @@ -217,7 +229,7 @@ message ProvisionerRevokeBucketAccessRequest { string account_id = 2; } -message ProvisionerRevokeBucketAccessResponse { +message DriverRevokeBucketAccessResponse { // Intentionally left blank } diff --git a/fake/cosi.pb.fake.go b/fake/cosi.pb.fake.go index 3e14247..170bedb 100644 --- a/fake/cosi.pb.fake.go +++ b/fake/cosi.pb.fake.go @@ -7,29 +7,29 @@ import ( ) type FakeIdentityClient struct { - FakeProvisionerGetInfo func(ctx context.Context, in *containerobjectstorageinterfacespec.ProvisionerGetInfoRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.ProvisionerGetInfoResponse, error) + FakeDriverGetInfo func(ctx context.Context, in *containerobjectstorageinterfacespec.DriverGetInfoRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.DriverGetInfoResponse, error) } -func (f *FakeIdentityClient) ProvisionerGetInfo(ctx context.Context, in *containerobjectstorageinterfacespec.ProvisionerGetInfoRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.ProvisionerGetInfoResponse, error) { - return f.FakeProvisionerGetInfo(ctx, in, opts...) +func (f *FakeIdentityClient) DriverGetInfo(ctx context.Context, in *containerobjectstorageinterfacespec.DriverGetInfoRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.DriverGetInfoResponse, error) { + return f.FakeDriverGetInfo(ctx, in, opts...) } type FakeProvisionerClient struct { - FakeProvisionerCreateBucket func(ctx context.Context, in *containerobjectstorageinterfacespec.ProvisionerCreateBucketRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.ProvisionerCreateBucketResponse, error) - FakeProvisionerDeleteBucket func(ctx context.Context, in *containerobjectstorageinterfacespec.ProvisionerDeleteBucketRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.ProvisionerDeleteBucketResponse, error) - FakeProvisionerGrantBucketAccess func(ctx context.Context, in *containerobjectstorageinterfacespec.ProvisionerGrantBucketAccessRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.ProvisionerGrantBucketAccessResponse, error) - FakeProvisionerRevokeBucketAccess func(ctx context.Context, in *containerobjectstorageinterfacespec.ProvisionerRevokeBucketAccessRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.ProvisionerRevokeBucketAccessResponse, error) + FakeDriverCreateBucket func(ctx context.Context, in *containerobjectstorageinterfacespec.DriverCreateBucketRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.DriverCreateBucketResponse, error) + FakeDriverDeleteBucket func(ctx context.Context, in *containerobjectstorageinterfacespec.DriverDeleteBucketRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.DriverDeleteBucketResponse, error) + FakeDriverGrantBucketAccess func(ctx context.Context, in *containerobjectstorageinterfacespec.DriverGrantBucketAccessRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.DriverGrantBucketAccessResponse, error) + FakeDriverRevokeBucketAccess func(ctx context.Context, in *containerobjectstorageinterfacespec.DriverRevokeBucketAccessRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.DriverRevokeBucketAccessResponse, error) } -func (f *FakeProvisionerClient) ProvisionerCreateBucket(ctx context.Context, in *containerobjectstorageinterfacespec.ProvisionerCreateBucketRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.ProvisionerCreateBucketResponse, error) { - return f.FakeProvisionerCreateBucket(ctx, in, opts...) +func (f *FakeProvisionerClient) DriverCreateBucket(ctx context.Context, in *containerobjectstorageinterfacespec.DriverCreateBucketRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.DriverCreateBucketResponse, error) { + return f.FakeDriverCreateBucket(ctx, in, opts...) } -func (f *FakeProvisionerClient) ProvisionerDeleteBucket(ctx context.Context, in *containerobjectstorageinterfacespec.ProvisionerDeleteBucketRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.ProvisionerDeleteBucketResponse, error) { - return f.FakeProvisionerDeleteBucket(ctx, in, opts...) +func (f *FakeProvisionerClient) DriverDeleteBucket(ctx context.Context, in *containerobjectstorageinterfacespec.DriverDeleteBucketRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.DriverDeleteBucketResponse, error) { + return f.FakeDriverDeleteBucket(ctx, in, opts...) } -func (f *FakeProvisionerClient) ProvisionerGrantBucketAccess(ctx context.Context, in *containerobjectstorageinterfacespec.ProvisionerGrantBucketAccessRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.ProvisionerGrantBucketAccessResponse, error) { - return f.FakeProvisionerGrantBucketAccess(ctx, in, opts...) +func (f *FakeProvisionerClient) DriverGrantBucketAccess(ctx context.Context, in *containerobjectstorageinterfacespec.DriverGrantBucketAccessRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.DriverGrantBucketAccessResponse, error) { + return f.FakeDriverGrantBucketAccess(ctx, in, opts...) } -func (f *FakeProvisionerClient) ProvisionerRevokeBucketAccess(ctx context.Context, in *containerobjectstorageinterfacespec.ProvisionerRevokeBucketAccessRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.ProvisionerRevokeBucketAccessResponse, error) { - return f.FakeProvisionerRevokeBucketAccess(ctx, in, opts...) +func (f *FakeProvisionerClient) DriverRevokeBucketAccess(ctx context.Context, in *containerobjectstorageinterfacespec.DriverRevokeBucketAccessRequest, opts ...grpc.CallOption) (*containerobjectstorageinterfacespec.DriverRevokeBucketAccessResponse, error) { + return f.FakeDriverRevokeBucketAccess(ctx, in, opts...) } diff --git a/go.mod b/go.mod index 9840363..ad3d543 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,19 @@ module sigs.k8s.io/container-object-storage-interface-spec -go 1.15 +go 1.18 require ( github.com/dave/jennifer v1.4.1 github.com/golang/protobuf v1.4.3 - golang.org/x/net v0.0.0-20191002035440-2ec189313ef0 // indirect google.golang.org/grpc v1.35.0 google.golang.org/protobuf v1.25.0 ) + +require ( + github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect + github.com/mitchellh/protoc-gen-go-json v1.1.0 // indirect + golang.org/x/net v0.0.0-20191002035440-2ec189313ef0 // indirect + golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a // indirect + golang.org/x/text v0.3.0 // indirect + google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 // indirect +) diff --git a/go.sum b/go.sum index ac6afbc..7d412c5 100644 --- a/go.sum +++ b/go.sum @@ -31,9 +31,12 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/mitchellh/protoc-gen-go-json v1.1.0 h1:lEi1xtXyYKDwA8EB5u27+UUZOTznC4JpqVOKZwCGJUo= +github.com/mitchellh/protoc-gen-go-json v1.1.0/go.mod h1:pACAKlMtBf4SMFbVswcjwNwWwlci6Vn841H5jPRcE9I= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= diff --git a/spec.md b/spec.md index 8f3e548..953eb70 100644 --- a/spec.md +++ b/spec.md @@ -181,8 +181,8 @@ extend google.protobuf.ServiceOptions { service Identity { // This call is meant to retrieve the unique provisioner Identity. - // This identity will have to be set in BucketRequest.Provisioner field in order to invoke this specific provisioner. - rpc ProvisionerGetInfo (ProvisionerGetInfoRequest) returns (ProvisionerGetInfoResponse) {} + // This identity will have to be set in BucketClaim.DriverName field in order to invoke this specific provisioner. + rpc DriverGetInfo (DriverGetInfoRequest) returns (DriverGetInfoResponse) {} } service Provisioner { @@ -190,16 +190,16 @@ service Provisioner { // This call is idempotent // 1. If a bucket that matches both name and parameters already exists, then OK (success) must be returned. // 2. If a bucket by same name, but different parameters is provided, then the appropriate error code ALREADY_EXISTS must be returned. - rpc ProvisionerCreateBucket (ProvisionerCreateBucketRequest) returns (ProvisionerCreateBucketResponse) {} + rpc DriverCreateBucket (DriverCreateBucketRequest) returns (DriverCreateBucketResponse) {} // This call is made to delete the bucket in the backend. // If the bucket has already been deleted, then no error should be returned. - rpc ProvisionerDeleteBucket (ProvisionerDeleteBucketRequest) returns (ProvisionerDeleteBucketResponse) {} + rpc DriverDeleteBucket (DriverDeleteBucketRequest) returns (DriverDeleteBucketResponse) {} // This call grants access to an account. The account_name in the request shall be used as a unique identifier to create credentials. - // The account_id returned in the response will be used as the unique identifier for deleting this access when calling ProvisionerRevokeBucketAccess. - rpc ProvisionerGrantBucketAccess (ProvisionerGrantBucketAccessRequest) returns (ProvisionerGrantBucketAccessResponse); + // The account_id returned in the response will be used as the unique identifier for deleting this access when calling DriverRevokeBucketAccess. + rpc DriverGrantBucketAccess (DriverGrantBucketAccessRequest) returns (DriverGrantBucketAccessResponse); // This call revokes all access to a particular bucket from a principal. - rpc ProvisionerRevokeBucketAccess (ProvisionerRevokeBucketAccessRequest) returns (ProvisionerRevokeBucketAccessResponse); + rpc DriverRevokeBucketAccess (DriverRevokeBucketAccessRequest) returns (DriverRevokeBucketAccessResponse); } // S3SignatureVersion is the version of the signing algorithm for all s3 requests @@ -223,6 +223,14 @@ enum AnonymousBucketAccessMode { ReadWrite = 4; } +enum AuthenticationType { + UnknownAuthenticationType = 0; + // Default, KEY based authentication. + Key = 1; + // Storageaccount based authentication. + IAM = 2; +} + message S3 { // region denotes the geographical region where the S3 server is running string region = 1; @@ -252,11 +260,16 @@ message Protocol { } } -message ProvisionerGetInfoRequest { +message CredentialDetails { + // map of the details in the secrets for the protocol string + map secrets = 1; +} + +message DriverGetInfoRequest { // Intentionally left blank } -message ProvisionerGetInfoResponse { +message DriverGetInfoResponse { // This field is REQUIRED // The name MUST follow domain name notation format // (https://tools.ietf.org/html/rfc1035#section-2.3.1). It SHOULD @@ -268,53 +281,52 @@ message ProvisionerGetInfoResponse { string name = 1; } -message ProvisionerCreateBucketRequest { +message DriverCreateBucketRequest { // This field is REQUIRED // name specifies the name of the bucket that should be created. string name = 1; - // This field is REQUIRED - // Protocol specific information required by the call is passed in as key,value pairs. - Protocol protocol = 2; - // This field is OPTIONAL // The caller should treat the values in parameters as opaque. // The receiver is responsible for parsing and validating the values. - map parameters = 3; + map parameters = 2; } -message ProvisionerCreateBucketResponse { +message DriverCreateBucketResponse { // bucket_id returned here is expected to be the globally unique - // identifier for the bucket in the object storage provider + // identifier for the bucket in the object storage provider. string bucket_id = 1; + + // bucket_info returned here stores the data specific to the + // bucket required by the object storage provider to connect to the bucket. + Protocol bucket_info = 2; } -message ProvisionerDeleteBucketRequest { +message DriverDeleteBucketRequest { // This field is REQUIRED // bucket_id is a globally unique identifier for the bucket // in the object storage provider string bucket_id = 1; } -message ProvisionerDeleteBucketResponse { +message DriverDeleteBucketResponse { // Intentionally left blank } -message ProvisionerGrantBucketAccessRequest { +message DriverGrantBucketAccessRequest { // This field is REQUIRED // bucket_id is a globally unique identifier for the bucket // in the object storage provider string bucket_id = 1; // This field is REQUIRED - // account_name is a identifier for object storage provider - // to ensure that multiple requests for the same account - // result in only one access token being created - string account_name = 2; + // name field is used to define the name of the bucket access object. + string name = 2; // This field is REQUIRED - // Requested Access policy, ex: {"Effect":"Allow","Action":"s3:PutObject","Resource":"arn:aws:s3:::profilepics/*"} - string access_policy = 3; + // Requested authentication type for the bucket access. + // Supported authentication types are KEY or IAM. + AuthenticationType authentication_type = 3; // This field is OPTIONAL // The caller should treat the values in parameters as opaque. @@ -322,18 +334,18 @@ message ProvisionerGrantBucketAccessRequest { map parameters = 4; } -message ProvisionerGrantBucketAccessResponse { - // This field is OPTIONAL +message DriverGrantBucketAccessResponse { + // This field is REQUIRED // This is the account_id that is being provided access. This will // be required later to revoke access. string account_id = 1; - // This field is OPTIONAL + // This field is REQUIRED // Credentials supplied for accessing the bucket ex: aws access key id and secret, etc. - string credentials = 2; + map credentials = 2; } -message ProvisionerRevokeBucketAccessRequest { +message DriverRevokeBucketAccessRequest { // This field is REQUIRED // bucket_id is a globally unique identifier for the bucket // in the object storage provider. @@ -344,7 +356,7 @@ message ProvisionerRevokeBucketAccessRequest { string account_id = 2; } -message ProvisionerRevokeBucketAccessResponse { +message DriverRevokeBucketAccessResponse { // Intentionally left blank } @@ -419,36 +431,31 @@ The general flow of the success case MAY be as follows (protos illustrated in YA 1. COSI system queries metadata via Identity RPC. ``` - # COSI system --(ProvisionerGetInfo)--> Plugin + # COSI system --(DriverGetInfo)--> Plugin request: response: name: org.foo.whizbang.super-plugin - version: blue-green - manifest: - baz: qaz ``` ``` -message ProvisionerGetInfoRequest { +message DriverGetInfoRequest { // Intentionally left blank } -message ProvisionerGetInfoResponse { +message DriverGetInfoResponse { string name = 1; - string version = 2; - map manifest = 3; } ``` -#### `ProvisionerCreateBucket` +#### `DriverCreateBucket` A Controller Plugin MUST implement this RPC call. This RPC will be called by the COSI system to provision a new bucket on behalf of a COSI user. This operation MUST be idempotent. -If a volume corresponding to the specified bucket `name` already exists, is accessible from `accessibility_requirements, and is compatible with the specified attributes of the bucket in the `ProvisionerCreateBucket`, the Plugin MUST reply `0 OK` with the corresponding `ProvisionerCreateBucketResponse`. +If a volume corresponding to the specified bucket `name` already exists, is accessible from `accessibility_requirements, and is compatible with the specified attributes of the bucket in the `DriverCreateBucket`, the Plugin MUST reply `0 OK` with the corresponding `DriverCreateBucketResponse`. ``` -message ProvisionerCreateBucketRequest { +message DriverCreateBucketRequest { // Idempotency - This name is generated by the COSI system to achieve // idempotency. // This field is REQUIRED. @@ -459,7 +466,7 @@ message ProvisionerCreateBucketRequest { map bucket_context = 2; } -message ProvisionerCreateBucketResponse { +message DriverCreateBucketResponse { // Intentionally left blank }