From e8adc7ebb6ace5ee753fb5dd2ffbceef59fb84bc Mon Sep 17 00:00:00 2001 From: Rewant Soni Date: Tue, 19 Nov 2024 17:55:09 +0530 Subject: [PATCH 1/3] add rpc call related to maintenanceMode Signed-off-by: Rewant Soni --- services/provider/api/provider.pb.go | 758 +++++++++++------- services/provider/api/provider_grpc.pb.go | 36 + services/provider/proto/provider.proto | 19 +- .../services/provider/api/v4/provider.pb.go | 758 +++++++++++------- .../provider/api/v4/provider_grpc.pb.go | 36 + 5 files changed, 1064 insertions(+), 543 deletions(-) diff --git a/services/provider/api/provider.pb.go b/services/provider/api/provider.pb.go index 261e53a26a..4f718d11fe 100644 --- a/services/provider/api/provider.pb.go +++ b/services/provider/api/provider.pb.go @@ -65,7 +65,7 @@ func (x FulfillStorageClaimRequest_StorageType) Number() protoreflect.EnumNumber // Deprecated: Use FulfillStorageClaimRequest_StorageType.Descriptor instead. func (FulfillStorageClaimRequest_StorageType) EnumDescriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{9, 0} + return file_provider_proto_rawDescGZIP(), []int{10, 0} } // OnboardConsumerRequest holds the required information to validate the consumer and create StorageConsumer @@ -319,6 +319,53 @@ func (x *ExternalResource) GetAnnotations() map[string]string { return nil } +type SystemAttributes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SystemInMaintenanceMode bool `protobuf:"varint,1,opt,name=SystemInMaintenanceMode,proto3" json:"SystemInMaintenanceMode,omitempty"` +} + +func (x *SystemAttributes) Reset() { + *x = SystemAttributes{} + if protoimpl.UnsafeEnabled { + mi := &file_provider_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SystemAttributes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SystemAttributes) ProtoMessage() {} + +func (x *SystemAttributes) ProtoReflect() protoreflect.Message { + mi := &file_provider_proto_msgTypes[4] + 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 SystemAttributes.ProtoReflect.Descriptor instead. +func (*SystemAttributes) Descriptor() ([]byte, []int) { + return file_provider_proto_rawDescGZIP(), []int{4} +} + +func (x *SystemAttributes) GetSystemInMaintenanceMode() bool { + if x != nil { + return x.SystemInMaintenanceMode + } + return false +} + // StorageConfigResponse holds the response for the GetStorageConfig API request type StorageConfigResponse struct { state protoimpl.MessageState @@ -328,13 +375,14 @@ type StorageConfigResponse struct { // ExternalResource holds the configuration data of external storage cluster ExternalResource []*ExternalResource `protobuf:"bytes,1,rep,name=externalResource,proto3" json:"externalResource,omitempty"` // Contains hash of desired config - DesiredConfigHash string `protobuf:"bytes,2,opt,name=desiredConfigHash,proto3" json:"desiredConfigHash,omitempty"` + DesiredConfigHash string `protobuf:"bytes,2,opt,name=desiredConfigHash,proto3" json:"desiredConfigHash,omitempty"` + SystemAttributes *SystemAttributes `protobuf:"bytes,3,opt,name=systemAttributes,proto3" json:"systemAttributes,omitempty"` } func (x *StorageConfigResponse) Reset() { *x = StorageConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[4] + mi := &file_provider_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -347,7 +395,7 @@ func (x *StorageConfigResponse) String() string { func (*StorageConfigResponse) ProtoMessage() {} func (x *StorageConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[4] + mi := &file_provider_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -360,7 +408,7 @@ func (x *StorageConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageConfigResponse.ProtoReflect.Descriptor instead. func (*StorageConfigResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{4} + return file_provider_proto_rawDescGZIP(), []int{5} } func (x *StorageConfigResponse) GetExternalResource() []*ExternalResource { @@ -377,6 +425,13 @@ func (x *StorageConfigResponse) GetDesiredConfigHash() string { return "" } +func (x *StorageConfigResponse) GetSystemAttributes() *SystemAttributes { + if x != nil { + return x.SystemAttributes + } + return nil +} + // OffboardConsumerRequest holds the required information to delete the StorageConsumer CR on the storage provider cluster. type OffboardConsumerRequest struct { state protoimpl.MessageState @@ -390,7 +445,7 @@ type OffboardConsumerRequest struct { func (x *OffboardConsumerRequest) Reset() { *x = OffboardConsumerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[5] + mi := &file_provider_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -403,7 +458,7 @@ func (x *OffboardConsumerRequest) String() string { func (*OffboardConsumerRequest) ProtoMessage() {} func (x *OffboardConsumerRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[5] + mi := &file_provider_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -416,7 +471,7 @@ func (x *OffboardConsumerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OffboardConsumerRequest.ProtoReflect.Descriptor instead. func (*OffboardConsumerRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{5} + return file_provider_proto_rawDescGZIP(), []int{6} } func (x *OffboardConsumerRequest) GetStorageConsumerUUID() string { @@ -436,7 +491,7 @@ type OffboardConsumerResponse struct { func (x *OffboardConsumerResponse) Reset() { *x = OffboardConsumerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[6] + mi := &file_provider_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -449,7 +504,7 @@ func (x *OffboardConsumerResponse) String() string { func (*OffboardConsumerResponse) ProtoMessage() {} func (x *OffboardConsumerResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[6] + mi := &file_provider_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -462,7 +517,7 @@ func (x *OffboardConsumerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OffboardConsumerResponse.ProtoReflect.Descriptor instead. func (*OffboardConsumerResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{6} + return file_provider_proto_rawDescGZIP(), []int{7} } // AcknowledgeOnboardingRequest holds the information required to acknowledge the onboarding @@ -478,7 +533,7 @@ type AcknowledgeOnboardingRequest struct { func (x *AcknowledgeOnboardingRequest) Reset() { *x = AcknowledgeOnboardingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[7] + mi := &file_provider_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -491,7 +546,7 @@ func (x *AcknowledgeOnboardingRequest) String() string { func (*AcknowledgeOnboardingRequest) ProtoMessage() {} func (x *AcknowledgeOnboardingRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[7] + mi := &file_provider_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -504,7 +559,7 @@ func (x *AcknowledgeOnboardingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeOnboardingRequest.ProtoReflect.Descriptor instead. func (*AcknowledgeOnboardingRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{7} + return file_provider_proto_rawDescGZIP(), []int{8} } func (x *AcknowledgeOnboardingRequest) GetStorageConsumerUUID() string { @@ -524,7 +579,7 @@ type AcknowledgeOnboardingResponse struct { func (x *AcknowledgeOnboardingResponse) Reset() { *x = AcknowledgeOnboardingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[8] + mi := &file_provider_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -537,7 +592,7 @@ func (x *AcknowledgeOnboardingResponse) String() string { func (*AcknowledgeOnboardingResponse) ProtoMessage() {} func (x *AcknowledgeOnboardingResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[8] + mi := &file_provider_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -550,7 +605,7 @@ func (x *AcknowledgeOnboardingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeOnboardingResponse.ProtoReflect.Descriptor instead. func (*AcknowledgeOnboardingResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{8} + return file_provider_proto_rawDescGZIP(), []int{9} } // FulfillStorageClaimRequest holds the information required to @@ -574,7 +629,7 @@ type FulfillStorageClaimRequest struct { func (x *FulfillStorageClaimRequest) Reset() { *x = FulfillStorageClaimRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[9] + mi := &file_provider_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -587,7 +642,7 @@ func (x *FulfillStorageClaimRequest) String() string { func (*FulfillStorageClaimRequest) ProtoMessage() {} func (x *FulfillStorageClaimRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[9] + mi := &file_provider_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -600,7 +655,7 @@ func (x *FulfillStorageClaimRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FulfillStorageClaimRequest.ProtoReflect.Descriptor instead. func (*FulfillStorageClaimRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{9} + return file_provider_proto_rawDescGZIP(), []int{10} } func (x *FulfillStorageClaimRequest) GetStorageClaimName() string { @@ -648,7 +703,7 @@ type FulfillStorageClaimResponse struct { func (x *FulfillStorageClaimResponse) Reset() { *x = FulfillStorageClaimResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[10] + mi := &file_provider_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -661,7 +716,7 @@ func (x *FulfillStorageClaimResponse) String() string { func (*FulfillStorageClaimResponse) ProtoMessage() {} func (x *FulfillStorageClaimResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[10] + mi := &file_provider_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -674,7 +729,7 @@ func (x *FulfillStorageClaimResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FulfillStorageClaimResponse.ProtoReflect.Descriptor instead. func (*FulfillStorageClaimResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{10} + return file_provider_proto_rawDescGZIP(), []int{11} } // RevokeStorageClaimRequest holds the information required to delete the @@ -693,7 +748,7 @@ type RevokeStorageClaimRequest struct { func (x *RevokeStorageClaimRequest) Reset() { *x = RevokeStorageClaimRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[11] + mi := &file_provider_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -706,7 +761,7 @@ func (x *RevokeStorageClaimRequest) String() string { func (*RevokeStorageClaimRequest) ProtoMessage() {} func (x *RevokeStorageClaimRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[11] + mi := &file_provider_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -719,7 +774,7 @@ func (x *RevokeStorageClaimRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeStorageClaimRequest.ProtoReflect.Descriptor instead. func (*RevokeStorageClaimRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{11} + return file_provider_proto_rawDescGZIP(), []int{12} } func (x *RevokeStorageClaimRequest) GetStorageClaimName() string { @@ -746,7 +801,7 @@ type RevokeStorageClaimResponse struct { func (x *RevokeStorageClaimResponse) Reset() { *x = RevokeStorageClaimResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[12] + mi := &file_provider_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -759,7 +814,7 @@ func (x *RevokeStorageClaimResponse) String() string { func (*RevokeStorageClaimResponse) ProtoMessage() {} func (x *RevokeStorageClaimResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[12] + mi := &file_provider_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -772,7 +827,7 @@ func (x *RevokeStorageClaimResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeStorageClaimResponse.ProtoReflect.Descriptor instead. func (*RevokeStorageClaimResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{12} + return file_provider_proto_rawDescGZIP(), []int{13} } // StorageClaimConfigRequest holds the information required to generate the @@ -791,7 +846,7 @@ type StorageClaimConfigRequest struct { func (x *StorageClaimConfigRequest) Reset() { *x = StorageClaimConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[13] + mi := &file_provider_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -804,7 +859,7 @@ func (x *StorageClaimConfigRequest) String() string { func (*StorageClaimConfigRequest) ProtoMessage() {} func (x *StorageClaimConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[13] + mi := &file_provider_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -817,7 +872,7 @@ func (x *StorageClaimConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageClaimConfigRequest.ProtoReflect.Descriptor instead. func (*StorageClaimConfigRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{13} + return file_provider_proto_rawDescGZIP(), []int{14} } func (x *StorageClaimConfigRequest) GetStorageClaimName() string { @@ -847,7 +902,7 @@ type StorageClaimConfigResponse struct { func (x *StorageClaimConfigResponse) Reset() { *x = StorageClaimConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[14] + mi := &file_provider_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -860,7 +915,7 @@ func (x *StorageClaimConfigResponse) String() string { func (*StorageClaimConfigResponse) ProtoMessage() {} func (x *StorageClaimConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[14] + mi := &file_provider_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -873,7 +928,7 @@ func (x *StorageClaimConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageClaimConfigResponse.ProtoReflect.Descriptor instead. func (*StorageClaimConfigResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{14} + return file_provider_proto_rawDescGZIP(), []int{15} } func (x *StorageClaimConfigResponse) GetExternalResource() []*ExternalResource { @@ -906,7 +961,7 @@ type ReportStatusRequest struct { func (x *ReportStatusRequest) Reset() { *x = ReportStatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[15] + mi := &file_provider_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -919,7 +974,7 @@ func (x *ReportStatusRequest) String() string { func (*ReportStatusRequest) ProtoMessage() {} func (x *ReportStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[15] + mi := &file_provider_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -932,7 +987,7 @@ func (x *ReportStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportStatusRequest.ProtoReflect.Descriptor instead. func (*ReportStatusRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{15} + return file_provider_proto_rawDescGZIP(), []int{16} } func (x *ReportStatusRequest) GetStorageConsumerUUID() string { @@ -1004,7 +1059,7 @@ type ReportStatusResponse struct { func (x *ReportStatusResponse) Reset() { *x = ReportStatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[16] + mi := &file_provider_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1017,7 +1072,7 @@ func (x *ReportStatusResponse) String() string { func (*ReportStatusResponse) ProtoMessage() {} func (x *ReportStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[16] + mi := &file_provider_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1030,7 +1085,7 @@ func (x *ReportStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportStatusResponse.ProtoReflect.Descriptor instead. func (*ReportStatusResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{16} + return file_provider_proto_rawDescGZIP(), []int{17} } func (x *ReportStatusResponse) GetDesiredClientOperatorChannel() string { @@ -1062,7 +1117,7 @@ type PeerStorageClusterRequest struct { func (x *PeerStorageClusterRequest) Reset() { *x = PeerStorageClusterRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[17] + mi := &file_provider_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1075,7 +1130,7 @@ func (x *PeerStorageClusterRequest) String() string { func (*PeerStorageClusterRequest) ProtoMessage() {} func (x *PeerStorageClusterRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[17] + mi := &file_provider_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1088,7 +1143,7 @@ func (x *PeerStorageClusterRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerStorageClusterRequest.ProtoReflect.Descriptor instead. func (*PeerStorageClusterRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{17} + return file_provider_proto_rawDescGZIP(), []int{18} } func (x *PeerStorageClusterRequest) GetOnboardingToken() string { @@ -1115,7 +1170,7 @@ type PeerStorageClusterResponse struct { func (x *PeerStorageClusterResponse) Reset() { *x = PeerStorageClusterResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[18] + mi := &file_provider_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1128,7 +1183,7 @@ func (x *PeerStorageClusterResponse) String() string { func (*PeerStorageClusterResponse) ProtoMessage() {} func (x *PeerStorageClusterResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[18] + mi := &file_provider_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1141,7 +1196,101 @@ func (x *PeerStorageClusterResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerStorageClusterResponse.ProtoReflect.Descriptor instead. func (*PeerStorageClusterResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{18} + return file_provider_proto_rawDescGZIP(), []int{19} +} + +type RequestMaintenanceModeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // K8s UID (UUID) of the consumer cluster. + StorageConsumerUUID string `protobuf:"bytes,1,opt,name=storageConsumerUUID,proto3" json:"storageConsumerUUID,omitempty"` + Enable bool `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"` +} + +func (x *RequestMaintenanceModeRequest) Reset() { + *x = RequestMaintenanceModeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_provider_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestMaintenanceModeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestMaintenanceModeRequest) ProtoMessage() {} + +func (x *RequestMaintenanceModeRequest) ProtoReflect() protoreflect.Message { + mi := &file_provider_proto_msgTypes[20] + 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 RequestMaintenanceModeRequest.ProtoReflect.Descriptor instead. +func (*RequestMaintenanceModeRequest) Descriptor() ([]byte, []int) { + return file_provider_proto_rawDescGZIP(), []int{20} +} + +func (x *RequestMaintenanceModeRequest) GetStorageConsumerUUID() string { + if x != nil { + return x.StorageConsumerUUID + } + return "" +} + +func (x *RequestMaintenanceModeRequest) GetEnable() bool { + if x != nil { + return x.Enable + } + return false +} + +type RequestMaintenanceModeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RequestMaintenanceModeResponse) Reset() { + *x = RequestMaintenanceModeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_provider_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestMaintenanceModeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestMaintenanceModeResponse) ProtoMessage() {} + +func (x *RequestMaintenanceModeResponse) ProtoReflect() protoreflect.Message { + mi := &file_provider_proto_msgTypes[21] + 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 RequestMaintenanceModeResponse.ProtoReflect.Descriptor instead. +func (*RequestMaintenanceModeResponse) Descriptor() ([]byte, []int) { + return file_provider_proto_rawDescGZIP(), []int{21} } var File_provider_proto protoreflect.FileDescriptor @@ -1192,173 +1341,198 @@ var file_provider_proto_rawDesc = []byte{ 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, - 0x8d, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, - 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x22, - 0x4b, 0x0a, 0x17, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, - 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x1a, 0x0a, 0x18, - 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x0a, 0x1c, 0x41, 0x63, 0x6b, 0x6e, - 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x1f, 0x0a, 0x1d, 0x41, 0x63, - 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcc, 0x02, 0x0a, 0x1a, - 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, - 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x10, 0x65, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x52, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x22, 0x28, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x00, 0x12, - 0x09, 0x0a, 0x05, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, 0x22, 0x1d, 0x0a, 0x1b, 0x46, 0x75, - 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, - 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x52, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, - 0x55, 0x55, 0x49, 0x44, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x64, 0x0a, - 0x1a, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x22, 0xf3, 0x02, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, + 0x4c, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x17, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x4d, + 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x4d, 0x61, + 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xd5, 0x01, + 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x10, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x2c, 0x0a, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, + 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, + 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x52, 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x17, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, + 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x34, 0x0a, - 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x1c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, 0x74, 0x69, - 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, - 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x22, 0x88, 0x01, 0x0a, 0x14, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, - 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, - 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x48, 0x61, 0x73, 0x68, 0x22, 0x73, 0x0a, 0x19, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, 0x22, 0x1c, 0x0a, 0x1a, 0x50, 0x65, 0x65, - 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xea, 0x06, 0x0a, 0x0b, 0x4f, 0x43, 0x53, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0f, 0x4f, 0x6e, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, - 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x4f, 0x66, 0x66, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x21, 0x2e, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x49, 0x44, 0x22, 0x1a, 0x0a, 0x18, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, + 0x0a, 0x1c, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, + 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, + 0x22, 0x1f, 0x0a, 0x1d, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, + 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xcc, 0x02, 0x0a, 0x1a, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, + 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x2a, + 0x0a, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x52, 0x0a, 0x0b, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, + 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, + 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x28, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x46, + 0x49, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, + 0x22, 0x1d, 0x0a, 0x1b, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x79, 0x0a, 0x19, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, + 0x55, 0x49, 0x44, 0x22, 0x64, 0x0a, 0x1a, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xf3, 0x02, 0x0a, 0x13, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, + 0x55, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, + 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x42, 0x0a, 0x1c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, + 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, + 0x6f, 0x74, 0x61, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, + 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x22, + 0x88, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x64, 0x65, 0x73, 0x69, + 0x72, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, + 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x11, + 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x22, 0x73, 0x0a, 0x19, 0x50, 0x65, + 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, 0x22, + 0x1c, 0x0a, 0x1a, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, + 0x1d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, + 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xd9, 0x07, 0x0a, 0x0b, 0x4f, + 0x43, 0x53, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0f, 0x4f, 0x6e, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x20, 0x2e, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, 0x66, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x15, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, - 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x26, - 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, - 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x64, 0x0a, 0x13, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, - 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x52, 0x65, 0x76, 0x6f, 0x6b, - 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x23, 0x2e, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, + 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x4f, + 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, + 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, 0x66, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, + 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x15, 0x41, 0x63, 0x6b, 0x6e, + 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x6b, + 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x24, 0x2e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, + 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4f, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x61, 0x0a, 0x12, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x76, 0x6f, + 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, + 0x15, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, + 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1374,60 +1548,66 @@ func file_provider_proto_rawDescGZIP() []byte { } var file_provider_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_provider_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_provider_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_provider_proto_goTypes = []interface{}{ (FulfillStorageClaimRequest_StorageType)(0), // 0: provider.FulfillStorageClaimRequest.StorageType (*OnboardConsumerRequest)(nil), // 1: provider.OnboardConsumerRequest (*OnboardConsumerResponse)(nil), // 2: provider.OnboardConsumerResponse (*StorageConfigRequest)(nil), // 3: provider.StorageConfigRequest (*ExternalResource)(nil), // 4: provider.ExternalResource - (*StorageConfigResponse)(nil), // 5: provider.StorageConfigResponse - (*OffboardConsumerRequest)(nil), // 6: provider.OffboardConsumerRequest - (*OffboardConsumerResponse)(nil), // 7: provider.OffboardConsumerResponse - (*AcknowledgeOnboardingRequest)(nil), // 8: provider.AcknowledgeOnboardingRequest - (*AcknowledgeOnboardingResponse)(nil), // 9: provider.AcknowledgeOnboardingResponse - (*FulfillStorageClaimRequest)(nil), // 10: provider.FulfillStorageClaimRequest - (*FulfillStorageClaimResponse)(nil), // 11: provider.FulfillStorageClaimResponse - (*RevokeStorageClaimRequest)(nil), // 12: provider.RevokeStorageClaimRequest - (*RevokeStorageClaimResponse)(nil), // 13: provider.RevokeStorageClaimResponse - (*StorageClaimConfigRequest)(nil), // 14: provider.StorageClaimConfigRequest - (*StorageClaimConfigResponse)(nil), // 15: provider.StorageClaimConfigResponse - (*ReportStatusRequest)(nil), // 16: provider.ReportStatusRequest - (*ReportStatusResponse)(nil), // 17: provider.ReportStatusResponse - (*PeerStorageClusterRequest)(nil), // 18: provider.PeerStorageClusterRequest - (*PeerStorageClusterResponse)(nil), // 19: provider.PeerStorageClusterResponse - nil, // 20: provider.ExternalResource.LabelsEntry - nil, // 21: provider.ExternalResource.AnnotationsEntry + (*SystemAttributes)(nil), // 5: provider.SystemAttributes + (*StorageConfigResponse)(nil), // 6: provider.StorageConfigResponse + (*OffboardConsumerRequest)(nil), // 7: provider.OffboardConsumerRequest + (*OffboardConsumerResponse)(nil), // 8: provider.OffboardConsumerResponse + (*AcknowledgeOnboardingRequest)(nil), // 9: provider.AcknowledgeOnboardingRequest + (*AcknowledgeOnboardingResponse)(nil), // 10: provider.AcknowledgeOnboardingResponse + (*FulfillStorageClaimRequest)(nil), // 11: provider.FulfillStorageClaimRequest + (*FulfillStorageClaimResponse)(nil), // 12: provider.FulfillStorageClaimResponse + (*RevokeStorageClaimRequest)(nil), // 13: provider.RevokeStorageClaimRequest + (*RevokeStorageClaimResponse)(nil), // 14: provider.RevokeStorageClaimResponse + (*StorageClaimConfigRequest)(nil), // 15: provider.StorageClaimConfigRequest + (*StorageClaimConfigResponse)(nil), // 16: provider.StorageClaimConfigResponse + (*ReportStatusRequest)(nil), // 17: provider.ReportStatusRequest + (*ReportStatusResponse)(nil), // 18: provider.ReportStatusResponse + (*PeerStorageClusterRequest)(nil), // 19: provider.PeerStorageClusterRequest + (*PeerStorageClusterResponse)(nil), // 20: provider.PeerStorageClusterResponse + (*RequestMaintenanceModeRequest)(nil), // 21: provider.RequestMaintenanceModeRequest + (*RequestMaintenanceModeResponse)(nil), // 22: provider.RequestMaintenanceModeResponse + nil, // 23: provider.ExternalResource.LabelsEntry + nil, // 24: provider.ExternalResource.AnnotationsEntry } var file_provider_proto_depIdxs = []int32{ - 20, // 0: provider.ExternalResource.Labels:type_name -> provider.ExternalResource.LabelsEntry - 21, // 1: provider.ExternalResource.Annotations:type_name -> provider.ExternalResource.AnnotationsEntry + 23, // 0: provider.ExternalResource.Labels:type_name -> provider.ExternalResource.LabelsEntry + 24, // 1: provider.ExternalResource.Annotations:type_name -> provider.ExternalResource.AnnotationsEntry 4, // 2: provider.StorageConfigResponse.externalResource:type_name -> provider.ExternalResource - 0, // 3: provider.FulfillStorageClaimRequest.storageType:type_name -> provider.FulfillStorageClaimRequest.StorageType - 4, // 4: provider.StorageClaimConfigResponse.externalResource:type_name -> provider.ExternalResource - 1, // 5: provider.OCSProvider.OnboardConsumer:input_type -> provider.OnboardConsumerRequest - 3, // 6: provider.OCSProvider.GetStorageConfig:input_type -> provider.StorageConfigRequest - 6, // 7: provider.OCSProvider.OffboardConsumer:input_type -> provider.OffboardConsumerRequest - 8, // 8: provider.OCSProvider.AcknowledgeOnboarding:input_type -> provider.AcknowledgeOnboardingRequest - 10, // 9: provider.OCSProvider.FulfillStorageClaim:input_type -> provider.FulfillStorageClaimRequest - 12, // 10: provider.OCSProvider.RevokeStorageClaim:input_type -> provider.RevokeStorageClaimRequest - 14, // 11: provider.OCSProvider.GetStorageClaimConfig:input_type -> provider.StorageClaimConfigRequest - 16, // 12: provider.OCSProvider.ReportStatus:input_type -> provider.ReportStatusRequest - 18, // 13: provider.OCSProvider.PeerStorageCluster:input_type -> provider.PeerStorageClusterRequest - 2, // 14: provider.OCSProvider.OnboardConsumer:output_type -> provider.OnboardConsumerResponse - 5, // 15: provider.OCSProvider.GetStorageConfig:output_type -> provider.StorageConfigResponse - 7, // 16: provider.OCSProvider.OffboardConsumer:output_type -> provider.OffboardConsumerResponse - 9, // 17: provider.OCSProvider.AcknowledgeOnboarding:output_type -> provider.AcknowledgeOnboardingResponse - 11, // 18: provider.OCSProvider.FulfillStorageClaim:output_type -> provider.FulfillStorageClaimResponse - 13, // 19: provider.OCSProvider.RevokeStorageClaim:output_type -> provider.RevokeStorageClaimResponse - 15, // 20: provider.OCSProvider.GetStorageClaimConfig:output_type -> provider.StorageClaimConfigResponse - 17, // 21: provider.OCSProvider.ReportStatus:output_type -> provider.ReportStatusResponse - 19, // 22: provider.OCSProvider.PeerStorageCluster:output_type -> provider.PeerStorageClusterResponse - 14, // [14:23] is the sub-list for method output_type - 5, // [5:14] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 5, // 3: provider.StorageConfigResponse.systemAttributes:type_name -> provider.SystemAttributes + 0, // 4: provider.FulfillStorageClaimRequest.storageType:type_name -> provider.FulfillStorageClaimRequest.StorageType + 4, // 5: provider.StorageClaimConfigResponse.externalResource:type_name -> provider.ExternalResource + 1, // 6: provider.OCSProvider.OnboardConsumer:input_type -> provider.OnboardConsumerRequest + 3, // 7: provider.OCSProvider.GetStorageConfig:input_type -> provider.StorageConfigRequest + 7, // 8: provider.OCSProvider.OffboardConsumer:input_type -> provider.OffboardConsumerRequest + 9, // 9: provider.OCSProvider.AcknowledgeOnboarding:input_type -> provider.AcknowledgeOnboardingRequest + 11, // 10: provider.OCSProvider.FulfillStorageClaim:input_type -> provider.FulfillStorageClaimRequest + 13, // 11: provider.OCSProvider.RevokeStorageClaim:input_type -> provider.RevokeStorageClaimRequest + 15, // 12: provider.OCSProvider.GetStorageClaimConfig:input_type -> provider.StorageClaimConfigRequest + 17, // 13: provider.OCSProvider.ReportStatus:input_type -> provider.ReportStatusRequest + 19, // 14: provider.OCSProvider.PeerStorageCluster:input_type -> provider.PeerStorageClusterRequest + 21, // 15: provider.OCSProvider.RequestMaintenanceMode:input_type -> provider.RequestMaintenanceModeRequest + 2, // 16: provider.OCSProvider.OnboardConsumer:output_type -> provider.OnboardConsumerResponse + 6, // 17: provider.OCSProvider.GetStorageConfig:output_type -> provider.StorageConfigResponse + 8, // 18: provider.OCSProvider.OffboardConsumer:output_type -> provider.OffboardConsumerResponse + 10, // 19: provider.OCSProvider.AcknowledgeOnboarding:output_type -> provider.AcknowledgeOnboardingResponse + 12, // 20: provider.OCSProvider.FulfillStorageClaim:output_type -> provider.FulfillStorageClaimResponse + 14, // 21: provider.OCSProvider.RevokeStorageClaim:output_type -> provider.RevokeStorageClaimResponse + 16, // 22: provider.OCSProvider.GetStorageClaimConfig:output_type -> provider.StorageClaimConfigResponse + 18, // 23: provider.OCSProvider.ReportStatus:output_type -> provider.ReportStatusResponse + 20, // 24: provider.OCSProvider.PeerStorageCluster:output_type -> provider.PeerStorageClusterResponse + 22, // 25: provider.OCSProvider.RequestMaintenanceMode:output_type -> provider.RequestMaintenanceModeResponse + 16, // [16:26] is the sub-list for method output_type + 6, // [6:16] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_provider_proto_init() } @@ -1485,7 +1665,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageConfigResponse); i { + switch v := v.(*SystemAttributes); i { case 0: return &v.state case 1: @@ -1497,7 +1677,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OffboardConsumerRequest); i { + switch v := v.(*StorageConfigResponse); i { case 0: return &v.state case 1: @@ -1509,7 +1689,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OffboardConsumerResponse); i { + switch v := v.(*OffboardConsumerRequest); i { case 0: return &v.state case 1: @@ -1521,7 +1701,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AcknowledgeOnboardingRequest); i { + switch v := v.(*OffboardConsumerResponse); i { case 0: return &v.state case 1: @@ -1533,7 +1713,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AcknowledgeOnboardingResponse); i { + switch v := v.(*AcknowledgeOnboardingRequest); i { case 0: return &v.state case 1: @@ -1545,7 +1725,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FulfillStorageClaimRequest); i { + switch v := v.(*AcknowledgeOnboardingResponse); i { case 0: return &v.state case 1: @@ -1557,7 +1737,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FulfillStorageClaimResponse); i { + switch v := v.(*FulfillStorageClaimRequest); i { case 0: return &v.state case 1: @@ -1569,7 +1749,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeStorageClaimRequest); i { + switch v := v.(*FulfillStorageClaimResponse); i { case 0: return &v.state case 1: @@ -1581,7 +1761,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeStorageClaimResponse); i { + switch v := v.(*RevokeStorageClaimRequest); i { case 0: return &v.state case 1: @@ -1593,7 +1773,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageClaimConfigRequest); i { + switch v := v.(*RevokeStorageClaimResponse); i { case 0: return &v.state case 1: @@ -1605,7 +1785,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageClaimConfigResponse); i { + switch v := v.(*StorageClaimConfigRequest); i { case 0: return &v.state case 1: @@ -1617,7 +1797,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStatusRequest); i { + switch v := v.(*StorageClaimConfigResponse); i { case 0: return &v.state case 1: @@ -1629,7 +1809,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStatusResponse); i { + switch v := v.(*ReportStatusRequest); i { case 0: return &v.state case 1: @@ -1641,7 +1821,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PeerStorageClusterRequest); i { + switch v := v.(*ReportStatusResponse); i { case 0: return &v.state case 1: @@ -1653,6 +1833,18 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PeerStorageClusterRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_provider_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PeerStorageClusterResponse); i { case 0: return &v.state @@ -1664,6 +1856,30 @@ func file_provider_proto_init() { return nil } } + file_provider_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestMaintenanceModeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_provider_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestMaintenanceModeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1671,7 +1887,7 @@ func file_provider_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_provider_proto_rawDesc, NumEnums: 1, - NumMessages: 21, + NumMessages: 24, NumExtensions: 0, NumServices: 1, }, diff --git a/services/provider/api/provider_grpc.pb.go b/services/provider/api/provider_grpc.pb.go index 6a7c65969a..969a638a57 100644 --- a/services/provider/api/provider_grpc.pb.go +++ b/services/provider/api/provider_grpc.pb.go @@ -39,6 +39,7 @@ type OCSProviderClient interface { ReportStatus(ctx context.Context, in *ReportStatusRequest, opts ...grpc.CallOption) (*ReportStatusResponse, error) // PeerStorageCluster RPC call to Peer the local Storage Cluster to the remote PeerStorageCluster(ctx context.Context, in *PeerStorageClusterRequest, opts ...grpc.CallOption) (*PeerStorageClusterResponse, error) + RequestMaintenanceMode(ctx context.Context, in *RequestMaintenanceModeRequest, opts ...grpc.CallOption) (*RequestMaintenanceModeResponse, error) } type oCSProviderClient struct { @@ -130,6 +131,15 @@ func (c *oCSProviderClient) PeerStorageCluster(ctx context.Context, in *PeerStor return out, nil } +func (c *oCSProviderClient) RequestMaintenanceMode(ctx context.Context, in *RequestMaintenanceModeRequest, opts ...grpc.CallOption) (*RequestMaintenanceModeResponse, error) { + out := new(RequestMaintenanceModeResponse) + err := c.cc.Invoke(ctx, "/provider.OCSProvider/RequestMaintenanceMode", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // OCSProviderServer is the server API for OCSProvider service. // All implementations must embed UnimplementedOCSProviderServer // for forward compatibility @@ -155,6 +165,7 @@ type OCSProviderServer interface { ReportStatus(context.Context, *ReportStatusRequest) (*ReportStatusResponse, error) // PeerStorageCluster RPC call to Peer the local Storage Cluster to the remote PeerStorageCluster(context.Context, *PeerStorageClusterRequest) (*PeerStorageClusterResponse, error) + RequestMaintenanceMode(context.Context, *RequestMaintenanceModeRequest) (*RequestMaintenanceModeResponse, error) mustEmbedUnimplementedOCSProviderServer() } @@ -189,6 +200,9 @@ func (UnimplementedOCSProviderServer) ReportStatus(context.Context, *ReportStatu func (UnimplementedOCSProviderServer) PeerStorageCluster(context.Context, *PeerStorageClusterRequest) (*PeerStorageClusterResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PeerStorageCluster not implemented") } +func (UnimplementedOCSProviderServer) RequestMaintenanceMode(context.Context, *RequestMaintenanceModeRequest) (*RequestMaintenanceModeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RequestMaintenanceMode not implemented") +} func (UnimplementedOCSProviderServer) mustEmbedUnimplementedOCSProviderServer() {} // UnsafeOCSProviderServer may be embedded to opt out of forward compatibility for this service. @@ -364,6 +378,24 @@ func _OCSProvider_PeerStorageCluster_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _OCSProvider_RequestMaintenanceMode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RequestMaintenanceModeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OCSProviderServer).RequestMaintenanceMode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/provider.OCSProvider/RequestMaintenanceMode", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OCSProviderServer).RequestMaintenanceMode(ctx, req.(*RequestMaintenanceModeRequest)) + } + return interceptor(ctx, in, info, handler) +} + // OCSProvider_ServiceDesc is the grpc.ServiceDesc for OCSProvider service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -407,6 +439,10 @@ var OCSProvider_ServiceDesc = grpc.ServiceDesc{ MethodName: "PeerStorageCluster", Handler: _OCSProvider_PeerStorageCluster_Handler, }, + { + MethodName: "RequestMaintenanceMode", + Handler: _OCSProvider_RequestMaintenanceMode_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "provider.proto", diff --git a/services/provider/proto/provider.proto b/services/provider/proto/provider.proto index 464d1b176e..695b24f22f 100644 --- a/services/provider/proto/provider.proto +++ b/services/provider/proto/provider.proto @@ -43,6 +43,9 @@ service OCSProvider { rpc PeerStorageCluster(PeerStorageClusterRequest) returns (PeerStorageClusterResponse) {} + rpc RequestMaintenanceMode(RequestMaintenanceModeRequest) + returns (RequestMaintenanceModeResponse) {} + } // OnboardConsumerRequest holds the required information to validate the consumer and create StorageConsumer @@ -84,12 +87,18 @@ message ExternalResource { map Annotations = 5; } +message SystemAttributes { + bool SystemInMaintenanceMode = 1; +} + // StorageConfigResponse holds the response for the GetStorageConfig API request message StorageConfigResponse{ // ExternalResource holds the configuration data of external storage cluster repeated ExternalResource externalResource = 1; // Contains hash of desired config string desiredConfigHash = 2; + + SystemAttributes systemAttributes = 3; } @@ -187,7 +196,6 @@ message ReportStatusResponse{ string desiredClientOperatorChannel = 1; // Contains hash of desired config string desiredConfigHash = 2; - } // PeerStorageClusterRequest holds the required information to Peer to remote StorageCluster @@ -200,3 +208,12 @@ message PeerStorageClusterRequest{ // PeerStorageClusterResponse holds the response for OnboardStorageClusterPeer API request message PeerStorageClusterResponse{} + +message RequestMaintenanceModeRequest{ + // K8s UID (UUID) of the consumer cluster. + string storageConsumerUUID = 1; + + bool enable = 2; +} + +message RequestMaintenanceModeResponse{} diff --git a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider.pb.go b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider.pb.go index 261e53a26a..4f718d11fe 100644 --- a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider.pb.go +++ b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider.pb.go @@ -65,7 +65,7 @@ func (x FulfillStorageClaimRequest_StorageType) Number() protoreflect.EnumNumber // Deprecated: Use FulfillStorageClaimRequest_StorageType.Descriptor instead. func (FulfillStorageClaimRequest_StorageType) EnumDescriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{9, 0} + return file_provider_proto_rawDescGZIP(), []int{10, 0} } // OnboardConsumerRequest holds the required information to validate the consumer and create StorageConsumer @@ -319,6 +319,53 @@ func (x *ExternalResource) GetAnnotations() map[string]string { return nil } +type SystemAttributes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SystemInMaintenanceMode bool `protobuf:"varint,1,opt,name=SystemInMaintenanceMode,proto3" json:"SystemInMaintenanceMode,omitempty"` +} + +func (x *SystemAttributes) Reset() { + *x = SystemAttributes{} + if protoimpl.UnsafeEnabled { + mi := &file_provider_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SystemAttributes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SystemAttributes) ProtoMessage() {} + +func (x *SystemAttributes) ProtoReflect() protoreflect.Message { + mi := &file_provider_proto_msgTypes[4] + 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 SystemAttributes.ProtoReflect.Descriptor instead. +func (*SystemAttributes) Descriptor() ([]byte, []int) { + return file_provider_proto_rawDescGZIP(), []int{4} +} + +func (x *SystemAttributes) GetSystemInMaintenanceMode() bool { + if x != nil { + return x.SystemInMaintenanceMode + } + return false +} + // StorageConfigResponse holds the response for the GetStorageConfig API request type StorageConfigResponse struct { state protoimpl.MessageState @@ -328,13 +375,14 @@ type StorageConfigResponse struct { // ExternalResource holds the configuration data of external storage cluster ExternalResource []*ExternalResource `protobuf:"bytes,1,rep,name=externalResource,proto3" json:"externalResource,omitempty"` // Contains hash of desired config - DesiredConfigHash string `protobuf:"bytes,2,opt,name=desiredConfigHash,proto3" json:"desiredConfigHash,omitempty"` + DesiredConfigHash string `protobuf:"bytes,2,opt,name=desiredConfigHash,proto3" json:"desiredConfigHash,omitempty"` + SystemAttributes *SystemAttributes `protobuf:"bytes,3,opt,name=systemAttributes,proto3" json:"systemAttributes,omitempty"` } func (x *StorageConfigResponse) Reset() { *x = StorageConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[4] + mi := &file_provider_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -347,7 +395,7 @@ func (x *StorageConfigResponse) String() string { func (*StorageConfigResponse) ProtoMessage() {} func (x *StorageConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[4] + mi := &file_provider_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -360,7 +408,7 @@ func (x *StorageConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageConfigResponse.ProtoReflect.Descriptor instead. func (*StorageConfigResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{4} + return file_provider_proto_rawDescGZIP(), []int{5} } func (x *StorageConfigResponse) GetExternalResource() []*ExternalResource { @@ -377,6 +425,13 @@ func (x *StorageConfigResponse) GetDesiredConfigHash() string { return "" } +func (x *StorageConfigResponse) GetSystemAttributes() *SystemAttributes { + if x != nil { + return x.SystemAttributes + } + return nil +} + // OffboardConsumerRequest holds the required information to delete the StorageConsumer CR on the storage provider cluster. type OffboardConsumerRequest struct { state protoimpl.MessageState @@ -390,7 +445,7 @@ type OffboardConsumerRequest struct { func (x *OffboardConsumerRequest) Reset() { *x = OffboardConsumerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[5] + mi := &file_provider_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -403,7 +458,7 @@ func (x *OffboardConsumerRequest) String() string { func (*OffboardConsumerRequest) ProtoMessage() {} func (x *OffboardConsumerRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[5] + mi := &file_provider_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -416,7 +471,7 @@ func (x *OffboardConsumerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OffboardConsumerRequest.ProtoReflect.Descriptor instead. func (*OffboardConsumerRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{5} + return file_provider_proto_rawDescGZIP(), []int{6} } func (x *OffboardConsumerRequest) GetStorageConsumerUUID() string { @@ -436,7 +491,7 @@ type OffboardConsumerResponse struct { func (x *OffboardConsumerResponse) Reset() { *x = OffboardConsumerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[6] + mi := &file_provider_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -449,7 +504,7 @@ func (x *OffboardConsumerResponse) String() string { func (*OffboardConsumerResponse) ProtoMessage() {} func (x *OffboardConsumerResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[6] + mi := &file_provider_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -462,7 +517,7 @@ func (x *OffboardConsumerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OffboardConsumerResponse.ProtoReflect.Descriptor instead. func (*OffboardConsumerResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{6} + return file_provider_proto_rawDescGZIP(), []int{7} } // AcknowledgeOnboardingRequest holds the information required to acknowledge the onboarding @@ -478,7 +533,7 @@ type AcknowledgeOnboardingRequest struct { func (x *AcknowledgeOnboardingRequest) Reset() { *x = AcknowledgeOnboardingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[7] + mi := &file_provider_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -491,7 +546,7 @@ func (x *AcknowledgeOnboardingRequest) String() string { func (*AcknowledgeOnboardingRequest) ProtoMessage() {} func (x *AcknowledgeOnboardingRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[7] + mi := &file_provider_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -504,7 +559,7 @@ func (x *AcknowledgeOnboardingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeOnboardingRequest.ProtoReflect.Descriptor instead. func (*AcknowledgeOnboardingRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{7} + return file_provider_proto_rawDescGZIP(), []int{8} } func (x *AcknowledgeOnboardingRequest) GetStorageConsumerUUID() string { @@ -524,7 +579,7 @@ type AcknowledgeOnboardingResponse struct { func (x *AcknowledgeOnboardingResponse) Reset() { *x = AcknowledgeOnboardingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[8] + mi := &file_provider_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -537,7 +592,7 @@ func (x *AcknowledgeOnboardingResponse) String() string { func (*AcknowledgeOnboardingResponse) ProtoMessage() {} func (x *AcknowledgeOnboardingResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[8] + mi := &file_provider_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -550,7 +605,7 @@ func (x *AcknowledgeOnboardingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AcknowledgeOnboardingResponse.ProtoReflect.Descriptor instead. func (*AcknowledgeOnboardingResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{8} + return file_provider_proto_rawDescGZIP(), []int{9} } // FulfillStorageClaimRequest holds the information required to @@ -574,7 +629,7 @@ type FulfillStorageClaimRequest struct { func (x *FulfillStorageClaimRequest) Reset() { *x = FulfillStorageClaimRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[9] + mi := &file_provider_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -587,7 +642,7 @@ func (x *FulfillStorageClaimRequest) String() string { func (*FulfillStorageClaimRequest) ProtoMessage() {} func (x *FulfillStorageClaimRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[9] + mi := &file_provider_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -600,7 +655,7 @@ func (x *FulfillStorageClaimRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FulfillStorageClaimRequest.ProtoReflect.Descriptor instead. func (*FulfillStorageClaimRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{9} + return file_provider_proto_rawDescGZIP(), []int{10} } func (x *FulfillStorageClaimRequest) GetStorageClaimName() string { @@ -648,7 +703,7 @@ type FulfillStorageClaimResponse struct { func (x *FulfillStorageClaimResponse) Reset() { *x = FulfillStorageClaimResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[10] + mi := &file_provider_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -661,7 +716,7 @@ func (x *FulfillStorageClaimResponse) String() string { func (*FulfillStorageClaimResponse) ProtoMessage() {} func (x *FulfillStorageClaimResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[10] + mi := &file_provider_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -674,7 +729,7 @@ func (x *FulfillStorageClaimResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FulfillStorageClaimResponse.ProtoReflect.Descriptor instead. func (*FulfillStorageClaimResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{10} + return file_provider_proto_rawDescGZIP(), []int{11} } // RevokeStorageClaimRequest holds the information required to delete the @@ -693,7 +748,7 @@ type RevokeStorageClaimRequest struct { func (x *RevokeStorageClaimRequest) Reset() { *x = RevokeStorageClaimRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[11] + mi := &file_provider_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -706,7 +761,7 @@ func (x *RevokeStorageClaimRequest) String() string { func (*RevokeStorageClaimRequest) ProtoMessage() {} func (x *RevokeStorageClaimRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[11] + mi := &file_provider_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -719,7 +774,7 @@ func (x *RevokeStorageClaimRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeStorageClaimRequest.ProtoReflect.Descriptor instead. func (*RevokeStorageClaimRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{11} + return file_provider_proto_rawDescGZIP(), []int{12} } func (x *RevokeStorageClaimRequest) GetStorageClaimName() string { @@ -746,7 +801,7 @@ type RevokeStorageClaimResponse struct { func (x *RevokeStorageClaimResponse) Reset() { *x = RevokeStorageClaimResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[12] + mi := &file_provider_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -759,7 +814,7 @@ func (x *RevokeStorageClaimResponse) String() string { func (*RevokeStorageClaimResponse) ProtoMessage() {} func (x *RevokeStorageClaimResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[12] + mi := &file_provider_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -772,7 +827,7 @@ func (x *RevokeStorageClaimResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeStorageClaimResponse.ProtoReflect.Descriptor instead. func (*RevokeStorageClaimResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{12} + return file_provider_proto_rawDescGZIP(), []int{13} } // StorageClaimConfigRequest holds the information required to generate the @@ -791,7 +846,7 @@ type StorageClaimConfigRequest struct { func (x *StorageClaimConfigRequest) Reset() { *x = StorageClaimConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[13] + mi := &file_provider_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -804,7 +859,7 @@ func (x *StorageClaimConfigRequest) String() string { func (*StorageClaimConfigRequest) ProtoMessage() {} func (x *StorageClaimConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[13] + mi := &file_provider_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -817,7 +872,7 @@ func (x *StorageClaimConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageClaimConfigRequest.ProtoReflect.Descriptor instead. func (*StorageClaimConfigRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{13} + return file_provider_proto_rawDescGZIP(), []int{14} } func (x *StorageClaimConfigRequest) GetStorageClaimName() string { @@ -847,7 +902,7 @@ type StorageClaimConfigResponse struct { func (x *StorageClaimConfigResponse) Reset() { *x = StorageClaimConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[14] + mi := &file_provider_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -860,7 +915,7 @@ func (x *StorageClaimConfigResponse) String() string { func (*StorageClaimConfigResponse) ProtoMessage() {} func (x *StorageClaimConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[14] + mi := &file_provider_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -873,7 +928,7 @@ func (x *StorageClaimConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StorageClaimConfigResponse.ProtoReflect.Descriptor instead. func (*StorageClaimConfigResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{14} + return file_provider_proto_rawDescGZIP(), []int{15} } func (x *StorageClaimConfigResponse) GetExternalResource() []*ExternalResource { @@ -906,7 +961,7 @@ type ReportStatusRequest struct { func (x *ReportStatusRequest) Reset() { *x = ReportStatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[15] + mi := &file_provider_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -919,7 +974,7 @@ func (x *ReportStatusRequest) String() string { func (*ReportStatusRequest) ProtoMessage() {} func (x *ReportStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[15] + mi := &file_provider_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -932,7 +987,7 @@ func (x *ReportStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportStatusRequest.ProtoReflect.Descriptor instead. func (*ReportStatusRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{15} + return file_provider_proto_rawDescGZIP(), []int{16} } func (x *ReportStatusRequest) GetStorageConsumerUUID() string { @@ -1004,7 +1059,7 @@ type ReportStatusResponse struct { func (x *ReportStatusResponse) Reset() { *x = ReportStatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[16] + mi := &file_provider_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1017,7 +1072,7 @@ func (x *ReportStatusResponse) String() string { func (*ReportStatusResponse) ProtoMessage() {} func (x *ReportStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[16] + mi := &file_provider_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1030,7 +1085,7 @@ func (x *ReportStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportStatusResponse.ProtoReflect.Descriptor instead. func (*ReportStatusResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{16} + return file_provider_proto_rawDescGZIP(), []int{17} } func (x *ReportStatusResponse) GetDesiredClientOperatorChannel() string { @@ -1062,7 +1117,7 @@ type PeerStorageClusterRequest struct { func (x *PeerStorageClusterRequest) Reset() { *x = PeerStorageClusterRequest{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[17] + mi := &file_provider_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1075,7 +1130,7 @@ func (x *PeerStorageClusterRequest) String() string { func (*PeerStorageClusterRequest) ProtoMessage() {} func (x *PeerStorageClusterRequest) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[17] + mi := &file_provider_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1088,7 +1143,7 @@ func (x *PeerStorageClusterRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerStorageClusterRequest.ProtoReflect.Descriptor instead. func (*PeerStorageClusterRequest) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{17} + return file_provider_proto_rawDescGZIP(), []int{18} } func (x *PeerStorageClusterRequest) GetOnboardingToken() string { @@ -1115,7 +1170,7 @@ type PeerStorageClusterResponse struct { func (x *PeerStorageClusterResponse) Reset() { *x = PeerStorageClusterResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_proto_msgTypes[18] + mi := &file_provider_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1128,7 +1183,7 @@ func (x *PeerStorageClusterResponse) String() string { func (*PeerStorageClusterResponse) ProtoMessage() {} func (x *PeerStorageClusterResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_proto_msgTypes[18] + mi := &file_provider_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1141,7 +1196,101 @@ func (x *PeerStorageClusterResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerStorageClusterResponse.ProtoReflect.Descriptor instead. func (*PeerStorageClusterResponse) Descriptor() ([]byte, []int) { - return file_provider_proto_rawDescGZIP(), []int{18} + return file_provider_proto_rawDescGZIP(), []int{19} +} + +type RequestMaintenanceModeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // K8s UID (UUID) of the consumer cluster. + StorageConsumerUUID string `protobuf:"bytes,1,opt,name=storageConsumerUUID,proto3" json:"storageConsumerUUID,omitempty"` + Enable bool `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"` +} + +func (x *RequestMaintenanceModeRequest) Reset() { + *x = RequestMaintenanceModeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_provider_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestMaintenanceModeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestMaintenanceModeRequest) ProtoMessage() {} + +func (x *RequestMaintenanceModeRequest) ProtoReflect() protoreflect.Message { + mi := &file_provider_proto_msgTypes[20] + 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 RequestMaintenanceModeRequest.ProtoReflect.Descriptor instead. +func (*RequestMaintenanceModeRequest) Descriptor() ([]byte, []int) { + return file_provider_proto_rawDescGZIP(), []int{20} +} + +func (x *RequestMaintenanceModeRequest) GetStorageConsumerUUID() string { + if x != nil { + return x.StorageConsumerUUID + } + return "" +} + +func (x *RequestMaintenanceModeRequest) GetEnable() bool { + if x != nil { + return x.Enable + } + return false +} + +type RequestMaintenanceModeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RequestMaintenanceModeResponse) Reset() { + *x = RequestMaintenanceModeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_provider_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestMaintenanceModeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestMaintenanceModeResponse) ProtoMessage() {} + +func (x *RequestMaintenanceModeResponse) ProtoReflect() protoreflect.Message { + mi := &file_provider_proto_msgTypes[21] + 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 RequestMaintenanceModeResponse.ProtoReflect.Descriptor instead. +func (*RequestMaintenanceModeResponse) Descriptor() ([]byte, []int) { + return file_provider_proto_rawDescGZIP(), []int{21} } var File_provider_proto protoreflect.FileDescriptor @@ -1192,173 +1341,198 @@ var file_provider_proto_rawDesc = []byte{ 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, - 0x8d, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, - 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x22, - 0x4b, 0x0a, 0x17, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, - 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x1a, 0x0a, 0x18, - 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x0a, 0x1c, 0x41, 0x63, 0x6b, 0x6e, - 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x1f, 0x0a, 0x1d, 0x41, 0x63, - 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcc, 0x02, 0x0a, 0x1a, - 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, - 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x10, 0x65, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x52, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x22, 0x28, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x00, 0x12, - 0x09, 0x0a, 0x05, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, 0x22, 0x1d, 0x0a, 0x1b, 0x46, 0x75, - 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, - 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x52, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, - 0x55, 0x55, 0x49, 0x44, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x64, 0x0a, - 0x1a, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x22, 0xf3, 0x02, 0x0a, 0x13, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, + 0x4c, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x17, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x4d, + 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x4d, 0x61, + 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xd5, 0x01, + 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x10, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x2c, 0x0a, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, + 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, + 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x52, 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x17, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, + 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x34, 0x0a, - 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x1c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, 0x74, 0x69, - 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, - 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x22, 0x88, 0x01, 0x0a, 0x14, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, - 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, - 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x48, 0x61, 0x73, 0x68, 0x22, 0x73, 0x0a, 0x19, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, 0x22, 0x1c, 0x0a, 0x1a, 0x50, 0x65, 0x65, - 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xea, 0x06, 0x0a, 0x0b, 0x4f, 0x43, 0x53, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0f, 0x4f, 0x6e, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, - 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x4f, 0x66, 0x66, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x21, 0x2e, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x49, 0x44, 0x22, 0x1a, 0x0a, 0x18, 0x4f, 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, + 0x0a, 0x1c, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, + 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, + 0x22, 0x1f, 0x0a, 0x1d, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, + 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xcc, 0x02, 0x0a, 0x1a, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, + 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x12, 0x2a, + 0x0a, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x52, 0x0a, 0x0b, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, + 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, + 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x28, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x46, + 0x49, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, + 0x22, 0x1d, 0x0a, 0x1b, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x79, 0x0a, 0x19, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, + 0x55, 0x49, 0x44, 0x22, 0x64, 0x0a, 0x1a, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x46, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xf3, 0x02, 0x0a, 0x13, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x30, 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, + 0x55, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, + 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x42, 0x0a, 0x1c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x55, + 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x1c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x51, 0x75, + 0x6f, 0x74, 0x61, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, + 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x22, + 0x88, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x1c, 0x64, 0x65, 0x73, 0x69, + 0x72, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, + 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x11, + 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x22, 0x73, 0x0a, 0x19, 0x50, 0x65, + 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x55, 0x49, 0x44, 0x22, + 0x1c, 0x0a, 0x1a, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, + 0x1d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, + 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x72, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x55, 0x55, 0x49, 0x44, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xd9, 0x07, 0x0a, 0x0b, 0x4f, + 0x43, 0x53, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0f, 0x4f, 0x6e, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x20, 0x2e, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, 0x66, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x15, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, - 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x26, - 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, - 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x64, 0x0a, 0x13, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, - 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x52, 0x65, 0x76, 0x6f, 0x6b, - 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x23, 0x2e, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, + 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x4f, + 0x66, 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, + 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, 0x66, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4f, 0x66, + 0x66, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x15, 0x41, 0x63, 0x6b, 0x6e, + 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x6b, + 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, + 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x24, 0x2e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x75, 0x6c, + 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4f, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x61, 0x0a, 0x12, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x76, 0x6f, + 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, + 0x15, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x12, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, + 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x2f, 0x3b, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1374,60 +1548,66 @@ func file_provider_proto_rawDescGZIP() []byte { } var file_provider_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_provider_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_provider_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_provider_proto_goTypes = []interface{}{ (FulfillStorageClaimRequest_StorageType)(0), // 0: provider.FulfillStorageClaimRequest.StorageType (*OnboardConsumerRequest)(nil), // 1: provider.OnboardConsumerRequest (*OnboardConsumerResponse)(nil), // 2: provider.OnboardConsumerResponse (*StorageConfigRequest)(nil), // 3: provider.StorageConfigRequest (*ExternalResource)(nil), // 4: provider.ExternalResource - (*StorageConfigResponse)(nil), // 5: provider.StorageConfigResponse - (*OffboardConsumerRequest)(nil), // 6: provider.OffboardConsumerRequest - (*OffboardConsumerResponse)(nil), // 7: provider.OffboardConsumerResponse - (*AcknowledgeOnboardingRequest)(nil), // 8: provider.AcknowledgeOnboardingRequest - (*AcknowledgeOnboardingResponse)(nil), // 9: provider.AcknowledgeOnboardingResponse - (*FulfillStorageClaimRequest)(nil), // 10: provider.FulfillStorageClaimRequest - (*FulfillStorageClaimResponse)(nil), // 11: provider.FulfillStorageClaimResponse - (*RevokeStorageClaimRequest)(nil), // 12: provider.RevokeStorageClaimRequest - (*RevokeStorageClaimResponse)(nil), // 13: provider.RevokeStorageClaimResponse - (*StorageClaimConfigRequest)(nil), // 14: provider.StorageClaimConfigRequest - (*StorageClaimConfigResponse)(nil), // 15: provider.StorageClaimConfigResponse - (*ReportStatusRequest)(nil), // 16: provider.ReportStatusRequest - (*ReportStatusResponse)(nil), // 17: provider.ReportStatusResponse - (*PeerStorageClusterRequest)(nil), // 18: provider.PeerStorageClusterRequest - (*PeerStorageClusterResponse)(nil), // 19: provider.PeerStorageClusterResponse - nil, // 20: provider.ExternalResource.LabelsEntry - nil, // 21: provider.ExternalResource.AnnotationsEntry + (*SystemAttributes)(nil), // 5: provider.SystemAttributes + (*StorageConfigResponse)(nil), // 6: provider.StorageConfigResponse + (*OffboardConsumerRequest)(nil), // 7: provider.OffboardConsumerRequest + (*OffboardConsumerResponse)(nil), // 8: provider.OffboardConsumerResponse + (*AcknowledgeOnboardingRequest)(nil), // 9: provider.AcknowledgeOnboardingRequest + (*AcknowledgeOnboardingResponse)(nil), // 10: provider.AcknowledgeOnboardingResponse + (*FulfillStorageClaimRequest)(nil), // 11: provider.FulfillStorageClaimRequest + (*FulfillStorageClaimResponse)(nil), // 12: provider.FulfillStorageClaimResponse + (*RevokeStorageClaimRequest)(nil), // 13: provider.RevokeStorageClaimRequest + (*RevokeStorageClaimResponse)(nil), // 14: provider.RevokeStorageClaimResponse + (*StorageClaimConfigRequest)(nil), // 15: provider.StorageClaimConfigRequest + (*StorageClaimConfigResponse)(nil), // 16: provider.StorageClaimConfigResponse + (*ReportStatusRequest)(nil), // 17: provider.ReportStatusRequest + (*ReportStatusResponse)(nil), // 18: provider.ReportStatusResponse + (*PeerStorageClusterRequest)(nil), // 19: provider.PeerStorageClusterRequest + (*PeerStorageClusterResponse)(nil), // 20: provider.PeerStorageClusterResponse + (*RequestMaintenanceModeRequest)(nil), // 21: provider.RequestMaintenanceModeRequest + (*RequestMaintenanceModeResponse)(nil), // 22: provider.RequestMaintenanceModeResponse + nil, // 23: provider.ExternalResource.LabelsEntry + nil, // 24: provider.ExternalResource.AnnotationsEntry } var file_provider_proto_depIdxs = []int32{ - 20, // 0: provider.ExternalResource.Labels:type_name -> provider.ExternalResource.LabelsEntry - 21, // 1: provider.ExternalResource.Annotations:type_name -> provider.ExternalResource.AnnotationsEntry + 23, // 0: provider.ExternalResource.Labels:type_name -> provider.ExternalResource.LabelsEntry + 24, // 1: provider.ExternalResource.Annotations:type_name -> provider.ExternalResource.AnnotationsEntry 4, // 2: provider.StorageConfigResponse.externalResource:type_name -> provider.ExternalResource - 0, // 3: provider.FulfillStorageClaimRequest.storageType:type_name -> provider.FulfillStorageClaimRequest.StorageType - 4, // 4: provider.StorageClaimConfigResponse.externalResource:type_name -> provider.ExternalResource - 1, // 5: provider.OCSProvider.OnboardConsumer:input_type -> provider.OnboardConsumerRequest - 3, // 6: provider.OCSProvider.GetStorageConfig:input_type -> provider.StorageConfigRequest - 6, // 7: provider.OCSProvider.OffboardConsumer:input_type -> provider.OffboardConsumerRequest - 8, // 8: provider.OCSProvider.AcknowledgeOnboarding:input_type -> provider.AcknowledgeOnboardingRequest - 10, // 9: provider.OCSProvider.FulfillStorageClaim:input_type -> provider.FulfillStorageClaimRequest - 12, // 10: provider.OCSProvider.RevokeStorageClaim:input_type -> provider.RevokeStorageClaimRequest - 14, // 11: provider.OCSProvider.GetStorageClaimConfig:input_type -> provider.StorageClaimConfigRequest - 16, // 12: provider.OCSProvider.ReportStatus:input_type -> provider.ReportStatusRequest - 18, // 13: provider.OCSProvider.PeerStorageCluster:input_type -> provider.PeerStorageClusterRequest - 2, // 14: provider.OCSProvider.OnboardConsumer:output_type -> provider.OnboardConsumerResponse - 5, // 15: provider.OCSProvider.GetStorageConfig:output_type -> provider.StorageConfigResponse - 7, // 16: provider.OCSProvider.OffboardConsumer:output_type -> provider.OffboardConsumerResponse - 9, // 17: provider.OCSProvider.AcknowledgeOnboarding:output_type -> provider.AcknowledgeOnboardingResponse - 11, // 18: provider.OCSProvider.FulfillStorageClaim:output_type -> provider.FulfillStorageClaimResponse - 13, // 19: provider.OCSProvider.RevokeStorageClaim:output_type -> provider.RevokeStorageClaimResponse - 15, // 20: provider.OCSProvider.GetStorageClaimConfig:output_type -> provider.StorageClaimConfigResponse - 17, // 21: provider.OCSProvider.ReportStatus:output_type -> provider.ReportStatusResponse - 19, // 22: provider.OCSProvider.PeerStorageCluster:output_type -> provider.PeerStorageClusterResponse - 14, // [14:23] is the sub-list for method output_type - 5, // [5:14] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 5, // 3: provider.StorageConfigResponse.systemAttributes:type_name -> provider.SystemAttributes + 0, // 4: provider.FulfillStorageClaimRequest.storageType:type_name -> provider.FulfillStorageClaimRequest.StorageType + 4, // 5: provider.StorageClaimConfigResponse.externalResource:type_name -> provider.ExternalResource + 1, // 6: provider.OCSProvider.OnboardConsumer:input_type -> provider.OnboardConsumerRequest + 3, // 7: provider.OCSProvider.GetStorageConfig:input_type -> provider.StorageConfigRequest + 7, // 8: provider.OCSProvider.OffboardConsumer:input_type -> provider.OffboardConsumerRequest + 9, // 9: provider.OCSProvider.AcknowledgeOnboarding:input_type -> provider.AcknowledgeOnboardingRequest + 11, // 10: provider.OCSProvider.FulfillStorageClaim:input_type -> provider.FulfillStorageClaimRequest + 13, // 11: provider.OCSProvider.RevokeStorageClaim:input_type -> provider.RevokeStorageClaimRequest + 15, // 12: provider.OCSProvider.GetStorageClaimConfig:input_type -> provider.StorageClaimConfigRequest + 17, // 13: provider.OCSProvider.ReportStatus:input_type -> provider.ReportStatusRequest + 19, // 14: provider.OCSProvider.PeerStorageCluster:input_type -> provider.PeerStorageClusterRequest + 21, // 15: provider.OCSProvider.RequestMaintenanceMode:input_type -> provider.RequestMaintenanceModeRequest + 2, // 16: provider.OCSProvider.OnboardConsumer:output_type -> provider.OnboardConsumerResponse + 6, // 17: provider.OCSProvider.GetStorageConfig:output_type -> provider.StorageConfigResponse + 8, // 18: provider.OCSProvider.OffboardConsumer:output_type -> provider.OffboardConsumerResponse + 10, // 19: provider.OCSProvider.AcknowledgeOnboarding:output_type -> provider.AcknowledgeOnboardingResponse + 12, // 20: provider.OCSProvider.FulfillStorageClaim:output_type -> provider.FulfillStorageClaimResponse + 14, // 21: provider.OCSProvider.RevokeStorageClaim:output_type -> provider.RevokeStorageClaimResponse + 16, // 22: provider.OCSProvider.GetStorageClaimConfig:output_type -> provider.StorageClaimConfigResponse + 18, // 23: provider.OCSProvider.ReportStatus:output_type -> provider.ReportStatusResponse + 20, // 24: provider.OCSProvider.PeerStorageCluster:output_type -> provider.PeerStorageClusterResponse + 22, // 25: provider.OCSProvider.RequestMaintenanceMode:output_type -> provider.RequestMaintenanceModeResponse + 16, // [16:26] is the sub-list for method output_type + 6, // [6:16] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_provider_proto_init() } @@ -1485,7 +1665,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageConfigResponse); i { + switch v := v.(*SystemAttributes); i { case 0: return &v.state case 1: @@ -1497,7 +1677,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OffboardConsumerRequest); i { + switch v := v.(*StorageConfigResponse); i { case 0: return &v.state case 1: @@ -1509,7 +1689,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OffboardConsumerResponse); i { + switch v := v.(*OffboardConsumerRequest); i { case 0: return &v.state case 1: @@ -1521,7 +1701,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AcknowledgeOnboardingRequest); i { + switch v := v.(*OffboardConsumerResponse); i { case 0: return &v.state case 1: @@ -1533,7 +1713,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AcknowledgeOnboardingResponse); i { + switch v := v.(*AcknowledgeOnboardingRequest); i { case 0: return &v.state case 1: @@ -1545,7 +1725,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FulfillStorageClaimRequest); i { + switch v := v.(*AcknowledgeOnboardingResponse); i { case 0: return &v.state case 1: @@ -1557,7 +1737,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FulfillStorageClaimResponse); i { + switch v := v.(*FulfillStorageClaimRequest); i { case 0: return &v.state case 1: @@ -1569,7 +1749,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeStorageClaimRequest); i { + switch v := v.(*FulfillStorageClaimResponse); i { case 0: return &v.state case 1: @@ -1581,7 +1761,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeStorageClaimResponse); i { + switch v := v.(*RevokeStorageClaimRequest); i { case 0: return &v.state case 1: @@ -1593,7 +1773,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageClaimConfigRequest); i { + switch v := v.(*RevokeStorageClaimResponse); i { case 0: return &v.state case 1: @@ -1605,7 +1785,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StorageClaimConfigResponse); i { + switch v := v.(*StorageClaimConfigRequest); i { case 0: return &v.state case 1: @@ -1617,7 +1797,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStatusRequest); i { + switch v := v.(*StorageClaimConfigResponse); i { case 0: return &v.state case 1: @@ -1629,7 +1809,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportStatusResponse); i { + switch v := v.(*ReportStatusRequest); i { case 0: return &v.state case 1: @@ -1641,7 +1821,7 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PeerStorageClusterRequest); i { + switch v := v.(*ReportStatusResponse); i { case 0: return &v.state case 1: @@ -1653,6 +1833,18 @@ func file_provider_proto_init() { } } file_provider_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PeerStorageClusterRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_provider_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PeerStorageClusterResponse); i { case 0: return &v.state @@ -1664,6 +1856,30 @@ func file_provider_proto_init() { return nil } } + file_provider_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestMaintenanceModeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_provider_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestMaintenanceModeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1671,7 +1887,7 @@ func file_provider_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_provider_proto_rawDesc, NumEnums: 1, - NumMessages: 21, + NumMessages: 24, NumExtensions: 0, NumServices: 1, }, diff --git a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider_grpc.pb.go b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider_grpc.pb.go index 6a7c65969a..969a638a57 100644 --- a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider_grpc.pb.go +++ b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/provider_grpc.pb.go @@ -39,6 +39,7 @@ type OCSProviderClient interface { ReportStatus(ctx context.Context, in *ReportStatusRequest, opts ...grpc.CallOption) (*ReportStatusResponse, error) // PeerStorageCluster RPC call to Peer the local Storage Cluster to the remote PeerStorageCluster(ctx context.Context, in *PeerStorageClusterRequest, opts ...grpc.CallOption) (*PeerStorageClusterResponse, error) + RequestMaintenanceMode(ctx context.Context, in *RequestMaintenanceModeRequest, opts ...grpc.CallOption) (*RequestMaintenanceModeResponse, error) } type oCSProviderClient struct { @@ -130,6 +131,15 @@ func (c *oCSProviderClient) PeerStorageCluster(ctx context.Context, in *PeerStor return out, nil } +func (c *oCSProviderClient) RequestMaintenanceMode(ctx context.Context, in *RequestMaintenanceModeRequest, opts ...grpc.CallOption) (*RequestMaintenanceModeResponse, error) { + out := new(RequestMaintenanceModeResponse) + err := c.cc.Invoke(ctx, "/provider.OCSProvider/RequestMaintenanceMode", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // OCSProviderServer is the server API for OCSProvider service. // All implementations must embed UnimplementedOCSProviderServer // for forward compatibility @@ -155,6 +165,7 @@ type OCSProviderServer interface { ReportStatus(context.Context, *ReportStatusRequest) (*ReportStatusResponse, error) // PeerStorageCluster RPC call to Peer the local Storage Cluster to the remote PeerStorageCluster(context.Context, *PeerStorageClusterRequest) (*PeerStorageClusterResponse, error) + RequestMaintenanceMode(context.Context, *RequestMaintenanceModeRequest) (*RequestMaintenanceModeResponse, error) mustEmbedUnimplementedOCSProviderServer() } @@ -189,6 +200,9 @@ func (UnimplementedOCSProviderServer) ReportStatus(context.Context, *ReportStatu func (UnimplementedOCSProviderServer) PeerStorageCluster(context.Context, *PeerStorageClusterRequest) (*PeerStorageClusterResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PeerStorageCluster not implemented") } +func (UnimplementedOCSProviderServer) RequestMaintenanceMode(context.Context, *RequestMaintenanceModeRequest) (*RequestMaintenanceModeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RequestMaintenanceMode not implemented") +} func (UnimplementedOCSProviderServer) mustEmbedUnimplementedOCSProviderServer() {} // UnsafeOCSProviderServer may be embedded to opt out of forward compatibility for this service. @@ -364,6 +378,24 @@ func _OCSProvider_PeerStorageCluster_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _OCSProvider_RequestMaintenanceMode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RequestMaintenanceModeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OCSProviderServer).RequestMaintenanceMode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/provider.OCSProvider/RequestMaintenanceMode", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OCSProviderServer).RequestMaintenanceMode(ctx, req.(*RequestMaintenanceModeRequest)) + } + return interceptor(ctx, in, info, handler) +} + // OCSProvider_ServiceDesc is the grpc.ServiceDesc for OCSProvider service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -407,6 +439,10 @@ var OCSProvider_ServiceDesc = grpc.ServiceDesc{ MethodName: "PeerStorageCluster", Handler: _OCSProvider_PeerStorageCluster_Handler, }, + { + MethodName: "RequestMaintenanceMode", + Handler: _OCSProvider_RequestMaintenanceMode_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "provider.proto", From ab4d9e619b62544794ea383c2a2f04666f4c6f1c Mon Sep 17 00:00:00 2001 From: Rewant Soni Date: Tue, 19 Nov 2024 18:04:40 +0530 Subject: [PATCH 2/3] add client side implementation for maintenance mode Signed-off-by: Rewant Soni --- services/provider/api/client/client.go | 16 ++++++++++++++++ .../services/provider/api/v4/client/client.go | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/services/provider/api/client/client.go b/services/provider/api/client/client.go index 490c97b036..568964922e 100644 --- a/services/provider/api/client/client.go +++ b/services/provider/api/client/client.go @@ -227,3 +227,19 @@ func (cc *OCSProviderClient) PeerStorageCluster(ctx context.Context, onboardingT return cc.Client.PeerStorageCluster(apiCtx, req) } + +func (cc *OCSProviderClient) RequestMaintenanceMode(ctx context.Context, consumerUUID string, enable bool) (*pb.RequestMaintenanceModeResponse, error) { + if cc.Client == nil || cc.clientConn == nil { + return nil, fmt.Errorf("provider client is closed") + } + + req := &pb.RequestMaintenanceModeRequest{ + StorageConsumerUUID: consumerUUID, + Enable: enable, + } + + apiCtx, cancel := context.WithTimeout(ctx, cc.timeout) + defer cancel() + + return cc.Client.RequestMaintenanceMode(apiCtx, req) +} diff --git a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/client/client.go b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/client/client.go index 490c97b036..568964922e 100644 --- a/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/client/client.go +++ b/vendor/github.com/red-hat-storage/ocs-operator/services/provider/api/v4/client/client.go @@ -227,3 +227,19 @@ func (cc *OCSProviderClient) PeerStorageCluster(ctx context.Context, onboardingT return cc.Client.PeerStorageCluster(apiCtx, req) } + +func (cc *OCSProviderClient) RequestMaintenanceMode(ctx context.Context, consumerUUID string, enable bool) (*pb.RequestMaintenanceModeResponse, error) { + if cc.Client == nil || cc.clientConn == nil { + return nil, fmt.Errorf("provider client is closed") + } + + req := &pb.RequestMaintenanceModeRequest{ + StorageConsumerUUID: consumerUUID, + Enable: enable, + } + + apiCtx, cancel := context.WithTimeout(ctx, cc.timeout) + defer cancel() + + return cc.Client.RequestMaintenanceMode(apiCtx, req) +} From fdc4a8fc98105e69db656812fbb5145896a41e9a Mon Sep 17 00:00:00 2001 From: Rewant Soni Date: Tue, 19 Nov 2024 19:28:08 +0530 Subject: [PATCH 3/3] add server side implementation for maintenance mode Signed-off-by: Rewant Soni --- controllers/util/k8sutil.go | 2 + .../ocs-operator/manifests/provider-role.yaml | 1 + .../v4/controllers/util/k8sutil.go | 2 + rbac/provider-role.yaml | 1 + services/provider/server/consumer.go | 42 ++++++++++++ services/provider/server/server.go | 64 ++++++++++++++++--- 6 files changed, 102 insertions(+), 10 deletions(-) diff --git a/controllers/util/k8sutil.go b/controllers/util/k8sutil.go index 1d93c28510..1acf5f649d 100644 --- a/controllers/util/k8sutil.go +++ b/controllers/util/k8sutil.go @@ -54,6 +54,8 @@ const ( ExitCodeThatShouldRestartTheProcess = 42 BlockPoolMirroringTargetIDAnnotation = "ocs.openshift.io/mirroring-target-id" + RequestMaintenanceModeAnnotation = "ocs.openshift.io/request-maintenance-mode" + CephRBDMirrorName = "cephrbdmirror" ) var podNamespace = os.Getenv(PodNamespaceEnvVar) diff --git a/deploy/ocs-operator/manifests/provider-role.yaml b/deploy/ocs-operator/manifests/provider-role.yaml index b8980ab515..7ca3cc976e 100644 --- a/deploy/ocs-operator/manifests/provider-role.yaml +++ b/deploy/ocs-operator/manifests/provider-role.yaml @@ -17,6 +17,7 @@ rules: - cephfilesystemsubvolumegroups - cephblockpoolradosnamespaces - cephblockpools + - cephrbdmirrors verbs: - get - list diff --git a/metrics/vendor/github.com/red-hat-storage/ocs-operator/v4/controllers/util/k8sutil.go b/metrics/vendor/github.com/red-hat-storage/ocs-operator/v4/controllers/util/k8sutil.go index 1d93c28510..1acf5f649d 100644 --- a/metrics/vendor/github.com/red-hat-storage/ocs-operator/v4/controllers/util/k8sutil.go +++ b/metrics/vendor/github.com/red-hat-storage/ocs-operator/v4/controllers/util/k8sutil.go @@ -54,6 +54,8 @@ const ( ExitCodeThatShouldRestartTheProcess = 42 BlockPoolMirroringTargetIDAnnotation = "ocs.openshift.io/mirroring-target-id" + RequestMaintenanceModeAnnotation = "ocs.openshift.io/request-maintenance-mode" + CephRBDMirrorName = "cephrbdmirror" ) var podNamespace = os.Getenv(PodNamespaceEnvVar) diff --git a/rbac/provider-role.yaml b/rbac/provider-role.yaml index b8980ab515..7ca3cc976e 100644 --- a/rbac/provider-role.yaml +++ b/rbac/provider-role.yaml @@ -17,6 +17,7 @@ rules: - cephfilesystemsubvolumegroups - cephblockpoolradosnamespaces - cephblockpools + - cephrbdmirrors verbs: - get - list diff --git a/services/provider/server/consumer.go b/services/provider/server/consumer.go index 37f8b696a9..63423fb620 100644 --- a/services/provider/server/consumer.go +++ b/services/provider/server/consumer.go @@ -8,6 +8,8 @@ import ( ocsv1alpha1 "github.com/red-hat-storage/ocs-operator/api/v4/v1alpha1" ifaces "github.com/red-hat-storage/ocs-operator/services/provider/api/v4/interfaces" + "github.com/red-hat-storage/ocs-operator/v4/controllers/util" + kerrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" @@ -228,3 +230,43 @@ func (c *ocsConsumerManager) UpdateConsumerStatus(ctx context.Context, id string klog.Infof("successfully updated Status for StorageConsumer %v", consumerObj.Name) return nil } + +func (c *ocsConsumerManager) AddAnnotation(ctx context.Context, id string, annotation, value string) error { + consumerObj, err := c.Get(ctx, id) + if err != nil { + return err + } + + if util.AddAnnotation(consumerObj, annotation, value) { + if err = c.client.Update(ctx, consumerObj); err != nil { + return fmt.Errorf( + "failed to add annotation %s to StorageConsumer %v: %v", + annotation, + consumerObj.Name, + err, + ) + } + } + return nil +} + +func (c *ocsConsumerManager) RemoveAnnotation(ctx context.Context, id string, annotation string) error { + consumerObj, err := c.Get(ctx, id) + if err != nil { + return err + } + + _, hasAnnotation := consumerObj.GetAnnotations()[annotation] + if hasAnnotation { + delete(consumerObj.GetAnnotations(), annotation) + if err = c.client.Update(ctx, consumerObj); err != nil { + return fmt.Errorf( + "failed to remove annotation %s from StorageConsumer %v: %v", + annotation, + consumerObj.Name, + err, + ) + } + } + return nil +} diff --git a/services/provider/server/server.go b/services/provider/server/server.go index 39e0b6722a..f222009778 100644 --- a/services/provider/server/server.go +++ b/services/provider/server/server.go @@ -226,17 +226,28 @@ func (s *OCSProviderServer) GetStorageConfig(ctx context.Context, req *pb.Storag return nil, err } + inMaintenanceMode, err := s.isSystemInMaintenanceMode(ctx) + if err != nil { + klog.Error(err) + return nil, status.Errorf(codes.Internal, "Failed to get maintenance mode status.") + } + desiredClientConfigHash := getDesiredClientConfigHash( channelName, consumerObj, isEncryptionInTransitEnabled(storageCluster.Spec.Network), + inMaintenanceMode, ) klog.Infof("successfully returned the config details to the consumer.") return &pb.StorageConfigResponse{ - ExternalResource: conString, - DesiredConfigHash: desiredClientConfigHash, - }, nil + ExternalResource: conString, + DesiredConfigHash: desiredClientConfigHash, + SystemAttributes: &pb.SystemAttributes{ + SystemInMaintenanceMode: inMaintenanceMode, + }, + }, + nil } return nil, status.Errorf(codes.Unavailable, "storage consumer status is not set") @@ -987,10 +998,17 @@ func (s *OCSProviderServer) ReportStatus(ctx context.Context, req *pb.ReportStat return nil, err } + inMaintenanceMode, err := s.isSystemInMaintenanceMode(ctx) + if err != nil { + klog.Error(err) + return nil, status.Errorf(codes.Internal, "Failed to get maintenance mode status.") + } + desiredClientConfigHash := getDesiredClientConfigHash( channelName, storageConsumer, isEncryptionInTransitEnabled(storageCluster.Spec.Network), + inMaintenanceMode, ) return &pb.ReportStatusResponse{ @@ -999,13 +1017,8 @@ func (s *OCSProviderServer) ReportStatus(ctx context.Context, req *pb.ReportStat }, nil } -func getDesiredClientConfigHash(channelName string, storageConsumer *ocsv1alpha1.StorageConsumer, encryptionInTransit bool) string { - var arr = []any{ - channelName, - storageConsumer.Spec.StorageQuotaInGiB, - encryptionInTransit, - } - return util.CalculateMD5Hash(arr) +func getDesiredClientConfigHash(parts ...any) string { + return util.CalculateMD5Hash(parts) } func (s *OCSProviderServer) getOCSSubscriptionChannel(ctx context.Context) (string, error) { @@ -1079,3 +1092,34 @@ func (s *OCSProviderServer) PeerStorageCluster(ctx context.Context, req *pb.Peer return &pb.PeerStorageClusterResponse{}, nil } + +func (s *OCSProviderServer) RequestMaintenanceMode(ctx context.Context, req *pb.RequestMaintenanceModeRequest) (*pb.RequestMaintenanceModeResponse, error) { + // Get storage consumer resource using UUID + if req.Enable { + err := s.consumerManager.AddAnnotation(ctx, req.StorageConsumerUUID, util.RequestMaintenanceModeAnnotation, "") + if err != nil { + klog.Error(err) + return nil, fmt.Errorf("failed to request Maintenance Mode for storageConsumer") + } + } else { + err := s.consumerManager.RemoveAnnotation(ctx, req.StorageConsumerUUID, util.RequestMaintenanceModeAnnotation) + if err != nil { + klog.Error(err) + return nil, fmt.Errorf("failed to disable Maintenance Mode for storageConsumer") + } + } + + return &pb.RequestMaintenanceModeResponse{}, nil +} + +func (s *OCSProviderServer) isSystemInMaintenanceMode(ctx context.Context) (bool, error) { + // found - false, not found - true + cephRBDMirrors := &rookCephv1.CephRBDMirror{} + cephRBDMirrors.Name = util.CephRBDMirrorName + cephRBDMirrors.Namespace = s.namespace + err := s.client.Get(ctx, client.ObjectKeyFromObject(cephRBDMirrors), cephRBDMirrors) + if client.IgnoreNotFound(err) != nil { + return false, err + } + return kerrors.IsNotFound(err), nil +}