diff --git a/go.mod b/go.mod index 28784d62..0e8a8f2c 100644 --- a/go.mod +++ b/go.mod @@ -1,16 +1,15 @@ module github.com/container-storage-interface/spec -go 1.18 +go 1.21 require ( - google.golang.org/grpc v1.57.1 - google.golang.org/protobuf v1.33.0 + google.golang.org/grpc v1.64.0 + google.golang.org/protobuf v1.36.0 ) require ( - github.com/golang/protobuf v1.5.3 // indirect golang.org/x/net v0.23.0 // indirect golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect ) diff --git a/go.sum b/go.sum index 7fc3be69..467f28c6 100644 --- a/go.sum +++ b/go.sum @@ -1,21 +1,14 @@ -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5 h1:eSaPbMR4T7WfH9FvABk36NBMacoTUKdWCvV0dx+KfOg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= -google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg= -google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= - +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/protobuf v1.36.0 h1:mjIs9gYtt56AzC4ZaffQuh88TZurBGhIJMBZGSxNerQ= +google.golang.org/protobuf v1.36.0/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= diff --git a/lib/go/Makefile b/lib/go/Makefile index 0541c6d1..a5615b37 100644 --- a/lib/go/Makefile +++ b/lib/go/Makefile @@ -26,7 +26,7 @@ endif # Only set PROTOC_VER if it has an empty value. ifeq (,$(strip $(PROTOC_VER))) -PROTOC_VER := 25.2 +PROTOC_VER := 29.2 endif PROTOC_OS := $(shell uname -s) @@ -49,7 +49,7 @@ PROTOC := $(PROTOC_TMP_DIR)/bin/protoc $(GOBIN)/protoc-gen-go: ../../go.mod go install google.golang.org/protobuf/cmd/protoc-gen-go $(GOBIN)/protoc-gen-go-grpc: - go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0 + go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.5.1 $(PROTOC): -mkdir -p "$(PROTOC_TMP_DIR)" && \ @@ -82,6 +82,7 @@ $(CSI_GO) $(CSI_GRPC): $(CSI_PROTO) $(PROTOC_ALL) @mkdir -p "$(@D)" $(PROTOC) -I../.. --go-grpc_out=$(CSI_PKG_SUB) --go_out=$(CSI_PKG_SUB) \ --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative \ + --go_opt=default_api_level=API_HYBRID \ "$(= 1. The SP MUST ensure x >= 1 + // If x==n, then the SP MUST make the provisioned volume available to + // all topologies from the list of requisite topologies. If it is + // unable to do so, the SP MUST fail the CreateVolume call. + // For example, if a volume should be accessible from a single zone, + // and requisite = + // + // {"region": "R1", "zone": "Z2"} + // + // then the provisioned volume MUST be accessible from the "region" + // "R1" and the "zone" "Z2". + // Similarly, if a volume should be accessible from two zones, and + // requisite = + // + // {"region": "R1", "zone": "Z2"}, + // {"region": "R1", "zone": "Z3"} + // + // then the provisioned volume MUST be accessible from the "region" + // "R1" and both "zone" "Z2" and "zone" "Z3". + // + // If xn, then the SP MUST make the provisioned volume available from + // all topologies from the list of requisite topologies and MAY choose + // the remaining x-n unique topologies from the list of all possible + // topologies. If it is unable to do so, the SP MUST fail the + // CreateVolume call. + // For example, if a volume should be accessible from two zones, and + // requisite = + // + // {"region": "R1", "zone": "Z2"} + // + // then the provisioned volume MUST be accessible from the "region" + // "R1" and the "zone" "Z2" and the SP may select the second zone + // independently, e.g. "R1/Z4". + Requisite []*Topology + // Specifies the list of topologies the CO would prefer the volume to + // be provisioned in. + // + // This field is OPTIONAL. If TopologyRequirement is specified either + // requisite or preferred or both MUST be specified. + // + // An SP MUST attempt to make the provisioned volume available using + // the preferred topologies in order from first to last. + // + // If requisite is specified, all topologies in preferred list MUST + // also be present in the list of requisite topologies. + // + // If the SP is unable to to make the provisioned volume available + // from any of the preferred topologies, the SP MAY choose a topology + // from the list of requisite topologies. + // If the list of requisite topologies is not specified, then the SP + // MAY choose from the list of all possible topologies. + // If the list of requisite topologies is specified and the SP is + // unable to to make the provisioned volume available from any of the + // requisite topologies it MUST fail the CreateVolume call. + // + // Example 1: + // Given a volume should be accessible from a single zone, and + // requisite = + // + // {"region": "R1", "zone": "Z2"}, + // {"region": "R1", "zone": "Z3"} + // + // preferred = + // + // {"region": "R1", "zone": "Z3"} + // + // then the SP SHOULD first attempt to make the provisioned volume + // available from "zone" "Z3" in the "region" "R1" and fall back to + // "zone" "Z2" in the "region" "R1" if that is not possible. + // + // Example 2: + // Given a volume should be accessible from a single zone, and + // requisite = + // + // {"region": "R1", "zone": "Z2"}, + // {"region": "R1", "zone": "Z3"}, + // {"region": "R1", "zone": "Z4"}, + // {"region": "R1", "zone": "Z5"} + // + // preferred = + // + // {"region": "R1", "zone": "Z4"}, + // {"region": "R1", "zone": "Z2"} + // + // then the SP SHOULD first attempt to make the provisioned volume + // accessible from "zone" "Z4" in the "region" "R1" and fall back to + // "zone" "Z2" in the "region" "R1" if that is not possible. If that + // is not possible, the SP may choose between either the "zone" + // "Z3" or "Z5" in the "region" "R1". + // + // Example 3: + // Given a volume should be accessible from TWO zones (because an + // opaque parameter in CreateVolumeRequest, for example, specifies + // the volume is accessible from two zones, aka synchronously + // replicated), and + // requisite = + // + // {"region": "R1", "zone": "Z2"}, + // {"region": "R1", "zone": "Z3"}, + // {"region": "R1", "zone": "Z4"}, + // {"region": "R1", "zone": "Z5"} + // + // preferred = + // + // {"region": "R1", "zone": "Z5"}, + // {"region": "R1", "zone": "Z3"} + // + // then the SP SHOULD first attempt to make the provisioned volume + // accessible from the combination of the two "zones" "Z5" and "Z3" in + // the "region" "R1". If that's not possible, it should fall back to + // a combination of "Z5" and other possibilities from the list of + // requisite. If that's not possible, it should fall back to a + // combination of "Z3" and other possibilities from the list of + // requisite. If that's not possible, it should fall back to a + // combination of other possibilities from the list of requisite. + Preferred []*Topology +} + +func (b0 TopologyRequirement_builder) Build() *TopologyRequirement { + m0 := &TopologyRequirement{} + b, x := &b0, m0 + _, _ = b, x + x.Requisite = b.Requisite + x.Preferred = b.Preferred + return m0 } // Topology is a map of topological domains to topological segments. @@ -1863,20 +2720,17 @@ func (x *TopologyRequirement) GetPreferred() []*Topology { // alphanumeric character with '-', '_', '.', or alphanumerics in // between. type Topology struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` + Segments map[string]string `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Segments map[string]string `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *Topology) Reset() { *x = Topology{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Topology) String() string { @@ -1887,7 +2741,7 @@ func (*Topology) ProtoMessage() {} func (x *Topology) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1897,11 +2751,6 @@ func (x *Topology) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Topology.ProtoReflect.Descriptor instead. -func (*Topology) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{14} -} - func (x *Topology) GetSegments() map[string]string { if x != nil { return x.Segments @@ -1909,27 +2758,42 @@ func (x *Topology) GetSegments() map[string]string { return nil } -type DeleteVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Topology) SetSegments(v map[string]string) { + x.Segments = v +} + +type Topology_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Segments map[string]string +} + +func (b0 Topology_builder) Build() *Topology { + m0 := &Topology{} + b, x := &b0, m0 + _, _ = b, x + x.Segments = b.Segments + return m0 +} +type DeleteVolumeRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume to be deprovisioned. // This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // Secrets required by plugin to complete volume deletion request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteVolumeRequest) Reset() { *x = DeleteVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteVolumeRequest) String() string { @@ -1940,7 +2804,7 @@ func (*DeleteVolumeRequest) ProtoMessage() {} func (x *DeleteVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1950,11 +2814,6 @@ func (x *DeleteVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteVolumeRequest.ProtoReflect.Descriptor instead. -func (*DeleteVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{15} -} - func (x *DeleteVolumeRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -1969,19 +2828,46 @@ func (x *DeleteVolumeRequest) GetSecrets() map[string]string { return nil } +func (x *DeleteVolumeRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +func (x *DeleteVolumeRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +type DeleteVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to be deprovisioned. + // This field is REQUIRED. + VolumeId string + // Secrets required by plugin to complete volume deletion request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 DeleteVolumeRequest_builder) Build() *DeleteVolumeRequest { + m0 := &DeleteVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.Secrets = b.Secrets + return m0 +} + type DeleteVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteVolumeResponse) Reset() { *x = DeleteVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteVolumeResponse) String() string { @@ -1992,7 +2878,7 @@ func (*DeleteVolumeResponse) ProtoMessage() {} func (x *DeleteVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2002,16 +2888,20 @@ func (x *DeleteVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteVolumeResponse.ProtoReflect.Descriptor instead. -func (*DeleteVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{16} +type DeleteVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + } -type ControllerPublishVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (b0 DeleteVolumeResponse_builder) Build() *DeleteVolumeResponse { + m0 := &DeleteVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} +type ControllerPublishVolumeRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume to be used on a node. // This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` @@ -2031,21 +2921,21 @@ type ControllerPublishVolumeRequest struct { // Secrets required by plugin to complete controller publish volume // request. This field is OPTIONAL. Refer to the // `Secrets Requirements` section on how to use this field. - Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Volume context as returned by SP in // CreateVolumeResponse.Volume.volume_context. // This field is OPTIONAL and MUST match the volume_context of the // volume identified by `volume_id`. - VolumeContext map[string]string `protobuf:"bytes,6,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeContext map[string]string `protobuf:"bytes,6,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerPublishVolumeRequest) Reset() { *x = ControllerPublishVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerPublishVolumeRequest) String() string { @@ -2056,7 +2946,7 @@ func (*ControllerPublishVolumeRequest) ProtoMessage() {} func (x *ControllerPublishVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2066,11 +2956,6 @@ func (x *ControllerPublishVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerPublishVolumeRequest.ProtoReflect.Descriptor instead. -func (*ControllerPublishVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{17} -} - func (x *ControllerPublishVolumeRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -2113,11 +2998,86 @@ func (x *ControllerPublishVolumeRequest) GetVolumeContext() map[string]string { return nil } -type ControllerPublishVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ControllerPublishVolumeRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +func (x *ControllerPublishVolumeRequest) SetNodeId(v string) { + x.NodeId = v +} + +func (x *ControllerPublishVolumeRequest) SetVolumeCapability(v *VolumeCapability) { + x.VolumeCapability = v +} + +func (x *ControllerPublishVolumeRequest) SetReadonly(v bool) { + x.Readonly = v +} + +func (x *ControllerPublishVolumeRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +func (x *ControllerPublishVolumeRequest) SetVolumeContext(v map[string]string) { + x.VolumeContext = v +} + +func (x *ControllerPublishVolumeRequest) HasVolumeCapability() bool { + if x == nil { + return false + } + return x.VolumeCapability != nil +} + +func (x *ControllerPublishVolumeRequest) ClearVolumeCapability() { + x.VolumeCapability = nil +} + +type ControllerPublishVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to be used on a node. + // This field is REQUIRED. + VolumeId string + // The ID of the node. This field is REQUIRED. The CO SHALL set this + // field to match the node ID returned by `NodeGetInfo`. + NodeId string + // Volume capability describing how the CO intends to use this volume. + // SP MUST ensure the CO can use the published volume as described. + // Otherwise SP MUST return the appropriate gRPC error code. + // This is a REQUIRED field. + VolumeCapability *VolumeCapability + // Indicates SP MUST publish the volume in readonly mode. + // CO MUST set this field to false if SP does not have the + // PUBLISH_READONLY controller capability. + // This is a REQUIRED field. + Readonly bool + // Secrets required by plugin to complete controller publish volume + // request. This field is OPTIONAL. Refer to the + // `Secrets Requirements` section on how to use this field. + Secrets map[string]string + // Volume context as returned by SP in + // CreateVolumeResponse.Volume.volume_context. + // This field is OPTIONAL and MUST match the volume_context of the + // volume identified by `volume_id`. + VolumeContext map[string]string +} +func (b0 ControllerPublishVolumeRequest_builder) Build() *ControllerPublishVolumeRequest { + m0 := &ControllerPublishVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.NodeId = b.NodeId + x.VolumeCapability = b.VolumeCapability + x.Readonly = b.Readonly + x.Secrets = b.Secrets + x.VolumeContext = b.VolumeContext + return m0 +} + +type ControllerPublishVolumeResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // Opaque static publish properties of the volume. SP MAY use this // field to ensure subsequent `NodeStageVolume` or `NodePublishVolume` // calls calls have contextual information. @@ -2131,16 +3091,16 @@ type ControllerPublishVolumeResponse struct { // identify the volume. // This field is OPTIONAL and when present MUST be passed to // subsequent `NodeStageVolume` or `NodePublishVolume` calls - PublishContext map[string]string `protobuf:"bytes,1,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PublishContext map[string]string `protobuf:"bytes,1,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerPublishVolumeResponse) Reset() { *x = ControllerPublishVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerPublishVolumeResponse) String() string { @@ -2151,7 +3111,7 @@ func (*ControllerPublishVolumeResponse) ProtoMessage() {} func (x *ControllerPublishVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2161,11 +3121,6 @@ func (x *ControllerPublishVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerPublishVolumeResponse.ProtoReflect.Descriptor instead. -func (*ControllerPublishVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{18} -} - func (x *ControllerPublishVolumeResponse) GetPublishContext() map[string]string { if x != nil { return x.PublishContext @@ -2173,11 +3128,39 @@ func (x *ControllerPublishVolumeResponse) GetPublishContext() map[string]string return nil } -type ControllerUnpublishVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ControllerPublishVolumeResponse) SetPublishContext(v map[string]string) { + x.PublishContext = v +} + +type ControllerPublishVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Opaque static publish properties of the volume. SP MAY use this + // field to ensure subsequent `NodeStageVolume` or `NodePublishVolume` + // calls calls have contextual information. + // The contents of this field SHALL be opaque to a CO. + // The contents of this field SHALL NOT be mutable. + // The contents of this field SHALL be safe for the CO to cache. + // The contents of this field SHOULD NOT contain sensitive + // information. + // The contents of this field SHOULD NOT be used for uniquely + // identifying a volume. The `volume_id` alone SHOULD be sufficient to + // identify the volume. + // This field is OPTIONAL and when present MUST be passed to + // subsequent `NodeStageVolume` or `NodePublishVolume` calls + PublishContext map[string]string +} + +func (b0 ControllerPublishVolumeResponse_builder) Build() *ControllerPublishVolumeResponse { + m0 := &ControllerPublishVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + x.PublishContext = b.PublishContext + return m0 +} +type ControllerUnpublishVolumeRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The ID of the node. This field is OPTIONAL. The CO SHOULD set this @@ -2191,16 +3174,16 @@ type ControllerUnpublishVolumeRequest struct { // ControllerPublishVolume call for the specified volume. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerUnpublishVolumeRequest) Reset() { *x = ControllerUnpublishVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerUnpublishVolumeRequest) String() string { @@ -2211,7 +3194,7 @@ func (*ControllerUnpublishVolumeRequest) ProtoMessage() {} func (x *ControllerUnpublishVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2221,11 +3204,6 @@ func (x *ControllerUnpublishVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerUnpublishVolumeRequest.ProtoReflect.Descriptor instead. -func (*ControllerUnpublishVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{19} -} - func (x *ControllerUnpublishVolumeRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -2247,19 +3225,58 @@ func (x *ControllerUnpublishVolumeRequest) GetSecrets() map[string]string { return nil } +func (x *ControllerUnpublishVolumeRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +func (x *ControllerUnpublishVolumeRequest) SetNodeId(v string) { + x.NodeId = v +} + +func (x *ControllerUnpublishVolumeRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +type ControllerUnpublishVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume. This field is REQUIRED. + VolumeId string + // The ID of the node. This field is OPTIONAL. The CO SHOULD set this + // field to match the node ID returned by `NodeGetInfo` or leave it + // unset. If the value is set, the SP MUST unpublish the volume from + // the specified node. If the value is unset, the SP MUST unpublish + // the volume from all nodes it is published to. + NodeId string + // Secrets required by plugin to complete controller unpublish volume + // request. This SHOULD be the same secrets passed to the + // ControllerPublishVolume call for the specified volume. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 ControllerUnpublishVolumeRequest_builder) Build() *ControllerUnpublishVolumeRequest { + m0 := &ControllerUnpublishVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.NodeId = b.NodeId + x.Secrets = b.Secrets + return m0 +} + type ControllerUnpublishVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerUnpublishVolumeResponse) Reset() { *x = ControllerUnpublishVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerUnpublishVolumeResponse) String() string { @@ -2270,7 +3287,7 @@ func (*ControllerUnpublishVolumeResponse) ProtoMessage() {} func (x *ControllerUnpublishVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2280,46 +3297,50 @@ func (x *ControllerUnpublishVolumeResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ControllerUnpublishVolumeResponse.ProtoReflect.Descriptor instead. -func (*ControllerUnpublishVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{20} +type ControllerUnpublishVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + } -type ValidateVolumeCapabilitiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (b0 ControllerUnpublishVolumeResponse_builder) Build() *ControllerUnpublishVolumeResponse { + m0 := &ControllerUnpublishVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} +type ValidateVolumeCapabilitiesRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume to check. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // Volume context as returned by SP in // CreateVolumeResponse.Volume.volume_context. // This field is OPTIONAL and MUST match the volume_context of the // volume identified by `volume_id`. - VolumeContext map[string]string `protobuf:"bytes,2,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeContext map[string]string `protobuf:"bytes,2,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The capabilities that the CO wants to check for the volume. This // call SHALL return "confirmed" only if all the volume capabilities // specified below are supported. This field is REQUIRED. VolumeCapabilities []*VolumeCapability `protobuf:"bytes,3,rep,name=volume_capabilities,json=volumeCapabilities,proto3" json:"volume_capabilities,omitempty"` // See CreateVolumeRequest.parameters. // This field is OPTIONAL. - Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Secrets required by plugin to complete volume validation request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // See CreateVolumeRequest.mutable_parameters. // This field is OPTIONAL. - MutableParameters map[string]string `protobuf:"bytes,6,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MutableParameters map[string]string `protobuf:"bytes,6,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateVolumeCapabilitiesRequest) Reset() { *x = ValidateVolumeCapabilitiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ValidateVolumeCapabilitiesRequest) String() string { @@ -2330,7 +3351,7 @@ func (*ValidateVolumeCapabilitiesRequest) ProtoMessage() {} func (x *ValidateVolumeCapabilitiesRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2340,11 +3361,6 @@ func (x *ValidateVolumeCapabilitiesRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ValidateVolumeCapabilitiesRequest.ProtoReflect.Descriptor instead. -func (*ValidateVolumeCapabilitiesRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{21} -} - func (x *ValidateVolumeCapabilitiesRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -2387,11 +3403,71 @@ func (x *ValidateVolumeCapabilitiesRequest) GetMutableParameters() map[string]st return nil } -type ValidateVolumeCapabilitiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ValidateVolumeCapabilitiesRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +func (x *ValidateVolumeCapabilitiesRequest) SetVolumeContext(v map[string]string) { + x.VolumeContext = v +} + +func (x *ValidateVolumeCapabilitiesRequest) SetVolumeCapabilities(v []*VolumeCapability) { + x.VolumeCapabilities = v +} + +func (x *ValidateVolumeCapabilitiesRequest) SetParameters(v map[string]string) { + x.Parameters = v +} + +func (x *ValidateVolumeCapabilitiesRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} +func (x *ValidateVolumeCapabilitiesRequest) SetMutableParameters(v map[string]string) { + x.MutableParameters = v +} + +type ValidateVolumeCapabilitiesRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to check. This field is REQUIRED. + VolumeId string + // Volume context as returned by SP in + // CreateVolumeResponse.Volume.volume_context. + // This field is OPTIONAL and MUST match the volume_context of the + // volume identified by `volume_id`. + VolumeContext map[string]string + // The capabilities that the CO wants to check for the volume. This + // call SHALL return "confirmed" only if all the volume capabilities + // specified below are supported. This field is REQUIRED. + VolumeCapabilities []*VolumeCapability + // See CreateVolumeRequest.parameters. + // This field is OPTIONAL. + Parameters map[string]string + // Secrets required by plugin to complete volume validation request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string + // See CreateVolumeRequest.mutable_parameters. + // This field is OPTIONAL. + MutableParameters map[string]string +} + +func (b0 ValidateVolumeCapabilitiesRequest_builder) Build() *ValidateVolumeCapabilitiesRequest { + m0 := &ValidateVolumeCapabilitiesRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.VolumeContext = b.VolumeContext + x.VolumeCapabilities = b.VolumeCapabilities + x.Parameters = b.Parameters + x.Secrets = b.Secrets + x.MutableParameters = b.MutableParameters + return m0 +} + +type ValidateVolumeCapabilitiesResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // Confirmed indicates to the CO the set of capabilities that the // plugin has validated. This field SHALL only be set to a non-empty // value for successful validation responses. @@ -2404,16 +3480,16 @@ type ValidateVolumeCapabilitiesResponse struct { // Message to the CO if `confirmed` above is empty. This field is // OPTIONAL. // An empty string is equal to an unspecified field value. - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateVolumeCapabilitiesResponse) Reset() { *x = ValidateVolumeCapabilitiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ValidateVolumeCapabilitiesResponse) String() string { @@ -2424,19 +3500,14 @@ func (*ValidateVolumeCapabilitiesResponse) ProtoMessage() {} func (x *ValidateVolumeCapabilitiesResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } - return mi.MessageOf(x) -} - -// Deprecated: Use ValidateVolumeCapabilitiesResponse.ProtoReflect.Descriptor instead. -func (*ValidateVolumeCapabilitiesResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{22} + return mi.MessageOf(x) } func (x *ValidateVolumeCapabilitiesResponse) GetConfirmed() *ValidateVolumeCapabilitiesResponse_Confirmed { @@ -2453,11 +3524,54 @@ func (x *ValidateVolumeCapabilitiesResponse) GetMessage() string { return "" } -type ListVolumesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ValidateVolumeCapabilitiesResponse) SetConfirmed(v *ValidateVolumeCapabilitiesResponse_Confirmed) { + x.Confirmed = v +} + +func (x *ValidateVolumeCapabilitiesResponse) SetMessage(v string) { + x.Message = v +} + +func (x *ValidateVolumeCapabilitiesResponse) HasConfirmed() bool { + if x == nil { + return false + } + return x.Confirmed != nil +} + +func (x *ValidateVolumeCapabilitiesResponse) ClearConfirmed() { + x.Confirmed = nil +} + +type ValidateVolumeCapabilitiesResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Confirmed indicates to the CO the set of capabilities that the + // plugin has validated. This field SHALL only be set to a non-empty + // value for successful validation responses. + // For successful validation responses, the CO SHALL compare the + // fields of this message to the originally requested capabilities in + // order to guard against an older plugin reporting "valid" for newer + // capability fields that it does not yet understand. + // This field is OPTIONAL. + Confirmed *ValidateVolumeCapabilitiesResponse_Confirmed + // Message to the CO if `confirmed` above is empty. This field is + // OPTIONAL. + // An empty string is equal to an unspecified field value. + Message string +} + +func (b0 ValidateVolumeCapabilitiesResponse_builder) Build() *ValidateVolumeCapabilitiesResponse { + m0 := &ValidateVolumeCapabilitiesResponse{} + b, x := &b0, m0 + _, _ = b, x + x.Confirmed = b.Confirmed + x.Message = b.Message + return m0 +} +type ListVolumesRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // If specified (non-zero value), the Plugin MUST NOT return more // entries than this number in the response. If the actual number of // entries is more than this number, the Plugin MUST set `next_token` @@ -2472,15 +3586,15 @@ type ListVolumesRequest struct { // next page of entries. This field is OPTIONAL. // An empty string is equal to an unspecified field value. StartingToken string `protobuf:"bytes,2,opt,name=starting_token,json=startingToken,proto3" json:"starting_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListVolumesRequest) Reset() { *x = ListVolumesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListVolumesRequest) String() string { @@ -2491,7 +3605,7 @@ func (*ListVolumesRequest) ProtoMessage() {} func (x *ListVolumesRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2501,11 +3615,6 @@ func (x *ListVolumesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListVolumesRequest.ProtoReflect.Descriptor instead. -func (*ListVolumesRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{23} -} - func (x *ListVolumesRequest) GetMaxEntries() int32 { if x != nil { return x.MaxEntries @@ -2520,11 +3629,44 @@ func (x *ListVolumesRequest) GetStartingToken() string { return "" } -type ListVolumesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ListVolumesRequest) SetMaxEntries(v int32) { + x.MaxEntries = v +} + +func (x *ListVolumesRequest) SetStartingToken(v string) { + x.StartingToken = v +} + +type ListVolumesRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // If specified (non-zero value), the Plugin MUST NOT return more + // entries than this number in the response. If the actual number of + // entries is more than this number, the Plugin MUST set `next_token` + // in the response which can be used to get the next page of entries + // in the subsequent `ListVolumes` call. This field is OPTIONAL. If + // not specified (zero value), it means there is no restriction on the + // number of entries that can be returned. + // The value of this field MUST NOT be negative. + MaxEntries int32 + // A token to specify where to start paginating. Set this field to + // `next_token` returned by a previous `ListVolumes` call to get the + // next page of entries. This field is OPTIONAL. + // An empty string is equal to an unspecified field value. + StartingToken string +} + +func (b0 ListVolumesRequest_builder) Build() *ListVolumesRequest { + m0 := &ListVolumesRequest{} + b, x := &b0, m0 + _, _ = b, x + x.MaxEntries = b.MaxEntries + x.StartingToken = b.StartingToken + return m0 +} +type ListVolumesResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` Entries []*ListVolumesResponse_Entry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` // This token allows you to get the next page of entries for // `ListVolumes` request. If the number of entries is larger than @@ -2532,16 +3674,16 @@ type ListVolumesResponse struct { // `starting_token` field in the next `ListVolumes` request. This // field is OPTIONAL. // An empty string is equal to an unspecified field value. - NextToken string `protobuf:"bytes,2,opt,name=next_token,json=nextToken,proto3" json:"next_token,omitempty"` + NextToken string `protobuf:"bytes,2,opt,name=next_token,json=nextToken,proto3" json:"next_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListVolumesResponse) Reset() { *x = ListVolumesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListVolumesResponse) String() string { @@ -2552,7 +3694,7 @@ func (*ListVolumesResponse) ProtoMessage() {} func (x *ListVolumesResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2562,11 +3704,6 @@ func (x *ListVolumesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListVolumesResponse.ProtoReflect.Descriptor instead. -func (*ListVolumesResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{24} -} - func (x *ListVolumesResponse) GetEntries() []*ListVolumesResponse_Entry { if x != nil { return x.Entries @@ -2581,23 +3718,50 @@ func (x *ListVolumesResponse) GetNextToken() string { return "" } -type ControllerGetVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ListVolumesResponse) SetEntries(v []*ListVolumesResponse_Entry) { + x.Entries = v +} + +func (x *ListVolumesResponse) SetNextToken(v string) { + x.NextToken = v +} + +type ListVolumesResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Entries []*ListVolumesResponse_Entry + // This token allows you to get the next page of entries for + // `ListVolumes` request. If the number of entries is larger than + // `max_entries`, use the `next_token` as a value for the + // `starting_token` field in the next `ListVolumes` request. This + // field is OPTIONAL. + // An empty string is equal to an unspecified field value. + NextToken string +} +func (b0 ListVolumesResponse_builder) Build() *ListVolumesResponse { + m0 := &ListVolumesResponse{} + b, x := &b0, m0 + _, _ = b, x + x.Entries = b.Entries + x.NextToken = b.NextToken + return m0 +} + +type ControllerGetVolumeRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume to fetch current volume information for. // This field is REQUIRED. - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerGetVolumeRequest) Reset() { *x = ControllerGetVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerGetVolumeRequest) String() string { @@ -2608,7 +3772,7 @@ func (*ControllerGetVolumeRequest) ProtoMessage() {} func (x *ControllerGetVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2618,11 +3782,6 @@ func (x *ControllerGetVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerGetVolumeRequest.ProtoReflect.Descriptor instead. -func (*ControllerGetVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{25} -} - func (x *ControllerGetVolumeRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -2630,24 +3789,41 @@ func (x *ControllerGetVolumeRequest) GetVolumeId() string { return "" } -type ControllerGetVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ControllerGetVolumeRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +type ControllerGetVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to fetch current volume information for. + // This field is REQUIRED. + VolumeId string +} + +func (b0 ControllerGetVolumeRequest_builder) Build() *ControllerGetVolumeRequest { + m0 := &ControllerGetVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + return m0 +} +type ControllerGetVolumeResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // This field is REQUIRED Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` // This field is REQUIRED. - Status *ControllerGetVolumeResponse_VolumeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + Status *ControllerGetVolumeResponse_VolumeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerGetVolumeResponse) Reset() { *x = ControllerGetVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerGetVolumeResponse) String() string { @@ -2658,7 +3834,7 @@ func (*ControllerGetVolumeResponse) ProtoMessage() {} func (x *ControllerGetVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2668,11 +3844,6 @@ func (x *ControllerGetVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerGetVolumeResponse.ProtoReflect.Descriptor instead. -func (*ControllerGetVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{26} -} - func (x *ControllerGetVolumeResponse) GetVolume() *Volume { if x != nil { return x.Volume @@ -2687,18 +3858,63 @@ func (x *ControllerGetVolumeResponse) GetStatus() *ControllerGetVolumeResponse_V return nil } -type ControllerModifyVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ControllerGetVolumeResponse) SetVolume(v *Volume) { + x.Volume = v +} + +func (x *ControllerGetVolumeResponse) SetStatus(v *ControllerGetVolumeResponse_VolumeStatus) { + x.Status = v +} + +func (x *ControllerGetVolumeResponse) HasVolume() bool { + if x == nil { + return false + } + return x.Volume != nil +} + +func (x *ControllerGetVolumeResponse) HasStatus() bool { + if x == nil { + return false + } + return x.Status != nil +} +func (x *ControllerGetVolumeResponse) ClearVolume() { + x.Volume = nil +} + +func (x *ControllerGetVolumeResponse) ClearStatus() { + x.Status = nil +} + +type ControllerGetVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This field is REQUIRED + Volume *Volume + // This field is REQUIRED. + Status *ControllerGetVolumeResponse_VolumeStatus +} + +func (b0 ControllerGetVolumeResponse_builder) Build() *ControllerGetVolumeResponse { + m0 := &ControllerGetVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + x.Volume = b.Volume + x.Status = b.Status + return m0 +} + +type ControllerModifyVolumeRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // Contains identity information for the existing volume. // This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // Secrets required by plugin to complete modify volume request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Plugin specific volume attributes to mutate, passed in as // opaque key-value pairs. // This field is REQUIRED. The Plugin is responsible for @@ -2707,16 +3923,16 @@ type ControllerModifyVolumeRequest struct { // parameters it intends to modify. SPs MUST NOT modify volumes based // on the absence of keys, only keys that are specified should result // in modifications to the volume. - MutableParameters map[string]string `protobuf:"bytes,3,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MutableParameters map[string]string `protobuf:"bytes,3,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerModifyVolumeRequest) Reset() { *x = ControllerModifyVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerModifyVolumeRequest) String() string { @@ -2727,7 +3943,7 @@ func (*ControllerModifyVolumeRequest) ProtoMessage() {} func (x *ControllerModifyVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2737,11 +3953,6 @@ func (x *ControllerModifyVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerModifyVolumeRequest.ProtoReflect.Descriptor instead. -func (*ControllerModifyVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{27} -} - func (x *ControllerModifyVolumeRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -2763,19 +3974,60 @@ func (x *ControllerModifyVolumeRequest) GetMutableParameters() map[string]string return nil } +func (x *ControllerModifyVolumeRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +func (x *ControllerModifyVolumeRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +func (x *ControllerModifyVolumeRequest) SetMutableParameters(v map[string]string) { + x.MutableParameters = v +} + +type ControllerModifyVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Contains identity information for the existing volume. + // This field is REQUIRED. + VolumeId string + // Secrets required by plugin to complete modify volume request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string + // Plugin specific volume attributes to mutate, passed in as + // opaque key-value pairs. + // This field is REQUIRED. The Plugin is responsible for + // parsing and validating these parameters. COs will treat these + // as opaque. The CO SHOULD specify the intended values of all mutable + // parameters it intends to modify. SPs MUST NOT modify volumes based + // on the absence of keys, only keys that are specified should result + // in modifications to the volume. + MutableParameters map[string]string +} + +func (b0 ControllerModifyVolumeRequest_builder) Build() *ControllerModifyVolumeRequest { + m0 := &ControllerModifyVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.Secrets = b.Secrets + x.MutableParameters = b.MutableParameters + return m0 +} + type ControllerModifyVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerModifyVolumeResponse) Reset() { *x = ControllerModifyVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerModifyVolumeResponse) String() string { @@ -2786,7 +4038,7 @@ func (*ControllerModifyVolumeResponse) ProtoMessage() {} func (x *ControllerModifyVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2796,16 +4048,20 @@ func (x *ControllerModifyVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerModifyVolumeResponse.ProtoReflect.Descriptor instead. -func (*ControllerModifyVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{28} +type ControllerModifyVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + } -type GetCapacityRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (b0 ControllerModifyVolumeResponse_builder) Build() *ControllerModifyVolumeResponse { + m0 := &ControllerModifyVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} +type GetCapacityRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // If specified, the Plugin SHALL report the capacity of the storage // that can be used to provision volumes that satisfy ALL of the // specified `volume_capabilities`. These are the same @@ -2816,7 +4072,7 @@ type GetCapacityRequest struct { // that can be used to provision volumes with the given Plugin // specific `parameters`. These are the same `parameters` the CO will // use in `CreateVolumeRequest`. This field is OPTIONAL. - Parameters map[string]string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Parameters map[string]string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // If specified, the Plugin SHALL report the capacity of the storage // that can be used to provision volumes that in the specified // `accessible_topology`. This is the same as the @@ -2824,15 +4080,15 @@ type GetCapacityRequest struct { // This field is OPTIONAL. This field SHALL NOT be set unless the // plugin advertises the VOLUME_ACCESSIBILITY_CONSTRAINTS capability. AccessibleTopology *Topology `protobuf:"bytes,3,opt,name=accessible_topology,json=accessibleTopology,proto3" json:"accessible_topology,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCapacityRequest) Reset() { *x = GetCapacityRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCapacityRequest) String() string { @@ -2843,7 +4099,7 @@ func (*GetCapacityRequest) ProtoMessage() {} func (x *GetCapacityRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2853,11 +4109,6 @@ func (x *GetCapacityRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetCapacityRequest.ProtoReflect.Descriptor instead. -func (*GetCapacityRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{29} -} - func (x *GetCapacityRequest) GetVolumeCapabilities() []*VolumeCapability { if x != nil { return x.VolumeCapabilities @@ -2879,11 +4130,64 @@ func (x *GetCapacityRequest) GetAccessibleTopology() *Topology { return nil } -type GetCapacityResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *GetCapacityRequest) SetVolumeCapabilities(v []*VolumeCapability) { + x.VolumeCapabilities = v +} +func (x *GetCapacityRequest) SetParameters(v map[string]string) { + x.Parameters = v +} + +func (x *GetCapacityRequest) SetAccessibleTopology(v *Topology) { + x.AccessibleTopology = v +} + +func (x *GetCapacityRequest) HasAccessibleTopology() bool { + if x == nil { + return false + } + return x.AccessibleTopology != nil +} + +func (x *GetCapacityRequest) ClearAccessibleTopology() { + x.AccessibleTopology = nil +} + +type GetCapacityRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // If specified, the Plugin SHALL report the capacity of the storage + // that can be used to provision volumes that satisfy ALL of the + // specified `volume_capabilities`. These are the same + // `volume_capabilities` the CO will use in `CreateVolumeRequest`. + // This field is OPTIONAL. + VolumeCapabilities []*VolumeCapability + // If specified, the Plugin SHALL report the capacity of the storage + // that can be used to provision volumes with the given Plugin + // specific `parameters`. These are the same `parameters` the CO will + // use in `CreateVolumeRequest`. This field is OPTIONAL. + Parameters map[string]string + // If specified, the Plugin SHALL report the capacity of the storage + // that can be used to provision volumes that in the specified + // `accessible_topology`. This is the same as the + // `accessible_topology` the CO returns in a `CreateVolumeResponse`. + // This field is OPTIONAL. This field SHALL NOT be set unless the + // plugin advertises the VOLUME_ACCESSIBILITY_CONSTRAINTS capability. + AccessibleTopology *Topology +} + +func (b0 GetCapacityRequest_builder) Build() *GetCapacityRequest { + m0 := &GetCapacityRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeCapabilities = b.VolumeCapabilities + x.Parameters = b.Parameters + x.AccessibleTopology = b.AccessibleTopology + return m0 +} + +type GetCapacityResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The available capacity, in bytes, of the storage that can be used // to provision volumes. If `volume_capabilities` or `parameters` is // specified in the request, the Plugin SHALL take those into @@ -2923,15 +4227,15 @@ type GetCapacityResponse struct { // otherwise. COs MAY use it to make decision about // where to create volumes. MinimumVolumeSize *wrapperspb.Int64Value `protobuf:"bytes,3,opt,name=minimum_volume_size,json=minimumVolumeSize,proto3" json:"minimum_volume_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCapacityResponse) Reset() { *x = GetCapacityResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetCapacityResponse) String() string { @@ -2942,7 +4246,7 @@ func (*GetCapacityResponse) ProtoMessage() {} func (x *GetCapacityResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2952,11 +4256,6 @@ func (x *GetCapacityResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetCapacityResponse.ProtoReflect.Descriptor instead. -func (*GetCapacityResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{30} -} - func (x *GetCapacityResponse) GetAvailableCapacity() int64 { if x != nil { return x.AvailableCapacity @@ -2971,26 +4270,112 @@ func (x *GetCapacityResponse) GetMaximumVolumeSize() *wrapperspb.Int64Value { return nil } -func (x *GetCapacityResponse) GetMinimumVolumeSize() *wrapperspb.Int64Value { - if x != nil { - return x.MinimumVolumeSize - } - return nil +func (x *GetCapacityResponse) GetMinimumVolumeSize() *wrapperspb.Int64Value { + if x != nil { + return x.MinimumVolumeSize + } + return nil +} + +func (x *GetCapacityResponse) SetAvailableCapacity(v int64) { + x.AvailableCapacity = v +} + +func (x *GetCapacityResponse) SetMaximumVolumeSize(v *wrapperspb.Int64Value) { + x.MaximumVolumeSize = v +} + +func (x *GetCapacityResponse) SetMinimumVolumeSize(v *wrapperspb.Int64Value) { + x.MinimumVolumeSize = v +} + +func (x *GetCapacityResponse) HasMaximumVolumeSize() bool { + if x == nil { + return false + } + return x.MaximumVolumeSize != nil +} + +func (x *GetCapacityResponse) HasMinimumVolumeSize() bool { + if x == nil { + return false + } + return x.MinimumVolumeSize != nil +} + +func (x *GetCapacityResponse) ClearMaximumVolumeSize() { + x.MaximumVolumeSize = nil +} + +func (x *GetCapacityResponse) ClearMinimumVolumeSize() { + x.MinimumVolumeSize = nil +} + +type GetCapacityResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The available capacity, in bytes, of the storage that can be used + // to provision volumes. If `volume_capabilities` or `parameters` is + // specified in the request, the Plugin SHALL take those into + // consideration when calculating the available capacity of the + // storage. This field is REQUIRED. + // The value of this field MUST NOT be negative. + AvailableCapacity int64 + // The largest size that may be used in a + // CreateVolumeRequest.capacity_range.required_bytes field + // to create a volume with the same parameters as those in + // GetCapacityRequest. + // + // If `volume_capabilities` or `parameters` is + // specified in the request, the Plugin SHALL take those into + // consideration when calculating the minimum volume size of the + // storage. + // + // This field is OPTIONAL. MUST NOT be negative. + // The Plugin SHOULD provide a value for this field if it has + // a maximum size for individual volumes and leave it unset + // otherwise. COs MAY use it to make decision about + // where to create volumes. + MaximumVolumeSize *wrapperspb.Int64Value + // The smallest size that may be used in a + // CreateVolumeRequest.capacity_range.limit_bytes field + // to create a volume with the same parameters as those in + // GetCapacityRequest. + // + // If `volume_capabilities` or `parameters` is + // specified in the request, the Plugin SHALL take those into + // consideration when calculating the maximum volume size of the + // storage. + // + // This field is OPTIONAL. MUST NOT be negative. + // The Plugin SHOULD provide a value for this field if it has + // a minimum size for individual volumes and leave it unset + // otherwise. COs MAY use it to make decision about + // where to create volumes. + MinimumVolumeSize *wrapperspb.Int64Value +} + +func (b0 GetCapacityResponse_builder) Build() *GetCapacityResponse { + m0 := &GetCapacityResponse{} + b, x := &b0, m0 + _, _ = b, x + x.AvailableCapacity = b.AvailableCapacity + x.MaximumVolumeSize = b.MaximumVolumeSize + x.MinimumVolumeSize = b.MinimumVolumeSize + return m0 } type ControllerGetCapabilitiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerGetCapabilitiesRequest) Reset() { *x = ControllerGetCapabilitiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerGetCapabilitiesRequest) String() string { @@ -3001,7 +4386,7 @@ func (*ControllerGetCapabilitiesRequest) ProtoMessage() {} func (x *ControllerGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3011,28 +4396,32 @@ func (x *ControllerGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerGetCapabilitiesRequest.ProtoReflect.Descriptor instead. -func (*ControllerGetCapabilitiesRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{31} +type ControllerGetCapabilitiesRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + } -type ControllerGetCapabilitiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (b0 ControllerGetCapabilitiesRequest_builder) Build() *ControllerGetCapabilitiesRequest { + m0 := &ControllerGetCapabilitiesRequest{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} +type ControllerGetCapabilitiesResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // All the capabilities that the controller service supports. This // field is OPTIONAL. - Capabilities []*ControllerServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + Capabilities []*ControllerServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerGetCapabilitiesResponse) Reset() { *x = ControllerGetCapabilitiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerGetCapabilitiesResponse) String() string { @@ -3043,7 +4432,7 @@ func (*ControllerGetCapabilitiesResponse) ProtoMessage() {} func (x *ControllerGetCapabilitiesResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3053,11 +4442,6 @@ func (x *ControllerGetCapabilitiesResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ControllerGetCapabilitiesResponse.ProtoReflect.Descriptor instead. -func (*ControllerGetCapabilitiesResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{32} -} - func (x *ControllerGetCapabilitiesResponse) GetCapabilities() []*ControllerServiceCapability { if x != nil { return x.Capabilities @@ -3065,25 +4449,42 @@ func (x *ControllerGetCapabilitiesResponse) GetCapabilities() []*ControllerServi return nil } +func (x *ControllerGetCapabilitiesResponse) SetCapabilities(v []*ControllerServiceCapability) { + x.Capabilities = v +} + +type ControllerGetCapabilitiesResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // All the capabilities that the controller service supports. This + // field is OPTIONAL. + Capabilities []*ControllerServiceCapability +} + +func (b0 ControllerGetCapabilitiesResponse_builder) Build() *ControllerGetCapabilitiesResponse { + m0 := &ControllerGetCapabilitiesResponse{} + b, x := &b0, m0 + _, _ = b, x + x.Capabilities = b.Capabilities + return m0 +} + // Specifies a capability of the controller service. type ControllerServiceCapability struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Type: + state protoimpl.MessageState `protogen:"hybrid.v1"` + // Types that are valid to be assigned to Type: // // *ControllerServiceCapability_Rpc - Type isControllerServiceCapability_Type `protobuf_oneof:"type"` + Type isControllerServiceCapability_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerServiceCapability) Reset() { *x = ControllerServiceCapability{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerServiceCapability) String() string { @@ -3094,7 +4495,7 @@ func (*ControllerServiceCapability) ProtoMessage() {} func (x *ControllerServiceCapability) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3104,25 +4505,99 @@ func (x *ControllerServiceCapability) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerServiceCapability.ProtoReflect.Descriptor instead. -func (*ControllerServiceCapability) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{33} -} - -func (m *ControllerServiceCapability) GetType() isControllerServiceCapability_Type { - if m != nil { - return m.Type +func (x *ControllerServiceCapability) GetType() isControllerServiceCapability_Type { + if x != nil { + return x.Type } return nil } func (x *ControllerServiceCapability) GetRpc() *ControllerServiceCapability_RPC { - if x, ok := x.GetType().(*ControllerServiceCapability_Rpc); ok { - return x.Rpc + if x != nil { + if x, ok := x.Type.(*ControllerServiceCapability_Rpc); ok { + return x.Rpc + } } return nil } +func (x *ControllerServiceCapability) SetRpc(v *ControllerServiceCapability_RPC) { + if v == nil { + x.Type = nil + return + } + x.Type = &ControllerServiceCapability_Rpc{v} +} + +func (x *ControllerServiceCapability) HasType() bool { + if x == nil { + return false + } + return x.Type != nil +} + +func (x *ControllerServiceCapability) HasRpc() bool { + if x == nil { + return false + } + _, ok := x.Type.(*ControllerServiceCapability_Rpc) + return ok +} + +func (x *ControllerServiceCapability) ClearType() { + x.Type = nil +} + +func (x *ControllerServiceCapability) ClearRpc() { + if _, ok := x.Type.(*ControllerServiceCapability_Rpc); ok { + x.Type = nil + } +} + +const ControllerServiceCapability_Type_not_set_case case_ControllerServiceCapability_Type = 0 +const ControllerServiceCapability_Rpc_case case_ControllerServiceCapability_Type = 1 + +func (x *ControllerServiceCapability) WhichType() case_ControllerServiceCapability_Type { + if x == nil { + return ControllerServiceCapability_Type_not_set_case + } + switch x.Type.(type) { + case *ControllerServiceCapability_Rpc: + return ControllerServiceCapability_Rpc_case + default: + return ControllerServiceCapability_Type_not_set_case + } +} + +type ControllerServiceCapability_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Fields of oneof Type: + // RPC that the controller supports. + Rpc *ControllerServiceCapability_RPC + // -- end of Type +} + +func (b0 ControllerServiceCapability_builder) Build() *ControllerServiceCapability { + m0 := &ControllerServiceCapability{} + b, x := &b0, m0 + _, _ = b, x + if b.Rpc != nil { + x.Type = &ControllerServiceCapability_Rpc{b.Rpc} + } + return m0 +} + +type case_ControllerServiceCapability_Type protoreflect.FieldNumber + +func (x case_ControllerServiceCapability_Type) String() string { + md := file_csi_proto_msgTypes[33].Descriptor() + if x == 0 { + return "not set" + } + return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x)) +} + type isControllerServiceCapability_Type interface { isControllerServiceCapability_Type() } @@ -3135,10 +4610,7 @@ type ControllerServiceCapability_Rpc struct { func (*ControllerServiceCapability_Rpc) isControllerServiceCapability_Type() {} type CreateSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the source volume to be snapshotted. // This field is REQUIRED. SourceVolumeId string `protobuf:"bytes,1,opt,name=source_volume_id,json=sourceVolumeId,proto3" json:"source_volume_id,omitempty"` @@ -3152,7 +4624,7 @@ type CreateSnapshotRequest struct { // Secrets required by plugin to complete snapshot creation request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Plugin specific parameters passed in as opaque key-value pairs. // This field is OPTIONAL. The Plugin is responsible for parsing and // validating these parameters. COs will treat these as opaque. @@ -3163,16 +4635,16 @@ type CreateSnapshotRequest struct { // - Specify if the snapshot should be replicated to some place. // - Specify primary or secondary for replication systems that // support snapshotting only on primary. - Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateSnapshotRequest) Reset() { *x = CreateSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateSnapshotRequest) String() string { @@ -3183,7 +4655,7 @@ func (*CreateSnapshotRequest) ProtoMessage() {} func (x *CreateSnapshotRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3193,11 +4665,6 @@ func (x *CreateSnapshotRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateSnapshotRequest.ProtoReflect.Descriptor instead. -func (*CreateSnapshotRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{34} -} - func (x *CreateSnapshotRequest) GetSourceVolumeId() string { if x != nil { return x.SourceVolumeId @@ -3226,24 +4693,78 @@ func (x *CreateSnapshotRequest) GetParameters() map[string]string { return nil } -type CreateSnapshotResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *CreateSnapshotRequest) SetSourceVolumeId(v string) { + x.SourceVolumeId = v +} + +func (x *CreateSnapshotRequest) SetName(v string) { + x.Name = v +} + +func (x *CreateSnapshotRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +func (x *CreateSnapshotRequest) SetParameters(v map[string]string) { + x.Parameters = v +} + +type CreateSnapshotRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the source volume to be snapshotted. + // This field is REQUIRED. + SourceVolumeId string + // The suggested name for the snapshot. This field is REQUIRED for + // idempotency. + // Any Unicode string that conforms to the length limit is allowed + // except those containing the following banned characters: + // U+0000-U+0008, U+000B, U+000C, U+000E-U+001F, U+007F-U+009F. + // (These are control characters other than commonly used whitespace.) + Name string + // Secrets required by plugin to complete snapshot creation request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string + // Plugin specific parameters passed in as opaque key-value pairs. + // This field is OPTIONAL. The Plugin is responsible for parsing and + // validating these parameters. COs will treat these as opaque. + // Use cases for opaque parameters: + // - Specify a policy to automatically clean up the snapshot. + // - Specify an expiration date for the snapshot. + // - Specify whether the snapshot is readonly or read/write. + // - Specify if the snapshot should be replicated to some place. + // - Specify primary or secondary for replication systems that + // support snapshotting only on primary. + Parameters map[string]string +} + +func (b0 CreateSnapshotRequest_builder) Build() *CreateSnapshotRequest { + m0 := &CreateSnapshotRequest{} + b, x := &b0, m0 + _, _ = b, x + x.SourceVolumeId = b.SourceVolumeId + x.Name = b.Name + x.Secrets = b.Secrets + x.Parameters = b.Parameters + return m0 +} +type CreateSnapshotResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // Contains all attributes of the newly created snapshot that are // relevant to the CO along with information required by the Plugin // to uniquely identify the snapshot. This field is REQUIRED. - Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateSnapshotResponse) Reset() { *x = CreateSnapshotResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateSnapshotResponse) String() string { @@ -3254,7 +4775,7 @@ func (*CreateSnapshotResponse) ProtoMessage() {} func (x *CreateSnapshotResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3264,11 +4785,6 @@ func (x *CreateSnapshotResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateSnapshotResponse.ProtoReflect.Descriptor instead. -func (*CreateSnapshotResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{35} -} - func (x *CreateSnapshotResponse) GetSnapshot() *Snapshot { if x != nil { return x.Snapshot @@ -3276,12 +4792,41 @@ func (x *CreateSnapshotResponse) GetSnapshot() *Snapshot { return nil } +func (x *CreateSnapshotResponse) SetSnapshot(v *Snapshot) { + x.Snapshot = v +} + +func (x *CreateSnapshotResponse) HasSnapshot() bool { + if x == nil { + return false + } + return x.Snapshot != nil +} + +func (x *CreateSnapshotResponse) ClearSnapshot() { + x.Snapshot = nil +} + +type CreateSnapshotResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Contains all attributes of the newly created snapshot that are + // relevant to the CO along with information required by the Plugin + // to uniquely identify the snapshot. This field is REQUIRED. + Snapshot *Snapshot +} + +func (b0 CreateSnapshotResponse_builder) Build() *CreateSnapshotResponse { + m0 := &CreateSnapshotResponse{} + b, x := &b0, m0 + _, _ = b, x + x.Snapshot = b.Snapshot + return m0 +} + // Information about a specific snapshot. type Snapshot struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // This is the complete size of the snapshot in bytes. The purpose of // this field is to give CO guidance on how much space is needed to // create a volume from this snapshot. The size of the volume MUST NOT @@ -3325,15 +4870,15 @@ type Snapshot struct { // If this message is inside a VolumeGroupSnapshot message, the value // MUST be the same as the group_snapshot_id in that message. GroupSnapshotId string `protobuf:"bytes,6,opt,name=group_snapshot_id,json=groupSnapshotId,proto3" json:"group_snapshot_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Snapshot) Reset() { *x = Snapshot{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Snapshot) String() string { @@ -3344,7 +4889,7 @@ func (*Snapshot) ProtoMessage() {} func (x *Snapshot) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3354,11 +4899,6 @@ func (x *Snapshot) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Snapshot.ProtoReflect.Descriptor instead. -func (*Snapshot) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{36} -} - func (x *Snapshot) GetSizeBytes() int64 { if x != nil { return x.SizeBytes @@ -3394,34 +4934,127 @@ func (x *Snapshot) GetReadyToUse() bool { return false } -func (x *Snapshot) GetGroupSnapshotId() string { - if x != nil { - return x.GroupSnapshotId - } - return "" +func (x *Snapshot) GetGroupSnapshotId() string { + if x != nil { + return x.GroupSnapshotId + } + return "" +} + +func (x *Snapshot) SetSizeBytes(v int64) { + x.SizeBytes = v +} + +func (x *Snapshot) SetSnapshotId(v string) { + x.SnapshotId = v +} + +func (x *Snapshot) SetSourceVolumeId(v string) { + x.SourceVolumeId = v +} + +func (x *Snapshot) SetCreationTime(v *timestamppb.Timestamp) { + x.CreationTime = v +} + +func (x *Snapshot) SetReadyToUse(v bool) { + x.ReadyToUse = v +} + +func (x *Snapshot) SetGroupSnapshotId(v string) { + x.GroupSnapshotId = v +} + +func (x *Snapshot) HasCreationTime() bool { + if x == nil { + return false + } + return x.CreationTime != nil +} + +func (x *Snapshot) ClearCreationTime() { + x.CreationTime = nil +} + +type Snapshot_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This is the complete size of the snapshot in bytes. The purpose of + // this field is to give CO guidance on how much space is needed to + // create a volume from this snapshot. The size of the volume MUST NOT + // be less than the size of the source snapshot. This field is + // OPTIONAL. If this field is not set, it indicates that this size is + // unknown. The value of this field MUST NOT be negative and a size of + // zero means it is unspecified. + SizeBytes int64 + // The identifier for this snapshot, generated by the plugin. + // This field is REQUIRED. + // This field MUST contain enough information to uniquely identify + // this specific snapshot vs all other snapshots supported by this + // plugin. + // This field SHALL be used by the CO in subsequent calls to refer to + // this snapshot. + // The SP is NOT responsible for global uniqueness of snapshot_id + // across multiple SPs. + SnapshotId string + // Identity information for the source volume. Note that creating a + // snapshot from a snapshot is not supported here so the source has to + // be a volume. This field is REQUIRED. + SourceVolumeId string + // Timestamp when the point-in-time snapshot is taken on the storage + // system. This field is REQUIRED. + CreationTime *timestamppb.Timestamp + // Indicates if a snapshot is ready to use as a + // `volume_content_source` in a `CreateVolumeRequest`. The default + // value is false. This field is REQUIRED. + ReadyToUse bool + // The ID of the volume group snapshot that this snapshot is part of. + // It uniquely identifies the group snapshot on the storage system. + // This field is OPTIONAL. + // If this snapshot is a member of a volume group snapshot, and it + // MUST NOT be deleted as a stand alone snapshot, then the SP + // MUST provide the ID of the volume group snapshot in this field. + // If provided, CO MUST use this field in subsequent volume group + // snapshot operations to indicate that this snapshot is part of the + // specified group snapshot. + // If not provided, CO SHALL treat the snapshot as independent, + // and SP SHALL allow it to be deleted separately. + // If this message is inside a VolumeGroupSnapshot message, the value + // MUST be the same as the group_snapshot_id in that message. + GroupSnapshotId string +} + +func (b0 Snapshot_builder) Build() *Snapshot { + m0 := &Snapshot{} + b, x := &b0, m0 + _, _ = b, x + x.SizeBytes = b.SizeBytes + x.SnapshotId = b.SnapshotId + x.SourceVolumeId = b.SourceVolumeId + x.CreationTime = b.CreationTime + x.ReadyToUse = b.ReadyToUse + x.GroupSnapshotId = b.GroupSnapshotId + return m0 } type DeleteSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the snapshot to be deleted. // This field is REQUIRED. SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` // Secrets required by plugin to complete snapshot deletion request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteSnapshotRequest) Reset() { *x = DeleteSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteSnapshotRequest) String() string { @@ -3432,7 +5065,7 @@ func (*DeleteSnapshotRequest) ProtoMessage() {} func (x *DeleteSnapshotRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3442,11 +5075,6 @@ func (x *DeleteSnapshotRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteSnapshotRequest.ProtoReflect.Descriptor instead. -func (*DeleteSnapshotRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{37} -} - func (x *DeleteSnapshotRequest) GetSnapshotId() string { if x != nil { return x.SnapshotId @@ -3461,19 +5089,46 @@ func (x *DeleteSnapshotRequest) GetSecrets() map[string]string { return nil } +func (x *DeleteSnapshotRequest) SetSnapshotId(v string) { + x.SnapshotId = v +} + +func (x *DeleteSnapshotRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +type DeleteSnapshotRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the snapshot to be deleted. + // This field is REQUIRED. + SnapshotId string + // Secrets required by plugin to complete snapshot deletion request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 DeleteSnapshotRequest_builder) Build() *DeleteSnapshotRequest { + m0 := &DeleteSnapshotRequest{} + b, x := &b0, m0 + _, _ = b, x + x.SnapshotId = b.SnapshotId + x.Secrets = b.Secrets + return m0 +} + type DeleteSnapshotResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteSnapshotResponse) Reset() { *x = DeleteSnapshotResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteSnapshotResponse) String() string { @@ -3484,7 +5139,7 @@ func (*DeleteSnapshotResponse) ProtoMessage() {} func (x *DeleteSnapshotResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3494,18 +5149,22 @@ func (x *DeleteSnapshotResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteSnapshotResponse.ProtoReflect.Descriptor instead. -func (*DeleteSnapshotResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{38} +type DeleteSnapshotResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 DeleteSnapshotResponse_builder) Build() *DeleteSnapshotResponse { + m0 := &DeleteSnapshotResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 } // List all snapshots on the storage system regardless of how they were // created. type ListSnapshotsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // If specified (non-zero value), the Plugin MUST NOT return more // entries than this number in the response. If the actual number of // entries is more than this number, the Plugin MUST set `next_token` @@ -3532,16 +5191,16 @@ type ListSnapshotsRequest struct { // Secrets required by plugin to complete ListSnapshot request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListSnapshotsRequest) Reset() { *x = ListSnapshotsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListSnapshotsRequest) String() string { @@ -3552,7 +5211,7 @@ func (*ListSnapshotsRequest) ProtoMessage() {} func (x *ListSnapshotsRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3562,11 +5221,6 @@ func (x *ListSnapshotsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListSnapshotsRequest.ProtoReflect.Descriptor instead. -func (*ListSnapshotsRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{39} -} - func (x *ListSnapshotsRequest) GetMaxEntries() int32 { if x != nil { return x.MaxEntries @@ -3602,11 +5256,72 @@ func (x *ListSnapshotsRequest) GetSecrets() map[string]string { return nil } -type ListSnapshotsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ListSnapshotsRequest) SetMaxEntries(v int32) { + x.MaxEntries = v +} + +func (x *ListSnapshotsRequest) SetStartingToken(v string) { + x.StartingToken = v +} + +func (x *ListSnapshotsRequest) SetSourceVolumeId(v string) { + x.SourceVolumeId = v +} + +func (x *ListSnapshotsRequest) SetSnapshotId(v string) { + x.SnapshotId = v +} + +func (x *ListSnapshotsRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} +type ListSnapshotsRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // If specified (non-zero value), the Plugin MUST NOT return more + // entries than this number in the response. If the actual number of + // entries is more than this number, the Plugin MUST set `next_token` + // in the response which can be used to get the next page of entries + // in the subsequent `ListSnapshots` call. This field is OPTIONAL. If + // not specified (zero value), it means there is no restriction on the + // number of entries that can be returned. + // The value of this field MUST NOT be negative. + MaxEntries int32 + // A token to specify where to start paginating. Set this field to + // `next_token` returned by a previous `ListSnapshots` call to get the + // next page of entries. This field is OPTIONAL. + // An empty string is equal to an unspecified field value. + StartingToken string + // Identity information for the source volume. This field is OPTIONAL. + // It can be used to list snapshots by volume. + SourceVolumeId string + // Identity information for a specific snapshot. This field is + // OPTIONAL. It can be used to list only a specific snapshot. + // ListSnapshots will return with current snapshot information + // and will not block if the snapshot is being processed after + // it is cut. + SnapshotId string + // Secrets required by plugin to complete ListSnapshot request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 ListSnapshotsRequest_builder) Build() *ListSnapshotsRequest { + m0 := &ListSnapshotsRequest{} + b, x := &b0, m0 + _, _ = b, x + x.MaxEntries = b.MaxEntries + x.StartingToken = b.StartingToken + x.SourceVolumeId = b.SourceVolumeId + x.SnapshotId = b.SnapshotId + x.Secrets = b.Secrets + return m0 +} + +type ListSnapshotsResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` Entries []*ListSnapshotsResponse_Entry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` // This token allows you to get the next page of entries for // `ListSnapshots` request. If the number of entries is larger than @@ -3614,16 +5329,16 @@ type ListSnapshotsResponse struct { // `starting_token` field in the next `ListSnapshots` request. This // field is OPTIONAL. // An empty string is equal to an unspecified field value. - NextToken string `protobuf:"bytes,2,opt,name=next_token,json=nextToken,proto3" json:"next_token,omitempty"` + NextToken string `protobuf:"bytes,2,opt,name=next_token,json=nextToken,proto3" json:"next_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListSnapshotsResponse) Reset() { *x = ListSnapshotsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListSnapshotsResponse) String() string { @@ -3634,7 +5349,7 @@ func (*ListSnapshotsResponse) ProtoMessage() {} func (x *ListSnapshotsResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3644,11 +5359,6 @@ func (x *ListSnapshotsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListSnapshotsResponse.ProtoReflect.Descriptor instead. -func (*ListSnapshotsResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{40} -} - func (x *ListSnapshotsResponse) GetEntries() []*ListSnapshotsResponse_Entry { if x != nil { return x.Entries @@ -3663,11 +5373,38 @@ func (x *ListSnapshotsResponse) GetNextToken() string { return "" } -type ControllerExpandVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ListSnapshotsResponse) SetEntries(v []*ListSnapshotsResponse_Entry) { + x.Entries = v +} + +func (x *ListSnapshotsResponse) SetNextToken(v string) { + x.NextToken = v +} + +type ListSnapshotsResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Entries []*ListSnapshotsResponse_Entry + // This token allows you to get the next page of entries for + // `ListSnapshots` request. If the number of entries is larger than + // `max_entries`, use the `next_token` as a value for the + // `starting_token` field in the next `ListSnapshots` request. This + // field is OPTIONAL. + // An empty string is equal to an unspecified field value. + NextToken string +} + +func (b0 ListSnapshotsResponse_builder) Build() *ListSnapshotsResponse { + m0 := &ListSnapshotsResponse{} + b, x := &b0, m0 + _, _ = b, x + x.Entries = b.Entries + x.NextToken = b.NextToken + return m0 +} +type ControllerExpandVolumeRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume to expand. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // This allows CO to specify the capacity requirements of the volume @@ -3675,7 +5412,7 @@ type ControllerExpandVolumeRequest struct { CapacityRange *CapacityRange `protobuf:"bytes,2,opt,name=capacity_range,json=capacityRange,proto3" json:"capacity_range,omitempty"` // Secrets required by the plugin for expanding the volume. // This field is OPTIONAL. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Volume capability describing how the CO intends to use this volume. // This allows SP to determine if volume is being used as a block // device or mounted file system. For example - if volume is @@ -3684,15 +5421,15 @@ type ControllerExpandVolumeRequest struct { // to skip invocation of NodeExpandVolume on the node by the CO. // This is an OPTIONAL field. VolumeCapability *VolumeCapability `protobuf:"bytes,4,opt,name=volume_capability,json=volumeCapability,proto3" json:"volume_capability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerExpandVolumeRequest) Reset() { *x = ControllerExpandVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerExpandVolumeRequest) String() string { @@ -3703,7 +5440,7 @@ func (*ControllerExpandVolumeRequest) ProtoMessage() {} func (x *ControllerExpandVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[41] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3713,11 +5450,6 @@ func (x *ControllerExpandVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerExpandVolumeRequest.ProtoReflect.Descriptor instead. -func (*ControllerExpandVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{41} -} - func (x *ControllerExpandVolumeRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -3746,26 +5478,93 @@ func (x *ControllerExpandVolumeRequest) GetVolumeCapability() *VolumeCapability return nil } -type ControllerExpandVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ControllerExpandVolumeRequest) SetVolumeId(v string) { + x.VolumeId = v +} +func (x *ControllerExpandVolumeRequest) SetCapacityRange(v *CapacityRange) { + x.CapacityRange = v +} + +func (x *ControllerExpandVolumeRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +func (x *ControllerExpandVolumeRequest) SetVolumeCapability(v *VolumeCapability) { + x.VolumeCapability = v +} + +func (x *ControllerExpandVolumeRequest) HasCapacityRange() bool { + if x == nil { + return false + } + return x.CapacityRange != nil +} + +func (x *ControllerExpandVolumeRequest) HasVolumeCapability() bool { + if x == nil { + return false + } + return x.VolumeCapability != nil +} + +func (x *ControllerExpandVolumeRequest) ClearCapacityRange() { + x.CapacityRange = nil +} + +func (x *ControllerExpandVolumeRequest) ClearVolumeCapability() { + x.VolumeCapability = nil +} + +type ControllerExpandVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to expand. This field is REQUIRED. + VolumeId string + // This allows CO to specify the capacity requirements of the volume + // after expansion. This field is REQUIRED. + CapacityRange *CapacityRange + // Secrets required by the plugin for expanding the volume. + // This field is OPTIONAL. + Secrets map[string]string + // Volume capability describing how the CO intends to use this volume. + // This allows SP to determine if volume is being used as a block + // device or mounted file system. For example - if volume is + // being used as a block device - the SP MAY set + // node_expansion_required to false in ControllerExpandVolumeResponse + // to skip invocation of NodeExpandVolume on the node by the CO. + // This is an OPTIONAL field. + VolumeCapability *VolumeCapability +} + +func (b0 ControllerExpandVolumeRequest_builder) Build() *ControllerExpandVolumeRequest { + m0 := &ControllerExpandVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.CapacityRange = b.CapacityRange + x.Secrets = b.Secrets + x.VolumeCapability = b.VolumeCapability + return m0 +} + +type ControllerExpandVolumeResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // Capacity of volume after expansion. This field is REQUIRED. CapacityBytes int64 `protobuf:"varint,1,opt,name=capacity_bytes,json=capacityBytes,proto3" json:"capacity_bytes,omitempty"` // Whether node expansion is required for the volume. When true // the CO MUST make NodeExpandVolume RPC call on the node. This field // is REQUIRED. NodeExpansionRequired bool `protobuf:"varint,2,opt,name=node_expansion_required,json=nodeExpansionRequired,proto3" json:"node_expansion_required,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerExpandVolumeResponse) Reset() { *x = ControllerExpandVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerExpandVolumeResponse) String() string { @@ -3776,7 +5575,7 @@ func (*ControllerExpandVolumeResponse) ProtoMessage() {} func (x *ControllerExpandVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[42] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3786,11 +5585,6 @@ func (x *ControllerExpandVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerExpandVolumeResponse.ProtoReflect.Descriptor instead. -func (*ControllerExpandVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{42} -} - func (x *ControllerExpandVolumeResponse) GetCapacityBytes() int64 { if x != nil { return x.CapacityBytes @@ -3805,11 +5599,36 @@ func (x *ControllerExpandVolumeResponse) GetNodeExpansionRequired() bool { return false } -type NodeStageVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ControllerExpandVolumeResponse) SetCapacityBytes(v int64) { + x.CapacityBytes = v +} + +func (x *ControllerExpandVolumeResponse) SetNodeExpansionRequired(v bool) { + x.NodeExpansionRequired = v +} + +type ControllerExpandVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Capacity of volume after expansion. This field is REQUIRED. + CapacityBytes int64 + // Whether node expansion is required for the volume. When true + // the CO MUST make NodeExpandVolume RPC call on the node. This field + // is REQUIRED. + NodeExpansionRequired bool +} + +func (b0 ControllerExpandVolumeResponse_builder) Build() *ControllerExpandVolumeResponse { + m0 := &ControllerExpandVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + x.CapacityBytes = b.CapacityBytes + x.NodeExpansionRequired = b.NodeExpansionRequired + return m0 +} +type NodeStageVolumeRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume to publish. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The CO SHALL set this field to the value returned by @@ -3817,7 +5636,7 @@ type NodeStageVolumeRequest struct { // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be // left unset if the corresponding Controller Plugin does not have // this capability. This is an OPTIONAL field. - PublishContext map[string]string `protobuf:"bytes,2,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PublishContext map[string]string `protobuf:"bytes,2,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The path to which the volume MAY be staged. It MUST be an // absolute path in the root filesystem of the process serving this // request, and MUST be a directory. The CO SHALL ensure that there @@ -3840,21 +5659,21 @@ type NodeStageVolumeRequest struct { // Secrets required by plugin to complete node stage volume request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Volume context as returned by SP in // CreateVolumeResponse.Volume.volume_context. // This field is OPTIONAL and MUST match the volume_context of the // volume identified by `volume_id`. - VolumeContext map[string]string `protobuf:"bytes,6,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeContext map[string]string `protobuf:"bytes,6,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeStageVolumeRequest) Reset() { *x = NodeStageVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeStageVolumeRequest) String() string { @@ -3865,7 +5684,7 @@ func (*NodeStageVolumeRequest) ProtoMessage() {} func (x *NodeStageVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3875,11 +5694,6 @@ func (x *NodeStageVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeStageVolumeRequest.ProtoReflect.Descriptor instead. -func (*NodeStageVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{43} -} - func (x *NodeStageVolumeRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -3922,19 +5736,106 @@ func (x *NodeStageVolumeRequest) GetVolumeContext() map[string]string { return nil } +func (x *NodeStageVolumeRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +func (x *NodeStageVolumeRequest) SetPublishContext(v map[string]string) { + x.PublishContext = v +} + +func (x *NodeStageVolumeRequest) SetStagingTargetPath(v string) { + x.StagingTargetPath = v +} + +func (x *NodeStageVolumeRequest) SetVolumeCapability(v *VolumeCapability) { + x.VolumeCapability = v +} + +func (x *NodeStageVolumeRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +func (x *NodeStageVolumeRequest) SetVolumeContext(v map[string]string) { + x.VolumeContext = v +} + +func (x *NodeStageVolumeRequest) HasVolumeCapability() bool { + if x == nil { + return false + } + return x.VolumeCapability != nil +} + +func (x *NodeStageVolumeRequest) ClearVolumeCapability() { + x.VolumeCapability = nil +} + +type NodeStageVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to publish. This field is REQUIRED. + VolumeId string + // The CO SHALL set this field to the value returned by + // `ControllerPublishVolume` if the corresponding Controller Plugin + // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be + // left unset if the corresponding Controller Plugin does not have + // this capability. This is an OPTIONAL field. + PublishContext map[string]string + // The path to which the volume MAY be staged. It MUST be an + // absolute path in the root filesystem of the process serving this + // request, and MUST be a directory. The CO SHALL ensure that there + // is only one `staging_target_path` per volume. The CO SHALL ensure + // that the path is directory and that the process serving the + // request has `read` and `write` permission to that directory. The + // CO SHALL be responsible for creating the directory if it does not + // exist. + // This is a REQUIRED field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + StagingTargetPath string + // Volume capability describing how the CO intends to use this volume. + // SP MUST ensure the CO can use the staged volume as described. + // Otherwise SP MUST return the appropriate gRPC error code. + // This is a REQUIRED field. + VolumeCapability *VolumeCapability + // Secrets required by plugin to complete node stage volume request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string + // Volume context as returned by SP in + // CreateVolumeResponse.Volume.volume_context. + // This field is OPTIONAL and MUST match the volume_context of the + // volume identified by `volume_id`. + VolumeContext map[string]string +} + +func (b0 NodeStageVolumeRequest_builder) Build() *NodeStageVolumeRequest { + m0 := &NodeStageVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.PublishContext = b.PublishContext + x.StagingTargetPath = b.StagingTargetPath + x.VolumeCapability = b.VolumeCapability + x.Secrets = b.Secrets + x.VolumeContext = b.VolumeContext + return m0 +} + type NodeStageVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeStageVolumeResponse) Reset() { *x = NodeStageVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeStageVolumeResponse) String() string { @@ -3945,7 +5846,7 @@ func (*NodeStageVolumeResponse) ProtoMessage() {} func (x *NodeStageVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3955,16 +5856,20 @@ func (x *NodeStageVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeStageVolumeResponse.ProtoReflect.Descriptor instead. -func (*NodeStageVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{44} +type NodeStageVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + } -type NodeUnstageVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (b0 NodeStageVolumeResponse_builder) Build() *NodeStageVolumeResponse { + m0 := &NodeStageVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} +type NodeUnstageVolumeRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The path at which the volume was staged. It MUST be an absolute @@ -3975,15 +5880,15 @@ type NodeUnstageVolumeRequest struct { // system/filesystem, but, at a minimum, SP MUST accept a max path // length of at least 128 bytes. StagingTargetPath string `protobuf:"bytes,2,opt,name=staging_target_path,json=stagingTargetPath,proto3" json:"staging_target_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeUnstageVolumeRequest) Reset() { *x = NodeUnstageVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeUnstageVolumeRequest) String() string { @@ -3994,7 +5899,7 @@ func (*NodeUnstageVolumeRequest) ProtoMessage() {} func (x *NodeUnstageVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[45] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4004,11 +5909,6 @@ func (x *NodeUnstageVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeUnstageVolumeRequest.ProtoReflect.Descriptor instead. -func (*NodeUnstageVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{45} -} - func (x *NodeUnstageVolumeRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -4023,19 +5923,49 @@ func (x *NodeUnstageVolumeRequest) GetStagingTargetPath() string { return "" } +func (x *NodeUnstageVolumeRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +func (x *NodeUnstageVolumeRequest) SetStagingTargetPath(v string) { + x.StagingTargetPath = v +} + +type NodeUnstageVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume. This field is REQUIRED. + VolumeId string + // The path at which the volume was staged. It MUST be an absolute + // path in the root filesystem of the process serving this request. + // This is a REQUIRED field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + StagingTargetPath string +} + +func (b0 NodeUnstageVolumeRequest_builder) Build() *NodeUnstageVolumeRequest { + m0 := &NodeUnstageVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.StagingTargetPath = b.StagingTargetPath + return m0 +} + type NodeUnstageVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeUnstageVolumeResponse) Reset() { *x = NodeUnstageVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeUnstageVolumeResponse) String() string { @@ -4046,7 +5976,7 @@ func (*NodeUnstageVolumeResponse) ProtoMessage() {} func (x *NodeUnstageVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[46] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4056,16 +5986,20 @@ func (x *NodeUnstageVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeUnstageVolumeResponse.ProtoReflect.Descriptor instead. -func (*NodeUnstageVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{46} +type NodeUnstageVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + } -type NodePublishVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (b0 NodeUnstageVolumeResponse_builder) Build() *NodeUnstageVolumeResponse { + m0 := &NodeUnstageVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} +type NodePublishVolumeRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume to publish. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The CO SHALL set this field to the value returned by @@ -4073,7 +6007,7 @@ type NodePublishVolumeRequest struct { // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be // left unset if the corresponding Controller Plugin does not have // this capability. This is an OPTIONAL field. - PublishContext map[string]string `protobuf:"bytes,2,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PublishContext map[string]string `protobuf:"bytes,2,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The path to which the volume was staged by `NodeStageVolume`. // It MUST be an absolute path in the root filesystem of the process // serving this request. @@ -4113,21 +6047,21 @@ type NodePublishVolumeRequest struct { // Secrets required by plugin to complete node publish volume request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,7,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,7,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Volume context as returned by SP in // CreateVolumeResponse.Volume.volume_context. // This field is OPTIONAL and MUST match the volume_context of the // volume identified by `volume_id`. - VolumeContext map[string]string `protobuf:"bytes,8,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeContext map[string]string `protobuf:"bytes,8,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodePublishVolumeRequest) Reset() { *x = NodePublishVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodePublishVolumeRequest) String() string { @@ -4138,7 +6072,7 @@ func (*NodePublishVolumeRequest) ProtoMessage() {} func (x *NodePublishVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[47] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4148,11 +6082,6 @@ func (x *NodePublishVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodePublishVolumeRequest.ProtoReflect.Descriptor instead. -func (*NodePublishVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{47} -} - func (x *NodePublishVolumeRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -4209,19 +6138,133 @@ func (x *NodePublishVolumeRequest) GetVolumeContext() map[string]string { return nil } +func (x *NodePublishVolumeRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +func (x *NodePublishVolumeRequest) SetPublishContext(v map[string]string) { + x.PublishContext = v +} + +func (x *NodePublishVolumeRequest) SetStagingTargetPath(v string) { + x.StagingTargetPath = v +} + +func (x *NodePublishVolumeRequest) SetTargetPath(v string) { + x.TargetPath = v +} + +func (x *NodePublishVolumeRequest) SetVolumeCapability(v *VolumeCapability) { + x.VolumeCapability = v +} + +func (x *NodePublishVolumeRequest) SetReadonly(v bool) { + x.Readonly = v +} + +func (x *NodePublishVolumeRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +func (x *NodePublishVolumeRequest) SetVolumeContext(v map[string]string) { + x.VolumeContext = v +} + +func (x *NodePublishVolumeRequest) HasVolumeCapability() bool { + if x == nil { + return false + } + return x.VolumeCapability != nil +} + +func (x *NodePublishVolumeRequest) ClearVolumeCapability() { + x.VolumeCapability = nil +} + +type NodePublishVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to publish. This field is REQUIRED. + VolumeId string + // The CO SHALL set this field to the value returned by + // `ControllerPublishVolume` if the corresponding Controller Plugin + // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be + // left unset if the corresponding Controller Plugin does not have + // this capability. This is an OPTIONAL field. + PublishContext map[string]string + // The path to which the volume was staged by `NodeStageVolume`. + // It MUST be an absolute path in the root filesystem of the process + // serving this request. + // It MUST be set if the Node Plugin implements the + // `STAGE_UNSTAGE_VOLUME` node capability. + // This is an OPTIONAL field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + StagingTargetPath string + // The path to which the volume will be published. It MUST be an + // absolute path in the root filesystem of the process serving this + // request. The CO SHALL ensure uniqueness of target_path per volume. + // The CO SHALL ensure that the parent directory of this path exists + // and that the process serving the request has `read` and `write` + // permissions to that parent directory. + // For volumes with an access type of block, the SP SHALL place the + // block device at target_path. + // For volumes with an access type of mount, the SP SHALL place the + // mounted directory at target_path. + // Creation of target_path is the responsibility of the SP. + // This is a REQUIRED field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + TargetPath string + // Volume capability describing how the CO intends to use this volume. + // SP MUST ensure the CO can use the published volume as described. + // Otherwise SP MUST return the appropriate gRPC error code. + // This is a REQUIRED field. + VolumeCapability *VolumeCapability + // Indicates SP MUST publish the volume in readonly mode. + // This field is REQUIRED. + Readonly bool + // Secrets required by plugin to complete node publish volume request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string + // Volume context as returned by SP in + // CreateVolumeResponse.Volume.volume_context. + // This field is OPTIONAL and MUST match the volume_context of the + // volume identified by `volume_id`. + VolumeContext map[string]string +} + +func (b0 NodePublishVolumeRequest_builder) Build() *NodePublishVolumeRequest { + m0 := &NodePublishVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.PublishContext = b.PublishContext + x.StagingTargetPath = b.StagingTargetPath + x.TargetPath = b.TargetPath + x.VolumeCapability = b.VolumeCapability + x.Readonly = b.Readonly + x.Secrets = b.Secrets + x.VolumeContext = b.VolumeContext + return m0 +} + type NodePublishVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodePublishVolumeResponse) Reset() { *x = NodePublishVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodePublishVolumeResponse) String() string { @@ -4232,7 +6275,7 @@ func (*NodePublishVolumeResponse) ProtoMessage() {} func (x *NodePublishVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[48] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4242,16 +6285,20 @@ func (x *NodePublishVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodePublishVolumeResponse.ProtoReflect.Descriptor instead. -func (*NodePublishVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{48} +type NodePublishVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + } -type NodeUnpublishVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (b0 NodePublishVolumeResponse_builder) Build() *NodePublishVolumeResponse { + m0 := &NodePublishVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} +type NodeUnpublishVolumeRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The path at which the volume was published. It MUST be an absolute @@ -4262,16 +6309,16 @@ type NodeUnpublishVolumeRequest struct { // SP SHOULD support the maximum path length allowed by the operating // system/filesystem, but, at a minimum, SP MUST accept a max path // length of at least 128 bytes. - TargetPath string `protobuf:"bytes,2,opt,name=target_path,json=targetPath,proto3" json:"target_path,omitempty"` + TargetPath string `protobuf:"bytes,2,opt,name=target_path,json=targetPath,proto3" json:"target_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeUnpublishVolumeRequest) Reset() { *x = NodeUnpublishVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeUnpublishVolumeRequest) String() string { @@ -4282,7 +6329,7 @@ func (*NodeUnpublishVolumeRequest) ProtoMessage() {} func (x *NodeUnpublishVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[49] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4292,11 +6339,6 @@ func (x *NodeUnpublishVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeUnpublishVolumeRequest.ProtoReflect.Descriptor instead. -func (*NodeUnpublishVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{49} -} - func (x *NodeUnpublishVolumeRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -4311,19 +6353,50 @@ func (x *NodeUnpublishVolumeRequest) GetTargetPath() string { return "" } +func (x *NodeUnpublishVolumeRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +func (x *NodeUnpublishVolumeRequest) SetTargetPath(v string) { + x.TargetPath = v +} + +type NodeUnpublishVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume. This field is REQUIRED. + VolumeId string + // The path at which the volume was published. It MUST be an absolute + // path in the root filesystem of the process serving this request. + // The SP MUST delete the file or directory it created at this path. + // This is a REQUIRED field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + TargetPath string +} + +func (b0 NodeUnpublishVolumeRequest_builder) Build() *NodeUnpublishVolumeRequest { + m0 := &NodeUnpublishVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.TargetPath = b.TargetPath + return m0 +} + type NodeUnpublishVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeUnpublishVolumeResponse) Reset() { *x = NodeUnpublishVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeUnpublishVolumeResponse) String() string { @@ -4334,7 +6407,7 @@ func (*NodeUnpublishVolumeResponse) ProtoMessage() {} func (x *NodeUnpublishVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[50] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4344,16 +6417,20 @@ func (x *NodeUnpublishVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeUnpublishVolumeResponse.ProtoReflect.Descriptor instead. -func (*NodeUnpublishVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{50} +type NodeUnpublishVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + } -type NodeGetVolumeStatsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (b0 NodeUnpublishVolumeResponse_builder) Build() *NodeUnpublishVolumeResponse { + m0 := &NodeUnpublishVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} +type NodeGetVolumeStatsRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // It can be any valid path where volume was previously @@ -4376,15 +6453,15 @@ type NodeGetVolumeStatsRequest struct { // system/filesystem, but, at a minimum, SP MUST accept a max path // length of at least 128 bytes. StagingTargetPath string `protobuf:"bytes,3,opt,name=staging_target_path,json=stagingTargetPath,proto3" json:"staging_target_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetVolumeStatsRequest) Reset() { *x = NodeGetVolumeStatsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetVolumeStatsRequest) String() string { @@ -4395,7 +6472,7 @@ func (*NodeGetVolumeStatsRequest) ProtoMessage() {} func (x *NodeGetVolumeStatsRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[51] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4405,11 +6482,6 @@ func (x *NodeGetVolumeStatsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeGetVolumeStatsRequest.ProtoReflect.Descriptor instead. -func (*NodeGetVolumeStatsRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{51} -} - func (x *NodeGetVolumeStatsRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -4431,11 +6503,57 @@ func (x *NodeGetVolumeStatsRequest) GetStagingTargetPath() string { return "" } -type NodeGetVolumeStatsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *NodeGetVolumeStatsRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +func (x *NodeGetVolumeStatsRequest) SetVolumePath(v string) { + x.VolumePath = v +} + +func (x *NodeGetVolumeStatsRequest) SetStagingTargetPath(v string) { + x.StagingTargetPath = v +} + +type NodeGetVolumeStatsRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume. This field is REQUIRED. + VolumeId string + // It can be any valid path where volume was previously + // staged or published. + // It MUST be an absolute path in the root filesystem of + // the process serving this request. + // This is a REQUIRED field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + VolumePath string + // The path where the volume is staged, if the plugin has the + // STAGE_UNSTAGE_VOLUME capability, otherwise empty. + // If not empty, it MUST be an absolute path in the root + // filesystem of the process serving this request. + // This field is OPTIONAL. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + StagingTargetPath string +} +func (b0 NodeGetVolumeStatsRequest_builder) Build() *NodeGetVolumeStatsRequest { + m0 := &NodeGetVolumeStatsRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.VolumePath = b.VolumePath + x.StagingTargetPath = b.StagingTargetPath + return m0 +} + +type NodeGetVolumeStatsResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // This field is OPTIONAL. Usage []*VolumeUsage `protobuf:"bytes,1,rep,name=usage,proto3" json:"usage,omitempty"` // Information about the current condition of the volume. @@ -4443,15 +6561,15 @@ type NodeGetVolumeStatsResponse struct { // This field MUST be specified if the VOLUME_CONDITION node // capability is supported. VolumeCondition *VolumeCondition `protobuf:"bytes,2,opt,name=volume_condition,json=volumeCondition,proto3" json:"volume_condition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetVolumeStatsResponse) Reset() { *x = NodeGetVolumeStatsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetVolumeStatsResponse) String() string { @@ -4462,7 +6580,7 @@ func (*NodeGetVolumeStatsResponse) ProtoMessage() {} func (x *NodeGetVolumeStatsResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[52] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4472,11 +6590,6 @@ func (x *NodeGetVolumeStatsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeGetVolumeStatsResponse.ProtoReflect.Descriptor instead. -func (*NodeGetVolumeStatsResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{52} -} - func (x *NodeGetVolumeStatsResponse) GetUsage() []*VolumeUsage { if x != nil { return x.Usage @@ -4491,11 +6604,48 @@ func (x *NodeGetVolumeStatsResponse) GetVolumeCondition() *VolumeCondition { return nil } -type VolumeUsage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *NodeGetVolumeStatsResponse) SetUsage(v []*VolumeUsage) { + x.Usage = v +} + +func (x *NodeGetVolumeStatsResponse) SetVolumeCondition(v *VolumeCondition) { + x.VolumeCondition = v +} + +func (x *NodeGetVolumeStatsResponse) HasVolumeCondition() bool { + if x == nil { + return false + } + return x.VolumeCondition != nil +} + +func (x *NodeGetVolumeStatsResponse) ClearVolumeCondition() { + x.VolumeCondition = nil +} + +type NodeGetVolumeStatsResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This field is OPTIONAL. + Usage []*VolumeUsage + // Information about the current condition of the volume. + // This field is OPTIONAL. + // This field MUST be specified if the VOLUME_CONDITION node + // capability is supported. + VolumeCondition *VolumeCondition +} +func (b0 NodeGetVolumeStatsResponse_builder) Build() *NodeGetVolumeStatsResponse { + m0 := &NodeGetVolumeStatsResponse{} + b, x := &b0, m0 + _, _ = b, x + x.Usage = b.Usage + x.VolumeCondition = b.VolumeCondition + return m0 +} + +type VolumeUsage struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The available capacity in specified Unit. This field is OPTIONAL. // The value of this field MUST NOT be negative. Available int64 `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"` @@ -4506,16 +6656,16 @@ type VolumeUsage struct { // The value of this field MUST NOT be negative. Used int64 `protobuf:"varint,3,opt,name=used,proto3" json:"used,omitempty"` // Units by which values are measured. This field is REQUIRED. - Unit VolumeUsage_Unit `protobuf:"varint,4,opt,name=unit,proto3,enum=csi.v1.VolumeUsage_Unit" json:"unit,omitempty"` + Unit VolumeUsage_Unit `protobuf:"varint,4,opt,name=unit,proto3,enum=csi.v1.VolumeUsage_Unit" json:"unit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeUsage) Reset() { *x = VolumeUsage{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeUsage) String() string { @@ -4526,7 +6676,7 @@ func (*VolumeUsage) ProtoMessage() {} func (x *VolumeUsage) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[53] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4536,11 +6686,6 @@ func (x *VolumeUsage) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeUsage.ProtoReflect.Descriptor instead. -func (*VolumeUsage) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{53} -} - func (x *VolumeUsage) GetAvailable() int64 { if x != nil { return x.Available @@ -4562,35 +6707,75 @@ func (x *VolumeUsage) GetUsed() int64 { return 0 } -func (x *VolumeUsage) GetUnit() VolumeUsage_Unit { - if x != nil { - return x.Unit - } - return VolumeUsage_UNKNOWN +func (x *VolumeUsage) GetUnit() VolumeUsage_Unit { + if x != nil { + return x.Unit + } + return VolumeUsage_UNKNOWN +} + +func (x *VolumeUsage) SetAvailable(v int64) { + x.Available = v +} + +func (x *VolumeUsage) SetTotal(v int64) { + x.Total = v +} + +func (x *VolumeUsage) SetUsed(v int64) { + x.Used = v +} + +func (x *VolumeUsage) SetUnit(v VolumeUsage_Unit) { + x.Unit = v +} + +type VolumeUsage_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The available capacity in specified Unit. This field is OPTIONAL. + // The value of this field MUST NOT be negative. + Available int64 + // The total capacity in specified Unit. This field is REQUIRED. + // The value of this field MUST NOT be negative. + Total int64 + // The used capacity in specified Unit. This field is OPTIONAL. + // The value of this field MUST NOT be negative. + Used int64 + // Units by which values are measured. This field is REQUIRED. + Unit VolumeUsage_Unit +} + +func (b0 VolumeUsage_builder) Build() *VolumeUsage { + m0 := &VolumeUsage{} + b, x := &b0, m0 + _, _ = b, x + x.Available = b.Available + x.Total = b.Total + x.Used = b.Used + x.Unit = b.Unit + return m0 } // VolumeCondition represents the current condition of a volume. type VolumeCondition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // Normal volumes are available for use and operating optimally. // An abnormal volume does not meet these criteria. // This field is REQUIRED. Abnormal bool `protobuf:"varint,1,opt,name=abnormal,proto3" json:"abnormal,omitempty"` // The message describing the condition of the volume. // This field is REQUIRED. - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeCondition) Reset() { *x = VolumeCondition{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeCondition) String() string { @@ -4601,7 +6786,7 @@ func (*VolumeCondition) ProtoMessage() {} func (x *VolumeCondition) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4611,11 +6796,6 @@ func (x *VolumeCondition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeCondition.ProtoReflect.Descriptor instead. -func (*VolumeCondition) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{54} -} - func (x *VolumeCondition) GetAbnormal() bool { if x != nil { return x.Abnormal @@ -4630,19 +6810,46 @@ func (x *VolumeCondition) GetMessage() string { return "" } +func (x *VolumeCondition) SetAbnormal(v bool) { + x.Abnormal = v +} + +func (x *VolumeCondition) SetMessage(v string) { + x.Message = v +} + +type VolumeCondition_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Normal volumes are available for use and operating optimally. + // An abnormal volume does not meet these criteria. + // This field is REQUIRED. + Abnormal bool + // The message describing the condition of the volume. + // This field is REQUIRED. + Message string +} + +func (b0 VolumeCondition_builder) Build() *VolumeCondition { + m0 := &VolumeCondition{} + b, x := &b0, m0 + _, _ = b, x + x.Abnormal = b.Abnormal + x.Message = b.Message + return m0 +} + type NodeGetCapabilitiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetCapabilitiesRequest) Reset() { *x = NodeGetCapabilitiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetCapabilitiesRequest) String() string { @@ -4653,7 +6860,7 @@ func (*NodeGetCapabilitiesRequest) ProtoMessage() {} func (x *NodeGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4663,28 +6870,32 @@ func (x *NodeGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeGetCapabilitiesRequest.ProtoReflect.Descriptor instead. -func (*NodeGetCapabilitiesRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{55} +type NodeGetCapabilitiesRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + } -type NodeGetCapabilitiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (b0 NodeGetCapabilitiesRequest_builder) Build() *NodeGetCapabilitiesRequest { + m0 := &NodeGetCapabilitiesRequest{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} +type NodeGetCapabilitiesResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // All the capabilities that the node service supports. This field // is OPTIONAL. - Capabilities []*NodeServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + Capabilities []*NodeServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetCapabilitiesResponse) Reset() { *x = NodeGetCapabilitiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetCapabilitiesResponse) String() string { @@ -4695,7 +6906,7 @@ func (*NodeGetCapabilitiesResponse) ProtoMessage() {} func (x *NodeGetCapabilitiesResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[56] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4705,11 +6916,6 @@ func (x *NodeGetCapabilitiesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeGetCapabilitiesResponse.ProtoReflect.Descriptor instead. -func (*NodeGetCapabilitiesResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{56} -} - func (x *NodeGetCapabilitiesResponse) GetCapabilities() []*NodeServiceCapability { if x != nil { return x.Capabilities @@ -4717,25 +6923,42 @@ func (x *NodeGetCapabilitiesResponse) GetCapabilities() []*NodeServiceCapability return nil } +func (x *NodeGetCapabilitiesResponse) SetCapabilities(v []*NodeServiceCapability) { + x.Capabilities = v +} + +type NodeGetCapabilitiesResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // All the capabilities that the node service supports. This field + // is OPTIONAL. + Capabilities []*NodeServiceCapability +} + +func (b0 NodeGetCapabilitiesResponse_builder) Build() *NodeGetCapabilitiesResponse { + m0 := &NodeGetCapabilitiesResponse{} + b, x := &b0, m0 + _, _ = b, x + x.Capabilities = b.Capabilities + return m0 +} + // Specifies a capability of the node service. type NodeServiceCapability struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Type: + state protoimpl.MessageState `protogen:"hybrid.v1"` + // Types that are valid to be assigned to Type: // // *NodeServiceCapability_Rpc - Type isNodeServiceCapability_Type `protobuf_oneof:"type"` + Type isNodeServiceCapability_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeServiceCapability) Reset() { *x = NodeServiceCapability{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeServiceCapability) String() string { @@ -4746,7 +6969,7 @@ func (*NodeServiceCapability) ProtoMessage() {} func (x *NodeServiceCapability) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4756,25 +6979,99 @@ func (x *NodeServiceCapability) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeServiceCapability.ProtoReflect.Descriptor instead. -func (*NodeServiceCapability) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{57} -} - -func (m *NodeServiceCapability) GetType() isNodeServiceCapability_Type { - if m != nil { - return m.Type +func (x *NodeServiceCapability) GetType() isNodeServiceCapability_Type { + if x != nil { + return x.Type } return nil } func (x *NodeServiceCapability) GetRpc() *NodeServiceCapability_RPC { - if x, ok := x.GetType().(*NodeServiceCapability_Rpc); ok { - return x.Rpc + if x != nil { + if x, ok := x.Type.(*NodeServiceCapability_Rpc); ok { + return x.Rpc + } } return nil } +func (x *NodeServiceCapability) SetRpc(v *NodeServiceCapability_RPC) { + if v == nil { + x.Type = nil + return + } + x.Type = &NodeServiceCapability_Rpc{v} +} + +func (x *NodeServiceCapability) HasType() bool { + if x == nil { + return false + } + return x.Type != nil +} + +func (x *NodeServiceCapability) HasRpc() bool { + if x == nil { + return false + } + _, ok := x.Type.(*NodeServiceCapability_Rpc) + return ok +} + +func (x *NodeServiceCapability) ClearType() { + x.Type = nil +} + +func (x *NodeServiceCapability) ClearRpc() { + if _, ok := x.Type.(*NodeServiceCapability_Rpc); ok { + x.Type = nil + } +} + +const NodeServiceCapability_Type_not_set_case case_NodeServiceCapability_Type = 0 +const NodeServiceCapability_Rpc_case case_NodeServiceCapability_Type = 1 + +func (x *NodeServiceCapability) WhichType() case_NodeServiceCapability_Type { + if x == nil { + return NodeServiceCapability_Type_not_set_case + } + switch x.Type.(type) { + case *NodeServiceCapability_Rpc: + return NodeServiceCapability_Rpc_case + default: + return NodeServiceCapability_Type_not_set_case + } +} + +type NodeServiceCapability_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Fields of oneof Type: + // RPC that the controller supports. + Rpc *NodeServiceCapability_RPC + // -- end of Type +} + +func (b0 NodeServiceCapability_builder) Build() *NodeServiceCapability { + m0 := &NodeServiceCapability{} + b, x := &b0, m0 + _, _ = b, x + if b.Rpc != nil { + x.Type = &NodeServiceCapability_Rpc{b.Rpc} + } + return m0 +} + +type case_NodeServiceCapability_Type protoreflect.FieldNumber + +func (x case_NodeServiceCapability_Type) String() string { + md := file_csi_proto_msgTypes[57].Descriptor() + if x == 0 { + return "not set" + } + return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x)) +} + type isNodeServiceCapability_Type interface { isNodeServiceCapability_Type() } @@ -4787,18 +7084,16 @@ type NodeServiceCapability_Rpc struct { func (*NodeServiceCapability_Rpc) isNodeServiceCapability_Type() {} type NodeGetInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetInfoRequest) Reset() { *x = NodeGetInfoRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetInfoRequest) String() string { @@ -4809,7 +7104,7 @@ func (*NodeGetInfoRequest) ProtoMessage() {} func (x *NodeGetInfoRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[58] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4819,16 +7114,20 @@ func (x *NodeGetInfoRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeGetInfoRequest.ProtoReflect.Descriptor instead. -func (*NodeGetInfoRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{58} +type NodeGetInfoRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 NodeGetInfoRequest_builder) Build() *NodeGetInfoRequest { + m0 := &NodeGetInfoRequest{} + b, x := &b0, m0 + _, _ = b, x + return m0 } type NodeGetInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // The identifier of the node as understood by the SP. // This field is REQUIRED. // This field MUST contain enough information to uniquely identify @@ -4868,15 +7167,15 @@ type NodeGetInfoResponse struct { // Indicates the node exists within the "region" "R1" and the "zone" // "Z2". AccessibleTopology *Topology `protobuf:"bytes,3,opt,name=accessible_topology,json=accessibleTopology,proto3" json:"accessible_topology,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeGetInfoResponse) Reset() { *x = NodeGetInfoResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeGetInfoResponse) String() string { @@ -4887,7 +7186,7 @@ func (*NodeGetInfoResponse) ProtoMessage() {} func (x *NodeGetInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[59] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4897,11 +7196,6 @@ func (x *NodeGetInfoResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeGetInfoResponse.ProtoReflect.Descriptor instead. -func (*NodeGetInfoResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{59} -} - func (x *NodeGetInfoResponse) GetNodeId() string { if x != nil { return x.NodeId @@ -4923,11 +7217,85 @@ func (x *NodeGetInfoResponse) GetAccessibleTopology() *Topology { return nil } -type NodeExpandVolumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *NodeGetInfoResponse) SetNodeId(v string) { + x.NodeId = v +} + +func (x *NodeGetInfoResponse) SetMaxVolumesPerNode(v int64) { + x.MaxVolumesPerNode = v +} + +func (x *NodeGetInfoResponse) SetAccessibleTopology(v *Topology) { + x.AccessibleTopology = v +} + +func (x *NodeGetInfoResponse) HasAccessibleTopology() bool { + if x == nil { + return false + } + return x.AccessibleTopology != nil +} + +func (x *NodeGetInfoResponse) ClearAccessibleTopology() { + x.AccessibleTopology = nil +} + +type NodeGetInfoResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The identifier of the node as understood by the SP. + // This field is REQUIRED. + // This field MUST contain enough information to uniquely identify + // this specific node vs all other nodes supported by this plugin. + // This field SHALL be used by the CO in subsequent calls, including + // `ControllerPublishVolume`, to refer to this node. + // The SP is NOT responsible for global uniqueness of node_id across + // multiple SPs. + // This field overrides the general CSI size limit. + // The size of this field SHALL NOT exceed 256 bytes. The general + // CSI size limit, 128 byte, is RECOMMENDED for best backwards + // compatibility. + NodeId string + // Maximum number of volumes that controller can publish to the node. + // If value is not set or zero CO SHALL decide how many volumes of + // this type can be published by the controller to the node. The + // plugin MUST NOT set negative values here. + // This field is OPTIONAL. + MaxVolumesPerNode int64 + // Specifies where (regions, zones, racks, etc.) the node is + // accessible from. + // A plugin that returns this field MUST also set the + // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability. + // COs MAY use this information along with the topology information + // returned in CreateVolumeResponse to ensure that a given volume is + // accessible from a given node when scheduling workloads. + // This field is OPTIONAL. If it is not specified, the CO MAY assume + // the node is not subject to any topological constraint, and MAY + // schedule workloads that reference any volume V, such that there are + // no topological constraints declared for V. + // + // Example 1: + // + // accessible_topology = + // {"region": "R1", "zone": "Z2"} + // + // Indicates the node exists within the "region" "R1" and the "zone" + // "Z2". + AccessibleTopology *Topology +} + +func (b0 NodeGetInfoResponse_builder) Build() *NodeGetInfoResponse { + m0 := &NodeGetInfoResponse{} + b, x := &b0, m0 + _, _ = b, x + x.NodeId = b.NodeId + x.MaxVolumesPerNode = b.MaxVolumesPerNode + x.AccessibleTopology = b.AccessibleTopology + return m0 +} +type NodeExpandVolumeRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the volume. This field is REQUIRED. VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` // The path on which volume is available. This field is REQUIRED. @@ -4966,16 +7334,16 @@ type NodeExpandVolumeRequest struct { // Secrets required by plugin to complete node expand volume request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,6,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,6,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeExpandVolumeRequest) Reset() { *x = NodeExpandVolumeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeExpandVolumeRequest) String() string { @@ -4986,7 +7354,7 @@ func (*NodeExpandVolumeRequest) ProtoMessage() {} func (x *NodeExpandVolumeRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[60] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4996,11 +7364,6 @@ func (x *NodeExpandVolumeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeExpandVolumeRequest.ProtoReflect.Descriptor instead. -func (*NodeExpandVolumeRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{60} -} - func (x *NodeExpandVolumeRequest) GetVolumeId() string { if x != nil { return x.VolumeId @@ -5036,29 +7399,129 @@ func (x *NodeExpandVolumeRequest) GetVolumeCapability() *VolumeCapability { return nil } -func (x *NodeExpandVolumeRequest) GetSecrets() map[string]string { - if x != nil { - return x.Secrets - } - return nil +func (x *NodeExpandVolumeRequest) GetSecrets() map[string]string { + if x != nil { + return x.Secrets + } + return nil +} + +func (x *NodeExpandVolumeRequest) SetVolumeId(v string) { + x.VolumeId = v +} + +func (x *NodeExpandVolumeRequest) SetVolumePath(v string) { + x.VolumePath = v +} + +func (x *NodeExpandVolumeRequest) SetCapacityRange(v *CapacityRange) { + x.CapacityRange = v +} + +func (x *NodeExpandVolumeRequest) SetStagingTargetPath(v string) { + x.StagingTargetPath = v +} + +func (x *NodeExpandVolumeRequest) SetVolumeCapability(v *VolumeCapability) { + x.VolumeCapability = v +} + +func (x *NodeExpandVolumeRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +func (x *NodeExpandVolumeRequest) HasCapacityRange() bool { + if x == nil { + return false + } + return x.CapacityRange != nil +} + +func (x *NodeExpandVolumeRequest) HasVolumeCapability() bool { + if x == nil { + return false + } + return x.VolumeCapability != nil +} + +func (x *NodeExpandVolumeRequest) ClearCapacityRange() { + x.CapacityRange = nil +} + +func (x *NodeExpandVolumeRequest) ClearVolumeCapability() { + x.VolumeCapability = nil +} + +type NodeExpandVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume. This field is REQUIRED. + VolumeId string + // The path on which volume is available. This field is REQUIRED. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + VolumePath string + // This allows CO to specify the capacity requirements of the volume + // after expansion. If capacity_range is omitted then a plugin MAY + // inspect the file system of the volume to determine the maximum + // capacity to which the volume can be expanded. In such cases a + // plugin MAY expand the volume to its maximum capacity. + // This field is OPTIONAL. + CapacityRange *CapacityRange + // The path where the volume is staged, if the plugin has the + // STAGE_UNSTAGE_VOLUME capability, otherwise empty. + // If not empty, it MUST be an absolute path in the root + // filesystem of the process serving this request. + // This field is OPTIONAL. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + StagingTargetPath string + // Volume capability describing how the CO intends to use this volume. + // This allows SP to determine if volume is being used as a block + // device or mounted file system. For example - if volume is being + // used as a block device the SP MAY choose to skip expanding the + // filesystem in NodeExpandVolume implementation but still perform + // rest of the housekeeping needed for expanding the volume. If + // volume_capability is omitted the SP MAY determine + // access_type from given volume_path for the volume and perform + // node expansion. This is an OPTIONAL field. + VolumeCapability *VolumeCapability + // Secrets required by plugin to complete node expand volume request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 NodeExpandVolumeRequest_builder) Build() *NodeExpandVolumeRequest { + m0 := &NodeExpandVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + x.VolumePath = b.VolumePath + x.CapacityRange = b.CapacityRange + x.StagingTargetPath = b.StagingTargetPath + x.VolumeCapability = b.VolumeCapability + x.Secrets = b.Secrets + return m0 } type NodeExpandVolumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // The capacity of the volume in bytes. This field is OPTIONAL. CapacityBytes int64 `protobuf:"varint,1,opt,name=capacity_bytes,json=capacityBytes,proto3" json:"capacity_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NodeExpandVolumeResponse) Reset() { *x = NodeExpandVolumeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeExpandVolumeResponse) String() string { @@ -5069,7 +7532,7 @@ func (*NodeExpandVolumeResponse) ProtoMessage() {} func (x *NodeExpandVolumeResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5079,11 +7542,6 @@ func (x *NodeExpandVolumeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeExpandVolumeResponse.ProtoReflect.Descriptor instead. -func (*NodeExpandVolumeResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{61} -} - func (x *NodeExpandVolumeResponse) GetCapacityBytes() int64 { if x != nil { return x.CapacityBytes @@ -5091,19 +7549,36 @@ func (x *NodeExpandVolumeResponse) GetCapacityBytes() int64 { return 0 } +func (x *NodeExpandVolumeResponse) SetCapacityBytes(v int64) { + x.CapacityBytes = v +} + +type NodeExpandVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The capacity of the volume in bytes. This field is OPTIONAL. + CapacityBytes int64 +} + +func (b0 NodeExpandVolumeResponse_builder) Build() *NodeExpandVolumeResponse { + m0 := &NodeExpandVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + x.CapacityBytes = b.CapacityBytes + return m0 +} + type GroupControllerGetCapabilitiesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GroupControllerGetCapabilitiesRequest) Reset() { *x = GroupControllerGetCapabilitiesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupControllerGetCapabilitiesRequest) String() string { @@ -5114,7 +7589,7 @@ func (*GroupControllerGetCapabilitiesRequest) ProtoMessage() {} func (x *GroupControllerGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5124,28 +7599,32 @@ func (x *GroupControllerGetCapabilitiesRequest) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use GroupControllerGetCapabilitiesRequest.ProtoReflect.Descriptor instead. -func (*GroupControllerGetCapabilitiesRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{62} +type GroupControllerGetCapabilitiesRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + } -type GroupControllerGetCapabilitiesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (b0 GroupControllerGetCapabilitiesRequest_builder) Build() *GroupControllerGetCapabilitiesRequest { + m0 := &GroupControllerGetCapabilitiesRequest{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} +type GroupControllerGetCapabilitiesResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // All the capabilities that the group controller service supports. // This field is OPTIONAL. - Capabilities []*GroupControllerServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + Capabilities []*GroupControllerServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GroupControllerGetCapabilitiesResponse) Reset() { *x = GroupControllerGetCapabilitiesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupControllerGetCapabilitiesResponse) String() string { @@ -5156,7 +7635,7 @@ func (*GroupControllerGetCapabilitiesResponse) ProtoMessage() {} func (x *GroupControllerGetCapabilitiesResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[63] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5166,11 +7645,6 @@ func (x *GroupControllerGetCapabilitiesResponse) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use GroupControllerGetCapabilitiesResponse.ProtoReflect.Descriptor instead. -func (*GroupControllerGetCapabilitiesResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{63} -} - func (x *GroupControllerGetCapabilitiesResponse) GetCapabilities() []*GroupControllerServiceCapability { if x != nil { return x.Capabilities @@ -5178,25 +7652,42 @@ func (x *GroupControllerGetCapabilitiesResponse) GetCapabilities() []*GroupContr return nil } +func (x *GroupControllerGetCapabilitiesResponse) SetCapabilities(v []*GroupControllerServiceCapability) { + x.Capabilities = v +} + +type GroupControllerGetCapabilitiesResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // All the capabilities that the group controller service supports. + // This field is OPTIONAL. + Capabilities []*GroupControllerServiceCapability +} + +func (b0 GroupControllerGetCapabilitiesResponse_builder) Build() *GroupControllerGetCapabilitiesResponse { + m0 := &GroupControllerGetCapabilitiesResponse{} + b, x := &b0, m0 + _, _ = b, x + x.Capabilities = b.Capabilities + return m0 +} + // Specifies a capability of the group controller service. type GroupControllerServiceCapability struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Type: + state protoimpl.MessageState `protogen:"hybrid.v1"` + // Types that are valid to be assigned to Type: // // *GroupControllerServiceCapability_Rpc - Type isGroupControllerServiceCapability_Type `protobuf_oneof:"type"` + Type isGroupControllerServiceCapability_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GroupControllerServiceCapability) Reset() { *x = GroupControllerServiceCapability{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupControllerServiceCapability) String() string { @@ -5207,7 +7698,7 @@ func (*GroupControllerServiceCapability) ProtoMessage() {} func (x *GroupControllerServiceCapability) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[64] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5217,25 +7708,99 @@ func (x *GroupControllerServiceCapability) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GroupControllerServiceCapability.ProtoReflect.Descriptor instead. -func (*GroupControllerServiceCapability) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{64} -} - -func (m *GroupControllerServiceCapability) GetType() isGroupControllerServiceCapability_Type { - if m != nil { - return m.Type +func (x *GroupControllerServiceCapability) GetType() isGroupControllerServiceCapability_Type { + if x != nil { + return x.Type } return nil } func (x *GroupControllerServiceCapability) GetRpc() *GroupControllerServiceCapability_RPC { - if x, ok := x.GetType().(*GroupControllerServiceCapability_Rpc); ok { - return x.Rpc + if x != nil { + if x, ok := x.Type.(*GroupControllerServiceCapability_Rpc); ok { + return x.Rpc + } } return nil } +func (x *GroupControllerServiceCapability) SetRpc(v *GroupControllerServiceCapability_RPC) { + if v == nil { + x.Type = nil + return + } + x.Type = &GroupControllerServiceCapability_Rpc{v} +} + +func (x *GroupControllerServiceCapability) HasType() bool { + if x == nil { + return false + } + return x.Type != nil +} + +func (x *GroupControllerServiceCapability) HasRpc() bool { + if x == nil { + return false + } + _, ok := x.Type.(*GroupControllerServiceCapability_Rpc) + return ok +} + +func (x *GroupControllerServiceCapability) ClearType() { + x.Type = nil +} + +func (x *GroupControllerServiceCapability) ClearRpc() { + if _, ok := x.Type.(*GroupControllerServiceCapability_Rpc); ok { + x.Type = nil + } +} + +const GroupControllerServiceCapability_Type_not_set_case case_GroupControllerServiceCapability_Type = 0 +const GroupControllerServiceCapability_Rpc_case case_GroupControllerServiceCapability_Type = 1 + +func (x *GroupControllerServiceCapability) WhichType() case_GroupControllerServiceCapability_Type { + if x == nil { + return GroupControllerServiceCapability_Type_not_set_case + } + switch x.Type.(type) { + case *GroupControllerServiceCapability_Rpc: + return GroupControllerServiceCapability_Rpc_case + default: + return GroupControllerServiceCapability_Type_not_set_case + } +} + +type GroupControllerServiceCapability_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Fields of oneof Type: + // RPC that the controller supports. + Rpc *GroupControllerServiceCapability_RPC + // -- end of Type +} + +func (b0 GroupControllerServiceCapability_builder) Build() *GroupControllerServiceCapability { + m0 := &GroupControllerServiceCapability{} + b, x := &b0, m0 + _, _ = b, x + if b.Rpc != nil { + x.Type = &GroupControllerServiceCapability_Rpc{b.Rpc} + } + return m0 +} + +type case_GroupControllerServiceCapability_Type protoreflect.FieldNumber + +func (x case_GroupControllerServiceCapability_Type) String() string { + md := file_csi_proto_msgTypes[64].Descriptor() + if x == 0 { + return "not set" + } + return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x)) +} + type isGroupControllerServiceCapability_Type interface { isGroupControllerServiceCapability_Type() } @@ -5248,10 +7813,7 @@ type GroupControllerServiceCapability_Rpc struct { func (*GroupControllerServiceCapability_Rpc) isGroupControllerServiceCapability_Type() {} type CreateVolumeGroupSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // The suggested name for the group snapshot. This field is REQUIRED // for idempotency. // Any Unicode string that conforms to the length limit is allowed @@ -5268,20 +7830,20 @@ type CreateVolumeGroupSnapshotRequest struct { // section on how to use this field. // The secrets provided in this field SHOULD be the same for // all group snapshot operations on the same group snapshot. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Plugin specific parameters passed in as opaque key-value pairs. // This field is OPTIONAL. The Plugin is responsible for parsing and // validating these parameters. COs will treat these as opaque. - Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateVolumeGroupSnapshotRequest) Reset() { *x = CreateVolumeGroupSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateVolumeGroupSnapshotRequest) String() string { @@ -5292,7 +7854,7 @@ func (*CreateVolumeGroupSnapshotRequest) ProtoMessage() {} func (x *CreateVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[65] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5302,11 +7864,6 @@ func (x *CreateVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateVolumeGroupSnapshotRequest.ProtoReflect.Descriptor instead. -func (*CreateVolumeGroupSnapshotRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{65} -} - func (x *CreateVolumeGroupSnapshotRequest) GetName() string { if x != nil { return x.Name @@ -5335,23 +7892,73 @@ func (x *CreateVolumeGroupSnapshotRequest) GetParameters() map[string]string { return nil } -type CreateVolumeGroupSnapshotResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *CreateVolumeGroupSnapshotRequest) SetName(v string) { + x.Name = v +} + +func (x *CreateVolumeGroupSnapshotRequest) SetSourceVolumeIds(v []string) { + x.SourceVolumeIds = v +} + +func (x *CreateVolumeGroupSnapshotRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +func (x *CreateVolumeGroupSnapshotRequest) SetParameters(v map[string]string) { + x.Parameters = v +} + +type CreateVolumeGroupSnapshotRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The suggested name for the group snapshot. This field is REQUIRED + // for idempotency. + // Any Unicode string that conforms to the length limit is allowed + // except those containing the following banned characters: + // U+0000-U+0008, U+000B, U+000C, U+000E-U+001F, U+007F-U+009F. + // (These are control characters other than commonly used whitespace.) + Name string + // volume IDs of the source volumes to be snapshotted together. + // This field is REQUIRED. + SourceVolumeIds []string + // Secrets required by plugin to complete + // ControllerCreateVolumeGroupSnapshot request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + // The secrets provided in this field SHOULD be the same for + // all group snapshot operations on the same group snapshot. + Secrets map[string]string + // Plugin specific parameters passed in as opaque key-value pairs. + // This field is OPTIONAL. The Plugin is responsible for parsing and + // validating these parameters. COs will treat these as opaque. + Parameters map[string]string +} + +func (b0 CreateVolumeGroupSnapshotRequest_builder) Build() *CreateVolumeGroupSnapshotRequest { + m0 := &CreateVolumeGroupSnapshotRequest{} + b, x := &b0, m0 + _, _ = b, x + x.Name = b.Name + x.SourceVolumeIds = b.SourceVolumeIds + x.Secrets = b.Secrets + x.Parameters = b.Parameters + return m0 +} +type CreateVolumeGroupSnapshotResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // Contains all attributes of the newly created group snapshot. // This field is REQUIRED. GroupSnapshot *VolumeGroupSnapshot `protobuf:"bytes,1,opt,name=group_snapshot,json=groupSnapshot,proto3" json:"group_snapshot,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateVolumeGroupSnapshotResponse) Reset() { *x = CreateVolumeGroupSnapshotResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateVolumeGroupSnapshotResponse) String() string { @@ -5362,7 +7969,7 @@ func (*CreateVolumeGroupSnapshotResponse) ProtoMessage() {} func (x *CreateVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[66] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5372,11 +7979,6 @@ func (x *CreateVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use CreateVolumeGroupSnapshotResponse.ProtoReflect.Descriptor instead. -func (*CreateVolumeGroupSnapshotResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{66} -} - func (x *CreateVolumeGroupSnapshotResponse) GetGroupSnapshot() *VolumeGroupSnapshot { if x != nil { return x.GroupSnapshot @@ -5384,11 +7986,39 @@ func (x *CreateVolumeGroupSnapshotResponse) GetGroupSnapshot() *VolumeGroupSnaps return nil } -type VolumeGroupSnapshot struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *CreateVolumeGroupSnapshotResponse) SetGroupSnapshot(v *VolumeGroupSnapshot) { + x.GroupSnapshot = v +} + +func (x *CreateVolumeGroupSnapshotResponse) HasGroupSnapshot() bool { + if x == nil { + return false + } + return x.GroupSnapshot != nil +} + +func (x *CreateVolumeGroupSnapshotResponse) ClearGroupSnapshot() { + x.GroupSnapshot = nil +} + +type CreateVolumeGroupSnapshotResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Contains all attributes of the newly created group snapshot. + // This field is REQUIRED. + GroupSnapshot *VolumeGroupSnapshot +} +func (b0 CreateVolumeGroupSnapshotResponse_builder) Build() *CreateVolumeGroupSnapshotResponse { + m0 := &CreateVolumeGroupSnapshotResponse{} + b, x := &b0, m0 + _, _ = b, x + x.GroupSnapshot = b.GroupSnapshot + return m0 +} + +type VolumeGroupSnapshot struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The identifier for this group snapshot, generated by the plugin. // This field MUST contain enough information to uniquely identify // this specific snapshot vs all other group snapshots supported by @@ -5414,16 +8044,16 @@ type VolumeGroupSnapshot struct { // have ready_to_use set to true, the SP SHOULD set this field to // true. // This field is REQUIRED. - ReadyToUse bool `protobuf:"varint,4,opt,name=ready_to_use,json=readyToUse,proto3" json:"ready_to_use,omitempty"` + ReadyToUse bool `protobuf:"varint,4,opt,name=ready_to_use,json=readyToUse,proto3" json:"ready_to_use,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeGroupSnapshot) Reset() { *x = VolumeGroupSnapshot{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeGroupSnapshot) String() string { @@ -5434,7 +8064,7 @@ func (*VolumeGroupSnapshot) ProtoMessage() {} func (x *VolumeGroupSnapshot) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[67] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5444,11 +8074,6 @@ func (x *VolumeGroupSnapshot) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeGroupSnapshot.ProtoReflect.Descriptor instead. -func (*VolumeGroupSnapshot) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{67} -} - func (x *VolumeGroupSnapshot) GetGroupSnapshotId() string { if x != nil { return x.GroupSnapshotId @@ -5477,11 +8102,77 @@ func (x *VolumeGroupSnapshot) GetReadyToUse() bool { return false } -type DeleteVolumeGroupSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *VolumeGroupSnapshot) SetGroupSnapshotId(v string) { + x.GroupSnapshotId = v +} + +func (x *VolumeGroupSnapshot) SetSnapshots(v []*Snapshot) { + x.Snapshots = v +} + +func (x *VolumeGroupSnapshot) SetCreationTime(v *timestamppb.Timestamp) { + x.CreationTime = v +} + +func (x *VolumeGroupSnapshot) SetReadyToUse(v bool) { + x.ReadyToUse = v +} + +func (x *VolumeGroupSnapshot) HasCreationTime() bool { + if x == nil { + return false + } + return x.CreationTime != nil +} +func (x *VolumeGroupSnapshot) ClearCreationTime() { + x.CreationTime = nil +} + +type VolumeGroupSnapshot_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The identifier for this group snapshot, generated by the plugin. + // This field MUST contain enough information to uniquely identify + // this specific snapshot vs all other group snapshots supported by + // this plugin. + // This field SHALL be used by the CO in subsequent calls to refer to + // this group snapshot. + // The SP is NOT responsible for global uniqueness of + // group_snapshot_id across multiple SPs. + // This field is REQUIRED. + GroupSnapshotId string + // A list of snapshots belonging to this group. + // This field is REQUIRED. + Snapshots []*Snapshot + // Timestamp of when the volume group snapshot was taken. + // This field is REQUIRED. + CreationTime *timestamppb.Timestamp + // Indicates if all individual snapshots in the group snapshot + // are ready to use as a `volume_content_source` in a + // `CreateVolumeRequest`. The default value is false. + // If any snapshot in the list of snapshots in this message have + // ready_to_use set to false, the SP MUST set this field to false. + // If all of the snapshots in the list of snapshots in this message + // have ready_to_use set to true, the SP SHOULD set this field to + // true. + // This field is REQUIRED. + ReadyToUse bool +} + +func (b0 VolumeGroupSnapshot_builder) Build() *VolumeGroupSnapshot { + m0 := &VolumeGroupSnapshot{} + b, x := &b0, m0 + _, _ = b, x + x.GroupSnapshotId = b.GroupSnapshotId + x.Snapshots = b.Snapshots + x.CreationTime = b.CreationTime + x.ReadyToUse = b.ReadyToUse + return m0 +} + +type DeleteVolumeGroupSnapshotRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the group snapshot to be deleted. // This field is REQUIRED. GroupSnapshotId string `protobuf:"bytes,1,opt,name=group_snapshot_id,json=groupSnapshotId,proto3" json:"group_snapshot_id,omitempty"` @@ -5501,16 +8192,16 @@ type DeleteVolumeGroupSnapshotRequest struct { // section on how to use this field. // The secrets provided in this field SHOULD be the same for // all group snapshot operations on the same group snapshot. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteVolumeGroupSnapshotRequest) Reset() { *x = DeleteVolumeGroupSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[68] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteVolumeGroupSnapshotRequest) String() string { @@ -5521,7 +8212,7 @@ func (*DeleteVolumeGroupSnapshotRequest) ProtoMessage() {} func (x *DeleteVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[68] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5531,11 +8222,6 @@ func (x *DeleteVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteVolumeGroupSnapshotRequest.ProtoReflect.Descriptor instead. -func (*DeleteVolumeGroupSnapshotRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{68} -} - func (x *DeleteVolumeGroupSnapshotRequest) GetGroupSnapshotId() string { if x != nil { return x.GroupSnapshotId @@ -5550,26 +8236,71 @@ func (x *DeleteVolumeGroupSnapshotRequest) GetSnapshotIds() []string { return nil } -func (x *DeleteVolumeGroupSnapshotRequest) GetSecrets() map[string]string { - if x != nil { - return x.Secrets - } - return nil +func (x *DeleteVolumeGroupSnapshotRequest) GetSecrets() map[string]string { + if x != nil { + return x.Secrets + } + return nil +} + +func (x *DeleteVolumeGroupSnapshotRequest) SetGroupSnapshotId(v string) { + x.GroupSnapshotId = v +} + +func (x *DeleteVolumeGroupSnapshotRequest) SetSnapshotIds(v []string) { + x.SnapshotIds = v +} + +func (x *DeleteVolumeGroupSnapshotRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +type DeleteVolumeGroupSnapshotRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the group snapshot to be deleted. + // This field is REQUIRED. + GroupSnapshotId string + // A list of snapshot IDs that are part of this group snapshot. + // If SP does not need to rely on this field to delete the snapshots + // in the group, it SHOULD check this field and report an error + // if it has the ability to detect a mismatch. + // Some SPs require this list to delete the snapshots in the group. + // If SP needs to use this field to delete the snapshots in the + // group, it MUST report an error if it has the ability to detect + // a mismatch. + // This field is REQUIRED. + SnapshotIds []string + // Secrets required by plugin to complete group snapshot deletion + // request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + // The secrets provided in this field SHOULD be the same for + // all group snapshot operations on the same group snapshot. + Secrets map[string]string +} + +func (b0 DeleteVolumeGroupSnapshotRequest_builder) Build() *DeleteVolumeGroupSnapshotRequest { + m0 := &DeleteVolumeGroupSnapshotRequest{} + b, x := &b0, m0 + _, _ = b, x + x.GroupSnapshotId = b.GroupSnapshotId + x.SnapshotIds = b.SnapshotIds + x.Secrets = b.Secrets + return m0 } type DeleteVolumeGroupSnapshotResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteVolumeGroupSnapshotResponse) Reset() { *x = DeleteVolumeGroupSnapshotResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteVolumeGroupSnapshotResponse) String() string { @@ -5580,7 +8311,7 @@ func (*DeleteVolumeGroupSnapshotResponse) ProtoMessage() {} func (x *DeleteVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[69] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5590,16 +8321,20 @@ func (x *DeleteVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use DeleteVolumeGroupSnapshotResponse.ProtoReflect.Descriptor instead. -func (*DeleteVolumeGroupSnapshotResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{69} +type DeleteVolumeGroupSnapshotResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + } -type GetVolumeGroupSnapshotRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (b0 DeleteVolumeGroupSnapshotResponse_builder) Build() *DeleteVolumeGroupSnapshotResponse { + m0 := &DeleteVolumeGroupSnapshotResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} +type GetVolumeGroupSnapshotRequest struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // The ID of the group snapshot to fetch current group snapshot // information for. // This field is REQUIRED. @@ -5620,16 +8355,16 @@ type GetVolumeGroupSnapshotRequest struct { // section on how to use this field. // The secrets provided in this field SHOULD be the same for // all group snapshot operations on the same group snapshot. - Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetVolumeGroupSnapshotRequest) Reset() { *x = GetVolumeGroupSnapshotRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[70] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetVolumeGroupSnapshotRequest) String() string { @@ -5640,7 +8375,7 @@ func (*GetVolumeGroupSnapshotRequest) ProtoMessage() {} func (x *GetVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[70] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5650,11 +8385,6 @@ func (x *GetVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetVolumeGroupSnapshotRequest.ProtoReflect.Descriptor instead. -func (*GetVolumeGroupSnapshotRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{70} -} - func (x *GetVolumeGroupSnapshotRequest) GetGroupSnapshotId() string { if x != nil { return x.GroupSnapshotId @@ -5676,22 +8406,67 @@ func (x *GetVolumeGroupSnapshotRequest) GetSecrets() map[string]string { return nil } -type GetVolumeGroupSnapshotResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *GetVolumeGroupSnapshotRequest) SetGroupSnapshotId(v string) { + x.GroupSnapshotId = v +} + +func (x *GetVolumeGroupSnapshotRequest) SetSnapshotIds(v []string) { + x.SnapshotIds = v +} + +func (x *GetVolumeGroupSnapshotRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +type GetVolumeGroupSnapshotRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the group snapshot to fetch current group snapshot + // information for. + // This field is REQUIRED. + GroupSnapshotId string + // A list of snapshot IDs that are part of this group snapshot. + // If SP does not need to rely on this field to get the snapshots + // in the group, it SHOULD check this field and report an error + // if it has the ability to detect a mismatch. + // Some SPs require this list to get the snapshots in the group. + // If SP needs to use this field to get the snapshots in the + // group, it MUST report an error if it has the ability to detect + // a mismatch. + // This field is REQUIRED. + SnapshotIds []string + // Secrets required by plugin to complete + // GetVolumeGroupSnapshot request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + // The secrets provided in this field SHOULD be the same for + // all group snapshot operations on the same group snapshot. + Secrets map[string]string +} + +func (b0 GetVolumeGroupSnapshotRequest_builder) Build() *GetVolumeGroupSnapshotRequest { + m0 := &GetVolumeGroupSnapshotRequest{} + b, x := &b0, m0 + _, _ = b, x + x.GroupSnapshotId = b.GroupSnapshotId + x.SnapshotIds = b.SnapshotIds + x.Secrets = b.Secrets + return m0 +} +type GetVolumeGroupSnapshotResponse struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // This field is REQUIRED GroupSnapshot *VolumeGroupSnapshot `protobuf:"bytes,1,opt,name=group_snapshot,json=groupSnapshot,proto3" json:"group_snapshot,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetVolumeGroupSnapshotResponse) Reset() { *x = GetVolumeGroupSnapshotResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetVolumeGroupSnapshotResponse) String() string { @@ -5702,7 +8477,7 @@ func (*GetVolumeGroupSnapshotResponse) ProtoMessage() {} func (x *GetVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[71] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5712,11 +8487,6 @@ func (x *GetVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetVolumeGroupSnapshotResponse.ProtoReflect.Descriptor instead. -func (*GetVolumeGroupSnapshotResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{71} -} - func (x *GetVolumeGroupSnapshotResponse) GetGroupSnapshot() *VolumeGroupSnapshot { if x != nil { return x.GroupSnapshot @@ -5724,12 +8494,39 @@ func (x *GetVolumeGroupSnapshotResponse) GetGroupSnapshot() *VolumeGroupSnapshot return nil } +func (x *GetVolumeGroupSnapshotResponse) SetGroupSnapshot(v *VolumeGroupSnapshot) { + x.GroupSnapshot = v +} + +func (x *GetVolumeGroupSnapshotResponse) HasGroupSnapshot() bool { + if x == nil { + return false + } + return x.GroupSnapshot != nil +} + +func (x *GetVolumeGroupSnapshotResponse) ClearGroupSnapshot() { + x.GroupSnapshot = nil +} + +type GetVolumeGroupSnapshotResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This field is REQUIRED + GroupSnapshot *VolumeGroupSnapshot +} + +func (b0 GetVolumeGroupSnapshotResponse_builder) Build() *GetVolumeGroupSnapshotResponse { + m0 := &GetVolumeGroupSnapshotResponse{} + b, x := &b0, m0 + _, _ = b, x + x.GroupSnapshot = b.GroupSnapshot + return m0 +} + // BlockMetadata specifies a data range. type BlockMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // This is the zero based byte position in the volume or snapshot, // measured from the start of the object. // This field is REQUIRED. @@ -5737,16 +8534,16 @@ type BlockMetadata struct { // This is the size of the data range. // size_bytes MUST be greater than zero. // This field is REQUIRED. - SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` + SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BlockMetadata) Reset() { *x = BlockMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[72] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BlockMetadata) String() string { @@ -5757,7 +8554,7 @@ func (*BlockMetadata) ProtoMessage() {} func (x *BlockMetadata) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[72] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5767,11 +8564,6 @@ func (x *BlockMetadata) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BlockMetadata.ProtoReflect.Descriptor instead. -func (*BlockMetadata) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{72} -} - func (x *BlockMetadata) GetByteOffset() int64 { if x != nil { return x.ByteOffset @@ -5786,15 +8578,42 @@ func (x *BlockMetadata) GetSizeBytes() int64 { return 0 } +func (x *BlockMetadata) SetByteOffset(v int64) { + x.ByteOffset = v +} + +func (x *BlockMetadata) SetSizeBytes(v int64) { + x.SizeBytes = v +} + +type BlockMetadata_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This is the zero based byte position in the volume or snapshot, + // measured from the start of the object. + // This field is REQUIRED. + ByteOffset int64 + // This is the size of the data range. + // size_bytes MUST be greater than zero. + // This field is REQUIRED. + SizeBytes int64 +} + +func (b0 BlockMetadata_builder) Build() *BlockMetadata { + m0 := &BlockMetadata{} + b, x := &b0, m0 + _, _ = b, x + x.ByteOffset = b.ByteOffset + x.SizeBytes = b.SizeBytes + return m0 +} + // The GetMetadataAllocatedRequest message is used to solicit metadata // on the allocated blocks of a snapshot: i.e. this identifies the // data ranges that have valid data as they were the target of some // previous write operation on the volume. type GetMetadataAllocatedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // This is the identifier of the snapshot. // This field is REQUIRED. SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` @@ -5822,16 +8641,16 @@ type GetMetadataAllocatedRequest struct { // Secrets required by plugin to complete the request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,4,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,4,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetMetadataAllocatedRequest) Reset() { *x = GetMetadataAllocatedRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[73] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMetadataAllocatedRequest) String() string { @@ -5842,7 +8661,7 @@ func (*GetMetadataAllocatedRequest) ProtoMessage() {} func (x *GetMetadataAllocatedRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[73] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5852,11 +8671,6 @@ func (x *GetMetadataAllocatedRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMetadataAllocatedRequest.ProtoReflect.Descriptor instead. -func (*GetMetadataAllocatedRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{73} -} - func (x *GetMetadataAllocatedRequest) GetSnapshotId() string { if x != nil { return x.SnapshotId @@ -5885,14 +8699,71 @@ func (x *GetMetadataAllocatedRequest) GetSecrets() map[string]string { return nil } +func (x *GetMetadataAllocatedRequest) SetSnapshotId(v string) { + x.SnapshotId = v +} + +func (x *GetMetadataAllocatedRequest) SetStartingOffset(v int64) { + x.StartingOffset = v +} + +func (x *GetMetadataAllocatedRequest) SetMaxResults(v int32) { + x.MaxResults = v +} + +func (x *GetMetadataAllocatedRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +type GetMetadataAllocatedRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This is the identifier of the snapshot. + // This field is REQUIRED. + SnapshotId string + // This indicates the zero based starting byte position in the volume + // snapshot from which the result should be computed. + // It is intended to be used to continue a previously interrupted + // call. + // The CO SHOULD specify this value to be the offset of the byte + // position immediately after the last byte of the last data range + // received, if continuing an interrupted operation, or zero if not. + // The SP MUST ensure that the returned response stream does not + // contain BlockMetadata tuples that end before the requested + // starting_offset: i.e. if S is the requested starting_offset, and + // B0 is block_metadata[0] of the first message in the response + // stream, then (S < B0.byte_offset + B0.size_bytes) must be true. + // This field is REQUIRED. + StartingOffset int64 + // This is an optional parameter, and if non-zero it specifies the + // maximum number of tuples to be returned in each + // GetMetadataAllocatedResponse message returned by the RPC stream. + // The plugin will determine an appropriate value if 0, and is + // always free to send less than the requested value. + // This field is OPTIONAL. + MaxResults int32 + // Secrets required by plugin to complete the request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 GetMetadataAllocatedRequest_builder) Build() *GetMetadataAllocatedRequest { + m0 := &GetMetadataAllocatedRequest{} + b, x := &b0, m0 + _, _ = b, x + x.SnapshotId = b.SnapshotId + x.StartingOffset = b.StartingOffset + x.MaxResults = b.MaxResults + x.Secrets = b.Secrets + return m0 +} + // GetMetadataAllocatedResponse messages are returned in a gRPC stream. // Cumulatively, they provide information on the allocated data // ranges in the snapshot. type GetMetadataAllocatedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // This specifies the style used in the BlockMetadata sequence. // This value must be the same in all such messages returned by // the stream. @@ -5919,15 +8790,15 @@ type GetMetadataAllocatedResponse struct { // different GetMetadataAllocatedResponse messages in the gRPC stream. // This field is OPTIONAL. BlockMetadata []*BlockMetadata `protobuf:"bytes,3,rep,name=block_metadata,json=blockMetadata,proto3" json:"block_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetMetadataAllocatedResponse) Reset() { *x = GetMetadataAllocatedResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMetadataAllocatedResponse) String() string { @@ -5938,7 +8809,7 @@ func (*GetMetadataAllocatedResponse) ProtoMessage() {} func (x *GetMetadataAllocatedResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[74] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5948,11 +8819,6 @@ func (x *GetMetadataAllocatedResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMetadataAllocatedResponse.ProtoReflect.Descriptor instead. -func (*GetMetadataAllocatedResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{74} -} - func (x *GetMetadataAllocatedResponse) GetBlockMetadataType() BlockMetadataType { if x != nil { return x.BlockMetadataType @@ -5974,13 +8840,63 @@ func (x *GetMetadataAllocatedResponse) GetBlockMetadata() []*BlockMetadata { return nil } +func (x *GetMetadataAllocatedResponse) SetBlockMetadataType(v BlockMetadataType) { + x.BlockMetadataType = v +} + +func (x *GetMetadataAllocatedResponse) SetVolumeCapacityBytes(v int64) { + x.VolumeCapacityBytes = v +} + +func (x *GetMetadataAllocatedResponse) SetBlockMetadata(v []*BlockMetadata) { + x.BlockMetadata = v +} + +type GetMetadataAllocatedResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This specifies the style used in the BlockMetadata sequence. + // This value must be the same in all such messages returned by + // the stream. + // If block_metadata_type is FIXED_LENGTH, then the size_bytes field + // of each message in the block_metadata list MUST be constant. + // This field is REQUIRED. + BlockMetadataType BlockMetadataType + // This returns the capacity of the underlying volume in bytes. + // This value must be the same in all such messages returned by + // the stream. + // This field is REQUIRED. + VolumeCapacityBytes int64 + // This is a list of data range tuples. + // If the value of max_results in the GetMetadataAllocatedRequest + // message is greater than zero, then the number of entries in this + // list MUST be less than or equal to that value. + // The SP MUST respect the value of starting_offset in the request. + // The byte_offset fields of adjacent BlockMetadata messages + // MUST be strictly increasing and messages MUST NOT overlap: + // i.e. for any two BlockMetadata messages, A and B, if A is returned + // before B, then (A.byte_offset + A.size_bytes <= B.byte_offset) + // MUST be true. + // This MUST also be true if A and B are from block_metadata lists in + // different GetMetadataAllocatedResponse messages in the gRPC stream. + // This field is OPTIONAL. + BlockMetadata []*BlockMetadata +} + +func (b0 GetMetadataAllocatedResponse_builder) Build() *GetMetadataAllocatedResponse { + m0 := &GetMetadataAllocatedResponse{} + b, x := &b0, m0 + _, _ = b, x + x.BlockMetadataType = b.BlockMetadataType + x.VolumeCapacityBytes = b.VolumeCapacityBytes + x.BlockMetadata = b.BlockMetadata + return m0 +} + // The GetMetadataDeltaRequest message is used to solicit metadata on // the data ranges that have changed between two snapshots. type GetMetadataDeltaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // This is the identifier of the snapshot against which changes // are to be computed. // This field is REQUIRED. @@ -6013,16 +8929,16 @@ type GetMetadataDeltaRequest struct { // Secrets required by plugin to complete the request. // This field is OPTIONAL. Refer to the `Secrets Requirements` // section on how to use this field. - Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetMetadataDeltaRequest) Reset() { *x = GetMetadataDeltaRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMetadataDeltaRequest) String() string { @@ -6033,7 +8949,7 @@ func (*GetMetadataDeltaRequest) ProtoMessage() {} func (x *GetMetadataDeltaRequest) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[75] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6043,11 +8959,6 @@ func (x *GetMetadataDeltaRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMetadataDeltaRequest.ProtoReflect.Descriptor instead. -func (*GetMetadataDeltaRequest) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{75} -} - func (x *GetMetadataDeltaRequest) GetBaseSnapshotId() string { if x != nil { return x.BaseSnapshotId @@ -6076,11 +8987,81 @@ func (x *GetMetadataDeltaRequest) GetMaxResults() int32 { return 0 } -func (x *GetMetadataDeltaRequest) GetSecrets() map[string]string { - if x != nil { - return x.Secrets - } - return nil +func (x *GetMetadataDeltaRequest) GetSecrets() map[string]string { + if x != nil { + return x.Secrets + } + return nil +} + +func (x *GetMetadataDeltaRequest) SetBaseSnapshotId(v string) { + x.BaseSnapshotId = v +} + +func (x *GetMetadataDeltaRequest) SetTargetSnapshotId(v string) { + x.TargetSnapshotId = v +} + +func (x *GetMetadataDeltaRequest) SetStartingOffset(v int64) { + x.StartingOffset = v +} + +func (x *GetMetadataDeltaRequest) SetMaxResults(v int32) { + x.MaxResults = v +} + +func (x *GetMetadataDeltaRequest) SetSecrets(v map[string]string) { + x.Secrets = v +} + +type GetMetadataDeltaRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This is the identifier of the snapshot against which changes + // are to be computed. + // This field is REQUIRED. + BaseSnapshotId string + // This is the identifier of a second snapshot in the same volume, + // created after the base snapshot. + // This field is REQUIRED. + TargetSnapshotId string + // This indicates the zero based starting byte position in the volume + // snapshot from which the result should be computed. + // It is intended to be used to continue a previously interrupted + // call. + // The CO SHOULD specify this value to be the offset of the byte + // position immediately after the last byte of the last data range + // received, if continuing an interrupted operation, or zero if not. + // The SP MUST ensure that the returned response stream does not + // contain BlockMetadata tuples that end before the requested + // starting_offset: i.e. if S is the requested starting_offset, and + // B0 is block_metadata[0] of the first message in the response + // stream, then (S < B0.byte_offset + B0.size_bytes) must be true. + // This field is REQUIRED. + StartingOffset int64 + // This is an optional parameter, and if non-zero it specifies the + // maximum number of tuples to be returned in each + // GetMetadataDeltaResponse message returned by the RPC stream. + // The plugin will determine an appropriate value if 0, and is + // always free to send less than the requested value. + // This field is OPTIONAL. + MaxResults int32 + // Secrets required by plugin to complete the request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 GetMetadataDeltaRequest_builder) Build() *GetMetadataDeltaRequest { + m0 := &GetMetadataDeltaRequest{} + b, x := &b0, m0 + _, _ = b, x + x.BaseSnapshotId = b.BaseSnapshotId + x.TargetSnapshotId = b.TargetSnapshotId + x.StartingOffset = b.StartingOffset + x.MaxResults = b.MaxResults + x.Secrets = b.Secrets + return m0 } // GetMetadataDeltaResponse messages are returned in a gRPC stream. @@ -6088,10 +9069,7 @@ func (x *GetMetadataDeltaRequest) GetSecrets() map[string]string { // have changed between the base and target snapshots specified // in the GetMetadataDeltaRequest message. type GetMetadataDeltaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // This specifies the style used in the BlockMetadata sequence. // This value must be the same in all such messages returned by // the stream. @@ -6118,15 +9096,15 @@ type GetMetadataDeltaResponse struct { // different GetMetadataDeltaResponse messages in the gRPC stream. // This field is OPTIONAL. BlockMetadata []*BlockMetadata `protobuf:"bytes,3,rep,name=block_metadata,json=blockMetadata,proto3" json:"block_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetMetadataDeltaResponse) Reset() { *x = GetMetadataDeltaResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[76] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetMetadataDeltaResponse) String() string { @@ -6137,7 +9115,7 @@ func (*GetMetadataDeltaResponse) ProtoMessage() {} func (x *GetMetadataDeltaResponse) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[76] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6147,11 +9125,6 @@ func (x *GetMetadataDeltaResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMetadataDeltaResponse.ProtoReflect.Descriptor instead. -func (*GetMetadataDeltaResponse) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{76} -} - func (x *GetMetadataDeltaResponse) GetBlockMetadataType() BlockMetadataType { if x != nil { return x.BlockMetadataType @@ -6173,21 +9146,71 @@ func (x *GetMetadataDeltaResponse) GetBlockMetadata() []*BlockMetadata { return nil } +func (x *GetMetadataDeltaResponse) SetBlockMetadataType(v BlockMetadataType) { + x.BlockMetadataType = v +} + +func (x *GetMetadataDeltaResponse) SetVolumeCapacityBytes(v int64) { + x.VolumeCapacityBytes = v +} + +func (x *GetMetadataDeltaResponse) SetBlockMetadata(v []*BlockMetadata) { + x.BlockMetadata = v +} + +type GetMetadataDeltaResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This specifies the style used in the BlockMetadata sequence. + // This value must be the same in all such messages returned by + // the stream. + // If block_metadata_type is FIXED_LENGTH, then the size_bytes field + // of each message in the block_metadata list MUST be constant. + // This field is REQUIRED. + BlockMetadataType BlockMetadataType + // This returns the capacity of the underlying volume in bytes. + // This value must be the same in all such messages returned by + // the stream. + // This field is REQUIRED. + VolumeCapacityBytes int64 + // This is a list of data range tuples. + // If the value of max_results in the GetMetadataDeltaRequest message + // is greater than zero, then the number of entries in this list MUST + // be less than or equal to that value. + // The SP MUST respect the value of starting_offset in the request. + // The byte_offset fields of adjacent BlockMetadata messages + // MUST be strictly increasing and messages MUST NOT overlap: + // i.e. for any two BlockMetadata messages, A and B, if A is returned + // before B, then (A.byte_offset + A.size_bytes <= B.byte_offset) + // MUST be true. + // This MUST also be true if A and B are from block_metadata lists in + // different GetMetadataDeltaResponse messages in the gRPC stream. + // This field is OPTIONAL. + BlockMetadata []*BlockMetadata +} + +func (b0 GetMetadataDeltaResponse_builder) Build() *GetMetadataDeltaResponse { + m0 := &GetMetadataDeltaResponse{} + b, x := &b0, m0 + _, _ = b, x + x.BlockMetadataType = b.BlockMetadataType + x.VolumeCapacityBytes = b.VolumeCapacityBytes + x.BlockMetadata = b.BlockMetadata + return m0 +} + type PluginCapability_Service struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` + Type PluginCapability_Service_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.PluginCapability_Service_Type" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type PluginCapability_Service_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.PluginCapability_Service_Type" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PluginCapability_Service) Reset() { *x = PluginCapability_Service{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[78] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PluginCapability_Service) String() string { @@ -6198,7 +9221,7 @@ func (*PluginCapability_Service) ProtoMessage() {} func (x *PluginCapability_Service) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[78] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6208,11 +9231,6 @@ func (x *PluginCapability_Service) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PluginCapability_Service.ProtoReflect.Descriptor instead. -func (*PluginCapability_Service) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{4, 0} -} - func (x *PluginCapability_Service) GetType() PluginCapability_Service_Type { if x != nil { return x.Type @@ -6220,21 +9238,36 @@ func (x *PluginCapability_Service) GetType() PluginCapability_Service_Type { return PluginCapability_Service_UNKNOWN } +func (x *PluginCapability_Service) SetType(v PluginCapability_Service_Type) { + x.Type = v +} + +type PluginCapability_Service_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Type PluginCapability_Service_Type +} + +func (b0 PluginCapability_Service_builder) Build() *PluginCapability_Service { + m0 := &PluginCapability_Service{} + b, x := &b0, m0 + _, _ = b, x + x.Type = b.Type + return m0 +} + type PluginCapability_VolumeExpansion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` + Type PluginCapability_VolumeExpansion_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.PluginCapability_VolumeExpansion_Type" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type PluginCapability_VolumeExpansion_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.PluginCapability_VolumeExpansion_Type" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PluginCapability_VolumeExpansion) Reset() { *x = PluginCapability_VolumeExpansion{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[79] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PluginCapability_VolumeExpansion) String() string { @@ -6245,7 +9278,7 @@ func (*PluginCapability_VolumeExpansion) ProtoMessage() {} func (x *PluginCapability_VolumeExpansion) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[79] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6255,11 +9288,6 @@ func (x *PluginCapability_VolumeExpansion) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PluginCapability_VolumeExpansion.ProtoReflect.Descriptor instead. -func (*PluginCapability_VolumeExpansion) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{4, 1} -} - func (x *PluginCapability_VolumeExpansion) GetType() PluginCapability_VolumeExpansion_Type { if x != nil { return x.Type @@ -6267,25 +9295,40 @@ func (x *PluginCapability_VolumeExpansion) GetType() PluginCapability_VolumeExpa return PluginCapability_VolumeExpansion_UNKNOWN } -type VolumeContentSource_SnapshotSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PluginCapability_VolumeExpansion) SetType(v PluginCapability_VolumeExpansion_Type) { + x.Type = v +} + +type PluginCapability_VolumeExpansion_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Type PluginCapability_VolumeExpansion_Type +} + +func (b0 PluginCapability_VolumeExpansion_builder) Build() *PluginCapability_VolumeExpansion { + m0 := &PluginCapability_VolumeExpansion{} + b, x := &b0, m0 + _, _ = b, x + x.Type = b.Type + return m0 +} +type VolumeContentSource_SnapshotSource struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // Contains identity information for the existing source snapshot. // This field is REQUIRED. Plugin is REQUIRED to support creating // volume from snapshot if it supports the capability // CREATE_DELETE_SNAPSHOT. - SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` + SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeContentSource_SnapshotSource) Reset() { *x = VolumeContentSource_SnapshotSource{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[83] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeContentSource_SnapshotSource) String() string { @@ -6296,7 +9339,7 @@ func (*VolumeContentSource_SnapshotSource) ProtoMessage() {} func (x *VolumeContentSource_SnapshotSource) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[83] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6306,11 +9349,6 @@ func (x *VolumeContentSource_SnapshotSource) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use VolumeContentSource_SnapshotSource.ProtoReflect.Descriptor instead. -func (*VolumeContentSource_SnapshotSource) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{8, 0} -} - func (x *VolumeContentSource_SnapshotSource) GetSnapshotId() string { if x != nil { return x.SnapshotId @@ -6318,24 +9356,43 @@ func (x *VolumeContentSource_SnapshotSource) GetSnapshotId() string { return "" } -type VolumeContentSource_VolumeSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *VolumeContentSource_SnapshotSource) SetSnapshotId(v string) { + x.SnapshotId = v +} + +type VolumeContentSource_SnapshotSource_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Contains identity information for the existing source snapshot. + // This field is REQUIRED. Plugin is REQUIRED to support creating + // volume from snapshot if it supports the capability + // CREATE_DELETE_SNAPSHOT. + SnapshotId string +} +func (b0 VolumeContentSource_SnapshotSource_builder) Build() *VolumeContentSource_SnapshotSource { + m0 := &VolumeContentSource_SnapshotSource{} + b, x := &b0, m0 + _, _ = b, x + x.SnapshotId = b.SnapshotId + return m0 +} + +type VolumeContentSource_VolumeSource struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // Contains identity information for the existing source volume. // This field is REQUIRED. Plugins reporting CLONE_VOLUME // capability MUST support creating a volume from another volume. - VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeContentSource_VolumeSource) Reset() { *x = VolumeContentSource_VolumeSource{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[84] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeContentSource_VolumeSource) String() string { @@ -6346,7 +9403,7 @@ func (*VolumeContentSource_VolumeSource) ProtoMessage() {} func (x *VolumeContentSource_VolumeSource) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[84] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6356,11 +9413,6 @@ func (x *VolumeContentSource_VolumeSource) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeContentSource_VolumeSource.ProtoReflect.Descriptor instead. -func (*VolumeContentSource_VolumeSource) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{8, 1} -} - func (x *VolumeContentSource_VolumeSource) GetVolumeId() string { if x != nil { return x.VolumeId @@ -6368,20 +9420,39 @@ func (x *VolumeContentSource_VolumeSource) GetVolumeId() string { return "" } +func (x *VolumeContentSource_VolumeSource) SetVolumeId(v string) { + x.VolumeId = v +} + +type VolumeContentSource_VolumeSource_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Contains identity information for the existing source volume. + // This field is REQUIRED. Plugins reporting CLONE_VOLUME + // capability MUST support creating a volume from another volume. + VolumeId string +} + +func (b0 VolumeContentSource_VolumeSource_builder) Build() *VolumeContentSource_VolumeSource { + m0 := &VolumeContentSource_VolumeSource{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeId = b.VolumeId + return m0 +} + // Indicate that the volume will be accessed via the block device API. type VolumeCapability_BlockVolume struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeCapability_BlockVolume) Reset() { *x = VolumeCapability_BlockVolume{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[85] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeCapability_BlockVolume) String() string { @@ -6392,7 +9463,7 @@ func (*VolumeCapability_BlockVolume) ProtoMessage() {} func (x *VolumeCapability_BlockVolume) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[85] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6402,17 +9473,21 @@ func (x *VolumeCapability_BlockVolume) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeCapability_BlockVolume.ProtoReflect.Descriptor instead. -func (*VolumeCapability_BlockVolume) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{10, 0} +type VolumeCapability_BlockVolume_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 VolumeCapability_BlockVolume_builder) Build() *VolumeCapability_BlockVolume { + m0 := &VolumeCapability_BlockVolume{} + b, x := &b0, m0 + _, _ = b, x + return m0 } // Indicate that the volume will be accessed via the filesystem API. type VolumeCapability_MountVolume struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // The filesystem type. This field is OPTIONAL. // An empty string is equal to an unspecified field value. FsType string `protobuf:"bytes,1,opt,name=fs_type,json=fsType,proto3" json:"fs_type,omitempty"` @@ -6434,15 +9509,15 @@ type VolumeCapability_MountVolume struct { // both readable and writable by said mount group identifier. // This is an OPTIONAL field. VolumeMountGroup string `protobuf:"bytes,3,opt,name=volume_mount_group,json=volumeMountGroup,proto3" json:"volume_mount_group,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeCapability_MountVolume) Reset() { *x = VolumeCapability_MountVolume{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[86] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeCapability_MountVolume) String() string { @@ -6453,7 +9528,7 @@ func (*VolumeCapability_MountVolume) ProtoMessage() {} func (x *VolumeCapability_MountVolume) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[86] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6463,11 +9538,6 @@ func (x *VolumeCapability_MountVolume) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeCapability_MountVolume.ProtoReflect.Descriptor instead. -func (*VolumeCapability_MountVolume) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{10, 1} -} - func (x *VolumeCapability_MountVolume) GetFsType() string { if x != nil { return x.FsType @@ -6489,23 +9559,68 @@ func (x *VolumeCapability_MountVolume) GetVolumeMountGroup() string { return "" } +func (x *VolumeCapability_MountVolume) SetFsType(v string) { + x.FsType = v +} + +func (x *VolumeCapability_MountVolume) SetMountFlags(v []string) { + x.MountFlags = v +} + +func (x *VolumeCapability_MountVolume) SetVolumeMountGroup(v string) { + x.VolumeMountGroup = v +} + +type VolumeCapability_MountVolume_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The filesystem type. This field is OPTIONAL. + // An empty string is equal to an unspecified field value. + FsType string + // The mount options that can be used for the volume. This field is + // OPTIONAL. `mount_flags` MAY contain sensitive information. + // Therefore, the CO and the Plugin MUST NOT leak this information + // to untrusted entities. The total size of this repeated field + // SHALL NOT exceed 4 KiB. + MountFlags []string + // If SP has VOLUME_MOUNT_GROUP node capability and CO provides + // this field then SP MUST ensure that the volume_mount_group + // parameter is passed as the group identifier to the underlying + // operating system mount system call, with the understanding + // that the set of available mount call parameters and/or + // mount implementations may vary across operating systems. + // Additionally, new file and/or directory entries written to + // the underlying filesystem SHOULD be permission-labeled in such a + // manner, unless otherwise modified by a workload, that they are + // both readable and writable by said mount group identifier. + // This is an OPTIONAL field. + VolumeMountGroup string +} + +func (b0 VolumeCapability_MountVolume_builder) Build() *VolumeCapability_MountVolume { + m0 := &VolumeCapability_MountVolume{} + b, x := &b0, m0 + _, _ = b, x + x.FsType = b.FsType + x.MountFlags = b.MountFlags + x.VolumeMountGroup = b.VolumeMountGroup + return m0 +} + // Specify how a volume can be accessed. type VolumeCapability_AccessMode struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // This field is REQUIRED. - Mode VolumeCapability_AccessMode_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=csi.v1.VolumeCapability_AccessMode_Mode" json:"mode,omitempty"` + Mode VolumeCapability_AccessMode_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=csi.v1.VolumeCapability_AccessMode_Mode" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VolumeCapability_AccessMode) Reset() { *x = VolumeCapability_AccessMode{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[87] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VolumeCapability_AccessMode) String() string { @@ -6516,7 +9631,7 @@ func (*VolumeCapability_AccessMode) ProtoMessage() {} func (x *VolumeCapability_AccessMode) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[87] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6526,11 +9641,6 @@ func (x *VolumeCapability_AccessMode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeCapability_AccessMode.ProtoReflect.Descriptor instead. -func (*VolumeCapability_AccessMode) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{10, 2} -} - func (x *VolumeCapability_AccessMode) GetMode() VolumeCapability_AccessMode_Mode { if x != nil { return x.Mode @@ -6538,32 +9648,48 @@ func (x *VolumeCapability_AccessMode) GetMode() VolumeCapability_AccessMode_Mode return VolumeCapability_AccessMode_UNKNOWN } -type ValidateVolumeCapabilitiesResponse_Confirmed struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *VolumeCapability_AccessMode) SetMode(v VolumeCapability_AccessMode_Mode) { + x.Mode = v +} + +type VolumeCapability_AccessMode_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This field is REQUIRED. + Mode VolumeCapability_AccessMode_Mode +} +func (b0 VolumeCapability_AccessMode_builder) Build() *VolumeCapability_AccessMode { + m0 := &VolumeCapability_AccessMode{} + b, x := &b0, m0 + _, _ = b, x + x.Mode = b.Mode + return m0 +} + +type ValidateVolumeCapabilitiesResponse_Confirmed struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // Volume context validated by the plugin. // This field is OPTIONAL. - VolumeContext map[string]string `protobuf:"bytes,1,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + VolumeContext map[string]string `protobuf:"bytes,1,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Volume capabilities supported by the plugin. // This field is REQUIRED. VolumeCapabilities []*VolumeCapability `protobuf:"bytes,2,rep,name=volume_capabilities,json=volumeCapabilities,proto3" json:"volume_capabilities,omitempty"` // The volume creation parameters validated by the plugin. // This field is OPTIONAL. - Parameters map[string]string `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Parameters map[string]string `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // The volume creation mutable_parameters validated by the plugin. // This field is OPTIONAL. - MutableParameters map[string]string `protobuf:"bytes,4,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MutableParameters map[string]string `protobuf:"bytes,4,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateVolumeCapabilitiesResponse_Confirmed) Reset() { *x = ValidateVolumeCapabilitiesResponse_Confirmed{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[99] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ValidateVolumeCapabilitiesResponse_Confirmed) String() string { @@ -6574,7 +9700,7 @@ func (*ValidateVolumeCapabilitiesResponse_Confirmed) ProtoMessage() {} func (x *ValidateVolumeCapabilitiesResponse_Confirmed) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[99] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6584,11 +9710,6 @@ func (x *ValidateVolumeCapabilitiesResponse_Confirmed) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use ValidateVolumeCapabilitiesResponse_Confirmed.ProtoReflect.Descriptor instead. -func (*ValidateVolumeCapabilitiesResponse_Confirmed) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{22, 0} -} - func (x *ValidateVolumeCapabilitiesResponse_Confirmed) GetVolumeContext() map[string]string { if x != nil { return x.VolumeContext @@ -6617,11 +9738,52 @@ func (x *ValidateVolumeCapabilitiesResponse_Confirmed) GetMutableParameters() ma return nil } -type ListVolumesResponse_VolumeStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) SetVolumeContext(v map[string]string) { + x.VolumeContext = v +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) SetVolumeCapabilities(v []*VolumeCapability) { + x.VolumeCapabilities = v +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) SetParameters(v map[string]string) { + x.Parameters = v +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) SetMutableParameters(v map[string]string) { + x.MutableParameters = v +} + +type ValidateVolumeCapabilitiesResponse_Confirmed_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Volume context validated by the plugin. + // This field is OPTIONAL. + VolumeContext map[string]string + // Volume capabilities supported by the plugin. + // This field is REQUIRED. + VolumeCapabilities []*VolumeCapability + // The volume creation parameters validated by the plugin. + // This field is OPTIONAL. + Parameters map[string]string + // The volume creation mutable_parameters validated by the plugin. + // This field is OPTIONAL. + MutableParameters map[string]string +} + +func (b0 ValidateVolumeCapabilitiesResponse_Confirmed_builder) Build() *ValidateVolumeCapabilitiesResponse_Confirmed { + m0 := &ValidateVolumeCapabilitiesResponse_Confirmed{} + b, x := &b0, m0 + _, _ = b, x + x.VolumeContext = b.VolumeContext + x.VolumeCapabilities = b.VolumeCapabilities + x.Parameters = b.Parameters + x.MutableParameters = b.MutableParameters + return m0 +} +type ListVolumesResponse_VolumeStatus struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // A list of all `node_id` of nodes that the volume in this entry // is controller published on. // This field is OPTIONAL. If it is not specified and the SP has @@ -6638,15 +9800,15 @@ type ListVolumesResponse_VolumeStatus struct { // This field MUST be specified if the // VOLUME_CONDITION controller capability is supported. VolumeCondition *VolumeCondition `protobuf:"bytes,2,opt,name=volume_condition,json=volumeCondition,proto3" json:"volume_condition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListVolumesResponse_VolumeStatus) Reset() { *x = ListVolumesResponse_VolumeStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[103] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListVolumesResponse_VolumeStatus) String() string { @@ -6657,7 +9819,7 @@ func (*ListVolumesResponse_VolumeStatus) ProtoMessage() {} func (x *ListVolumesResponse_VolumeStatus) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[103] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6667,11 +9829,6 @@ func (x *ListVolumesResponse_VolumeStatus) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListVolumesResponse_VolumeStatus.ProtoReflect.Descriptor instead. -func (*ListVolumesResponse_VolumeStatus) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{24, 0} -} - func (x *ListVolumesResponse_VolumeStatus) GetPublishedNodeIds() []string { if x != nil { return x.PublishedNodeIds @@ -6679,33 +9836,79 @@ func (x *ListVolumesResponse_VolumeStatus) GetPublishedNodeIds() []string { return nil } -func (x *ListVolumesResponse_VolumeStatus) GetVolumeCondition() *VolumeCondition { - if x != nil { - return x.VolumeCondition - } - return nil +func (x *ListVolumesResponse_VolumeStatus) GetVolumeCondition() *VolumeCondition { + if x != nil { + return x.VolumeCondition + } + return nil +} + +func (x *ListVolumesResponse_VolumeStatus) SetPublishedNodeIds(v []string) { + x.PublishedNodeIds = v +} + +func (x *ListVolumesResponse_VolumeStatus) SetVolumeCondition(v *VolumeCondition) { + x.VolumeCondition = v +} + +func (x *ListVolumesResponse_VolumeStatus) HasVolumeCondition() bool { + if x == nil { + return false + } + return x.VolumeCondition != nil +} + +func (x *ListVolumesResponse_VolumeStatus) ClearVolumeCondition() { + x.VolumeCondition = nil +} + +type ListVolumesResponse_VolumeStatus_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // A list of all `node_id` of nodes that the volume in this entry + // is controller published on. + // This field is OPTIONAL. If it is not specified and the SP has + // the LIST_VOLUMES_PUBLISHED_NODES controller capability, the CO + // MAY assume the volume is not controller published to any nodes. + // If the field is not specified and the SP does not have the + // LIST_VOLUMES_PUBLISHED_NODES controller capability, the CO MUST + // not interpret this field. + // published_node_ids MAY include nodes not published to or + // reported by the SP. The CO MUST be resilient to that. + PublishedNodeIds []string + // Information about the current condition of the volume. + // This field is OPTIONAL. + // This field MUST be specified if the + // VOLUME_CONDITION controller capability is supported. + VolumeCondition *VolumeCondition +} + +func (b0 ListVolumesResponse_VolumeStatus_builder) Build() *ListVolumesResponse_VolumeStatus { + m0 := &ListVolumesResponse_VolumeStatus{} + b, x := &b0, m0 + _, _ = b, x + x.PublishedNodeIds = b.PublishedNodeIds + x.VolumeCondition = b.VolumeCondition + return m0 } type ListVolumesResponse_Entry struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"hybrid.v1"` // This field is REQUIRED Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` // This field is OPTIONAL. This field MUST be specified if the // LIST_VOLUMES_PUBLISHED_NODES controller capability is // supported. - Status *ListVolumesResponse_VolumeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + Status *ListVolumesResponse_VolumeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListVolumesResponse_Entry) Reset() { *x = ListVolumesResponse_Entry{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[104] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListVolumesResponse_Entry) String() string { @@ -6716,7 +9919,7 @@ func (*ListVolumesResponse_Entry) ProtoMessage() {} func (x *ListVolumesResponse_Entry) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[104] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6726,11 +9929,6 @@ func (x *ListVolumesResponse_Entry) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListVolumesResponse_Entry.ProtoReflect.Descriptor instead. -func (*ListVolumesResponse_Entry) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{24, 1} -} - func (x *ListVolumesResponse_Entry) GetVolume() *Volume { if x != nil { return x.Volume @@ -6745,11 +9943,58 @@ func (x *ListVolumesResponse_Entry) GetStatus() *ListVolumesResponse_VolumeStatu return nil } -type ControllerGetVolumeResponse_VolumeStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ListVolumesResponse_Entry) SetVolume(v *Volume) { + x.Volume = v +} + +func (x *ListVolumesResponse_Entry) SetStatus(v *ListVolumesResponse_VolumeStatus) { + x.Status = v +} + +func (x *ListVolumesResponse_Entry) HasVolume() bool { + if x == nil { + return false + } + return x.Volume != nil +} + +func (x *ListVolumesResponse_Entry) HasStatus() bool { + if x == nil { + return false + } + return x.Status != nil +} + +func (x *ListVolumesResponse_Entry) ClearVolume() { + x.Volume = nil +} + +func (x *ListVolumesResponse_Entry) ClearStatus() { + x.Status = nil +} +type ListVolumesResponse_Entry_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This field is REQUIRED + Volume *Volume + // This field is OPTIONAL. This field MUST be specified if the + // LIST_VOLUMES_PUBLISHED_NODES controller capability is + // supported. + Status *ListVolumesResponse_VolumeStatus +} + +func (b0 ListVolumesResponse_Entry_builder) Build() *ListVolumesResponse_Entry { + m0 := &ListVolumesResponse_Entry{} + b, x := &b0, m0 + _, _ = b, x + x.Volume = b.Volume + x.Status = b.Status + return m0 +} + +type ControllerGetVolumeResponse_VolumeStatus struct { + state protoimpl.MessageState `protogen:"hybrid.v1"` // A list of all the `node_id` of nodes that this volume is // controller published on. // This field is OPTIONAL. @@ -6763,15 +10008,15 @@ type ControllerGetVolumeResponse_VolumeStatus struct { // This field MUST be specified if the // VOLUME_CONDITION controller capability is supported. VolumeCondition *VolumeCondition `protobuf:"bytes,2,opt,name=volume_condition,json=volumeCondition,proto3" json:"volume_condition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ControllerGetVolumeResponse_VolumeStatus) Reset() { *x = ControllerGetVolumeResponse_VolumeStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[105] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerGetVolumeResponse_VolumeStatus) String() string { @@ -6782,7 +10027,7 @@ func (*ControllerGetVolumeResponse_VolumeStatus) ProtoMessage() {} func (x *ControllerGetVolumeResponse_VolumeStatus) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[105] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6792,11 +10037,6 @@ func (x *ControllerGetVolumeResponse_VolumeStatus) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use ControllerGetVolumeResponse_VolumeStatus.ProtoReflect.Descriptor instead. -func (*ControllerGetVolumeResponse_VolumeStatus) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{26, 0} -} - func (x *ControllerGetVolumeResponse_VolumeStatus) GetPublishedNodeIds() []string { if x != nil { return x.PublishedNodeIds @@ -6811,21 +10051,64 @@ func (x *ControllerGetVolumeResponse_VolumeStatus) GetVolumeCondition() *VolumeC return nil } +func (x *ControllerGetVolumeResponse_VolumeStatus) SetPublishedNodeIds(v []string) { + x.PublishedNodeIds = v +} + +func (x *ControllerGetVolumeResponse_VolumeStatus) SetVolumeCondition(v *VolumeCondition) { + x.VolumeCondition = v +} + +func (x *ControllerGetVolumeResponse_VolumeStatus) HasVolumeCondition() bool { + if x == nil { + return false + } + return x.VolumeCondition != nil +} + +func (x *ControllerGetVolumeResponse_VolumeStatus) ClearVolumeCondition() { + x.VolumeCondition = nil +} + +type ControllerGetVolumeResponse_VolumeStatus_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // A list of all the `node_id` of nodes that this volume is + // controller published on. + // This field is OPTIONAL. + // This field MUST be specified if the LIST_VOLUMES_PUBLISHED_NODES + // controller capability is supported. + // published_node_ids MAY include nodes not published to or + // reported by the SP. The CO MUST be resilient to that. + PublishedNodeIds []string + // Information about the current condition of the volume. + // This field is OPTIONAL. + // This field MUST be specified if the + // VOLUME_CONDITION controller capability is supported. + VolumeCondition *VolumeCondition +} + +func (b0 ControllerGetVolumeResponse_VolumeStatus_builder) Build() *ControllerGetVolumeResponse_VolumeStatus { + m0 := &ControllerGetVolumeResponse_VolumeStatus{} + b, x := &b0, m0 + _, _ = b, x + x.PublishedNodeIds = b.PublishedNodeIds + x.VolumeCondition = b.VolumeCondition + return m0 +} + type ControllerServiceCapability_RPC struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` + Type ControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.ControllerServiceCapability_RPC_Type" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type ControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.ControllerServiceCapability_RPC_Type" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ControllerServiceCapability_RPC) Reset() { *x = ControllerServiceCapability_RPC{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[109] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ControllerServiceCapability_RPC) String() string { @@ -6836,7 +10119,7 @@ func (*ControllerServiceCapability_RPC) ProtoMessage() {} func (x *ControllerServiceCapability_RPC) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[109] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6846,11 +10129,6 @@ func (x *ControllerServiceCapability_RPC) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControllerServiceCapability_RPC.ProtoReflect.Descriptor instead. -func (*ControllerServiceCapability_RPC) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{33, 0} -} - func (x *ControllerServiceCapability_RPC) GetType() ControllerServiceCapability_RPC_Type { if x != nil { return x.Type @@ -6858,21 +10136,36 @@ func (x *ControllerServiceCapability_RPC) GetType() ControllerServiceCapability_ return ControllerServiceCapability_RPC_UNKNOWN } +func (x *ControllerServiceCapability_RPC) SetType(v ControllerServiceCapability_RPC_Type) { + x.Type = v +} + +type ControllerServiceCapability_RPC_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Type ControllerServiceCapability_RPC_Type +} + +func (b0 ControllerServiceCapability_RPC_builder) Build() *ControllerServiceCapability_RPC { + m0 := &ControllerServiceCapability_RPC{} + b, x := &b0, m0 + _, _ = b, x + x.Type = b.Type + return m0 +} + type ListSnapshotsResponse_Entry struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` + Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` unknownFields protoimpl.UnknownFields - - Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ListSnapshotsResponse_Entry) Reset() { *x = ListSnapshotsResponse_Entry{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[114] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListSnapshotsResponse_Entry) String() string { @@ -6883,7 +10176,7 @@ func (*ListSnapshotsResponse_Entry) ProtoMessage() {} func (x *ListSnapshotsResponse_Entry) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[114] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6893,11 +10186,6 @@ func (x *ListSnapshotsResponse_Entry) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListSnapshotsResponse_Entry.ProtoReflect.Descriptor instead. -func (*ListSnapshotsResponse_Entry) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{40, 0} -} - func (x *ListSnapshotsResponse_Entry) GetSnapshot() *Snapshot { if x != nil { return x.Snapshot @@ -6905,21 +10193,47 @@ func (x *ListSnapshotsResponse_Entry) GetSnapshot() *Snapshot { return nil } +func (x *ListSnapshotsResponse_Entry) SetSnapshot(v *Snapshot) { + x.Snapshot = v +} + +func (x *ListSnapshotsResponse_Entry) HasSnapshot() bool { + if x == nil { + return false + } + return x.Snapshot != nil +} + +func (x *ListSnapshotsResponse_Entry) ClearSnapshot() { + x.Snapshot = nil +} + +type ListSnapshotsResponse_Entry_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Snapshot *Snapshot +} + +func (b0 ListSnapshotsResponse_Entry_builder) Build() *ListSnapshotsResponse_Entry { + m0 := &ListSnapshotsResponse_Entry{} + b, x := &b0, m0 + _, _ = b, x + x.Snapshot = b.Snapshot + return m0 +} + type NodeServiceCapability_RPC struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` + Type NodeServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.NodeServiceCapability_RPC_Type" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type NodeServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.NodeServiceCapability_RPC_Type" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *NodeServiceCapability_RPC) Reset() { *x = NodeServiceCapability_RPC{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[122] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NodeServiceCapability_RPC) String() string { @@ -6930,7 +10244,7 @@ func (*NodeServiceCapability_RPC) ProtoMessage() {} func (x *NodeServiceCapability_RPC) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[122] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6940,11 +10254,6 @@ func (x *NodeServiceCapability_RPC) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeServiceCapability_RPC.ProtoReflect.Descriptor instead. -func (*NodeServiceCapability_RPC) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{57, 0} -} - func (x *NodeServiceCapability_RPC) GetType() NodeServiceCapability_RPC_Type { if x != nil { return x.Type @@ -6952,21 +10261,36 @@ func (x *NodeServiceCapability_RPC) GetType() NodeServiceCapability_RPC_Type { return NodeServiceCapability_RPC_UNKNOWN } +func (x *NodeServiceCapability_RPC) SetType(v NodeServiceCapability_RPC_Type) { + x.Type = v +} + +type NodeServiceCapability_RPC_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Type NodeServiceCapability_RPC_Type +} + +func (b0 NodeServiceCapability_RPC_builder) Build() *NodeServiceCapability_RPC { + m0 := &NodeServiceCapability_RPC{} + b, x := &b0, m0 + _, _ = b, x + x.Type = b.Type + return m0 +} + type GroupControllerServiceCapability_RPC struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"hybrid.v1"` + Type GroupControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.GroupControllerServiceCapability_RPC_Type" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type GroupControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.GroupControllerServiceCapability_RPC_Type" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GroupControllerServiceCapability_RPC) Reset() { *x = GroupControllerServiceCapability_RPC{} - if protoimpl.UnsafeEnabled { - mi := &file_csi_proto_msgTypes[124] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_csi_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GroupControllerServiceCapability_RPC) String() string { @@ -6977,7 +10301,7 @@ func (*GroupControllerServiceCapability_RPC) ProtoMessage() {} func (x *GroupControllerServiceCapability_RPC) ProtoReflect() protoreflect.Message { mi := &file_csi_proto_msgTypes[124] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6987,11 +10311,6 @@ func (x *GroupControllerServiceCapability_RPC) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use GroupControllerServiceCapability_RPC.ProtoReflect.Descriptor instead. -func (*GroupControllerServiceCapability_RPC) Descriptor() ([]byte, []int) { - return file_csi_proto_rawDescGZIP(), []int{64, 0} -} - func (x *GroupControllerServiceCapability_RPC) GetType() GroupControllerServiceCapability_RPC_Type { if x != nil { return x.Type @@ -6999,6 +10318,24 @@ func (x *GroupControllerServiceCapability_RPC) GetType() GroupControllerServiceC return GroupControllerServiceCapability_RPC_UNKNOWN } +func (x *GroupControllerServiceCapability_RPC) SetType(v GroupControllerServiceCapability_RPC_Type) { + x.Type = v +} + +type GroupControllerServiceCapability_RPC_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Type GroupControllerServiceCapability_RPC_Type +} + +func (b0 GroupControllerServiceCapability_RPC_builder) Build() *GroupControllerServiceCapability_RPC { + m0 := &GroupControllerServiceCapability_RPC{} + b, x := &b0, m0 + _, _ = b, x + x.Type = b.Type + return m0 +} + var file_csi_proto_extTypes = []protoimpl.ExtensionInfo{ { ExtendedType: (*descriptorpb.EnumOptions)(nil), @@ -8414,21 +11751,9 @@ var file_csi_proto_rawDesc = []byte{ 0x67, 0x6f, 0x2f, 0x63, 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } -var ( - file_csi_proto_rawDescOnce sync.Once - file_csi_proto_rawDescData = file_csi_proto_rawDesc -) - -func file_csi_proto_rawDescGZIP() []byte { - file_csi_proto_rawDescOnce.Do(func() { - file_csi_proto_rawDescData = protoimpl.X.CompressGZIP(file_csi_proto_rawDescData) - }) - return file_csi_proto_rawDescData -} - var file_csi_proto_enumTypes = make([]protoimpl.EnumInfo, 8) var file_csi_proto_msgTypes = make([]protoimpl.MessageInfo, 131) -var file_csi_proto_goTypes = []interface{}{ +var file_csi_proto_goTypes = []any{ (BlockMetadataType)(0), // 0: csi.v1.BlockMetadataType (PluginCapability_Service_Type)(0), // 1: csi.v1.PluginCapability.Service.Type (PluginCapability_VolumeExpansion_Type)(0), // 2: csi.v1.PluginCapability.VolumeExpansion.Type @@ -8766,1131 +12091,25 @@ func file_csi_proto_init() { if File_csi_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_csi_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPluginInfoRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPluginInfoResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPluginCapabilitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPluginCapabilitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PluginCapability); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProbeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProbeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeContentSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCapability); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CapacityRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Volume); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TopologyRequirement); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Topology); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerPublishVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerPublishVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerUnpublishVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerUnpublishVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVolumeCapabilitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVolumeCapabilitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVolumesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVolumesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerGetVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerGetVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerModifyVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerModifyVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCapacityRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCapacityResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerGetCapabilitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerGetCapabilitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerServiceCapability); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateSnapshotResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Snapshot); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteSnapshotResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSnapshotsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSnapshotsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerExpandVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerExpandVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeStageVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeStageVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeUnstageVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeUnstageVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodePublishVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodePublishVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeUnpublishVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeUnpublishVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetVolumeStatsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetVolumeStatsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeUsage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCondition); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetCapabilitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetCapabilitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeServiceCapability); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetInfoRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeGetInfoResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeExpandVolumeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeExpandVolumeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupControllerGetCapabilitiesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupControllerGetCapabilitiesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupControllerServiceCapability); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateVolumeGroupSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateVolumeGroupSnapshotResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeGroupSnapshot); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteVolumeGroupSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteVolumeGroupSnapshotResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVolumeGroupSnapshotRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVolumeGroupSnapshotResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMetadataAllocatedRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMetadataAllocatedResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMetadataDeltaRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMetadataDeltaResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PluginCapability_Service); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PluginCapability_VolumeExpansion); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeContentSource_SnapshotSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeContentSource_VolumeSource); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCapability_BlockVolume); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCapability_MountVolume); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeCapability_AccessMode); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValidateVolumeCapabilitiesResponse_Confirmed); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVolumesResponse_VolumeStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListVolumesResponse_Entry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerGetVolumeResponse_VolumeStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerServiceCapability_RPC); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSnapshotsResponse_Entry); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeServiceCapability_RPC); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_csi_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupControllerServiceCapability_RPC); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_csi_proto_msgTypes[4].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[4].OneofWrappers = []any{ (*PluginCapability_Service_)(nil), (*PluginCapability_VolumeExpansion_)(nil), } - file_csi_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[8].OneofWrappers = []any{ (*VolumeContentSource_Snapshot)(nil), (*VolumeContentSource_Volume)(nil), } - file_csi_proto_msgTypes[10].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[10].OneofWrappers = []any{ (*VolumeCapability_Block)(nil), (*VolumeCapability_Mount)(nil), } - file_csi_proto_msgTypes[33].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[33].OneofWrappers = []any{ (*ControllerServiceCapability_Rpc)(nil), } - file_csi_proto_msgTypes[57].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[57].OneofWrappers = []any{ (*NodeServiceCapability_Rpc)(nil), } - file_csi_proto_msgTypes[64].OneofWrappers = []interface{}{ + file_csi_proto_msgTypes[64].OneofWrappers = []any{ (*GroupControllerServiceCapability_Rpc)(nil), } type x struct{} diff --git a/lib/go/csi/csi_grpc.pb.go b/lib/go/csi/csi_grpc.pb.go index 8d709194..862aede9 100644 --- a/lib/go/csi/csi_grpc.pb.go +++ b/lib/go/csi/csi_grpc.pb.go @@ -2,8 +2,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.2 +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.29.2 // source: csi.proto package csi @@ -17,8 +17,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Identity_GetPluginInfo_FullMethodName = "/csi.v1.Identity/GetPluginInfo" @@ -44,8 +44,9 @@ func NewIdentityClient(cc grpc.ClientConnInterface) IdentityClient { } func (c *identityClient) GetPluginInfo(ctx context.Context, in *GetPluginInfoRequest, opts ...grpc.CallOption) (*GetPluginInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetPluginInfoResponse) - err := c.cc.Invoke(ctx, Identity_GetPluginInfo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Identity_GetPluginInfo_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -53,8 +54,9 @@ func (c *identityClient) GetPluginInfo(ctx context.Context, in *GetPluginInfoReq } func (c *identityClient) GetPluginCapabilities(ctx context.Context, in *GetPluginCapabilitiesRequest, opts ...grpc.CallOption) (*GetPluginCapabilitiesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetPluginCapabilitiesResponse) - err := c.cc.Invoke(ctx, Identity_GetPluginCapabilities_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Identity_GetPluginCapabilities_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -62,8 +64,9 @@ func (c *identityClient) GetPluginCapabilities(ctx context.Context, in *GetPlugi } func (c *identityClient) Probe(ctx context.Context, in *ProbeRequest, opts ...grpc.CallOption) (*ProbeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ProbeResponse) - err := c.cc.Invoke(ctx, Identity_Probe_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Identity_Probe_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -72,7 +75,7 @@ func (c *identityClient) Probe(ctx context.Context, in *ProbeRequest, opts ...gr // IdentityServer is the server API for Identity service. // All implementations must embed UnimplementedIdentityServer -// for forward compatibility +// for forward compatibility. type IdentityServer interface { GetPluginInfo(context.Context, *GetPluginInfoRequest) (*GetPluginInfoResponse, error) GetPluginCapabilities(context.Context, *GetPluginCapabilitiesRequest) (*GetPluginCapabilitiesResponse, error) @@ -80,9 +83,12 @@ type IdentityServer interface { mustEmbedUnimplementedIdentityServer() } -// UnimplementedIdentityServer must be embedded to have forward compatible implementations. -type UnimplementedIdentityServer struct { -} +// UnimplementedIdentityServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedIdentityServer struct{} func (UnimplementedIdentityServer) GetPluginInfo(context.Context, *GetPluginInfoRequest) (*GetPluginInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPluginInfo not implemented") @@ -94,6 +100,7 @@ func (UnimplementedIdentityServer) Probe(context.Context, *ProbeRequest) (*Probe return nil, status.Errorf(codes.Unimplemented, "method Probe not implemented") } func (UnimplementedIdentityServer) mustEmbedUnimplementedIdentityServer() {} +func (UnimplementedIdentityServer) testEmbeddedByValue() {} // UnsafeIdentityServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to IdentityServer will @@ -103,6 +110,13 @@ type UnsafeIdentityServer interface { } func RegisterIdentityServer(s grpc.ServiceRegistrar, srv IdentityServer) { + // If the following call pancis, it indicates UnimplementedIdentityServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Identity_ServiceDesc, srv) } @@ -230,8 +244,9 @@ func NewControllerClient(cc grpc.ClientConnInterface) ControllerClient { } func (c *controllerClient) CreateVolume(ctx context.Context, in *CreateVolumeRequest, opts ...grpc.CallOption) (*CreateVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateVolumeResponse) - err := c.cc.Invoke(ctx, Controller_CreateVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_CreateVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -239,8 +254,9 @@ func (c *controllerClient) CreateVolume(ctx context.Context, in *CreateVolumeReq } func (c *controllerClient) DeleteVolume(ctx context.Context, in *DeleteVolumeRequest, opts ...grpc.CallOption) (*DeleteVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteVolumeResponse) - err := c.cc.Invoke(ctx, Controller_DeleteVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_DeleteVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -248,8 +264,9 @@ func (c *controllerClient) DeleteVolume(ctx context.Context, in *DeleteVolumeReq } func (c *controllerClient) ControllerPublishVolume(ctx context.Context, in *ControllerPublishVolumeRequest, opts ...grpc.CallOption) (*ControllerPublishVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ControllerPublishVolumeResponse) - err := c.cc.Invoke(ctx, Controller_ControllerPublishVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_ControllerPublishVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -257,8 +274,9 @@ func (c *controllerClient) ControllerPublishVolume(ctx context.Context, in *Cont } func (c *controllerClient) ControllerUnpublishVolume(ctx context.Context, in *ControllerUnpublishVolumeRequest, opts ...grpc.CallOption) (*ControllerUnpublishVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ControllerUnpublishVolumeResponse) - err := c.cc.Invoke(ctx, Controller_ControllerUnpublishVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_ControllerUnpublishVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -266,8 +284,9 @@ func (c *controllerClient) ControllerUnpublishVolume(ctx context.Context, in *Co } func (c *controllerClient) ValidateVolumeCapabilities(ctx context.Context, in *ValidateVolumeCapabilitiesRequest, opts ...grpc.CallOption) (*ValidateVolumeCapabilitiesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ValidateVolumeCapabilitiesResponse) - err := c.cc.Invoke(ctx, Controller_ValidateVolumeCapabilities_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_ValidateVolumeCapabilities_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -275,8 +294,9 @@ func (c *controllerClient) ValidateVolumeCapabilities(ctx context.Context, in *V } func (c *controllerClient) ListVolumes(ctx context.Context, in *ListVolumesRequest, opts ...grpc.CallOption) (*ListVolumesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListVolumesResponse) - err := c.cc.Invoke(ctx, Controller_ListVolumes_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_ListVolumes_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -284,8 +304,9 @@ func (c *controllerClient) ListVolumes(ctx context.Context, in *ListVolumesReque } func (c *controllerClient) GetCapacity(ctx context.Context, in *GetCapacityRequest, opts ...grpc.CallOption) (*GetCapacityResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetCapacityResponse) - err := c.cc.Invoke(ctx, Controller_GetCapacity_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_GetCapacity_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -293,8 +314,9 @@ func (c *controllerClient) GetCapacity(ctx context.Context, in *GetCapacityReque } func (c *controllerClient) ControllerGetCapabilities(ctx context.Context, in *ControllerGetCapabilitiesRequest, opts ...grpc.CallOption) (*ControllerGetCapabilitiesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ControllerGetCapabilitiesResponse) - err := c.cc.Invoke(ctx, Controller_ControllerGetCapabilities_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_ControllerGetCapabilities_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -302,8 +324,9 @@ func (c *controllerClient) ControllerGetCapabilities(ctx context.Context, in *Co } func (c *controllerClient) CreateSnapshot(ctx context.Context, in *CreateSnapshotRequest, opts ...grpc.CallOption) (*CreateSnapshotResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateSnapshotResponse) - err := c.cc.Invoke(ctx, Controller_CreateSnapshot_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_CreateSnapshot_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -311,8 +334,9 @@ func (c *controllerClient) CreateSnapshot(ctx context.Context, in *CreateSnapsho } func (c *controllerClient) DeleteSnapshot(ctx context.Context, in *DeleteSnapshotRequest, opts ...grpc.CallOption) (*DeleteSnapshotResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteSnapshotResponse) - err := c.cc.Invoke(ctx, Controller_DeleteSnapshot_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_DeleteSnapshot_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -320,8 +344,9 @@ func (c *controllerClient) DeleteSnapshot(ctx context.Context, in *DeleteSnapsho } func (c *controllerClient) ListSnapshots(ctx context.Context, in *ListSnapshotsRequest, opts ...grpc.CallOption) (*ListSnapshotsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListSnapshotsResponse) - err := c.cc.Invoke(ctx, Controller_ListSnapshots_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_ListSnapshots_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -329,8 +354,9 @@ func (c *controllerClient) ListSnapshots(ctx context.Context, in *ListSnapshotsR } func (c *controllerClient) ControllerExpandVolume(ctx context.Context, in *ControllerExpandVolumeRequest, opts ...grpc.CallOption) (*ControllerExpandVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ControllerExpandVolumeResponse) - err := c.cc.Invoke(ctx, Controller_ControllerExpandVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_ControllerExpandVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -338,8 +364,9 @@ func (c *controllerClient) ControllerExpandVolume(ctx context.Context, in *Contr } func (c *controllerClient) ControllerGetVolume(ctx context.Context, in *ControllerGetVolumeRequest, opts ...grpc.CallOption) (*ControllerGetVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ControllerGetVolumeResponse) - err := c.cc.Invoke(ctx, Controller_ControllerGetVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_ControllerGetVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -347,8 +374,9 @@ func (c *controllerClient) ControllerGetVolume(ctx context.Context, in *Controll } func (c *controllerClient) ControllerModifyVolume(ctx context.Context, in *ControllerModifyVolumeRequest, opts ...grpc.CallOption) (*ControllerModifyVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ControllerModifyVolumeResponse) - err := c.cc.Invoke(ctx, Controller_ControllerModifyVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Controller_ControllerModifyVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -357,7 +385,7 @@ func (c *controllerClient) ControllerModifyVolume(ctx context.Context, in *Contr // ControllerServer is the server API for Controller service. // All implementations must embed UnimplementedControllerServer -// for forward compatibility +// for forward compatibility. type ControllerServer interface { CreateVolume(context.Context, *CreateVolumeRequest) (*CreateVolumeResponse, error) DeleteVolume(context.Context, *DeleteVolumeRequest) (*DeleteVolumeResponse, error) @@ -376,9 +404,12 @@ type ControllerServer interface { mustEmbedUnimplementedControllerServer() } -// UnimplementedControllerServer must be embedded to have forward compatible implementations. -type UnimplementedControllerServer struct { -} +// UnimplementedControllerServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedControllerServer struct{} func (UnimplementedControllerServer) CreateVolume(context.Context, *CreateVolumeRequest) (*CreateVolumeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateVolume not implemented") @@ -423,6 +454,7 @@ func (UnimplementedControllerServer) ControllerModifyVolume(context.Context, *Co return nil, status.Errorf(codes.Unimplemented, "method ControllerModifyVolume not implemented") } func (UnimplementedControllerServer) mustEmbedUnimplementedControllerServer() {} +func (UnimplementedControllerServer) testEmbeddedByValue() {} // UnsafeControllerServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ControllerServer will @@ -432,6 +464,13 @@ type UnsafeControllerServer interface { } func RegisterControllerServer(s grpc.ServiceRegistrar, srv ControllerServer) { + // If the following call pancis, it indicates UnimplementedControllerServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Controller_ServiceDesc, srv) } @@ -781,8 +820,9 @@ func NewGroupControllerClient(cc grpc.ClientConnInterface) GroupControllerClient } func (c *groupControllerClient) GroupControllerGetCapabilities(ctx context.Context, in *GroupControllerGetCapabilitiesRequest, opts ...grpc.CallOption) (*GroupControllerGetCapabilitiesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GroupControllerGetCapabilitiesResponse) - err := c.cc.Invoke(ctx, GroupController_GroupControllerGetCapabilities_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GroupController_GroupControllerGetCapabilities_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -790,8 +830,9 @@ func (c *groupControllerClient) GroupControllerGetCapabilities(ctx context.Conte } func (c *groupControllerClient) CreateVolumeGroupSnapshot(ctx context.Context, in *CreateVolumeGroupSnapshotRequest, opts ...grpc.CallOption) (*CreateVolumeGroupSnapshotResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateVolumeGroupSnapshotResponse) - err := c.cc.Invoke(ctx, GroupController_CreateVolumeGroupSnapshot_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GroupController_CreateVolumeGroupSnapshot_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -799,8 +840,9 @@ func (c *groupControllerClient) CreateVolumeGroupSnapshot(ctx context.Context, i } func (c *groupControllerClient) DeleteVolumeGroupSnapshot(ctx context.Context, in *DeleteVolumeGroupSnapshotRequest, opts ...grpc.CallOption) (*DeleteVolumeGroupSnapshotResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteVolumeGroupSnapshotResponse) - err := c.cc.Invoke(ctx, GroupController_DeleteVolumeGroupSnapshot_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GroupController_DeleteVolumeGroupSnapshot_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -808,8 +850,9 @@ func (c *groupControllerClient) DeleteVolumeGroupSnapshot(ctx context.Context, i } func (c *groupControllerClient) GetVolumeGroupSnapshot(ctx context.Context, in *GetVolumeGroupSnapshotRequest, opts ...grpc.CallOption) (*GetVolumeGroupSnapshotResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetVolumeGroupSnapshotResponse) - err := c.cc.Invoke(ctx, GroupController_GetVolumeGroupSnapshot_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, GroupController_GetVolumeGroupSnapshot_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -818,7 +861,7 @@ func (c *groupControllerClient) GetVolumeGroupSnapshot(ctx context.Context, in * // GroupControllerServer is the server API for GroupController service. // All implementations must embed UnimplementedGroupControllerServer -// for forward compatibility +// for forward compatibility. type GroupControllerServer interface { GroupControllerGetCapabilities(context.Context, *GroupControllerGetCapabilitiesRequest) (*GroupControllerGetCapabilitiesResponse, error) CreateVolumeGroupSnapshot(context.Context, *CreateVolumeGroupSnapshotRequest) (*CreateVolumeGroupSnapshotResponse, error) @@ -827,9 +870,12 @@ type GroupControllerServer interface { mustEmbedUnimplementedGroupControllerServer() } -// UnimplementedGroupControllerServer must be embedded to have forward compatible implementations. -type UnimplementedGroupControllerServer struct { -} +// UnimplementedGroupControllerServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedGroupControllerServer struct{} func (UnimplementedGroupControllerServer) GroupControllerGetCapabilities(context.Context, *GroupControllerGetCapabilitiesRequest) (*GroupControllerGetCapabilitiesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GroupControllerGetCapabilities not implemented") @@ -844,6 +890,7 @@ func (UnimplementedGroupControllerServer) GetVolumeGroupSnapshot(context.Context return nil, status.Errorf(codes.Unimplemented, "method GetVolumeGroupSnapshot not implemented") } func (UnimplementedGroupControllerServer) mustEmbedUnimplementedGroupControllerServer() {} +func (UnimplementedGroupControllerServer) testEmbeddedByValue() {} // UnsafeGroupControllerServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to GroupControllerServer will @@ -853,6 +900,13 @@ type UnsafeGroupControllerServer interface { } func RegisterGroupControllerServer(s grpc.ServiceRegistrar, srv GroupControllerServer) { + // If the following call pancis, it indicates UnimplementedGroupControllerServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&GroupController_ServiceDesc, srv) } @@ -965,8 +1019,8 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type SnapshotMetadataClient interface { - GetMetadataAllocated(ctx context.Context, in *GetMetadataAllocatedRequest, opts ...grpc.CallOption) (SnapshotMetadata_GetMetadataAllocatedClient, error) - GetMetadataDelta(ctx context.Context, in *GetMetadataDeltaRequest, opts ...grpc.CallOption) (SnapshotMetadata_GetMetadataDeltaClient, error) + GetMetadataAllocated(ctx context.Context, in *GetMetadataAllocatedRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetMetadataAllocatedResponse], error) + GetMetadataDelta(ctx context.Context, in *GetMetadataDeltaRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetMetadataDeltaResponse], error) } type snapshotMetadataClient struct { @@ -977,12 +1031,13 @@ func NewSnapshotMetadataClient(cc grpc.ClientConnInterface) SnapshotMetadataClie return &snapshotMetadataClient{cc} } -func (c *snapshotMetadataClient) GetMetadataAllocated(ctx context.Context, in *GetMetadataAllocatedRequest, opts ...grpc.CallOption) (SnapshotMetadata_GetMetadataAllocatedClient, error) { - stream, err := c.cc.NewStream(ctx, &SnapshotMetadata_ServiceDesc.Streams[0], SnapshotMetadata_GetMetadataAllocated_FullMethodName, opts...) +func (c *snapshotMetadataClient) GetMetadataAllocated(ctx context.Context, in *GetMetadataAllocatedRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetMetadataAllocatedResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &SnapshotMetadata_ServiceDesc.Streams[0], SnapshotMetadata_GetMetadataAllocated_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &snapshotMetadataGetMetadataAllocatedClient{stream} + x := &grpc.GenericClientStream[GetMetadataAllocatedRequest, GetMetadataAllocatedResponse]{ClientStream: stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -992,29 +1047,16 @@ func (c *snapshotMetadataClient) GetMetadataAllocated(ctx context.Context, in *G return x, nil } -type SnapshotMetadata_GetMetadataAllocatedClient interface { - Recv() (*GetMetadataAllocatedResponse, error) - grpc.ClientStream -} - -type snapshotMetadataGetMetadataAllocatedClient struct { - grpc.ClientStream -} - -func (x *snapshotMetadataGetMetadataAllocatedClient) Recv() (*GetMetadataAllocatedResponse, error) { - m := new(GetMetadataAllocatedResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type SnapshotMetadata_GetMetadataAllocatedClient = grpc.ServerStreamingClient[GetMetadataAllocatedResponse] -func (c *snapshotMetadataClient) GetMetadataDelta(ctx context.Context, in *GetMetadataDeltaRequest, opts ...grpc.CallOption) (SnapshotMetadata_GetMetadataDeltaClient, error) { - stream, err := c.cc.NewStream(ctx, &SnapshotMetadata_ServiceDesc.Streams[1], SnapshotMetadata_GetMetadataDelta_FullMethodName, opts...) +func (c *snapshotMetadataClient) GetMetadataDelta(ctx context.Context, in *GetMetadataDeltaRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[GetMetadataDeltaResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &SnapshotMetadata_ServiceDesc.Streams[1], SnapshotMetadata_GetMetadataDelta_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &snapshotMetadataGetMetadataDeltaClient{stream} + x := &grpc.GenericClientStream[GetMetadataDeltaRequest, GetMetadataDeltaResponse]{ClientStream: stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -1024,43 +1066,33 @@ func (c *snapshotMetadataClient) GetMetadataDelta(ctx context.Context, in *GetMe return x, nil } -type SnapshotMetadata_GetMetadataDeltaClient interface { - Recv() (*GetMetadataDeltaResponse, error) - grpc.ClientStream -} - -type snapshotMetadataGetMetadataDeltaClient struct { - grpc.ClientStream -} - -func (x *snapshotMetadataGetMetadataDeltaClient) Recv() (*GetMetadataDeltaResponse, error) { - m := new(GetMetadataDeltaResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type SnapshotMetadata_GetMetadataDeltaClient = grpc.ServerStreamingClient[GetMetadataDeltaResponse] // SnapshotMetadataServer is the server API for SnapshotMetadata service. // All implementations must embed UnimplementedSnapshotMetadataServer -// for forward compatibility +// for forward compatibility. type SnapshotMetadataServer interface { - GetMetadataAllocated(*GetMetadataAllocatedRequest, SnapshotMetadata_GetMetadataAllocatedServer) error - GetMetadataDelta(*GetMetadataDeltaRequest, SnapshotMetadata_GetMetadataDeltaServer) error + GetMetadataAllocated(*GetMetadataAllocatedRequest, grpc.ServerStreamingServer[GetMetadataAllocatedResponse]) error + GetMetadataDelta(*GetMetadataDeltaRequest, grpc.ServerStreamingServer[GetMetadataDeltaResponse]) error mustEmbedUnimplementedSnapshotMetadataServer() } -// UnimplementedSnapshotMetadataServer must be embedded to have forward compatible implementations. -type UnimplementedSnapshotMetadataServer struct { -} +// UnimplementedSnapshotMetadataServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedSnapshotMetadataServer struct{} -func (UnimplementedSnapshotMetadataServer) GetMetadataAllocated(*GetMetadataAllocatedRequest, SnapshotMetadata_GetMetadataAllocatedServer) error { +func (UnimplementedSnapshotMetadataServer) GetMetadataAllocated(*GetMetadataAllocatedRequest, grpc.ServerStreamingServer[GetMetadataAllocatedResponse]) error { return status.Errorf(codes.Unimplemented, "method GetMetadataAllocated not implemented") } -func (UnimplementedSnapshotMetadataServer) GetMetadataDelta(*GetMetadataDeltaRequest, SnapshotMetadata_GetMetadataDeltaServer) error { +func (UnimplementedSnapshotMetadataServer) GetMetadataDelta(*GetMetadataDeltaRequest, grpc.ServerStreamingServer[GetMetadataDeltaResponse]) error { return status.Errorf(codes.Unimplemented, "method GetMetadataDelta not implemented") } func (UnimplementedSnapshotMetadataServer) mustEmbedUnimplementedSnapshotMetadataServer() {} +func (UnimplementedSnapshotMetadataServer) testEmbeddedByValue() {} // UnsafeSnapshotMetadataServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to SnapshotMetadataServer will @@ -1070,6 +1102,13 @@ type UnsafeSnapshotMetadataServer interface { } func RegisterSnapshotMetadataServer(s grpc.ServiceRegistrar, srv SnapshotMetadataServer) { + // If the following call pancis, it indicates UnimplementedSnapshotMetadataServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&SnapshotMetadata_ServiceDesc, srv) } @@ -1078,42 +1117,22 @@ func _SnapshotMetadata_GetMetadataAllocated_Handler(srv interface{}, stream grpc if err := stream.RecvMsg(m); err != nil { return err } - return srv.(SnapshotMetadataServer).GetMetadataAllocated(m, &snapshotMetadataGetMetadataAllocatedServer{stream}) + return srv.(SnapshotMetadataServer).GetMetadataAllocated(m, &grpc.GenericServerStream[GetMetadataAllocatedRequest, GetMetadataAllocatedResponse]{ServerStream: stream}) } -type SnapshotMetadata_GetMetadataAllocatedServer interface { - Send(*GetMetadataAllocatedResponse) error - grpc.ServerStream -} - -type snapshotMetadataGetMetadataAllocatedServer struct { - grpc.ServerStream -} - -func (x *snapshotMetadataGetMetadataAllocatedServer) Send(m *GetMetadataAllocatedResponse) error { - return x.ServerStream.SendMsg(m) -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type SnapshotMetadata_GetMetadataAllocatedServer = grpc.ServerStreamingServer[GetMetadataAllocatedResponse] func _SnapshotMetadata_GetMetadataDelta_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(GetMetadataDeltaRequest) if err := stream.RecvMsg(m); err != nil { return err } - return srv.(SnapshotMetadataServer).GetMetadataDelta(m, &snapshotMetadataGetMetadataDeltaServer{stream}) + return srv.(SnapshotMetadataServer).GetMetadataDelta(m, &grpc.GenericServerStream[GetMetadataDeltaRequest, GetMetadataDeltaResponse]{ServerStream: stream}) } -type SnapshotMetadata_GetMetadataDeltaServer interface { - Send(*GetMetadataDeltaResponse) error - grpc.ServerStream -} - -type snapshotMetadataGetMetadataDeltaServer struct { - grpc.ServerStream -} - -func (x *snapshotMetadataGetMetadataDeltaServer) Send(m *GetMetadataDeltaResponse) error { - return x.ServerStream.SendMsg(m) -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type SnapshotMetadata_GetMetadataDeltaServer = grpc.ServerStreamingServer[GetMetadataDeltaResponse] // SnapshotMetadata_ServiceDesc is the grpc.ServiceDesc for SnapshotMetadata service. // It's only intended for direct use with grpc.RegisterService, @@ -1171,8 +1190,9 @@ func NewNodeClient(cc grpc.ClientConnInterface) NodeClient { } func (c *nodeClient) NodeStageVolume(ctx context.Context, in *NodeStageVolumeRequest, opts ...grpc.CallOption) (*NodeStageVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(NodeStageVolumeResponse) - err := c.cc.Invoke(ctx, Node_NodeStageVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Node_NodeStageVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1180,8 +1200,9 @@ func (c *nodeClient) NodeStageVolume(ctx context.Context, in *NodeStageVolumeReq } func (c *nodeClient) NodeUnstageVolume(ctx context.Context, in *NodeUnstageVolumeRequest, opts ...grpc.CallOption) (*NodeUnstageVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(NodeUnstageVolumeResponse) - err := c.cc.Invoke(ctx, Node_NodeUnstageVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Node_NodeUnstageVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1189,8 +1210,9 @@ func (c *nodeClient) NodeUnstageVolume(ctx context.Context, in *NodeUnstageVolum } func (c *nodeClient) NodePublishVolume(ctx context.Context, in *NodePublishVolumeRequest, opts ...grpc.CallOption) (*NodePublishVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(NodePublishVolumeResponse) - err := c.cc.Invoke(ctx, Node_NodePublishVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Node_NodePublishVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1198,8 +1220,9 @@ func (c *nodeClient) NodePublishVolume(ctx context.Context, in *NodePublishVolum } func (c *nodeClient) NodeUnpublishVolume(ctx context.Context, in *NodeUnpublishVolumeRequest, opts ...grpc.CallOption) (*NodeUnpublishVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(NodeUnpublishVolumeResponse) - err := c.cc.Invoke(ctx, Node_NodeUnpublishVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Node_NodeUnpublishVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1207,8 +1230,9 @@ func (c *nodeClient) NodeUnpublishVolume(ctx context.Context, in *NodeUnpublishV } func (c *nodeClient) NodeGetVolumeStats(ctx context.Context, in *NodeGetVolumeStatsRequest, opts ...grpc.CallOption) (*NodeGetVolumeStatsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(NodeGetVolumeStatsResponse) - err := c.cc.Invoke(ctx, Node_NodeGetVolumeStats_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Node_NodeGetVolumeStats_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1216,8 +1240,9 @@ func (c *nodeClient) NodeGetVolumeStats(ctx context.Context, in *NodeGetVolumeSt } func (c *nodeClient) NodeExpandVolume(ctx context.Context, in *NodeExpandVolumeRequest, opts ...grpc.CallOption) (*NodeExpandVolumeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(NodeExpandVolumeResponse) - err := c.cc.Invoke(ctx, Node_NodeExpandVolume_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Node_NodeExpandVolume_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1225,8 +1250,9 @@ func (c *nodeClient) NodeExpandVolume(ctx context.Context, in *NodeExpandVolumeR } func (c *nodeClient) NodeGetCapabilities(ctx context.Context, in *NodeGetCapabilitiesRequest, opts ...grpc.CallOption) (*NodeGetCapabilitiesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(NodeGetCapabilitiesResponse) - err := c.cc.Invoke(ctx, Node_NodeGetCapabilities_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Node_NodeGetCapabilities_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1234,8 +1260,9 @@ func (c *nodeClient) NodeGetCapabilities(ctx context.Context, in *NodeGetCapabil } func (c *nodeClient) NodeGetInfo(ctx context.Context, in *NodeGetInfoRequest, opts ...grpc.CallOption) (*NodeGetInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(NodeGetInfoResponse) - err := c.cc.Invoke(ctx, Node_NodeGetInfo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Node_NodeGetInfo_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -1244,7 +1271,7 @@ func (c *nodeClient) NodeGetInfo(ctx context.Context, in *NodeGetInfoRequest, op // NodeServer is the server API for Node service. // All implementations must embed UnimplementedNodeServer -// for forward compatibility +// for forward compatibility. type NodeServer interface { NodeStageVolume(context.Context, *NodeStageVolumeRequest) (*NodeStageVolumeResponse, error) NodeUnstageVolume(context.Context, *NodeUnstageVolumeRequest) (*NodeUnstageVolumeResponse, error) @@ -1257,9 +1284,12 @@ type NodeServer interface { mustEmbedUnimplementedNodeServer() } -// UnimplementedNodeServer must be embedded to have forward compatible implementations. -type UnimplementedNodeServer struct { -} +// UnimplementedNodeServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedNodeServer struct{} func (UnimplementedNodeServer) NodeStageVolume(context.Context, *NodeStageVolumeRequest) (*NodeStageVolumeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method NodeStageVolume not implemented") @@ -1286,6 +1316,7 @@ func (UnimplementedNodeServer) NodeGetInfo(context.Context, *NodeGetInfoRequest) return nil, status.Errorf(codes.Unimplemented, "method NodeGetInfo not implemented") } func (UnimplementedNodeServer) mustEmbedUnimplementedNodeServer() {} +func (UnimplementedNodeServer) testEmbeddedByValue() {} // UnsafeNodeServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to NodeServer will @@ -1295,6 +1326,13 @@ type UnsafeNodeServer interface { } func RegisterNodeServer(s grpc.ServiceRegistrar, srv NodeServer) { + // If the following call pancis, it indicates UnimplementedNodeServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Node_ServiceDesc, srv) } diff --git a/lib/go/csi/csi_protoopaque.pb.go b/lib/go/csi/csi_protoopaque.pb.go new file mode 100644 index 00000000..75c24b43 --- /dev/null +++ b/lib/go/csi/csi_protoopaque.pb.go @@ -0,0 +1,11064 @@ +// Code generated by make; DO NOT EDIT. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.0 +// protoc v5.29.2 +// source: csi.proto + +//go:build protoopaque + +package csi + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type BlockMetadataType int32 + +const ( + BlockMetadataType_UNKNOWN BlockMetadataType = 0 + // The FIXED_LENGTH value indicates that data ranges are + // returned in fixed size blocks. + BlockMetadataType_FIXED_LENGTH BlockMetadataType = 1 + // The VARIABLE_LENGTH value indicates that data ranges + // are returned in potentially variable sized extents. + BlockMetadataType_VARIABLE_LENGTH BlockMetadataType = 2 +) + +// Enum value maps for BlockMetadataType. +var ( + BlockMetadataType_name = map[int32]string{ + 0: "UNKNOWN", + 1: "FIXED_LENGTH", + 2: "VARIABLE_LENGTH", + } + BlockMetadataType_value = map[string]int32{ + "UNKNOWN": 0, + "FIXED_LENGTH": 1, + "VARIABLE_LENGTH": 2, + } +) + +func (x BlockMetadataType) Enum() *BlockMetadataType { + p := new(BlockMetadataType) + *p = x + return p +} + +func (x BlockMetadataType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BlockMetadataType) Descriptor() protoreflect.EnumDescriptor { + return file_csi_proto_enumTypes[0].Descriptor() +} + +func (BlockMetadataType) Type() protoreflect.EnumType { + return &file_csi_proto_enumTypes[0] +} + +func (x BlockMetadataType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +type PluginCapability_Service_Type int32 + +const ( + PluginCapability_Service_UNKNOWN PluginCapability_Service_Type = 0 + // CONTROLLER_SERVICE indicates that the Plugin provides RPCs for + // the ControllerService. Plugins SHOULD provide this capability. + // In rare cases certain plugins MAY wish to omit the + // ControllerService entirely from their implementation, but such + // SHOULD NOT be the common case. + // The presence of this capability determines whether the CO will + // attempt to invoke the REQUIRED ControllerService RPCs, as well + // as specific RPCs as indicated by ControllerGetCapabilities. + PluginCapability_Service_CONTROLLER_SERVICE PluginCapability_Service_Type = 1 + // VOLUME_ACCESSIBILITY_CONSTRAINTS indicates that the volumes for + // this plugin MAY NOT be equally accessible by all nodes in the + // cluster. The CO MUST use the topology information returned by + // CreateVolumeRequest along with the topology information + // returned by NodeGetInfo to ensure that a given volume is + // accessible from a given node when scheduling workloads. + PluginCapability_Service_VOLUME_ACCESSIBILITY_CONSTRAINTS PluginCapability_Service_Type = 2 + // GROUP_CONTROLLER_SERVICE indicates that the Plugin provides + // RPCs for operating on groups of volumes. Plugins MAY provide + // this capability. + // The presence of this capability determines whether the CO will + // attempt to invoke the REQUIRED GroupController service RPCs, as + // well as specific RPCs as indicated by + // GroupControllerGetCapabilities. + PluginCapability_Service_GROUP_CONTROLLER_SERVICE PluginCapability_Service_Type = 3 + // SNAPSHOT_METADATA_SERVICE indicates that the Plugin provides + // RPCs to retrieve metadata on the allocated blocks of a single + // snapshot, or the changed blocks between a pair of snapshots of + // the same block volume. + // The presence of this capability determines whether the CO will + // attempt to invoke the OPTIONAL SnapshotMetadata service RPCs. + PluginCapability_Service_SNAPSHOT_METADATA_SERVICE PluginCapability_Service_Type = 4 +) + +// Enum value maps for PluginCapability_Service_Type. +var ( + PluginCapability_Service_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CONTROLLER_SERVICE", + 2: "VOLUME_ACCESSIBILITY_CONSTRAINTS", + 3: "GROUP_CONTROLLER_SERVICE", + 4: "SNAPSHOT_METADATA_SERVICE", + } + PluginCapability_Service_Type_value = map[string]int32{ + "UNKNOWN": 0, + "CONTROLLER_SERVICE": 1, + "VOLUME_ACCESSIBILITY_CONSTRAINTS": 2, + "GROUP_CONTROLLER_SERVICE": 3, + "SNAPSHOT_METADATA_SERVICE": 4, + } +) + +func (x PluginCapability_Service_Type) Enum() *PluginCapability_Service_Type { + p := new(PluginCapability_Service_Type) + *p = x + return p +} + +func (x PluginCapability_Service_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PluginCapability_Service_Type) Descriptor() protoreflect.EnumDescriptor { + return file_csi_proto_enumTypes[1].Descriptor() +} + +func (PluginCapability_Service_Type) Type() protoreflect.EnumType { + return &file_csi_proto_enumTypes[1] +} + +func (x PluginCapability_Service_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +type PluginCapability_VolumeExpansion_Type int32 + +const ( + PluginCapability_VolumeExpansion_UNKNOWN PluginCapability_VolumeExpansion_Type = 0 + // ONLINE indicates that volumes may be expanded when published to + // a node. When a Plugin implements this capability it MUST + // implement either the EXPAND_VOLUME controller capability or the + // EXPAND_VOLUME node capability or both. When a plugin supports + // ONLINE volume expansion and also has the EXPAND_VOLUME + // controller capability then the plugin MUST support expansion of + // volumes currently published and available on a node. When a + // plugin supports ONLINE volume expansion and also has the + // EXPAND_VOLUME node capability then the plugin MAY support + // expansion of node-published volume via NodeExpandVolume. + // + // Example 1: Given a shared filesystem volume (e.g. GlusterFs), + // + // the Plugin may set the ONLINE volume expansion capability and + // implement ControllerExpandVolume but not NodeExpandVolume. + // + // Example 2: Given a block storage volume type (e.g. EBS), the + // + // Plugin may set the ONLINE volume expansion capability and + // implement both ControllerExpandVolume and NodeExpandVolume. + // + // Example 3: Given a Plugin that supports volume expansion only + // + // upon a node, the Plugin may set the ONLINE volume + // expansion capability and implement NodeExpandVolume but not + // ControllerExpandVolume. + PluginCapability_VolumeExpansion_ONLINE PluginCapability_VolumeExpansion_Type = 1 + // OFFLINE indicates that volumes currently published and + // available on a node SHALL NOT be expanded via + // ControllerExpandVolume. When a plugin supports OFFLINE volume + // expansion it MUST implement either the EXPAND_VOLUME controller + // capability or both the EXPAND_VOLUME controller capability and + // the EXPAND_VOLUME node capability. + // + // Example 1: Given a block storage volume type (e.g. Azure Disk) + // + // that does not support expansion of "node-attached" (i.e. + // controller-published) volumes, the Plugin may indicate + // OFFLINE volume expansion support and implement both + // ControllerExpandVolume and NodeExpandVolume. + PluginCapability_VolumeExpansion_OFFLINE PluginCapability_VolumeExpansion_Type = 2 +) + +// Enum value maps for PluginCapability_VolumeExpansion_Type. +var ( + PluginCapability_VolumeExpansion_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "ONLINE", + 2: "OFFLINE", + } + PluginCapability_VolumeExpansion_Type_value = map[string]int32{ + "UNKNOWN": 0, + "ONLINE": 1, + "OFFLINE": 2, + } +) + +func (x PluginCapability_VolumeExpansion_Type) Enum() *PluginCapability_VolumeExpansion_Type { + p := new(PluginCapability_VolumeExpansion_Type) + *p = x + return p +} + +func (x PluginCapability_VolumeExpansion_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PluginCapability_VolumeExpansion_Type) Descriptor() protoreflect.EnumDescriptor { + return file_csi_proto_enumTypes[2].Descriptor() +} + +func (PluginCapability_VolumeExpansion_Type) Type() protoreflect.EnumType { + return &file_csi_proto_enumTypes[2] +} + +func (x PluginCapability_VolumeExpansion_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +type VolumeCapability_AccessMode_Mode int32 + +const ( + VolumeCapability_AccessMode_UNKNOWN VolumeCapability_AccessMode_Mode = 0 + // Can only be published once as read/write on a single node, at + // any given time. + VolumeCapability_AccessMode_SINGLE_NODE_WRITER VolumeCapability_AccessMode_Mode = 1 + // Can only be published once as readonly on a single node, at + // any given time. + VolumeCapability_AccessMode_SINGLE_NODE_READER_ONLY VolumeCapability_AccessMode_Mode = 2 + // Can be published as readonly at multiple nodes simultaneously. + VolumeCapability_AccessMode_MULTI_NODE_READER_ONLY VolumeCapability_AccessMode_Mode = 3 + // Can be published at multiple nodes simultaneously. Only one of + // the node can be used as read/write. The rest will be readonly. + VolumeCapability_AccessMode_MULTI_NODE_SINGLE_WRITER VolumeCapability_AccessMode_Mode = 4 + // Can be published as read/write at multiple nodes + // simultaneously. + VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER VolumeCapability_AccessMode_Mode = 5 + // Can only be published once as read/write at a single workload + // on a single node, at any given time. SHOULD be used instead of + // SINGLE_NODE_WRITER for COs using the experimental + // SINGLE_NODE_MULTI_WRITER capability. + VolumeCapability_AccessMode_SINGLE_NODE_SINGLE_WRITER VolumeCapability_AccessMode_Mode = 6 + // Can be published as read/write at multiple workloads on a + // single node simultaneously. SHOULD be used instead of + // SINGLE_NODE_WRITER for COs using the experimental + // SINGLE_NODE_MULTI_WRITER capability. + VolumeCapability_AccessMode_SINGLE_NODE_MULTI_WRITER VolumeCapability_AccessMode_Mode = 7 +) + +// Enum value maps for VolumeCapability_AccessMode_Mode. +var ( + VolumeCapability_AccessMode_Mode_name = map[int32]string{ + 0: "UNKNOWN", + 1: "SINGLE_NODE_WRITER", + 2: "SINGLE_NODE_READER_ONLY", + 3: "MULTI_NODE_READER_ONLY", + 4: "MULTI_NODE_SINGLE_WRITER", + 5: "MULTI_NODE_MULTI_WRITER", + 6: "SINGLE_NODE_SINGLE_WRITER", + 7: "SINGLE_NODE_MULTI_WRITER", + } + VolumeCapability_AccessMode_Mode_value = map[string]int32{ + "UNKNOWN": 0, + "SINGLE_NODE_WRITER": 1, + "SINGLE_NODE_READER_ONLY": 2, + "MULTI_NODE_READER_ONLY": 3, + "MULTI_NODE_SINGLE_WRITER": 4, + "MULTI_NODE_MULTI_WRITER": 5, + "SINGLE_NODE_SINGLE_WRITER": 6, + "SINGLE_NODE_MULTI_WRITER": 7, + } +) + +func (x VolumeCapability_AccessMode_Mode) Enum() *VolumeCapability_AccessMode_Mode { + p := new(VolumeCapability_AccessMode_Mode) + *p = x + return p +} + +func (x VolumeCapability_AccessMode_Mode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VolumeCapability_AccessMode_Mode) Descriptor() protoreflect.EnumDescriptor { + return file_csi_proto_enumTypes[3].Descriptor() +} + +func (VolumeCapability_AccessMode_Mode) Type() protoreflect.EnumType { + return &file_csi_proto_enumTypes[3] +} + +func (x VolumeCapability_AccessMode_Mode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +type ControllerServiceCapability_RPC_Type int32 + +const ( + ControllerServiceCapability_RPC_UNKNOWN ControllerServiceCapability_RPC_Type = 0 + ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME ControllerServiceCapability_RPC_Type = 1 + ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME ControllerServiceCapability_RPC_Type = 2 + ControllerServiceCapability_RPC_LIST_VOLUMES ControllerServiceCapability_RPC_Type = 3 + ControllerServiceCapability_RPC_GET_CAPACITY ControllerServiceCapability_RPC_Type = 4 + // Currently the only way to consume a snapshot is to create + // a volume from it. Therefore plugins supporting + // CREATE_DELETE_SNAPSHOT MUST support creating volume from + // snapshot. + ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT ControllerServiceCapability_RPC_Type = 5 + ControllerServiceCapability_RPC_LIST_SNAPSHOTS ControllerServiceCapability_RPC_Type = 6 + // Plugins supporting volume cloning at the storage level MAY + // report this capability. The source volume MUST be managed by + // the same plugin. Not all volume sources and parameters + // combinations MAY work. + ControllerServiceCapability_RPC_CLONE_VOLUME ControllerServiceCapability_RPC_Type = 7 + // Indicates the SP supports ControllerPublishVolume.readonly + // field. + ControllerServiceCapability_RPC_PUBLISH_READONLY ControllerServiceCapability_RPC_Type = 8 + // See VolumeExpansion for details. + ControllerServiceCapability_RPC_EXPAND_VOLUME ControllerServiceCapability_RPC_Type = 9 + // Indicates the SP supports the + // ListVolumesResponse.entry.published_node_ids field and the + // ControllerGetVolumeResponse.published_node_ids field. + // The SP MUST also support PUBLISH_UNPUBLISH_VOLUME. + ControllerServiceCapability_RPC_LIST_VOLUMES_PUBLISHED_NODES ControllerServiceCapability_RPC_Type = 10 + // Indicates that the Controller service can report volume + // conditions. + // An SP MAY implement `VolumeCondition` in only the Controller + // Plugin, only the Node Plugin, or both. + // If `VolumeCondition` is implemented in both the Controller and + // Node Plugins, it SHALL report from different perspectives. + // If for some reason Controller and Node Plugins report + // misaligned volume conditions, CO SHALL assume the worst case + // is the truth. + // Note that, for alpha, `VolumeCondition` is intended be + // informative for humans only, not for automation. + ControllerServiceCapability_RPC_VOLUME_CONDITION ControllerServiceCapability_RPC_Type = 11 + // Indicates the SP supports the ControllerGetVolume RPC. + // This enables COs to, for example, fetch per volume + // condition after a volume is provisioned. + ControllerServiceCapability_RPC_GET_VOLUME ControllerServiceCapability_RPC_Type = 12 + // Indicates the SP supports the SINGLE_NODE_SINGLE_WRITER and/or + // SINGLE_NODE_MULTI_WRITER access modes. + // These access modes are intended to replace the + // SINGLE_NODE_WRITER access mode to clarify the number of writers + // for a volume on a single node. Plugins MUST accept and allow + // use of the SINGLE_NODE_WRITER access mode when either + // SINGLE_NODE_SINGLE_WRITER and/or SINGLE_NODE_MULTI_WRITER are + // supported, in order to permit older COs to continue working. + ControllerServiceCapability_RPC_SINGLE_NODE_MULTI_WRITER ControllerServiceCapability_RPC_Type = 13 + // Indicates the SP supports modifying volume with mutable + // parameters. See ControllerModifyVolume for details. + ControllerServiceCapability_RPC_MODIFY_VOLUME ControllerServiceCapability_RPC_Type = 14 +) + +// Enum value maps for ControllerServiceCapability_RPC_Type. +var ( + ControllerServiceCapability_RPC_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CREATE_DELETE_VOLUME", + 2: "PUBLISH_UNPUBLISH_VOLUME", + 3: "LIST_VOLUMES", + 4: "GET_CAPACITY", + 5: "CREATE_DELETE_SNAPSHOT", + 6: "LIST_SNAPSHOTS", + 7: "CLONE_VOLUME", + 8: "PUBLISH_READONLY", + 9: "EXPAND_VOLUME", + 10: "LIST_VOLUMES_PUBLISHED_NODES", + 11: "VOLUME_CONDITION", + 12: "GET_VOLUME", + 13: "SINGLE_NODE_MULTI_WRITER", + 14: "MODIFY_VOLUME", + } + ControllerServiceCapability_RPC_Type_value = map[string]int32{ + "UNKNOWN": 0, + "CREATE_DELETE_VOLUME": 1, + "PUBLISH_UNPUBLISH_VOLUME": 2, + "LIST_VOLUMES": 3, + "GET_CAPACITY": 4, + "CREATE_DELETE_SNAPSHOT": 5, + "LIST_SNAPSHOTS": 6, + "CLONE_VOLUME": 7, + "PUBLISH_READONLY": 8, + "EXPAND_VOLUME": 9, + "LIST_VOLUMES_PUBLISHED_NODES": 10, + "VOLUME_CONDITION": 11, + "GET_VOLUME": 12, + "SINGLE_NODE_MULTI_WRITER": 13, + "MODIFY_VOLUME": 14, + } +) + +func (x ControllerServiceCapability_RPC_Type) Enum() *ControllerServiceCapability_RPC_Type { + p := new(ControllerServiceCapability_RPC_Type) + *p = x + return p +} + +func (x ControllerServiceCapability_RPC_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ControllerServiceCapability_RPC_Type) Descriptor() protoreflect.EnumDescriptor { + return file_csi_proto_enumTypes[4].Descriptor() +} + +func (ControllerServiceCapability_RPC_Type) Type() protoreflect.EnumType { + return &file_csi_proto_enumTypes[4] +} + +func (x ControllerServiceCapability_RPC_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +type VolumeUsage_Unit int32 + +const ( + VolumeUsage_UNKNOWN VolumeUsage_Unit = 0 + VolumeUsage_BYTES VolumeUsage_Unit = 1 + VolumeUsage_INODES VolumeUsage_Unit = 2 +) + +// Enum value maps for VolumeUsage_Unit. +var ( + VolumeUsage_Unit_name = map[int32]string{ + 0: "UNKNOWN", + 1: "BYTES", + 2: "INODES", + } + VolumeUsage_Unit_value = map[string]int32{ + "UNKNOWN": 0, + "BYTES": 1, + "INODES": 2, + } +) + +func (x VolumeUsage_Unit) Enum() *VolumeUsage_Unit { + p := new(VolumeUsage_Unit) + *p = x + return p +} + +func (x VolumeUsage_Unit) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VolumeUsage_Unit) Descriptor() protoreflect.EnumDescriptor { + return file_csi_proto_enumTypes[5].Descriptor() +} + +func (VolumeUsage_Unit) Type() protoreflect.EnumType { + return &file_csi_proto_enumTypes[5] +} + +func (x VolumeUsage_Unit) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +type NodeServiceCapability_RPC_Type int32 + +const ( + NodeServiceCapability_RPC_UNKNOWN NodeServiceCapability_RPC_Type = 0 + NodeServiceCapability_RPC_STAGE_UNSTAGE_VOLUME NodeServiceCapability_RPC_Type = 1 + // If Plugin implements GET_VOLUME_STATS capability + // then it MUST implement NodeGetVolumeStats RPC + // call for fetching volume statistics. + NodeServiceCapability_RPC_GET_VOLUME_STATS NodeServiceCapability_RPC_Type = 2 + // See VolumeExpansion for details. + NodeServiceCapability_RPC_EXPAND_VOLUME NodeServiceCapability_RPC_Type = 3 + // Indicates that the Node service can report volume conditions. + // An SP MAY implement `VolumeCondition` in only the Node + // Plugin, only the Controller Plugin, or both. + // If `VolumeCondition` is implemented in both the Node and + // Controller Plugins, it SHALL report from different + // perspectives. + // If for some reason Node and Controller Plugins report + // misaligned volume conditions, CO SHALL assume the worst case + // is the truth. + // Note that, for alpha, `VolumeCondition` is intended to be + // informative for humans only, not for automation. + NodeServiceCapability_RPC_VOLUME_CONDITION NodeServiceCapability_RPC_Type = 4 + // Indicates the SP supports the SINGLE_NODE_SINGLE_WRITER and/or + // SINGLE_NODE_MULTI_WRITER access modes. + // These access modes are intended to replace the + // SINGLE_NODE_WRITER access mode to clarify the number of writers + // for a volume on a single node. Plugins MUST accept and allow + // use of the SINGLE_NODE_WRITER access mode (subject to the + // processing rules for NodePublishVolume), when either + // SINGLE_NODE_SINGLE_WRITER and/or SINGLE_NODE_MULTI_WRITER are + // supported, in order to permit older COs to continue working. + NodeServiceCapability_RPC_SINGLE_NODE_MULTI_WRITER NodeServiceCapability_RPC_Type = 5 + // Indicates that Node service supports mounting volumes + // with provided volume group identifier during node stage + // or node publish RPC calls. + NodeServiceCapability_RPC_VOLUME_MOUNT_GROUP NodeServiceCapability_RPC_Type = 6 +) + +// Enum value maps for NodeServiceCapability_RPC_Type. +var ( + NodeServiceCapability_RPC_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "STAGE_UNSTAGE_VOLUME", + 2: "GET_VOLUME_STATS", + 3: "EXPAND_VOLUME", + 4: "VOLUME_CONDITION", + 5: "SINGLE_NODE_MULTI_WRITER", + 6: "VOLUME_MOUNT_GROUP", + } + NodeServiceCapability_RPC_Type_value = map[string]int32{ + "UNKNOWN": 0, + "STAGE_UNSTAGE_VOLUME": 1, + "GET_VOLUME_STATS": 2, + "EXPAND_VOLUME": 3, + "VOLUME_CONDITION": 4, + "SINGLE_NODE_MULTI_WRITER": 5, + "VOLUME_MOUNT_GROUP": 6, + } +) + +func (x NodeServiceCapability_RPC_Type) Enum() *NodeServiceCapability_RPC_Type { + p := new(NodeServiceCapability_RPC_Type) + *p = x + return p +} + +func (x NodeServiceCapability_RPC_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (NodeServiceCapability_RPC_Type) Descriptor() protoreflect.EnumDescriptor { + return file_csi_proto_enumTypes[6].Descriptor() +} + +func (NodeServiceCapability_RPC_Type) Type() protoreflect.EnumType { + return &file_csi_proto_enumTypes[6] +} + +func (x NodeServiceCapability_RPC_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +type GroupControllerServiceCapability_RPC_Type int32 + +const ( + GroupControllerServiceCapability_RPC_UNKNOWN GroupControllerServiceCapability_RPC_Type = 0 + // Indicates that the group controller plugin supports + // creating, deleting, and getting details of a volume + // group snapshot. + GroupControllerServiceCapability_RPC_CREATE_DELETE_GET_VOLUME_GROUP_SNAPSHOT GroupControllerServiceCapability_RPC_Type = 1 +) + +// Enum value maps for GroupControllerServiceCapability_RPC_Type. +var ( + GroupControllerServiceCapability_RPC_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "CREATE_DELETE_GET_VOLUME_GROUP_SNAPSHOT", + } + GroupControllerServiceCapability_RPC_Type_value = map[string]int32{ + "UNKNOWN": 0, + "CREATE_DELETE_GET_VOLUME_GROUP_SNAPSHOT": 1, + } +) + +func (x GroupControllerServiceCapability_RPC_Type) Enum() *GroupControllerServiceCapability_RPC_Type { + p := new(GroupControllerServiceCapability_RPC_Type) + *p = x + return p +} + +func (x GroupControllerServiceCapability_RPC_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GroupControllerServiceCapability_RPC_Type) Descriptor() protoreflect.EnumDescriptor { + return file_csi_proto_enumTypes[7].Descriptor() +} + +func (GroupControllerServiceCapability_RPC_Type) Type() protoreflect.EnumType { + return &file_csi_proto_enumTypes[7] +} + +func (x GroupControllerServiceCapability_RPC_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +type GetPluginInfoRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPluginInfoRequest) Reset() { + *x = GetPluginInfoRequest{} + mi := &file_csi_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPluginInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPluginInfoRequest) ProtoMessage() {} + +func (x *GetPluginInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type GetPluginInfoRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 GetPluginInfoRequest_builder) Build() *GetPluginInfoRequest { + m0 := &GetPluginInfoRequest{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type GetPluginInfoResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + xxx_hidden_VendorVersion string `protobuf:"bytes,2,opt,name=vendor_version,json=vendorVersion,proto3" json:"vendor_version,omitempty"` + xxx_hidden_Manifest map[string]string `protobuf:"bytes,3,rep,name=manifest,proto3" json:"manifest,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPluginInfoResponse) Reset() { + *x = GetPluginInfoResponse{} + mi := &file_csi_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPluginInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPluginInfoResponse) ProtoMessage() {} + +func (x *GetPluginInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetPluginInfoResponse) GetName() string { + if x != nil { + return x.xxx_hidden_Name + } + return "" +} + +func (x *GetPluginInfoResponse) GetVendorVersion() string { + if x != nil { + return x.xxx_hidden_VendorVersion + } + return "" +} + +func (x *GetPluginInfoResponse) GetManifest() map[string]string { + if x != nil { + return x.xxx_hidden_Manifest + } + return nil +} + +func (x *GetPluginInfoResponse) SetName(v string) { + x.xxx_hidden_Name = v +} + +func (x *GetPluginInfoResponse) SetVendorVersion(v string) { + x.xxx_hidden_VendorVersion = v +} + +func (x *GetPluginInfoResponse) SetManifest(v map[string]string) { + x.xxx_hidden_Manifest = v +} + +type GetPluginInfoResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The name MUST follow domain name notation format + // (https://tools.ietf.org/html/rfc1035#section-2.3.1). It SHOULD + // include the plugin's host company name and the plugin name, + // to minimize the possibility of collisions. It MUST be 63 + // characters or less, beginning and ending with an alphanumeric + // character ([a-z0-9A-Z]) with dashes (-), dots (.), and + // alphanumerics between. This field is REQUIRED. + Name string + // This field is REQUIRED. Value of this field is opaque to the CO. + VendorVersion string + // This field is OPTIONAL. Values are opaque to the CO. + Manifest map[string]string +} + +func (b0 GetPluginInfoResponse_builder) Build() *GetPluginInfoResponse { + m0 := &GetPluginInfoResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Name = b.Name + x.xxx_hidden_VendorVersion = b.VendorVersion + x.xxx_hidden_Manifest = b.Manifest + return m0 +} + +type GetPluginCapabilitiesRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPluginCapabilitiesRequest) Reset() { + *x = GetPluginCapabilitiesRequest{} + mi := &file_csi_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPluginCapabilitiesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPluginCapabilitiesRequest) ProtoMessage() {} + +func (x *GetPluginCapabilitiesRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type GetPluginCapabilitiesRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 GetPluginCapabilitiesRequest_builder) Build() *GetPluginCapabilitiesRequest { + m0 := &GetPluginCapabilitiesRequest{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type GetPluginCapabilitiesResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Capabilities *[]*PluginCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPluginCapabilitiesResponse) Reset() { + *x = GetPluginCapabilitiesResponse{} + mi := &file_csi_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPluginCapabilitiesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPluginCapabilitiesResponse) ProtoMessage() {} + +func (x *GetPluginCapabilitiesResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetPluginCapabilitiesResponse) GetCapabilities() []*PluginCapability { + if x != nil { + if x.xxx_hidden_Capabilities != nil { + return *x.xxx_hidden_Capabilities + } + } + return nil +} + +func (x *GetPluginCapabilitiesResponse) SetCapabilities(v []*PluginCapability) { + x.xxx_hidden_Capabilities = &v +} + +type GetPluginCapabilitiesResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // All the capabilities that the controller service supports. This + // field is OPTIONAL. + Capabilities []*PluginCapability +} + +func (b0 GetPluginCapabilitiesResponse_builder) Build() *GetPluginCapabilitiesResponse { + m0 := &GetPluginCapabilitiesResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Capabilities = &b.Capabilities + return m0 +} + +// Specifies a capability of the plugin. +type PluginCapability struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Type isPluginCapability_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PluginCapability) Reset() { + *x = PluginCapability{} + mi := &file_csi_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PluginCapability) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PluginCapability) ProtoMessage() {} + +func (x *PluginCapability) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *PluginCapability) GetService() *PluginCapability_Service { + if x != nil { + if x, ok := x.xxx_hidden_Type.(*pluginCapability_Service_); ok { + return x.Service + } + } + return nil +} + +func (x *PluginCapability) GetVolumeExpansion() *PluginCapability_VolumeExpansion { + if x != nil { + if x, ok := x.xxx_hidden_Type.(*pluginCapability_VolumeExpansion_); ok { + return x.VolumeExpansion + } + } + return nil +} + +func (x *PluginCapability) SetService(v *PluginCapability_Service) { + if v == nil { + x.xxx_hidden_Type = nil + return + } + x.xxx_hidden_Type = &pluginCapability_Service_{v} +} + +func (x *PluginCapability) SetVolumeExpansion(v *PluginCapability_VolumeExpansion) { + if v == nil { + x.xxx_hidden_Type = nil + return + } + x.xxx_hidden_Type = &pluginCapability_VolumeExpansion_{v} +} + +func (x *PluginCapability) HasType() bool { + if x == nil { + return false + } + return x.xxx_hidden_Type != nil +} + +func (x *PluginCapability) HasService() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_Type.(*pluginCapability_Service_) + return ok +} + +func (x *PluginCapability) HasVolumeExpansion() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_Type.(*pluginCapability_VolumeExpansion_) + return ok +} + +func (x *PluginCapability) ClearType() { + x.xxx_hidden_Type = nil +} + +func (x *PluginCapability) ClearService() { + if _, ok := x.xxx_hidden_Type.(*pluginCapability_Service_); ok { + x.xxx_hidden_Type = nil + } +} + +func (x *PluginCapability) ClearVolumeExpansion() { + if _, ok := x.xxx_hidden_Type.(*pluginCapability_VolumeExpansion_); ok { + x.xxx_hidden_Type = nil + } +} + +const PluginCapability_Type_not_set_case case_PluginCapability_Type = 0 +const PluginCapability_Service_case case_PluginCapability_Type = 1 +const PluginCapability_VolumeExpansion_case case_PluginCapability_Type = 2 + +func (x *PluginCapability) WhichType() case_PluginCapability_Type { + if x == nil { + return PluginCapability_Type_not_set_case + } + switch x.xxx_hidden_Type.(type) { + case *pluginCapability_Service_: + return PluginCapability_Service_case + case *pluginCapability_VolumeExpansion_: + return PluginCapability_VolumeExpansion_case + default: + return PluginCapability_Type_not_set_case + } +} + +type PluginCapability_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Fields of oneof xxx_hidden_Type: + // Service that the plugin supports. + Service *PluginCapability_Service + VolumeExpansion *PluginCapability_VolumeExpansion + // -- end of xxx_hidden_Type +} + +func (b0 PluginCapability_builder) Build() *PluginCapability { + m0 := &PluginCapability{} + b, x := &b0, m0 + _, _ = b, x + if b.Service != nil { + x.xxx_hidden_Type = &pluginCapability_Service_{b.Service} + } + if b.VolumeExpansion != nil { + x.xxx_hidden_Type = &pluginCapability_VolumeExpansion_{b.VolumeExpansion} + } + return m0 +} + +type case_PluginCapability_Type protoreflect.FieldNumber + +func (x case_PluginCapability_Type) String() string { + md := file_csi_proto_msgTypes[4].Descriptor() + if x == 0 { + return "not set" + } + return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x)) +} + +type isPluginCapability_Type interface { + isPluginCapability_Type() +} + +type pluginCapability_Service_ struct { + // Service that the plugin supports. + Service *PluginCapability_Service `protobuf:"bytes,1,opt,name=service,proto3,oneof"` +} + +type pluginCapability_VolumeExpansion_ struct { + VolumeExpansion *PluginCapability_VolumeExpansion `protobuf:"bytes,2,opt,name=volume_expansion,json=volumeExpansion,proto3,oneof"` +} + +func (*pluginCapability_Service_) isPluginCapability_Type() {} + +func (*pluginCapability_VolumeExpansion_) isPluginCapability_Type() {} + +type ProbeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProbeRequest) Reset() { + *x = ProbeRequest{} + mi := &file_csi_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProbeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProbeRequest) ProtoMessage() {} + +func (x *ProbeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type ProbeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 ProbeRequest_builder) Build() *ProbeRequest { + m0 := &ProbeRequest{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type ProbeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Ready *wrapperspb.BoolValue `protobuf:"bytes,1,opt,name=ready,proto3" json:"ready,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ProbeResponse) Reset() { + *x = ProbeResponse{} + mi := &file_csi_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProbeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProbeResponse) ProtoMessage() {} + +func (x *ProbeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ProbeResponse) GetReady() *wrapperspb.BoolValue { + if x != nil { + return x.xxx_hidden_Ready + } + return nil +} + +func (x *ProbeResponse) SetReady(v *wrapperspb.BoolValue) { + x.xxx_hidden_Ready = v +} + +func (x *ProbeResponse) HasReady() bool { + if x == nil { + return false + } + return x.xxx_hidden_Ready != nil +} + +func (x *ProbeResponse) ClearReady() { + x.xxx_hidden_Ready = nil +} + +type ProbeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Readiness allows a plugin to report its initialization status back + // to the CO. Initialization for some plugins MAY be time consuming + // and it is important for a CO to distinguish between the following + // cases: + // + // 1. The plugin is in an unhealthy state and MAY need restarting. In + // this case a gRPC error code SHALL be returned. + // 2. The plugin is still initializing, but is otherwise perfectly + // healthy. In this case a successful response SHALL be returned + // with a readiness value of `false`. Calls to the plugin's + // Controller and/or Node services MAY fail due to an incomplete + // initialization state. + // 3. The plugin has finished initializing and is ready to service + // calls to its Controller and/or Node services. A successful + // response is returned with a readiness value of `true`. + // + // This field is OPTIONAL. If not present, the caller SHALL assume + // that the plugin is in a ready state and is accepting calls to its + // Controller and/or Node services (according to the plugin's reported + // capabilities). + Ready *wrapperspb.BoolValue +} + +func (b0 ProbeResponse_builder) Build() *ProbeResponse { + m0 := &ProbeResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Ready = b.Ready + return m0 +} + +type CreateVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + xxx_hidden_CapacityRange *CapacityRange `protobuf:"bytes,2,opt,name=capacity_range,json=capacityRange,proto3" json:"capacity_range,omitempty"` + xxx_hidden_VolumeCapabilities *[]*VolumeCapability `protobuf:"bytes,3,rep,name=volume_capabilities,json=volumeCapabilities,proto3" json:"volume_capabilities,omitempty"` + xxx_hidden_Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_VolumeContentSource *VolumeContentSource `protobuf:"bytes,6,opt,name=volume_content_source,json=volumeContentSource,proto3" json:"volume_content_source,omitempty"` + xxx_hidden_AccessibilityRequirements *TopologyRequirement `protobuf:"bytes,7,opt,name=accessibility_requirements,json=accessibilityRequirements,proto3" json:"accessibility_requirements,omitempty"` + xxx_hidden_MutableParameters map[string]string `protobuf:"bytes,8,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateVolumeRequest) Reset() { + *x = CreateVolumeRequest{} + mi := &file_csi_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateVolumeRequest) ProtoMessage() {} + +func (x *CreateVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *CreateVolumeRequest) GetName() string { + if x != nil { + return x.xxx_hidden_Name + } + return "" +} + +func (x *CreateVolumeRequest) GetCapacityRange() *CapacityRange { + if x != nil { + return x.xxx_hidden_CapacityRange + } + return nil +} + +func (x *CreateVolumeRequest) GetVolumeCapabilities() []*VolumeCapability { + if x != nil { + if x.xxx_hidden_VolumeCapabilities != nil { + return *x.xxx_hidden_VolumeCapabilities + } + } + return nil +} + +func (x *CreateVolumeRequest) GetParameters() map[string]string { + if x != nil { + return x.xxx_hidden_Parameters + } + return nil +} + +func (x *CreateVolumeRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *CreateVolumeRequest) GetVolumeContentSource() *VolumeContentSource { + if x != nil { + return x.xxx_hidden_VolumeContentSource + } + return nil +} + +func (x *CreateVolumeRequest) GetAccessibilityRequirements() *TopologyRequirement { + if x != nil { + return x.xxx_hidden_AccessibilityRequirements + } + return nil +} + +func (x *CreateVolumeRequest) GetMutableParameters() map[string]string { + if x != nil { + return x.xxx_hidden_MutableParameters + } + return nil +} + +func (x *CreateVolumeRequest) SetName(v string) { + x.xxx_hidden_Name = v +} + +func (x *CreateVolumeRequest) SetCapacityRange(v *CapacityRange) { + x.xxx_hidden_CapacityRange = v +} + +func (x *CreateVolumeRequest) SetVolumeCapabilities(v []*VolumeCapability) { + x.xxx_hidden_VolumeCapabilities = &v +} + +func (x *CreateVolumeRequest) SetParameters(v map[string]string) { + x.xxx_hidden_Parameters = v +} + +func (x *CreateVolumeRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +func (x *CreateVolumeRequest) SetVolumeContentSource(v *VolumeContentSource) { + x.xxx_hidden_VolumeContentSource = v +} + +func (x *CreateVolumeRequest) SetAccessibilityRequirements(v *TopologyRequirement) { + x.xxx_hidden_AccessibilityRequirements = v +} + +func (x *CreateVolumeRequest) SetMutableParameters(v map[string]string) { + x.xxx_hidden_MutableParameters = v +} + +func (x *CreateVolumeRequest) HasCapacityRange() bool { + if x == nil { + return false + } + return x.xxx_hidden_CapacityRange != nil +} + +func (x *CreateVolumeRequest) HasVolumeContentSource() bool { + if x == nil { + return false + } + return x.xxx_hidden_VolumeContentSource != nil +} + +func (x *CreateVolumeRequest) HasAccessibilityRequirements() bool { + if x == nil { + return false + } + return x.xxx_hidden_AccessibilityRequirements != nil +} + +func (x *CreateVolumeRequest) ClearCapacityRange() { + x.xxx_hidden_CapacityRange = nil +} + +func (x *CreateVolumeRequest) ClearVolumeContentSource() { + x.xxx_hidden_VolumeContentSource = nil +} + +func (x *CreateVolumeRequest) ClearAccessibilityRequirements() { + x.xxx_hidden_AccessibilityRequirements = nil +} + +type CreateVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The suggested name for the storage space. This field is REQUIRED. + // It serves two purposes: + // 1. Idempotency - This name is generated by the CO to achieve + // idempotency. The Plugin SHOULD ensure that multiple + // `CreateVolume` calls for the same name do not result in more + // than one piece of storage provisioned corresponding to that + // name. If a Plugin is unable to enforce idempotency, the CO's + // error recovery logic could result in multiple (unused) volumes + // being provisioned. + // In the case of error, the CO MUST handle the gRPC error codes + // per the recovery behavior defined in the "CreateVolume Errors" + // section below. + // The CO is responsible for cleaning up volumes it provisioned + // that it no longer needs. If the CO is uncertain whether a volume + // was provisioned or not when a `CreateVolume` call fails, the CO + // MAY call `CreateVolume` again, with the same name, to ensure the + // volume exists and to retrieve the volume's `volume_id` (unless + // otherwise prohibited by "CreateVolume Errors"). + // 2. Suggested name - Some storage systems allow callers to specify + // an identifier by which to refer to the newly provisioned + // storage. If a storage system supports this, it can optionally + // use this name as the identifier for the new volume. + // + // Any Unicode string that conforms to the length limit is allowed + // except those containing the following banned characters: + // U+0000-U+0008, U+000B, U+000C, U+000E-U+001F, U+007F-U+009F. + // (These are control characters other than commonly used whitespace.) + Name string + // This field is OPTIONAL. This allows the CO to specify the capacity + // requirement of the volume to be provisioned. If not specified, the + // Plugin MAY choose an implementation-defined capacity range. If + // specified it MUST always be honored, even when creating volumes + // from a source; which MAY force some backends to internally extend + // the volume after creating it. + CapacityRange *CapacityRange + // The capabilities that the provisioned volume MUST have. SP MUST + // provision a volume that will satisfy ALL of the capabilities + // specified in this list. Otherwise SP MUST return the appropriate + // gRPC error code. + // The Plugin MUST assume that the CO MAY use the provisioned volume + // with ANY of the capabilities specified in this list. + // For example, a CO MAY specify two volume capabilities: one with + // access mode SINGLE_NODE_WRITER and another with access mode + // MULTI_NODE_READER_ONLY. In this case, the SP MUST verify that the + // provisioned volume can be used in either mode. + // This also enables the CO to do early validation: If ANY of the + // specified volume capabilities are not supported by the SP, the call + // MUST return the appropriate gRPC error code. + // This field is REQUIRED. + VolumeCapabilities []*VolumeCapability + // Plugin specific creation-time parameters passed in as opaque + // key-value pairs. This field is OPTIONAL. The Plugin is responsible + // for parsing and validating these parameters. COs will treat + // these as opaque. + Parameters map[string]string + // Secrets required by plugin to complete volume creation request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string + // If specified, the new volume will be pre-populated with data from + // this source. This field is OPTIONAL. + VolumeContentSource *VolumeContentSource + // Specifies where (regions, zones, racks, etc.) the provisioned + // volume MUST be accessible from. + // An SP SHALL advertise the requirements for topological + // accessibility information in documentation. COs SHALL only specify + // topological accessibility information supported by the SP. + // This field is OPTIONAL. + // This field SHALL NOT be specified unless the SP has the + // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability. + // If this field is not specified and the SP has the + // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability, the SP MAY + // choose where the provisioned volume is accessible from. + AccessibilityRequirements *TopologyRequirement + // Plugins MUST treat these + // as if they take precedence over the parameters field. + // This field SHALL NOT be specified unless the SP has the + // MODIFY_VOLUME plugin capability. + MutableParameters map[string]string +} + +func (b0 CreateVolumeRequest_builder) Build() *CreateVolumeRequest { + m0 := &CreateVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Name = b.Name + x.xxx_hidden_CapacityRange = b.CapacityRange + x.xxx_hidden_VolumeCapabilities = &b.VolumeCapabilities + x.xxx_hidden_Parameters = b.Parameters + x.xxx_hidden_Secrets = b.Secrets + x.xxx_hidden_VolumeContentSource = b.VolumeContentSource + x.xxx_hidden_AccessibilityRequirements = b.AccessibilityRequirements + x.xxx_hidden_MutableParameters = b.MutableParameters + return m0 +} + +// Specifies what source the volume will be created from. One of the +// type fields MUST be specified. +type VolumeContentSource struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Type isVolumeContentSource_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VolumeContentSource) Reset() { + *x = VolumeContentSource{} + mi := &file_csi_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VolumeContentSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VolumeContentSource) ProtoMessage() {} + +func (x *VolumeContentSource) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *VolumeContentSource) GetSnapshot() *VolumeContentSource_SnapshotSource { + if x != nil { + if x, ok := x.xxx_hidden_Type.(*volumeContentSource_Snapshot); ok { + return x.Snapshot + } + } + return nil +} + +func (x *VolumeContentSource) GetVolume() *VolumeContentSource_VolumeSource { + if x != nil { + if x, ok := x.xxx_hidden_Type.(*volumeContentSource_Volume); ok { + return x.Volume + } + } + return nil +} + +func (x *VolumeContentSource) SetSnapshot(v *VolumeContentSource_SnapshotSource) { + if v == nil { + x.xxx_hidden_Type = nil + return + } + x.xxx_hidden_Type = &volumeContentSource_Snapshot{v} +} + +func (x *VolumeContentSource) SetVolume(v *VolumeContentSource_VolumeSource) { + if v == nil { + x.xxx_hidden_Type = nil + return + } + x.xxx_hidden_Type = &volumeContentSource_Volume{v} +} + +func (x *VolumeContentSource) HasType() bool { + if x == nil { + return false + } + return x.xxx_hidden_Type != nil +} + +func (x *VolumeContentSource) HasSnapshot() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_Type.(*volumeContentSource_Snapshot) + return ok +} + +func (x *VolumeContentSource) HasVolume() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_Type.(*volumeContentSource_Volume) + return ok +} + +func (x *VolumeContentSource) ClearType() { + x.xxx_hidden_Type = nil +} + +func (x *VolumeContentSource) ClearSnapshot() { + if _, ok := x.xxx_hidden_Type.(*volumeContentSource_Snapshot); ok { + x.xxx_hidden_Type = nil + } +} + +func (x *VolumeContentSource) ClearVolume() { + if _, ok := x.xxx_hidden_Type.(*volumeContentSource_Volume); ok { + x.xxx_hidden_Type = nil + } +} + +const VolumeContentSource_Type_not_set_case case_VolumeContentSource_Type = 0 +const VolumeContentSource_Snapshot_case case_VolumeContentSource_Type = 1 +const VolumeContentSource_Volume_case case_VolumeContentSource_Type = 2 + +func (x *VolumeContentSource) WhichType() case_VolumeContentSource_Type { + if x == nil { + return VolumeContentSource_Type_not_set_case + } + switch x.xxx_hidden_Type.(type) { + case *volumeContentSource_Snapshot: + return VolumeContentSource_Snapshot_case + case *volumeContentSource_Volume: + return VolumeContentSource_Volume_case + default: + return VolumeContentSource_Type_not_set_case + } +} + +type VolumeContentSource_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Fields of oneof xxx_hidden_Type: + Snapshot *VolumeContentSource_SnapshotSource + Volume *VolumeContentSource_VolumeSource + // -- end of xxx_hidden_Type +} + +func (b0 VolumeContentSource_builder) Build() *VolumeContentSource { + m0 := &VolumeContentSource{} + b, x := &b0, m0 + _, _ = b, x + if b.Snapshot != nil { + x.xxx_hidden_Type = &volumeContentSource_Snapshot{b.Snapshot} + } + if b.Volume != nil { + x.xxx_hidden_Type = &volumeContentSource_Volume{b.Volume} + } + return m0 +} + +type case_VolumeContentSource_Type protoreflect.FieldNumber + +func (x case_VolumeContentSource_Type) String() string { + md := file_csi_proto_msgTypes[8].Descriptor() + if x == 0 { + return "not set" + } + return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x)) +} + +type isVolumeContentSource_Type interface { + isVolumeContentSource_Type() +} + +type volumeContentSource_Snapshot struct { + Snapshot *VolumeContentSource_SnapshotSource `protobuf:"bytes,1,opt,name=snapshot,proto3,oneof"` +} + +type volumeContentSource_Volume struct { + Volume *VolumeContentSource_VolumeSource `protobuf:"bytes,2,opt,name=volume,proto3,oneof"` +} + +func (*volumeContentSource_Snapshot) isVolumeContentSource_Type() {} + +func (*volumeContentSource_Volume) isVolumeContentSource_Type() {} + +type CreateVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateVolumeResponse) Reset() { + *x = CreateVolumeResponse{} + mi := &file_csi_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateVolumeResponse) ProtoMessage() {} + +func (x *CreateVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *CreateVolumeResponse) GetVolume() *Volume { + if x != nil { + return x.xxx_hidden_Volume + } + return nil +} + +func (x *CreateVolumeResponse) SetVolume(v *Volume) { + x.xxx_hidden_Volume = v +} + +func (x *CreateVolumeResponse) HasVolume() bool { + if x == nil { + return false + } + return x.xxx_hidden_Volume != nil +} + +func (x *CreateVolumeResponse) ClearVolume() { + x.xxx_hidden_Volume = nil +} + +type CreateVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Contains all attributes of the newly created volume that are + // relevant to the CO along with information required by the Plugin + // to uniquely identify the volume. This field is REQUIRED. + Volume *Volume +} + +func (b0 CreateVolumeResponse_builder) Build() *CreateVolumeResponse { + m0 := &CreateVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Volume = b.Volume + return m0 +} + +// Specify a capability of a volume. +type VolumeCapability struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_AccessType isVolumeCapability_AccessType `protobuf_oneof:"access_type"` + xxx_hidden_AccessMode *VolumeCapability_AccessMode `protobuf:"bytes,3,opt,name=access_mode,json=accessMode,proto3" json:"access_mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VolumeCapability) Reset() { + *x = VolumeCapability{} + mi := &file_csi_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VolumeCapability) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VolumeCapability) ProtoMessage() {} + +func (x *VolumeCapability) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *VolumeCapability) GetBlock() *VolumeCapability_BlockVolume { + if x != nil { + if x, ok := x.xxx_hidden_AccessType.(*volumeCapability_Block); ok { + return x.Block + } + } + return nil +} + +func (x *VolumeCapability) GetMount() *VolumeCapability_MountVolume { + if x != nil { + if x, ok := x.xxx_hidden_AccessType.(*volumeCapability_Mount); ok { + return x.Mount + } + } + return nil +} + +func (x *VolumeCapability) GetAccessMode() *VolumeCapability_AccessMode { + if x != nil { + return x.xxx_hidden_AccessMode + } + return nil +} + +func (x *VolumeCapability) SetBlock(v *VolumeCapability_BlockVolume) { + if v == nil { + x.xxx_hidden_AccessType = nil + return + } + x.xxx_hidden_AccessType = &volumeCapability_Block{v} +} + +func (x *VolumeCapability) SetMount(v *VolumeCapability_MountVolume) { + if v == nil { + x.xxx_hidden_AccessType = nil + return + } + x.xxx_hidden_AccessType = &volumeCapability_Mount{v} +} + +func (x *VolumeCapability) SetAccessMode(v *VolumeCapability_AccessMode) { + x.xxx_hidden_AccessMode = v +} + +func (x *VolumeCapability) HasAccessType() bool { + if x == nil { + return false + } + return x.xxx_hidden_AccessType != nil +} + +func (x *VolumeCapability) HasBlock() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_AccessType.(*volumeCapability_Block) + return ok +} + +func (x *VolumeCapability) HasMount() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_AccessType.(*volumeCapability_Mount) + return ok +} + +func (x *VolumeCapability) HasAccessMode() bool { + if x == nil { + return false + } + return x.xxx_hidden_AccessMode != nil +} + +func (x *VolumeCapability) ClearAccessType() { + x.xxx_hidden_AccessType = nil +} + +func (x *VolumeCapability) ClearBlock() { + if _, ok := x.xxx_hidden_AccessType.(*volumeCapability_Block); ok { + x.xxx_hidden_AccessType = nil + } +} + +func (x *VolumeCapability) ClearMount() { + if _, ok := x.xxx_hidden_AccessType.(*volumeCapability_Mount); ok { + x.xxx_hidden_AccessType = nil + } +} + +func (x *VolumeCapability) ClearAccessMode() { + x.xxx_hidden_AccessMode = nil +} + +const VolumeCapability_AccessType_not_set_case case_VolumeCapability_AccessType = 0 +const VolumeCapability_Block_case case_VolumeCapability_AccessType = 1 +const VolumeCapability_Mount_case case_VolumeCapability_AccessType = 2 + +func (x *VolumeCapability) WhichAccessType() case_VolumeCapability_AccessType { + if x == nil { + return VolumeCapability_AccessType_not_set_case + } + switch x.xxx_hidden_AccessType.(type) { + case *volumeCapability_Block: + return VolumeCapability_Block_case + case *volumeCapability_Mount: + return VolumeCapability_Mount_case + default: + return VolumeCapability_AccessType_not_set_case + } +} + +type VolumeCapability_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Specifies what API the volume will be accessed using. One of the + // following fields MUST be specified. + + // Fields of oneof xxx_hidden_AccessType: + Block *VolumeCapability_BlockVolume + Mount *VolumeCapability_MountVolume + // -- end of xxx_hidden_AccessType + // This is a REQUIRED field. + AccessMode *VolumeCapability_AccessMode +} + +func (b0 VolumeCapability_builder) Build() *VolumeCapability { + m0 := &VolumeCapability{} + b, x := &b0, m0 + _, _ = b, x + if b.Block != nil { + x.xxx_hidden_AccessType = &volumeCapability_Block{b.Block} + } + if b.Mount != nil { + x.xxx_hidden_AccessType = &volumeCapability_Mount{b.Mount} + } + x.xxx_hidden_AccessMode = b.AccessMode + return m0 +} + +type case_VolumeCapability_AccessType protoreflect.FieldNumber + +func (x case_VolumeCapability_AccessType) String() string { + md := file_csi_proto_msgTypes[10].Descriptor() + if x == 0 { + return "not set" + } + return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x)) +} + +type isVolumeCapability_AccessType interface { + isVolumeCapability_AccessType() +} + +type volumeCapability_Block struct { + Block *VolumeCapability_BlockVolume `protobuf:"bytes,1,opt,name=block,proto3,oneof"` +} + +type volumeCapability_Mount struct { + Mount *VolumeCapability_MountVolume `protobuf:"bytes,2,opt,name=mount,proto3,oneof"` +} + +func (*volumeCapability_Block) isVolumeCapability_AccessType() {} + +func (*volumeCapability_Mount) isVolumeCapability_AccessType() {} + +// The capacity of the storage space in bytes. To specify an exact size, +// `required_bytes` and `limit_bytes` SHALL be set to the same value. At +// least one of the these fields MUST be specified. +type CapacityRange struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_RequiredBytes int64 `protobuf:"varint,1,opt,name=required_bytes,json=requiredBytes,proto3" json:"required_bytes,omitempty"` + xxx_hidden_LimitBytes int64 `protobuf:"varint,2,opt,name=limit_bytes,json=limitBytes,proto3" json:"limit_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CapacityRange) Reset() { + *x = CapacityRange{} + mi := &file_csi_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CapacityRange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CapacityRange) ProtoMessage() {} + +func (x *CapacityRange) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *CapacityRange) GetRequiredBytes() int64 { + if x != nil { + return x.xxx_hidden_RequiredBytes + } + return 0 +} + +func (x *CapacityRange) GetLimitBytes() int64 { + if x != nil { + return x.xxx_hidden_LimitBytes + } + return 0 +} + +func (x *CapacityRange) SetRequiredBytes(v int64) { + x.xxx_hidden_RequiredBytes = v +} + +func (x *CapacityRange) SetLimitBytes(v int64) { + x.xxx_hidden_LimitBytes = v +} + +type CapacityRange_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Volume MUST be at least this big. This field is OPTIONAL. + // A value of 0 is equal to an unspecified field value. + // The value of this field MUST NOT be negative. + RequiredBytes int64 + // Volume MUST not be bigger than this. This field is OPTIONAL. + // A value of 0 is equal to an unspecified field value. + // The value of this field MUST NOT be negative. + LimitBytes int64 +} + +func (b0 CapacityRange_builder) Build() *CapacityRange { + m0 := &CapacityRange{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_RequiredBytes = b.RequiredBytes + x.xxx_hidden_LimitBytes = b.LimitBytes + return m0 +} + +// Information about a specific volume. +type Volume struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_CapacityBytes int64 `protobuf:"varint,1,opt,name=capacity_bytes,json=capacityBytes,proto3" json:"capacity_bytes,omitempty"` + xxx_hidden_VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_VolumeContext map[string]string `protobuf:"bytes,3,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_ContentSource *VolumeContentSource `protobuf:"bytes,4,opt,name=content_source,json=contentSource,proto3" json:"content_source,omitempty"` + xxx_hidden_AccessibleTopology *[]*Topology `protobuf:"bytes,5,rep,name=accessible_topology,json=accessibleTopology,proto3" json:"accessible_topology,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Volume) Reset() { + *x = Volume{} + mi := &file_csi_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Volume) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Volume) ProtoMessage() {} + +func (x *Volume) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Volume) GetCapacityBytes() int64 { + if x != nil { + return x.xxx_hidden_CapacityBytes + } + return 0 +} + +func (x *Volume) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *Volume) GetVolumeContext() map[string]string { + if x != nil { + return x.xxx_hidden_VolumeContext + } + return nil +} + +func (x *Volume) GetContentSource() *VolumeContentSource { + if x != nil { + return x.xxx_hidden_ContentSource + } + return nil +} + +func (x *Volume) GetAccessibleTopology() []*Topology { + if x != nil { + if x.xxx_hidden_AccessibleTopology != nil { + return *x.xxx_hidden_AccessibleTopology + } + } + return nil +} + +func (x *Volume) SetCapacityBytes(v int64) { + x.xxx_hidden_CapacityBytes = v +} + +func (x *Volume) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *Volume) SetVolumeContext(v map[string]string) { + x.xxx_hidden_VolumeContext = v +} + +func (x *Volume) SetContentSource(v *VolumeContentSource) { + x.xxx_hidden_ContentSource = v +} + +func (x *Volume) SetAccessibleTopology(v []*Topology) { + x.xxx_hidden_AccessibleTopology = &v +} + +func (x *Volume) HasContentSource() bool { + if x == nil { + return false + } + return x.xxx_hidden_ContentSource != nil +} + +func (x *Volume) ClearContentSource() { + x.xxx_hidden_ContentSource = nil +} + +type Volume_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The capacity of the volume in bytes. This field is OPTIONAL. If not + // set (value of 0), it indicates that the capacity of the volume is + // unknown (e.g., NFS share). + // The value of this field MUST NOT be negative. + CapacityBytes int64 + // The identifier for this volume, generated by the plugin. + // This field is REQUIRED. + // This field MUST contain enough information to uniquely identify + // this specific volume vs all other volumes supported by this plugin. + // This field SHALL be used by the CO in subsequent calls to refer to + // this volume. + // The SP is NOT responsible for global uniqueness of volume_id across + // multiple SPs. + VolumeId string + // Opaque static properties of the volume. SP MAY use this field to + // ensure subsequent volume validation and publishing calls have + // contextual information. + // The contents of this field SHALL be opaque to a CO. + // The contents of this field SHALL NOT be mutable. + // The contents of this field SHALL be safe for the CO to cache. + // The contents of this field SHOULD NOT contain sensitive + // information. + // The contents of this field SHOULD NOT be used for uniquely + // identifying a volume. The `volume_id` alone SHOULD be sufficient to + // identify the volume. + // A volume uniquely identified by `volume_id` SHALL always report the + // same volume_context. + // This field is OPTIONAL and when present MUST be passed to volume + // validation and publishing calls. + VolumeContext map[string]string + // If specified, indicates that the volume is not empty and is + // pre-populated with data from the specified source. + // This field is OPTIONAL. + ContentSource *VolumeContentSource + // Specifies where (regions, zones, racks, etc.) the provisioned + // volume is accessible from. + // A plugin that returns this field MUST also set the + // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability. + // An SP MAY specify multiple topologies to indicate the volume is + // accessible from multiple locations. + // COs MAY use this information along with the topology information + // returned by NodeGetInfo to ensure that a given volume is accessible + // from a given node when scheduling workloads. + // This field is OPTIONAL. If it is not specified, the CO MAY assume + // the volume is equally accessible from all nodes in the cluster and + // MAY schedule workloads referencing the volume on any available + // node. + // + // Example 1: + // + // accessible_topology = {"region": "R1", "zone": "Z2"} + // + // Indicates a volume accessible only from the "region" "R1" and the + // "zone" "Z2". + // + // Example 2: + // + // accessible_topology = + // {"region": "R1", "zone": "Z2"}, + // {"region": "R1", "zone": "Z3"} + // + // Indicates a volume accessible from both "zone" "Z2" and "zone" "Z3" + // in the "region" "R1". + AccessibleTopology []*Topology +} + +func (b0 Volume_builder) Build() *Volume { + m0 := &Volume{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_CapacityBytes = b.CapacityBytes + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_VolumeContext = b.VolumeContext + x.xxx_hidden_ContentSource = b.ContentSource + x.xxx_hidden_AccessibleTopology = &b.AccessibleTopology + return m0 +} + +type TopologyRequirement struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Requisite *[]*Topology `protobuf:"bytes,1,rep,name=requisite,proto3" json:"requisite,omitempty"` + xxx_hidden_Preferred *[]*Topology `protobuf:"bytes,2,rep,name=preferred,proto3" json:"preferred,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TopologyRequirement) Reset() { + *x = TopologyRequirement{} + mi := &file_csi_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TopologyRequirement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TopologyRequirement) ProtoMessage() {} + +func (x *TopologyRequirement) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *TopologyRequirement) GetRequisite() []*Topology { + if x != nil { + if x.xxx_hidden_Requisite != nil { + return *x.xxx_hidden_Requisite + } + } + return nil +} + +func (x *TopologyRequirement) GetPreferred() []*Topology { + if x != nil { + if x.xxx_hidden_Preferred != nil { + return *x.xxx_hidden_Preferred + } + } + return nil +} + +func (x *TopologyRequirement) SetRequisite(v []*Topology) { + x.xxx_hidden_Requisite = &v +} + +func (x *TopologyRequirement) SetPreferred(v []*Topology) { + x.xxx_hidden_Preferred = &v +} + +type TopologyRequirement_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Specifies the list of topologies the provisioned volume MUST be + // accessible from. + // This field is OPTIONAL. If TopologyRequirement is specified either + // requisite or preferred or both MUST be specified. + // + // If requisite is specified, the provisioned volume MUST be + // accessible from at least one of the requisite topologies. + // + // Given + // + // x = number of topologies provisioned volume is accessible from + // n = number of requisite topologies + // + // The CO MUST ensure n >= 1. The SP MUST ensure x >= 1 + // If x==n, then the SP MUST make the provisioned volume available to + // all topologies from the list of requisite topologies. If it is + // unable to do so, the SP MUST fail the CreateVolume call. + // For example, if a volume should be accessible from a single zone, + // and requisite = + // + // {"region": "R1", "zone": "Z2"} + // + // then the provisioned volume MUST be accessible from the "region" + // "R1" and the "zone" "Z2". + // Similarly, if a volume should be accessible from two zones, and + // requisite = + // + // {"region": "R1", "zone": "Z2"}, + // {"region": "R1", "zone": "Z3"} + // + // then the provisioned volume MUST be accessible from the "region" + // "R1" and both "zone" "Z2" and "zone" "Z3". + // + // If xn, then the SP MUST make the provisioned volume available from + // all topologies from the list of requisite topologies and MAY choose + // the remaining x-n unique topologies from the list of all possible + // topologies. If it is unable to do so, the SP MUST fail the + // CreateVolume call. + // For example, if a volume should be accessible from two zones, and + // requisite = + // + // {"region": "R1", "zone": "Z2"} + // + // then the provisioned volume MUST be accessible from the "region" + // "R1" and the "zone" "Z2" and the SP may select the second zone + // independently, e.g. "R1/Z4". + Requisite []*Topology + // Specifies the list of topologies the CO would prefer the volume to + // be provisioned in. + // + // This field is OPTIONAL. If TopologyRequirement is specified either + // requisite or preferred or both MUST be specified. + // + // An SP MUST attempt to make the provisioned volume available using + // the preferred topologies in order from first to last. + // + // If requisite is specified, all topologies in preferred list MUST + // also be present in the list of requisite topologies. + // + // If the SP is unable to to make the provisioned volume available + // from any of the preferred topologies, the SP MAY choose a topology + // from the list of requisite topologies. + // If the list of requisite topologies is not specified, then the SP + // MAY choose from the list of all possible topologies. + // If the list of requisite topologies is specified and the SP is + // unable to to make the provisioned volume available from any of the + // requisite topologies it MUST fail the CreateVolume call. + // + // Example 1: + // Given a volume should be accessible from a single zone, and + // requisite = + // + // {"region": "R1", "zone": "Z2"}, + // {"region": "R1", "zone": "Z3"} + // + // preferred = + // + // {"region": "R1", "zone": "Z3"} + // + // then the SP SHOULD first attempt to make the provisioned volume + // available from "zone" "Z3" in the "region" "R1" and fall back to + // "zone" "Z2" in the "region" "R1" if that is not possible. + // + // Example 2: + // Given a volume should be accessible from a single zone, and + // requisite = + // + // {"region": "R1", "zone": "Z2"}, + // {"region": "R1", "zone": "Z3"}, + // {"region": "R1", "zone": "Z4"}, + // {"region": "R1", "zone": "Z5"} + // + // preferred = + // + // {"region": "R1", "zone": "Z4"}, + // {"region": "R1", "zone": "Z2"} + // + // then the SP SHOULD first attempt to make the provisioned volume + // accessible from "zone" "Z4" in the "region" "R1" and fall back to + // "zone" "Z2" in the "region" "R1" if that is not possible. If that + // is not possible, the SP may choose between either the "zone" + // "Z3" or "Z5" in the "region" "R1". + // + // Example 3: + // Given a volume should be accessible from TWO zones (because an + // opaque parameter in CreateVolumeRequest, for example, specifies + // the volume is accessible from two zones, aka synchronously + // replicated), and + // requisite = + // + // {"region": "R1", "zone": "Z2"}, + // {"region": "R1", "zone": "Z3"}, + // {"region": "R1", "zone": "Z4"}, + // {"region": "R1", "zone": "Z5"} + // + // preferred = + // + // {"region": "R1", "zone": "Z5"}, + // {"region": "R1", "zone": "Z3"} + // + // then the SP SHOULD first attempt to make the provisioned volume + // accessible from the combination of the two "zones" "Z5" and "Z3" in + // the "region" "R1". If that's not possible, it should fall back to + // a combination of "Z5" and other possibilities from the list of + // requisite. If that's not possible, it should fall back to a + // combination of "Z3" and other possibilities from the list of + // requisite. If that's not possible, it should fall back to a + // combination of other possibilities from the list of requisite. + Preferred []*Topology +} + +func (b0 TopologyRequirement_builder) Build() *TopologyRequirement { + m0 := &TopologyRequirement{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Requisite = &b.Requisite + x.xxx_hidden_Preferred = &b.Preferred + return m0 +} + +// Topology is a map of topological domains to topological segments. +// A topological domain is a sub-division of a cluster, like "region", +// "zone", "rack", etc. +// A topological segment is a specific instance of a topological domain, +// like "zone3", "rack3", etc. +// For example {"com.company/zone": "Z1", "com.company/rack": "R3"} +// Valid keys have two segments: an OPTIONAL prefix and name, separated +// by a slash (/), for example: "com.company.example/zone". +// The key name segment is REQUIRED. The prefix is OPTIONAL. +// The key name MUST be 63 characters or less, begin and end with an +// alphanumeric character ([a-z0-9A-Z]), and contain only dashes (-), +// underscores (_), dots (.), or alphanumerics in between, for example +// "zone". +// The key prefix MUST be 63 characters or less, begin and end with a +// lower-case alphanumeric character ([a-z0-9]), contain only +// dashes (-), dots (.), or lower-case alphanumerics in between, and +// follow domain name notation format +// (https://tools.ietf.org/html/rfc1035#section-2.3.1). +// The key prefix SHOULD include the plugin's host company name and/or +// the plugin name, to minimize the possibility of collisions with keys +// from other plugins. +// If a key prefix is specified, it MUST be identical across all +// topology keys returned by the SP (across all RPCs). +// Keys MUST be case-insensitive. Meaning the keys "Zone" and "zone" +// MUST not both exist. +// Each value (topological segment) MUST contain 1 or more strings. +// Each string MUST be 63 characters or less and begin and end with an +// alphanumeric character with '-', '_', '.', or alphanumerics in +// between. +type Topology struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Segments map[string]string `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Topology) Reset() { + *x = Topology{} + mi := &file_csi_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Topology) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Topology) ProtoMessage() {} + +func (x *Topology) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Topology) GetSegments() map[string]string { + if x != nil { + return x.xxx_hidden_Segments + } + return nil +} + +func (x *Topology) SetSegments(v map[string]string) { + x.xxx_hidden_Segments = v +} + +type Topology_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Segments map[string]string +} + +func (b0 Topology_builder) Build() *Topology { + m0 := &Topology{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Segments = b.Segments + return m0 +} + +type DeleteVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteVolumeRequest) Reset() { + *x = DeleteVolumeRequest{} + mi := &file_csi_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteVolumeRequest) ProtoMessage() {} + +func (x *DeleteVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *DeleteVolumeRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *DeleteVolumeRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *DeleteVolumeRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *DeleteVolumeRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +type DeleteVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to be deprovisioned. + // This field is REQUIRED. + VolumeId string + // Secrets required by plugin to complete volume deletion request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 DeleteVolumeRequest_builder) Build() *DeleteVolumeRequest { + m0 := &DeleteVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_Secrets = b.Secrets + return m0 +} + +type DeleteVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteVolumeResponse) Reset() { + *x = DeleteVolumeResponse{} + mi := &file_csi_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteVolumeResponse) ProtoMessage() {} + +func (x *DeleteVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type DeleteVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 DeleteVolumeResponse_builder) Build() *DeleteVolumeResponse { + m0 := &DeleteVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type ControllerPublishVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_NodeId string `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + xxx_hidden_VolumeCapability *VolumeCapability `protobuf:"bytes,3,opt,name=volume_capability,json=volumeCapability,proto3" json:"volume_capability,omitempty"` + xxx_hidden_Readonly bool `protobuf:"varint,4,opt,name=readonly,proto3" json:"readonly,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_VolumeContext map[string]string `protobuf:"bytes,6,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerPublishVolumeRequest) Reset() { + *x = ControllerPublishVolumeRequest{} + mi := &file_csi_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerPublishVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerPublishVolumeRequest) ProtoMessage() {} + +func (x *ControllerPublishVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerPublishVolumeRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *ControllerPublishVolumeRequest) GetNodeId() string { + if x != nil { + return x.xxx_hidden_NodeId + } + return "" +} + +func (x *ControllerPublishVolumeRequest) GetVolumeCapability() *VolumeCapability { + if x != nil { + return x.xxx_hidden_VolumeCapability + } + return nil +} + +func (x *ControllerPublishVolumeRequest) GetReadonly() bool { + if x != nil { + return x.xxx_hidden_Readonly + } + return false +} + +func (x *ControllerPublishVolumeRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *ControllerPublishVolumeRequest) GetVolumeContext() map[string]string { + if x != nil { + return x.xxx_hidden_VolumeContext + } + return nil +} + +func (x *ControllerPublishVolumeRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *ControllerPublishVolumeRequest) SetNodeId(v string) { + x.xxx_hidden_NodeId = v +} + +func (x *ControllerPublishVolumeRequest) SetVolumeCapability(v *VolumeCapability) { + x.xxx_hidden_VolumeCapability = v +} + +func (x *ControllerPublishVolumeRequest) SetReadonly(v bool) { + x.xxx_hidden_Readonly = v +} + +func (x *ControllerPublishVolumeRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +func (x *ControllerPublishVolumeRequest) SetVolumeContext(v map[string]string) { + x.xxx_hidden_VolumeContext = v +} + +func (x *ControllerPublishVolumeRequest) HasVolumeCapability() bool { + if x == nil { + return false + } + return x.xxx_hidden_VolumeCapability != nil +} + +func (x *ControllerPublishVolumeRequest) ClearVolumeCapability() { + x.xxx_hidden_VolumeCapability = nil +} + +type ControllerPublishVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to be used on a node. + // This field is REQUIRED. + VolumeId string + // The ID of the node. This field is REQUIRED. The CO SHALL set this + // field to match the node ID returned by `NodeGetInfo`. + NodeId string + // Volume capability describing how the CO intends to use this volume. + // SP MUST ensure the CO can use the published volume as described. + // Otherwise SP MUST return the appropriate gRPC error code. + // This is a REQUIRED field. + VolumeCapability *VolumeCapability + // Indicates SP MUST publish the volume in readonly mode. + // CO MUST set this field to false if SP does not have the + // PUBLISH_READONLY controller capability. + // This is a REQUIRED field. + Readonly bool + // Secrets required by plugin to complete controller publish volume + // request. This field is OPTIONAL. Refer to the + // `Secrets Requirements` section on how to use this field. + Secrets map[string]string + // Volume context as returned by SP in + // CreateVolumeResponse.Volume.volume_context. + // This field is OPTIONAL and MUST match the volume_context of the + // volume identified by `volume_id`. + VolumeContext map[string]string +} + +func (b0 ControllerPublishVolumeRequest_builder) Build() *ControllerPublishVolumeRequest { + m0 := &ControllerPublishVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_NodeId = b.NodeId + x.xxx_hidden_VolumeCapability = b.VolumeCapability + x.xxx_hidden_Readonly = b.Readonly + x.xxx_hidden_Secrets = b.Secrets + x.xxx_hidden_VolumeContext = b.VolumeContext + return m0 +} + +type ControllerPublishVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_PublishContext map[string]string `protobuf:"bytes,1,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerPublishVolumeResponse) Reset() { + *x = ControllerPublishVolumeResponse{} + mi := &file_csi_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerPublishVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerPublishVolumeResponse) ProtoMessage() {} + +func (x *ControllerPublishVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerPublishVolumeResponse) GetPublishContext() map[string]string { + if x != nil { + return x.xxx_hidden_PublishContext + } + return nil +} + +func (x *ControllerPublishVolumeResponse) SetPublishContext(v map[string]string) { + x.xxx_hidden_PublishContext = v +} + +type ControllerPublishVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Opaque static publish properties of the volume. SP MAY use this + // field to ensure subsequent `NodeStageVolume` or `NodePublishVolume` + // calls calls have contextual information. + // The contents of this field SHALL be opaque to a CO. + // The contents of this field SHALL NOT be mutable. + // The contents of this field SHALL be safe for the CO to cache. + // The contents of this field SHOULD NOT contain sensitive + // information. + // The contents of this field SHOULD NOT be used for uniquely + // identifying a volume. The `volume_id` alone SHOULD be sufficient to + // identify the volume. + // This field is OPTIONAL and when present MUST be passed to + // subsequent `NodeStageVolume` or `NodePublishVolume` calls + PublishContext map[string]string +} + +func (b0 ControllerPublishVolumeResponse_builder) Build() *ControllerPublishVolumeResponse { + m0 := &ControllerPublishVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_PublishContext = b.PublishContext + return m0 +} + +type ControllerUnpublishVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_NodeId string `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerUnpublishVolumeRequest) Reset() { + *x = ControllerUnpublishVolumeRequest{} + mi := &file_csi_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerUnpublishVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerUnpublishVolumeRequest) ProtoMessage() {} + +func (x *ControllerUnpublishVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerUnpublishVolumeRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *ControllerUnpublishVolumeRequest) GetNodeId() string { + if x != nil { + return x.xxx_hidden_NodeId + } + return "" +} + +func (x *ControllerUnpublishVolumeRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *ControllerUnpublishVolumeRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *ControllerUnpublishVolumeRequest) SetNodeId(v string) { + x.xxx_hidden_NodeId = v +} + +func (x *ControllerUnpublishVolumeRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +type ControllerUnpublishVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume. This field is REQUIRED. + VolumeId string + // The ID of the node. This field is OPTIONAL. The CO SHOULD set this + // field to match the node ID returned by `NodeGetInfo` or leave it + // unset. If the value is set, the SP MUST unpublish the volume from + // the specified node. If the value is unset, the SP MUST unpublish + // the volume from all nodes it is published to. + NodeId string + // Secrets required by plugin to complete controller unpublish volume + // request. This SHOULD be the same secrets passed to the + // ControllerPublishVolume call for the specified volume. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 ControllerUnpublishVolumeRequest_builder) Build() *ControllerUnpublishVolumeRequest { + m0 := &ControllerUnpublishVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_NodeId = b.NodeId + x.xxx_hidden_Secrets = b.Secrets + return m0 +} + +type ControllerUnpublishVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerUnpublishVolumeResponse) Reset() { + *x = ControllerUnpublishVolumeResponse{} + mi := &file_csi_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerUnpublishVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerUnpublishVolumeResponse) ProtoMessage() {} + +func (x *ControllerUnpublishVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type ControllerUnpublishVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 ControllerUnpublishVolumeResponse_builder) Build() *ControllerUnpublishVolumeResponse { + m0 := &ControllerUnpublishVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type ValidateVolumeCapabilitiesRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_VolumeContext map[string]string `protobuf:"bytes,2,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_VolumeCapabilities *[]*VolumeCapability `protobuf:"bytes,3,rep,name=volume_capabilities,json=volumeCapabilities,proto3" json:"volume_capabilities,omitempty"` + xxx_hidden_Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_MutableParameters map[string]string `protobuf:"bytes,6,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ValidateVolumeCapabilitiesRequest) Reset() { + *x = ValidateVolumeCapabilitiesRequest{} + mi := &file_csi_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ValidateVolumeCapabilitiesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateVolumeCapabilitiesRequest) ProtoMessage() {} + +func (x *ValidateVolumeCapabilitiesRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ValidateVolumeCapabilitiesRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *ValidateVolumeCapabilitiesRequest) GetVolumeContext() map[string]string { + if x != nil { + return x.xxx_hidden_VolumeContext + } + return nil +} + +func (x *ValidateVolumeCapabilitiesRequest) GetVolumeCapabilities() []*VolumeCapability { + if x != nil { + if x.xxx_hidden_VolumeCapabilities != nil { + return *x.xxx_hidden_VolumeCapabilities + } + } + return nil +} + +func (x *ValidateVolumeCapabilitiesRequest) GetParameters() map[string]string { + if x != nil { + return x.xxx_hidden_Parameters + } + return nil +} + +func (x *ValidateVolumeCapabilitiesRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *ValidateVolumeCapabilitiesRequest) GetMutableParameters() map[string]string { + if x != nil { + return x.xxx_hidden_MutableParameters + } + return nil +} + +func (x *ValidateVolumeCapabilitiesRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *ValidateVolumeCapabilitiesRequest) SetVolumeContext(v map[string]string) { + x.xxx_hidden_VolumeContext = v +} + +func (x *ValidateVolumeCapabilitiesRequest) SetVolumeCapabilities(v []*VolumeCapability) { + x.xxx_hidden_VolumeCapabilities = &v +} + +func (x *ValidateVolumeCapabilitiesRequest) SetParameters(v map[string]string) { + x.xxx_hidden_Parameters = v +} + +func (x *ValidateVolumeCapabilitiesRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +func (x *ValidateVolumeCapabilitiesRequest) SetMutableParameters(v map[string]string) { + x.xxx_hidden_MutableParameters = v +} + +type ValidateVolumeCapabilitiesRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to check. This field is REQUIRED. + VolumeId string + // Volume context as returned by SP in + // CreateVolumeResponse.Volume.volume_context. + // This field is OPTIONAL and MUST match the volume_context of the + // volume identified by `volume_id`. + VolumeContext map[string]string + // The capabilities that the CO wants to check for the volume. This + // call SHALL return "confirmed" only if all the volume capabilities + // specified below are supported. This field is REQUIRED. + VolumeCapabilities []*VolumeCapability + // See CreateVolumeRequest.parameters. + // This field is OPTIONAL. + Parameters map[string]string + // Secrets required by plugin to complete volume validation request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string + // See CreateVolumeRequest.mutable_parameters. + // This field is OPTIONAL. + MutableParameters map[string]string +} + +func (b0 ValidateVolumeCapabilitiesRequest_builder) Build() *ValidateVolumeCapabilitiesRequest { + m0 := &ValidateVolumeCapabilitiesRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_VolumeContext = b.VolumeContext + x.xxx_hidden_VolumeCapabilities = &b.VolumeCapabilities + x.xxx_hidden_Parameters = b.Parameters + x.xxx_hidden_Secrets = b.Secrets + x.xxx_hidden_MutableParameters = b.MutableParameters + return m0 +} + +type ValidateVolumeCapabilitiesResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Confirmed *ValidateVolumeCapabilitiesResponse_Confirmed `protobuf:"bytes,1,opt,name=confirmed,proto3" json:"confirmed,omitempty"` + xxx_hidden_Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ValidateVolumeCapabilitiesResponse) Reset() { + *x = ValidateVolumeCapabilitiesResponse{} + mi := &file_csi_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ValidateVolumeCapabilitiesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateVolumeCapabilitiesResponse) ProtoMessage() {} + +func (x *ValidateVolumeCapabilitiesResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ValidateVolumeCapabilitiesResponse) GetConfirmed() *ValidateVolumeCapabilitiesResponse_Confirmed { + if x != nil { + return x.xxx_hidden_Confirmed + } + return nil +} + +func (x *ValidateVolumeCapabilitiesResponse) GetMessage() string { + if x != nil { + return x.xxx_hidden_Message + } + return "" +} + +func (x *ValidateVolumeCapabilitiesResponse) SetConfirmed(v *ValidateVolumeCapabilitiesResponse_Confirmed) { + x.xxx_hidden_Confirmed = v +} + +func (x *ValidateVolumeCapabilitiesResponse) SetMessage(v string) { + x.xxx_hidden_Message = v +} + +func (x *ValidateVolumeCapabilitiesResponse) HasConfirmed() bool { + if x == nil { + return false + } + return x.xxx_hidden_Confirmed != nil +} + +func (x *ValidateVolumeCapabilitiesResponse) ClearConfirmed() { + x.xxx_hidden_Confirmed = nil +} + +type ValidateVolumeCapabilitiesResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Confirmed indicates to the CO the set of capabilities that the + // plugin has validated. This field SHALL only be set to a non-empty + // value for successful validation responses. + // For successful validation responses, the CO SHALL compare the + // fields of this message to the originally requested capabilities in + // order to guard against an older plugin reporting "valid" for newer + // capability fields that it does not yet understand. + // This field is OPTIONAL. + Confirmed *ValidateVolumeCapabilitiesResponse_Confirmed + // Message to the CO if `confirmed` above is empty. This field is + // OPTIONAL. + // An empty string is equal to an unspecified field value. + Message string +} + +func (b0 ValidateVolumeCapabilitiesResponse_builder) Build() *ValidateVolumeCapabilitiesResponse { + m0 := &ValidateVolumeCapabilitiesResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Confirmed = b.Confirmed + x.xxx_hidden_Message = b.Message + return m0 +} + +type ListVolumesRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_MaxEntries int32 `protobuf:"varint,1,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"` + xxx_hidden_StartingToken string `protobuf:"bytes,2,opt,name=starting_token,json=startingToken,proto3" json:"starting_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListVolumesRequest) Reset() { + *x = ListVolumesRequest{} + mi := &file_csi_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListVolumesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListVolumesRequest) ProtoMessage() {} + +func (x *ListVolumesRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ListVolumesRequest) GetMaxEntries() int32 { + if x != nil { + return x.xxx_hidden_MaxEntries + } + return 0 +} + +func (x *ListVolumesRequest) GetStartingToken() string { + if x != nil { + return x.xxx_hidden_StartingToken + } + return "" +} + +func (x *ListVolumesRequest) SetMaxEntries(v int32) { + x.xxx_hidden_MaxEntries = v +} + +func (x *ListVolumesRequest) SetStartingToken(v string) { + x.xxx_hidden_StartingToken = v +} + +type ListVolumesRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // If specified (non-zero value), the Plugin MUST NOT return more + // entries than this number in the response. If the actual number of + // entries is more than this number, the Plugin MUST set `next_token` + // in the response which can be used to get the next page of entries + // in the subsequent `ListVolumes` call. This field is OPTIONAL. If + // not specified (zero value), it means there is no restriction on the + // number of entries that can be returned. + // The value of this field MUST NOT be negative. + MaxEntries int32 + // A token to specify where to start paginating. Set this field to + // `next_token` returned by a previous `ListVolumes` call to get the + // next page of entries. This field is OPTIONAL. + // An empty string is equal to an unspecified field value. + StartingToken string +} + +func (b0 ListVolumesRequest_builder) Build() *ListVolumesRequest { + m0 := &ListVolumesRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_MaxEntries = b.MaxEntries + x.xxx_hidden_StartingToken = b.StartingToken + return m0 +} + +type ListVolumesResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Entries *[]*ListVolumesResponse_Entry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` + xxx_hidden_NextToken string `protobuf:"bytes,2,opt,name=next_token,json=nextToken,proto3" json:"next_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListVolumesResponse) Reset() { + *x = ListVolumesResponse{} + mi := &file_csi_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListVolumesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListVolumesResponse) ProtoMessage() {} + +func (x *ListVolumesResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ListVolumesResponse) GetEntries() []*ListVolumesResponse_Entry { + if x != nil { + if x.xxx_hidden_Entries != nil { + return *x.xxx_hidden_Entries + } + } + return nil +} + +func (x *ListVolumesResponse) GetNextToken() string { + if x != nil { + return x.xxx_hidden_NextToken + } + return "" +} + +func (x *ListVolumesResponse) SetEntries(v []*ListVolumesResponse_Entry) { + x.xxx_hidden_Entries = &v +} + +func (x *ListVolumesResponse) SetNextToken(v string) { + x.xxx_hidden_NextToken = v +} + +type ListVolumesResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Entries []*ListVolumesResponse_Entry + // This token allows you to get the next page of entries for + // `ListVolumes` request. If the number of entries is larger than + // `max_entries`, use the `next_token` as a value for the + // `starting_token` field in the next `ListVolumes` request. This + // field is OPTIONAL. + // An empty string is equal to an unspecified field value. + NextToken string +} + +func (b0 ListVolumesResponse_builder) Build() *ListVolumesResponse { + m0 := &ListVolumesResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Entries = &b.Entries + x.xxx_hidden_NextToken = b.NextToken + return m0 +} + +type ControllerGetVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerGetVolumeRequest) Reset() { + *x = ControllerGetVolumeRequest{} + mi := &file_csi_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerGetVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerGetVolumeRequest) ProtoMessage() {} + +func (x *ControllerGetVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerGetVolumeRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *ControllerGetVolumeRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +type ControllerGetVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to fetch current volume information for. + // This field is REQUIRED. + VolumeId string +} + +func (b0 ControllerGetVolumeRequest_builder) Build() *ControllerGetVolumeRequest { + m0 := &ControllerGetVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + return m0 +} + +type ControllerGetVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` + xxx_hidden_Status *ControllerGetVolumeResponse_VolumeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerGetVolumeResponse) Reset() { + *x = ControllerGetVolumeResponse{} + mi := &file_csi_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerGetVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerGetVolumeResponse) ProtoMessage() {} + +func (x *ControllerGetVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerGetVolumeResponse) GetVolume() *Volume { + if x != nil { + return x.xxx_hidden_Volume + } + return nil +} + +func (x *ControllerGetVolumeResponse) GetStatus() *ControllerGetVolumeResponse_VolumeStatus { + if x != nil { + return x.xxx_hidden_Status + } + return nil +} + +func (x *ControllerGetVolumeResponse) SetVolume(v *Volume) { + x.xxx_hidden_Volume = v +} + +func (x *ControllerGetVolumeResponse) SetStatus(v *ControllerGetVolumeResponse_VolumeStatus) { + x.xxx_hidden_Status = v +} + +func (x *ControllerGetVolumeResponse) HasVolume() bool { + if x == nil { + return false + } + return x.xxx_hidden_Volume != nil +} + +func (x *ControllerGetVolumeResponse) HasStatus() bool { + if x == nil { + return false + } + return x.xxx_hidden_Status != nil +} + +func (x *ControllerGetVolumeResponse) ClearVolume() { + x.xxx_hidden_Volume = nil +} + +func (x *ControllerGetVolumeResponse) ClearStatus() { + x.xxx_hidden_Status = nil +} + +type ControllerGetVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This field is REQUIRED + Volume *Volume + // This field is REQUIRED. + Status *ControllerGetVolumeResponse_VolumeStatus +} + +func (b0 ControllerGetVolumeResponse_builder) Build() *ControllerGetVolumeResponse { + m0 := &ControllerGetVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Volume = b.Volume + x.xxx_hidden_Status = b.Status + return m0 +} + +type ControllerModifyVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_MutableParameters map[string]string `protobuf:"bytes,3,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerModifyVolumeRequest) Reset() { + *x = ControllerModifyVolumeRequest{} + mi := &file_csi_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerModifyVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerModifyVolumeRequest) ProtoMessage() {} + +func (x *ControllerModifyVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerModifyVolumeRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *ControllerModifyVolumeRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *ControllerModifyVolumeRequest) GetMutableParameters() map[string]string { + if x != nil { + return x.xxx_hidden_MutableParameters + } + return nil +} + +func (x *ControllerModifyVolumeRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *ControllerModifyVolumeRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +func (x *ControllerModifyVolumeRequest) SetMutableParameters(v map[string]string) { + x.xxx_hidden_MutableParameters = v +} + +type ControllerModifyVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Contains identity information for the existing volume. + // This field is REQUIRED. + VolumeId string + // Secrets required by plugin to complete modify volume request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string + // Plugin specific volume attributes to mutate, passed in as + // opaque key-value pairs. + // This field is REQUIRED. The Plugin is responsible for + // parsing and validating these parameters. COs will treat these + // as opaque. The CO SHOULD specify the intended values of all mutable + // parameters it intends to modify. SPs MUST NOT modify volumes based + // on the absence of keys, only keys that are specified should result + // in modifications to the volume. + MutableParameters map[string]string +} + +func (b0 ControllerModifyVolumeRequest_builder) Build() *ControllerModifyVolumeRequest { + m0 := &ControllerModifyVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_Secrets = b.Secrets + x.xxx_hidden_MutableParameters = b.MutableParameters + return m0 +} + +type ControllerModifyVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerModifyVolumeResponse) Reset() { + *x = ControllerModifyVolumeResponse{} + mi := &file_csi_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerModifyVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerModifyVolumeResponse) ProtoMessage() {} + +func (x *ControllerModifyVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type ControllerModifyVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 ControllerModifyVolumeResponse_builder) Build() *ControllerModifyVolumeResponse { + m0 := &ControllerModifyVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type GetCapacityRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeCapabilities *[]*VolumeCapability `protobuf:"bytes,1,rep,name=volume_capabilities,json=volumeCapabilities,proto3" json:"volume_capabilities,omitempty"` + xxx_hidden_Parameters map[string]string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_AccessibleTopology *Topology `protobuf:"bytes,3,opt,name=accessible_topology,json=accessibleTopology,proto3" json:"accessible_topology,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetCapacityRequest) Reset() { + *x = GetCapacityRequest{} + mi := &file_csi_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetCapacityRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCapacityRequest) ProtoMessage() {} + +func (x *GetCapacityRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetCapacityRequest) GetVolumeCapabilities() []*VolumeCapability { + if x != nil { + if x.xxx_hidden_VolumeCapabilities != nil { + return *x.xxx_hidden_VolumeCapabilities + } + } + return nil +} + +func (x *GetCapacityRequest) GetParameters() map[string]string { + if x != nil { + return x.xxx_hidden_Parameters + } + return nil +} + +func (x *GetCapacityRequest) GetAccessibleTopology() *Topology { + if x != nil { + return x.xxx_hidden_AccessibleTopology + } + return nil +} + +func (x *GetCapacityRequest) SetVolumeCapabilities(v []*VolumeCapability) { + x.xxx_hidden_VolumeCapabilities = &v +} + +func (x *GetCapacityRequest) SetParameters(v map[string]string) { + x.xxx_hidden_Parameters = v +} + +func (x *GetCapacityRequest) SetAccessibleTopology(v *Topology) { + x.xxx_hidden_AccessibleTopology = v +} + +func (x *GetCapacityRequest) HasAccessibleTopology() bool { + if x == nil { + return false + } + return x.xxx_hidden_AccessibleTopology != nil +} + +func (x *GetCapacityRequest) ClearAccessibleTopology() { + x.xxx_hidden_AccessibleTopology = nil +} + +type GetCapacityRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // If specified, the Plugin SHALL report the capacity of the storage + // that can be used to provision volumes that satisfy ALL of the + // specified `volume_capabilities`. These are the same + // `volume_capabilities` the CO will use in `CreateVolumeRequest`. + // This field is OPTIONAL. + VolumeCapabilities []*VolumeCapability + // If specified, the Plugin SHALL report the capacity of the storage + // that can be used to provision volumes with the given Plugin + // specific `parameters`. These are the same `parameters` the CO will + // use in `CreateVolumeRequest`. This field is OPTIONAL. + Parameters map[string]string + // If specified, the Plugin SHALL report the capacity of the storage + // that can be used to provision volumes that in the specified + // `accessible_topology`. This is the same as the + // `accessible_topology` the CO returns in a `CreateVolumeResponse`. + // This field is OPTIONAL. This field SHALL NOT be set unless the + // plugin advertises the VOLUME_ACCESSIBILITY_CONSTRAINTS capability. + AccessibleTopology *Topology +} + +func (b0 GetCapacityRequest_builder) Build() *GetCapacityRequest { + m0 := &GetCapacityRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeCapabilities = &b.VolumeCapabilities + x.xxx_hidden_Parameters = b.Parameters + x.xxx_hidden_AccessibleTopology = b.AccessibleTopology + return m0 +} + +type GetCapacityResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_AvailableCapacity int64 `protobuf:"varint,1,opt,name=available_capacity,json=availableCapacity,proto3" json:"available_capacity,omitempty"` + xxx_hidden_MaximumVolumeSize *wrapperspb.Int64Value `protobuf:"bytes,2,opt,name=maximum_volume_size,json=maximumVolumeSize,proto3" json:"maximum_volume_size,omitempty"` + xxx_hidden_MinimumVolumeSize *wrapperspb.Int64Value `protobuf:"bytes,3,opt,name=minimum_volume_size,json=minimumVolumeSize,proto3" json:"minimum_volume_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetCapacityResponse) Reset() { + *x = GetCapacityResponse{} + mi := &file_csi_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetCapacityResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCapacityResponse) ProtoMessage() {} + +func (x *GetCapacityResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetCapacityResponse) GetAvailableCapacity() int64 { + if x != nil { + return x.xxx_hidden_AvailableCapacity + } + return 0 +} + +func (x *GetCapacityResponse) GetMaximumVolumeSize() *wrapperspb.Int64Value { + if x != nil { + return x.xxx_hidden_MaximumVolumeSize + } + return nil +} + +func (x *GetCapacityResponse) GetMinimumVolumeSize() *wrapperspb.Int64Value { + if x != nil { + return x.xxx_hidden_MinimumVolumeSize + } + return nil +} + +func (x *GetCapacityResponse) SetAvailableCapacity(v int64) { + x.xxx_hidden_AvailableCapacity = v +} + +func (x *GetCapacityResponse) SetMaximumVolumeSize(v *wrapperspb.Int64Value) { + x.xxx_hidden_MaximumVolumeSize = v +} + +func (x *GetCapacityResponse) SetMinimumVolumeSize(v *wrapperspb.Int64Value) { + x.xxx_hidden_MinimumVolumeSize = v +} + +func (x *GetCapacityResponse) HasMaximumVolumeSize() bool { + if x == nil { + return false + } + return x.xxx_hidden_MaximumVolumeSize != nil +} + +func (x *GetCapacityResponse) HasMinimumVolumeSize() bool { + if x == nil { + return false + } + return x.xxx_hidden_MinimumVolumeSize != nil +} + +func (x *GetCapacityResponse) ClearMaximumVolumeSize() { + x.xxx_hidden_MaximumVolumeSize = nil +} + +func (x *GetCapacityResponse) ClearMinimumVolumeSize() { + x.xxx_hidden_MinimumVolumeSize = nil +} + +type GetCapacityResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The available capacity, in bytes, of the storage that can be used + // to provision volumes. If `volume_capabilities` or `parameters` is + // specified in the request, the Plugin SHALL take those into + // consideration when calculating the available capacity of the + // storage. This field is REQUIRED. + // The value of this field MUST NOT be negative. + AvailableCapacity int64 + // The largest size that may be used in a + // CreateVolumeRequest.capacity_range.required_bytes field + // to create a volume with the same parameters as those in + // GetCapacityRequest. + // + // If `volume_capabilities` or `parameters` is + // specified in the request, the Plugin SHALL take those into + // consideration when calculating the minimum volume size of the + // storage. + // + // This field is OPTIONAL. MUST NOT be negative. + // The Plugin SHOULD provide a value for this field if it has + // a maximum size for individual volumes and leave it unset + // otherwise. COs MAY use it to make decision about + // where to create volumes. + MaximumVolumeSize *wrapperspb.Int64Value + // The smallest size that may be used in a + // CreateVolumeRequest.capacity_range.limit_bytes field + // to create a volume with the same parameters as those in + // GetCapacityRequest. + // + // If `volume_capabilities` or `parameters` is + // specified in the request, the Plugin SHALL take those into + // consideration when calculating the maximum volume size of the + // storage. + // + // This field is OPTIONAL. MUST NOT be negative. + // The Plugin SHOULD provide a value for this field if it has + // a minimum size for individual volumes and leave it unset + // otherwise. COs MAY use it to make decision about + // where to create volumes. + MinimumVolumeSize *wrapperspb.Int64Value +} + +func (b0 GetCapacityResponse_builder) Build() *GetCapacityResponse { + m0 := &GetCapacityResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_AvailableCapacity = b.AvailableCapacity + x.xxx_hidden_MaximumVolumeSize = b.MaximumVolumeSize + x.xxx_hidden_MinimumVolumeSize = b.MinimumVolumeSize + return m0 +} + +type ControllerGetCapabilitiesRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerGetCapabilitiesRequest) Reset() { + *x = ControllerGetCapabilitiesRequest{} + mi := &file_csi_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerGetCapabilitiesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerGetCapabilitiesRequest) ProtoMessage() {} + +func (x *ControllerGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type ControllerGetCapabilitiesRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 ControllerGetCapabilitiesRequest_builder) Build() *ControllerGetCapabilitiesRequest { + m0 := &ControllerGetCapabilitiesRequest{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type ControllerGetCapabilitiesResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Capabilities *[]*ControllerServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerGetCapabilitiesResponse) Reset() { + *x = ControllerGetCapabilitiesResponse{} + mi := &file_csi_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerGetCapabilitiesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerGetCapabilitiesResponse) ProtoMessage() {} + +func (x *ControllerGetCapabilitiesResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerGetCapabilitiesResponse) GetCapabilities() []*ControllerServiceCapability { + if x != nil { + if x.xxx_hidden_Capabilities != nil { + return *x.xxx_hidden_Capabilities + } + } + return nil +} + +func (x *ControllerGetCapabilitiesResponse) SetCapabilities(v []*ControllerServiceCapability) { + x.xxx_hidden_Capabilities = &v +} + +type ControllerGetCapabilitiesResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // All the capabilities that the controller service supports. This + // field is OPTIONAL. + Capabilities []*ControllerServiceCapability +} + +func (b0 ControllerGetCapabilitiesResponse_builder) Build() *ControllerGetCapabilitiesResponse { + m0 := &ControllerGetCapabilitiesResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Capabilities = &b.Capabilities + return m0 +} + +// Specifies a capability of the controller service. +type ControllerServiceCapability struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Type isControllerServiceCapability_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerServiceCapability) Reset() { + *x = ControllerServiceCapability{} + mi := &file_csi_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerServiceCapability) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerServiceCapability) ProtoMessage() {} + +func (x *ControllerServiceCapability) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerServiceCapability) GetRpc() *ControllerServiceCapability_RPC { + if x != nil { + if x, ok := x.xxx_hidden_Type.(*controllerServiceCapability_Rpc); ok { + return x.Rpc + } + } + return nil +} + +func (x *ControllerServiceCapability) SetRpc(v *ControllerServiceCapability_RPC) { + if v == nil { + x.xxx_hidden_Type = nil + return + } + x.xxx_hidden_Type = &controllerServiceCapability_Rpc{v} +} + +func (x *ControllerServiceCapability) HasType() bool { + if x == nil { + return false + } + return x.xxx_hidden_Type != nil +} + +func (x *ControllerServiceCapability) HasRpc() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_Type.(*controllerServiceCapability_Rpc) + return ok +} + +func (x *ControllerServiceCapability) ClearType() { + x.xxx_hidden_Type = nil +} + +func (x *ControllerServiceCapability) ClearRpc() { + if _, ok := x.xxx_hidden_Type.(*controllerServiceCapability_Rpc); ok { + x.xxx_hidden_Type = nil + } +} + +const ControllerServiceCapability_Type_not_set_case case_ControllerServiceCapability_Type = 0 +const ControllerServiceCapability_Rpc_case case_ControllerServiceCapability_Type = 1 + +func (x *ControllerServiceCapability) WhichType() case_ControllerServiceCapability_Type { + if x == nil { + return ControllerServiceCapability_Type_not_set_case + } + switch x.xxx_hidden_Type.(type) { + case *controllerServiceCapability_Rpc: + return ControllerServiceCapability_Rpc_case + default: + return ControllerServiceCapability_Type_not_set_case + } +} + +type ControllerServiceCapability_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Fields of oneof xxx_hidden_Type: + // RPC that the controller supports. + Rpc *ControllerServiceCapability_RPC + // -- end of xxx_hidden_Type +} + +func (b0 ControllerServiceCapability_builder) Build() *ControllerServiceCapability { + m0 := &ControllerServiceCapability{} + b, x := &b0, m0 + _, _ = b, x + if b.Rpc != nil { + x.xxx_hidden_Type = &controllerServiceCapability_Rpc{b.Rpc} + } + return m0 +} + +type case_ControllerServiceCapability_Type protoreflect.FieldNumber + +func (x case_ControllerServiceCapability_Type) String() string { + md := file_csi_proto_msgTypes[33].Descriptor() + if x == 0 { + return "not set" + } + return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x)) +} + +type isControllerServiceCapability_Type interface { + isControllerServiceCapability_Type() +} + +type controllerServiceCapability_Rpc struct { + // RPC that the controller supports. + Rpc *ControllerServiceCapability_RPC `protobuf:"bytes,1,opt,name=rpc,proto3,oneof"` +} + +func (*controllerServiceCapability_Rpc) isControllerServiceCapability_Type() {} + +type CreateSnapshotRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_SourceVolumeId string `protobuf:"bytes,1,opt,name=source_volume_id,json=sourceVolumeId,proto3" json:"source_volume_id,omitempty"` + xxx_hidden_Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateSnapshotRequest) Reset() { + *x = CreateSnapshotRequest{} + mi := &file_csi_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateSnapshotRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSnapshotRequest) ProtoMessage() {} + +func (x *CreateSnapshotRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *CreateSnapshotRequest) GetSourceVolumeId() string { + if x != nil { + return x.xxx_hidden_SourceVolumeId + } + return "" +} + +func (x *CreateSnapshotRequest) GetName() string { + if x != nil { + return x.xxx_hidden_Name + } + return "" +} + +func (x *CreateSnapshotRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *CreateSnapshotRequest) GetParameters() map[string]string { + if x != nil { + return x.xxx_hidden_Parameters + } + return nil +} + +func (x *CreateSnapshotRequest) SetSourceVolumeId(v string) { + x.xxx_hidden_SourceVolumeId = v +} + +func (x *CreateSnapshotRequest) SetName(v string) { + x.xxx_hidden_Name = v +} + +func (x *CreateSnapshotRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +func (x *CreateSnapshotRequest) SetParameters(v map[string]string) { + x.xxx_hidden_Parameters = v +} + +type CreateSnapshotRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the source volume to be snapshotted. + // This field is REQUIRED. + SourceVolumeId string + // The suggested name for the snapshot. This field is REQUIRED for + // idempotency. + // Any Unicode string that conforms to the length limit is allowed + // except those containing the following banned characters: + // U+0000-U+0008, U+000B, U+000C, U+000E-U+001F, U+007F-U+009F. + // (These are control characters other than commonly used whitespace.) + Name string + // Secrets required by plugin to complete snapshot creation request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string + // Plugin specific parameters passed in as opaque key-value pairs. + // This field is OPTIONAL. The Plugin is responsible for parsing and + // validating these parameters. COs will treat these as opaque. + // Use cases for opaque parameters: + // - Specify a policy to automatically clean up the snapshot. + // - Specify an expiration date for the snapshot. + // - Specify whether the snapshot is readonly or read/write. + // - Specify if the snapshot should be replicated to some place. + // - Specify primary or secondary for replication systems that + // support snapshotting only on primary. + Parameters map[string]string +} + +func (b0 CreateSnapshotRequest_builder) Build() *CreateSnapshotRequest { + m0 := &CreateSnapshotRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_SourceVolumeId = b.SourceVolumeId + x.xxx_hidden_Name = b.Name + x.xxx_hidden_Secrets = b.Secrets + x.xxx_hidden_Parameters = b.Parameters + return m0 +} + +type CreateSnapshotResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateSnapshotResponse) Reset() { + *x = CreateSnapshotResponse{} + mi := &file_csi_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateSnapshotResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSnapshotResponse) ProtoMessage() {} + +func (x *CreateSnapshotResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *CreateSnapshotResponse) GetSnapshot() *Snapshot { + if x != nil { + return x.xxx_hidden_Snapshot + } + return nil +} + +func (x *CreateSnapshotResponse) SetSnapshot(v *Snapshot) { + x.xxx_hidden_Snapshot = v +} + +func (x *CreateSnapshotResponse) HasSnapshot() bool { + if x == nil { + return false + } + return x.xxx_hidden_Snapshot != nil +} + +func (x *CreateSnapshotResponse) ClearSnapshot() { + x.xxx_hidden_Snapshot = nil +} + +type CreateSnapshotResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Contains all attributes of the newly created snapshot that are + // relevant to the CO along with information required by the Plugin + // to uniquely identify the snapshot. This field is REQUIRED. + Snapshot *Snapshot +} + +func (b0 CreateSnapshotResponse_builder) Build() *CreateSnapshotResponse { + m0 := &CreateSnapshotResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Snapshot = b.Snapshot + return m0 +} + +// Information about a specific snapshot. +type Snapshot struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_SizeBytes int64 `protobuf:"varint,1,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` + xxx_hidden_SnapshotId string `protobuf:"bytes,2,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` + xxx_hidden_SourceVolumeId string `protobuf:"bytes,3,opt,name=source_volume_id,json=sourceVolumeId,proto3" json:"source_volume_id,omitempty"` + xxx_hidden_CreationTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` + xxx_hidden_ReadyToUse bool `protobuf:"varint,5,opt,name=ready_to_use,json=readyToUse,proto3" json:"ready_to_use,omitempty"` + xxx_hidden_GroupSnapshotId string `protobuf:"bytes,6,opt,name=group_snapshot_id,json=groupSnapshotId,proto3" json:"group_snapshot_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Snapshot) Reset() { + *x = Snapshot{} + mi := &file_csi_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Snapshot) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Snapshot) ProtoMessage() {} + +func (x *Snapshot) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *Snapshot) GetSizeBytes() int64 { + if x != nil { + return x.xxx_hidden_SizeBytes + } + return 0 +} + +func (x *Snapshot) GetSnapshotId() string { + if x != nil { + return x.xxx_hidden_SnapshotId + } + return "" +} + +func (x *Snapshot) GetSourceVolumeId() string { + if x != nil { + return x.xxx_hidden_SourceVolumeId + } + return "" +} + +func (x *Snapshot) GetCreationTime() *timestamppb.Timestamp { + if x != nil { + return x.xxx_hidden_CreationTime + } + return nil +} + +func (x *Snapshot) GetReadyToUse() bool { + if x != nil { + return x.xxx_hidden_ReadyToUse + } + return false +} + +func (x *Snapshot) GetGroupSnapshotId() string { + if x != nil { + return x.xxx_hidden_GroupSnapshotId + } + return "" +} + +func (x *Snapshot) SetSizeBytes(v int64) { + x.xxx_hidden_SizeBytes = v +} + +func (x *Snapshot) SetSnapshotId(v string) { + x.xxx_hidden_SnapshotId = v +} + +func (x *Snapshot) SetSourceVolumeId(v string) { + x.xxx_hidden_SourceVolumeId = v +} + +func (x *Snapshot) SetCreationTime(v *timestamppb.Timestamp) { + x.xxx_hidden_CreationTime = v +} + +func (x *Snapshot) SetReadyToUse(v bool) { + x.xxx_hidden_ReadyToUse = v +} + +func (x *Snapshot) SetGroupSnapshotId(v string) { + x.xxx_hidden_GroupSnapshotId = v +} + +func (x *Snapshot) HasCreationTime() bool { + if x == nil { + return false + } + return x.xxx_hidden_CreationTime != nil +} + +func (x *Snapshot) ClearCreationTime() { + x.xxx_hidden_CreationTime = nil +} + +type Snapshot_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This is the complete size of the snapshot in bytes. The purpose of + // this field is to give CO guidance on how much space is needed to + // create a volume from this snapshot. The size of the volume MUST NOT + // be less than the size of the source snapshot. This field is + // OPTIONAL. If this field is not set, it indicates that this size is + // unknown. The value of this field MUST NOT be negative and a size of + // zero means it is unspecified. + SizeBytes int64 + // The identifier for this snapshot, generated by the plugin. + // This field is REQUIRED. + // This field MUST contain enough information to uniquely identify + // this specific snapshot vs all other snapshots supported by this + // plugin. + // This field SHALL be used by the CO in subsequent calls to refer to + // this snapshot. + // The SP is NOT responsible for global uniqueness of snapshot_id + // across multiple SPs. + SnapshotId string + // Identity information for the source volume. Note that creating a + // snapshot from a snapshot is not supported here so the source has to + // be a volume. This field is REQUIRED. + SourceVolumeId string + // Timestamp when the point-in-time snapshot is taken on the storage + // system. This field is REQUIRED. + CreationTime *timestamppb.Timestamp + // Indicates if a snapshot is ready to use as a + // `volume_content_source` in a `CreateVolumeRequest`. The default + // value is false. This field is REQUIRED. + ReadyToUse bool + // The ID of the volume group snapshot that this snapshot is part of. + // It uniquely identifies the group snapshot on the storage system. + // This field is OPTIONAL. + // If this snapshot is a member of a volume group snapshot, and it + // MUST NOT be deleted as a stand alone snapshot, then the SP + // MUST provide the ID of the volume group snapshot in this field. + // If provided, CO MUST use this field in subsequent volume group + // snapshot operations to indicate that this snapshot is part of the + // specified group snapshot. + // If not provided, CO SHALL treat the snapshot as independent, + // and SP SHALL allow it to be deleted separately. + // If this message is inside a VolumeGroupSnapshot message, the value + // MUST be the same as the group_snapshot_id in that message. + GroupSnapshotId string +} + +func (b0 Snapshot_builder) Build() *Snapshot { + m0 := &Snapshot{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_SizeBytes = b.SizeBytes + x.xxx_hidden_SnapshotId = b.SnapshotId + x.xxx_hidden_SourceVolumeId = b.SourceVolumeId + x.xxx_hidden_CreationTime = b.CreationTime + x.xxx_hidden_ReadyToUse = b.ReadyToUse + x.xxx_hidden_GroupSnapshotId = b.GroupSnapshotId + return m0 +} + +type DeleteSnapshotRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,2,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteSnapshotRequest) Reset() { + *x = DeleteSnapshotRequest{} + mi := &file_csi_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteSnapshotRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteSnapshotRequest) ProtoMessage() {} + +func (x *DeleteSnapshotRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *DeleteSnapshotRequest) GetSnapshotId() string { + if x != nil { + return x.xxx_hidden_SnapshotId + } + return "" +} + +func (x *DeleteSnapshotRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *DeleteSnapshotRequest) SetSnapshotId(v string) { + x.xxx_hidden_SnapshotId = v +} + +func (x *DeleteSnapshotRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +type DeleteSnapshotRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the snapshot to be deleted. + // This field is REQUIRED. + SnapshotId string + // Secrets required by plugin to complete snapshot deletion request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 DeleteSnapshotRequest_builder) Build() *DeleteSnapshotRequest { + m0 := &DeleteSnapshotRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_SnapshotId = b.SnapshotId + x.xxx_hidden_Secrets = b.Secrets + return m0 +} + +type DeleteSnapshotResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteSnapshotResponse) Reset() { + *x = DeleteSnapshotResponse{} + mi := &file_csi_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteSnapshotResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteSnapshotResponse) ProtoMessage() {} + +func (x *DeleteSnapshotResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type DeleteSnapshotResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 DeleteSnapshotResponse_builder) Build() *DeleteSnapshotResponse { + m0 := &DeleteSnapshotResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +// List all snapshots on the storage system regardless of how they were +// created. +type ListSnapshotsRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_MaxEntries int32 `protobuf:"varint,1,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"` + xxx_hidden_StartingToken string `protobuf:"bytes,2,opt,name=starting_token,json=startingToken,proto3" json:"starting_token,omitempty"` + xxx_hidden_SourceVolumeId string `protobuf:"bytes,3,opt,name=source_volume_id,json=sourceVolumeId,proto3" json:"source_volume_id,omitempty"` + xxx_hidden_SnapshotId string `protobuf:"bytes,4,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListSnapshotsRequest) Reset() { + *x = ListSnapshotsRequest{} + mi := &file_csi_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListSnapshotsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListSnapshotsRequest) ProtoMessage() {} + +func (x *ListSnapshotsRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ListSnapshotsRequest) GetMaxEntries() int32 { + if x != nil { + return x.xxx_hidden_MaxEntries + } + return 0 +} + +func (x *ListSnapshotsRequest) GetStartingToken() string { + if x != nil { + return x.xxx_hidden_StartingToken + } + return "" +} + +func (x *ListSnapshotsRequest) GetSourceVolumeId() string { + if x != nil { + return x.xxx_hidden_SourceVolumeId + } + return "" +} + +func (x *ListSnapshotsRequest) GetSnapshotId() string { + if x != nil { + return x.xxx_hidden_SnapshotId + } + return "" +} + +func (x *ListSnapshotsRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *ListSnapshotsRequest) SetMaxEntries(v int32) { + x.xxx_hidden_MaxEntries = v +} + +func (x *ListSnapshotsRequest) SetStartingToken(v string) { + x.xxx_hidden_StartingToken = v +} + +func (x *ListSnapshotsRequest) SetSourceVolumeId(v string) { + x.xxx_hidden_SourceVolumeId = v +} + +func (x *ListSnapshotsRequest) SetSnapshotId(v string) { + x.xxx_hidden_SnapshotId = v +} + +func (x *ListSnapshotsRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +type ListSnapshotsRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // If specified (non-zero value), the Plugin MUST NOT return more + // entries than this number in the response. If the actual number of + // entries is more than this number, the Plugin MUST set `next_token` + // in the response which can be used to get the next page of entries + // in the subsequent `ListSnapshots` call. This field is OPTIONAL. If + // not specified (zero value), it means there is no restriction on the + // number of entries that can be returned. + // The value of this field MUST NOT be negative. + MaxEntries int32 + // A token to specify where to start paginating. Set this field to + // `next_token` returned by a previous `ListSnapshots` call to get the + // next page of entries. This field is OPTIONAL. + // An empty string is equal to an unspecified field value. + StartingToken string + // Identity information for the source volume. This field is OPTIONAL. + // It can be used to list snapshots by volume. + SourceVolumeId string + // Identity information for a specific snapshot. This field is + // OPTIONAL. It can be used to list only a specific snapshot. + // ListSnapshots will return with current snapshot information + // and will not block if the snapshot is being processed after + // it is cut. + SnapshotId string + // Secrets required by plugin to complete ListSnapshot request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 ListSnapshotsRequest_builder) Build() *ListSnapshotsRequest { + m0 := &ListSnapshotsRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_MaxEntries = b.MaxEntries + x.xxx_hidden_StartingToken = b.StartingToken + x.xxx_hidden_SourceVolumeId = b.SourceVolumeId + x.xxx_hidden_SnapshotId = b.SnapshotId + x.xxx_hidden_Secrets = b.Secrets + return m0 +} + +type ListSnapshotsResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Entries *[]*ListSnapshotsResponse_Entry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` + xxx_hidden_NextToken string `protobuf:"bytes,2,opt,name=next_token,json=nextToken,proto3" json:"next_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListSnapshotsResponse) Reset() { + *x = ListSnapshotsResponse{} + mi := &file_csi_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListSnapshotsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListSnapshotsResponse) ProtoMessage() {} + +func (x *ListSnapshotsResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ListSnapshotsResponse) GetEntries() []*ListSnapshotsResponse_Entry { + if x != nil { + if x.xxx_hidden_Entries != nil { + return *x.xxx_hidden_Entries + } + } + return nil +} + +func (x *ListSnapshotsResponse) GetNextToken() string { + if x != nil { + return x.xxx_hidden_NextToken + } + return "" +} + +func (x *ListSnapshotsResponse) SetEntries(v []*ListSnapshotsResponse_Entry) { + x.xxx_hidden_Entries = &v +} + +func (x *ListSnapshotsResponse) SetNextToken(v string) { + x.xxx_hidden_NextToken = v +} + +type ListSnapshotsResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Entries []*ListSnapshotsResponse_Entry + // This token allows you to get the next page of entries for + // `ListSnapshots` request. If the number of entries is larger than + // `max_entries`, use the `next_token` as a value for the + // `starting_token` field in the next `ListSnapshots` request. This + // field is OPTIONAL. + // An empty string is equal to an unspecified field value. + NextToken string +} + +func (b0 ListSnapshotsResponse_builder) Build() *ListSnapshotsResponse { + m0 := &ListSnapshotsResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Entries = &b.Entries + x.xxx_hidden_NextToken = b.NextToken + return m0 +} + +type ControllerExpandVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_CapacityRange *CapacityRange `protobuf:"bytes,2,opt,name=capacity_range,json=capacityRange,proto3" json:"capacity_range,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_VolumeCapability *VolumeCapability `protobuf:"bytes,4,opt,name=volume_capability,json=volumeCapability,proto3" json:"volume_capability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerExpandVolumeRequest) Reset() { + *x = ControllerExpandVolumeRequest{} + mi := &file_csi_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerExpandVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerExpandVolumeRequest) ProtoMessage() {} + +func (x *ControllerExpandVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerExpandVolumeRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *ControllerExpandVolumeRequest) GetCapacityRange() *CapacityRange { + if x != nil { + return x.xxx_hidden_CapacityRange + } + return nil +} + +func (x *ControllerExpandVolumeRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *ControllerExpandVolumeRequest) GetVolumeCapability() *VolumeCapability { + if x != nil { + return x.xxx_hidden_VolumeCapability + } + return nil +} + +func (x *ControllerExpandVolumeRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *ControllerExpandVolumeRequest) SetCapacityRange(v *CapacityRange) { + x.xxx_hidden_CapacityRange = v +} + +func (x *ControllerExpandVolumeRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +func (x *ControllerExpandVolumeRequest) SetVolumeCapability(v *VolumeCapability) { + x.xxx_hidden_VolumeCapability = v +} + +func (x *ControllerExpandVolumeRequest) HasCapacityRange() bool { + if x == nil { + return false + } + return x.xxx_hidden_CapacityRange != nil +} + +func (x *ControllerExpandVolumeRequest) HasVolumeCapability() bool { + if x == nil { + return false + } + return x.xxx_hidden_VolumeCapability != nil +} + +func (x *ControllerExpandVolumeRequest) ClearCapacityRange() { + x.xxx_hidden_CapacityRange = nil +} + +func (x *ControllerExpandVolumeRequest) ClearVolumeCapability() { + x.xxx_hidden_VolumeCapability = nil +} + +type ControllerExpandVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to expand. This field is REQUIRED. + VolumeId string + // This allows CO to specify the capacity requirements of the volume + // after expansion. This field is REQUIRED. + CapacityRange *CapacityRange + // Secrets required by the plugin for expanding the volume. + // This field is OPTIONAL. + Secrets map[string]string + // Volume capability describing how the CO intends to use this volume. + // This allows SP to determine if volume is being used as a block + // device or mounted file system. For example - if volume is + // being used as a block device - the SP MAY set + // node_expansion_required to false in ControllerExpandVolumeResponse + // to skip invocation of NodeExpandVolume on the node by the CO. + // This is an OPTIONAL field. + VolumeCapability *VolumeCapability +} + +func (b0 ControllerExpandVolumeRequest_builder) Build() *ControllerExpandVolumeRequest { + m0 := &ControllerExpandVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_CapacityRange = b.CapacityRange + x.xxx_hidden_Secrets = b.Secrets + x.xxx_hidden_VolumeCapability = b.VolumeCapability + return m0 +} + +type ControllerExpandVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_CapacityBytes int64 `protobuf:"varint,1,opt,name=capacity_bytes,json=capacityBytes,proto3" json:"capacity_bytes,omitempty"` + xxx_hidden_NodeExpansionRequired bool `protobuf:"varint,2,opt,name=node_expansion_required,json=nodeExpansionRequired,proto3" json:"node_expansion_required,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerExpandVolumeResponse) Reset() { + *x = ControllerExpandVolumeResponse{} + mi := &file_csi_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerExpandVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerExpandVolumeResponse) ProtoMessage() {} + +func (x *ControllerExpandVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerExpandVolumeResponse) GetCapacityBytes() int64 { + if x != nil { + return x.xxx_hidden_CapacityBytes + } + return 0 +} + +func (x *ControllerExpandVolumeResponse) GetNodeExpansionRequired() bool { + if x != nil { + return x.xxx_hidden_NodeExpansionRequired + } + return false +} + +func (x *ControllerExpandVolumeResponse) SetCapacityBytes(v int64) { + x.xxx_hidden_CapacityBytes = v +} + +func (x *ControllerExpandVolumeResponse) SetNodeExpansionRequired(v bool) { + x.xxx_hidden_NodeExpansionRequired = v +} + +type ControllerExpandVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Capacity of volume after expansion. This field is REQUIRED. + CapacityBytes int64 + // Whether node expansion is required for the volume. When true + // the CO MUST make NodeExpandVolume RPC call on the node. This field + // is REQUIRED. + NodeExpansionRequired bool +} + +func (b0 ControllerExpandVolumeResponse_builder) Build() *ControllerExpandVolumeResponse { + m0 := &ControllerExpandVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_CapacityBytes = b.CapacityBytes + x.xxx_hidden_NodeExpansionRequired = b.NodeExpansionRequired + return m0 +} + +type NodeStageVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_PublishContext map[string]string `protobuf:"bytes,2,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_StagingTargetPath string `protobuf:"bytes,3,opt,name=staging_target_path,json=stagingTargetPath,proto3" json:"staging_target_path,omitempty"` + xxx_hidden_VolumeCapability *VolumeCapability `protobuf:"bytes,4,opt,name=volume_capability,json=volumeCapability,proto3" json:"volume_capability,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_VolumeContext map[string]string `protobuf:"bytes,6,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeStageVolumeRequest) Reset() { + *x = NodeStageVolumeRequest{} + mi := &file_csi_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeStageVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeStageVolumeRequest) ProtoMessage() {} + +func (x *NodeStageVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodeStageVolumeRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *NodeStageVolumeRequest) GetPublishContext() map[string]string { + if x != nil { + return x.xxx_hidden_PublishContext + } + return nil +} + +func (x *NodeStageVolumeRequest) GetStagingTargetPath() string { + if x != nil { + return x.xxx_hidden_StagingTargetPath + } + return "" +} + +func (x *NodeStageVolumeRequest) GetVolumeCapability() *VolumeCapability { + if x != nil { + return x.xxx_hidden_VolumeCapability + } + return nil +} + +func (x *NodeStageVolumeRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *NodeStageVolumeRequest) GetVolumeContext() map[string]string { + if x != nil { + return x.xxx_hidden_VolumeContext + } + return nil +} + +func (x *NodeStageVolumeRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *NodeStageVolumeRequest) SetPublishContext(v map[string]string) { + x.xxx_hidden_PublishContext = v +} + +func (x *NodeStageVolumeRequest) SetStagingTargetPath(v string) { + x.xxx_hidden_StagingTargetPath = v +} + +func (x *NodeStageVolumeRequest) SetVolumeCapability(v *VolumeCapability) { + x.xxx_hidden_VolumeCapability = v +} + +func (x *NodeStageVolumeRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +func (x *NodeStageVolumeRequest) SetVolumeContext(v map[string]string) { + x.xxx_hidden_VolumeContext = v +} + +func (x *NodeStageVolumeRequest) HasVolumeCapability() bool { + if x == nil { + return false + } + return x.xxx_hidden_VolumeCapability != nil +} + +func (x *NodeStageVolumeRequest) ClearVolumeCapability() { + x.xxx_hidden_VolumeCapability = nil +} + +type NodeStageVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to publish. This field is REQUIRED. + VolumeId string + // The CO SHALL set this field to the value returned by + // `ControllerPublishVolume` if the corresponding Controller Plugin + // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be + // left unset if the corresponding Controller Plugin does not have + // this capability. This is an OPTIONAL field. + PublishContext map[string]string + // The path to which the volume MAY be staged. It MUST be an + // absolute path in the root filesystem of the process serving this + // request, and MUST be a directory. The CO SHALL ensure that there + // is only one `staging_target_path` per volume. The CO SHALL ensure + // that the path is directory and that the process serving the + // request has `read` and `write` permission to that directory. The + // CO SHALL be responsible for creating the directory if it does not + // exist. + // This is a REQUIRED field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + StagingTargetPath string + // Volume capability describing how the CO intends to use this volume. + // SP MUST ensure the CO can use the staged volume as described. + // Otherwise SP MUST return the appropriate gRPC error code. + // This is a REQUIRED field. + VolumeCapability *VolumeCapability + // Secrets required by plugin to complete node stage volume request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string + // Volume context as returned by SP in + // CreateVolumeResponse.Volume.volume_context. + // This field is OPTIONAL and MUST match the volume_context of the + // volume identified by `volume_id`. + VolumeContext map[string]string +} + +func (b0 NodeStageVolumeRequest_builder) Build() *NodeStageVolumeRequest { + m0 := &NodeStageVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_PublishContext = b.PublishContext + x.xxx_hidden_StagingTargetPath = b.StagingTargetPath + x.xxx_hidden_VolumeCapability = b.VolumeCapability + x.xxx_hidden_Secrets = b.Secrets + x.xxx_hidden_VolumeContext = b.VolumeContext + return m0 +} + +type NodeStageVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeStageVolumeResponse) Reset() { + *x = NodeStageVolumeResponse{} + mi := &file_csi_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeStageVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeStageVolumeResponse) ProtoMessage() {} + +func (x *NodeStageVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type NodeStageVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 NodeStageVolumeResponse_builder) Build() *NodeStageVolumeResponse { + m0 := &NodeStageVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type NodeUnstageVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_StagingTargetPath string `protobuf:"bytes,2,opt,name=staging_target_path,json=stagingTargetPath,proto3" json:"staging_target_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeUnstageVolumeRequest) Reset() { + *x = NodeUnstageVolumeRequest{} + mi := &file_csi_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeUnstageVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeUnstageVolumeRequest) ProtoMessage() {} + +func (x *NodeUnstageVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[45] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodeUnstageVolumeRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *NodeUnstageVolumeRequest) GetStagingTargetPath() string { + if x != nil { + return x.xxx_hidden_StagingTargetPath + } + return "" +} + +func (x *NodeUnstageVolumeRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *NodeUnstageVolumeRequest) SetStagingTargetPath(v string) { + x.xxx_hidden_StagingTargetPath = v +} + +type NodeUnstageVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume. This field is REQUIRED. + VolumeId string + // The path at which the volume was staged. It MUST be an absolute + // path in the root filesystem of the process serving this request. + // This is a REQUIRED field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + StagingTargetPath string +} + +func (b0 NodeUnstageVolumeRequest_builder) Build() *NodeUnstageVolumeRequest { + m0 := &NodeUnstageVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_StagingTargetPath = b.StagingTargetPath + return m0 +} + +type NodeUnstageVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeUnstageVolumeResponse) Reset() { + *x = NodeUnstageVolumeResponse{} + mi := &file_csi_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeUnstageVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeUnstageVolumeResponse) ProtoMessage() {} + +func (x *NodeUnstageVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type NodeUnstageVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 NodeUnstageVolumeResponse_builder) Build() *NodeUnstageVolumeResponse { + m0 := &NodeUnstageVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type NodePublishVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_PublishContext map[string]string `protobuf:"bytes,2,rep,name=publish_context,json=publishContext,proto3" json:"publish_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_StagingTargetPath string `protobuf:"bytes,3,opt,name=staging_target_path,json=stagingTargetPath,proto3" json:"staging_target_path,omitempty"` + xxx_hidden_TargetPath string `protobuf:"bytes,4,opt,name=target_path,json=targetPath,proto3" json:"target_path,omitempty"` + xxx_hidden_VolumeCapability *VolumeCapability `protobuf:"bytes,5,opt,name=volume_capability,json=volumeCapability,proto3" json:"volume_capability,omitempty"` + xxx_hidden_Readonly bool `protobuf:"varint,6,opt,name=readonly,proto3" json:"readonly,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,7,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_VolumeContext map[string]string `protobuf:"bytes,8,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodePublishVolumeRequest) Reset() { + *x = NodePublishVolumeRequest{} + mi := &file_csi_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodePublishVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodePublishVolumeRequest) ProtoMessage() {} + +func (x *NodePublishVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[47] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodePublishVolumeRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *NodePublishVolumeRequest) GetPublishContext() map[string]string { + if x != nil { + return x.xxx_hidden_PublishContext + } + return nil +} + +func (x *NodePublishVolumeRequest) GetStagingTargetPath() string { + if x != nil { + return x.xxx_hidden_StagingTargetPath + } + return "" +} + +func (x *NodePublishVolumeRequest) GetTargetPath() string { + if x != nil { + return x.xxx_hidden_TargetPath + } + return "" +} + +func (x *NodePublishVolumeRequest) GetVolumeCapability() *VolumeCapability { + if x != nil { + return x.xxx_hidden_VolumeCapability + } + return nil +} + +func (x *NodePublishVolumeRequest) GetReadonly() bool { + if x != nil { + return x.xxx_hidden_Readonly + } + return false +} + +func (x *NodePublishVolumeRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *NodePublishVolumeRequest) GetVolumeContext() map[string]string { + if x != nil { + return x.xxx_hidden_VolumeContext + } + return nil +} + +func (x *NodePublishVolumeRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *NodePublishVolumeRequest) SetPublishContext(v map[string]string) { + x.xxx_hidden_PublishContext = v +} + +func (x *NodePublishVolumeRequest) SetStagingTargetPath(v string) { + x.xxx_hidden_StagingTargetPath = v +} + +func (x *NodePublishVolumeRequest) SetTargetPath(v string) { + x.xxx_hidden_TargetPath = v +} + +func (x *NodePublishVolumeRequest) SetVolumeCapability(v *VolumeCapability) { + x.xxx_hidden_VolumeCapability = v +} + +func (x *NodePublishVolumeRequest) SetReadonly(v bool) { + x.xxx_hidden_Readonly = v +} + +func (x *NodePublishVolumeRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +func (x *NodePublishVolumeRequest) SetVolumeContext(v map[string]string) { + x.xxx_hidden_VolumeContext = v +} + +func (x *NodePublishVolumeRequest) HasVolumeCapability() bool { + if x == nil { + return false + } + return x.xxx_hidden_VolumeCapability != nil +} + +func (x *NodePublishVolumeRequest) ClearVolumeCapability() { + x.xxx_hidden_VolumeCapability = nil +} + +type NodePublishVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume to publish. This field is REQUIRED. + VolumeId string + // The CO SHALL set this field to the value returned by + // `ControllerPublishVolume` if the corresponding Controller Plugin + // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be + // left unset if the corresponding Controller Plugin does not have + // this capability. This is an OPTIONAL field. + PublishContext map[string]string + // The path to which the volume was staged by `NodeStageVolume`. + // It MUST be an absolute path in the root filesystem of the process + // serving this request. + // It MUST be set if the Node Plugin implements the + // `STAGE_UNSTAGE_VOLUME` node capability. + // This is an OPTIONAL field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + StagingTargetPath string + // The path to which the volume will be published. It MUST be an + // absolute path in the root filesystem of the process serving this + // request. The CO SHALL ensure uniqueness of target_path per volume. + // The CO SHALL ensure that the parent directory of this path exists + // and that the process serving the request has `read` and `write` + // permissions to that parent directory. + // For volumes with an access type of block, the SP SHALL place the + // block device at target_path. + // For volumes with an access type of mount, the SP SHALL place the + // mounted directory at target_path. + // Creation of target_path is the responsibility of the SP. + // This is a REQUIRED field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + TargetPath string + // Volume capability describing how the CO intends to use this volume. + // SP MUST ensure the CO can use the published volume as described. + // Otherwise SP MUST return the appropriate gRPC error code. + // This is a REQUIRED field. + VolumeCapability *VolumeCapability + // Indicates SP MUST publish the volume in readonly mode. + // This field is REQUIRED. + Readonly bool + // Secrets required by plugin to complete node publish volume request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string + // Volume context as returned by SP in + // CreateVolumeResponse.Volume.volume_context. + // This field is OPTIONAL and MUST match the volume_context of the + // volume identified by `volume_id`. + VolumeContext map[string]string +} + +func (b0 NodePublishVolumeRequest_builder) Build() *NodePublishVolumeRequest { + m0 := &NodePublishVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_PublishContext = b.PublishContext + x.xxx_hidden_StagingTargetPath = b.StagingTargetPath + x.xxx_hidden_TargetPath = b.TargetPath + x.xxx_hidden_VolumeCapability = b.VolumeCapability + x.xxx_hidden_Readonly = b.Readonly + x.xxx_hidden_Secrets = b.Secrets + x.xxx_hidden_VolumeContext = b.VolumeContext + return m0 +} + +type NodePublishVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodePublishVolumeResponse) Reset() { + *x = NodePublishVolumeResponse{} + mi := &file_csi_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodePublishVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodePublishVolumeResponse) ProtoMessage() {} + +func (x *NodePublishVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[48] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type NodePublishVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 NodePublishVolumeResponse_builder) Build() *NodePublishVolumeResponse { + m0 := &NodePublishVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type NodeUnpublishVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_TargetPath string `protobuf:"bytes,2,opt,name=target_path,json=targetPath,proto3" json:"target_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeUnpublishVolumeRequest) Reset() { + *x = NodeUnpublishVolumeRequest{} + mi := &file_csi_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeUnpublishVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeUnpublishVolumeRequest) ProtoMessage() {} + +func (x *NodeUnpublishVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[49] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodeUnpublishVolumeRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *NodeUnpublishVolumeRequest) GetTargetPath() string { + if x != nil { + return x.xxx_hidden_TargetPath + } + return "" +} + +func (x *NodeUnpublishVolumeRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *NodeUnpublishVolumeRequest) SetTargetPath(v string) { + x.xxx_hidden_TargetPath = v +} + +type NodeUnpublishVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume. This field is REQUIRED. + VolumeId string + // The path at which the volume was published. It MUST be an absolute + // path in the root filesystem of the process serving this request. + // The SP MUST delete the file or directory it created at this path. + // This is a REQUIRED field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + TargetPath string +} + +func (b0 NodeUnpublishVolumeRequest_builder) Build() *NodeUnpublishVolumeRequest { + m0 := &NodeUnpublishVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_TargetPath = b.TargetPath + return m0 +} + +type NodeUnpublishVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeUnpublishVolumeResponse) Reset() { + *x = NodeUnpublishVolumeResponse{} + mi := &file_csi_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeUnpublishVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeUnpublishVolumeResponse) ProtoMessage() {} + +func (x *NodeUnpublishVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[50] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type NodeUnpublishVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 NodeUnpublishVolumeResponse_builder) Build() *NodeUnpublishVolumeResponse { + m0 := &NodeUnpublishVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type NodeGetVolumeStatsRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_VolumePath string `protobuf:"bytes,2,opt,name=volume_path,json=volumePath,proto3" json:"volume_path,omitempty"` + xxx_hidden_StagingTargetPath string `protobuf:"bytes,3,opt,name=staging_target_path,json=stagingTargetPath,proto3" json:"staging_target_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeGetVolumeStatsRequest) Reset() { + *x = NodeGetVolumeStatsRequest{} + mi := &file_csi_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeGetVolumeStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeGetVolumeStatsRequest) ProtoMessage() {} + +func (x *NodeGetVolumeStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[51] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodeGetVolumeStatsRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *NodeGetVolumeStatsRequest) GetVolumePath() string { + if x != nil { + return x.xxx_hidden_VolumePath + } + return "" +} + +func (x *NodeGetVolumeStatsRequest) GetStagingTargetPath() string { + if x != nil { + return x.xxx_hidden_StagingTargetPath + } + return "" +} + +func (x *NodeGetVolumeStatsRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *NodeGetVolumeStatsRequest) SetVolumePath(v string) { + x.xxx_hidden_VolumePath = v +} + +func (x *NodeGetVolumeStatsRequest) SetStagingTargetPath(v string) { + x.xxx_hidden_StagingTargetPath = v +} + +type NodeGetVolumeStatsRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume. This field is REQUIRED. + VolumeId string + // It can be any valid path where volume was previously + // staged or published. + // It MUST be an absolute path in the root filesystem of + // the process serving this request. + // This is a REQUIRED field. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + VolumePath string + // The path where the volume is staged, if the plugin has the + // STAGE_UNSTAGE_VOLUME capability, otherwise empty. + // If not empty, it MUST be an absolute path in the root + // filesystem of the process serving this request. + // This field is OPTIONAL. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + StagingTargetPath string +} + +func (b0 NodeGetVolumeStatsRequest_builder) Build() *NodeGetVolumeStatsRequest { + m0 := &NodeGetVolumeStatsRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_VolumePath = b.VolumePath + x.xxx_hidden_StagingTargetPath = b.StagingTargetPath + return m0 +} + +type NodeGetVolumeStatsResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Usage *[]*VolumeUsage `protobuf:"bytes,1,rep,name=usage,proto3" json:"usage,omitempty"` + xxx_hidden_VolumeCondition *VolumeCondition `protobuf:"bytes,2,opt,name=volume_condition,json=volumeCondition,proto3" json:"volume_condition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeGetVolumeStatsResponse) Reset() { + *x = NodeGetVolumeStatsResponse{} + mi := &file_csi_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeGetVolumeStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeGetVolumeStatsResponse) ProtoMessage() {} + +func (x *NodeGetVolumeStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[52] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodeGetVolumeStatsResponse) GetUsage() []*VolumeUsage { + if x != nil { + if x.xxx_hidden_Usage != nil { + return *x.xxx_hidden_Usage + } + } + return nil +} + +func (x *NodeGetVolumeStatsResponse) GetVolumeCondition() *VolumeCondition { + if x != nil { + return x.xxx_hidden_VolumeCondition + } + return nil +} + +func (x *NodeGetVolumeStatsResponse) SetUsage(v []*VolumeUsage) { + x.xxx_hidden_Usage = &v +} + +func (x *NodeGetVolumeStatsResponse) SetVolumeCondition(v *VolumeCondition) { + x.xxx_hidden_VolumeCondition = v +} + +func (x *NodeGetVolumeStatsResponse) HasVolumeCondition() bool { + if x == nil { + return false + } + return x.xxx_hidden_VolumeCondition != nil +} + +func (x *NodeGetVolumeStatsResponse) ClearVolumeCondition() { + x.xxx_hidden_VolumeCondition = nil +} + +type NodeGetVolumeStatsResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This field is OPTIONAL. + Usage []*VolumeUsage + // Information about the current condition of the volume. + // This field is OPTIONAL. + // This field MUST be specified if the VOLUME_CONDITION node + // capability is supported. + VolumeCondition *VolumeCondition +} + +func (b0 NodeGetVolumeStatsResponse_builder) Build() *NodeGetVolumeStatsResponse { + m0 := &NodeGetVolumeStatsResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Usage = &b.Usage + x.xxx_hidden_VolumeCondition = b.VolumeCondition + return m0 +} + +type VolumeUsage struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Available int64 `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"` + xxx_hidden_Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + xxx_hidden_Used int64 `protobuf:"varint,3,opt,name=used,proto3" json:"used,omitempty"` + xxx_hidden_Unit VolumeUsage_Unit `protobuf:"varint,4,opt,name=unit,proto3,enum=csi.v1.VolumeUsage_Unit" json:"unit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VolumeUsage) Reset() { + *x = VolumeUsage{} + mi := &file_csi_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VolumeUsage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VolumeUsage) ProtoMessage() {} + +func (x *VolumeUsage) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[53] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *VolumeUsage) GetAvailable() int64 { + if x != nil { + return x.xxx_hidden_Available + } + return 0 +} + +func (x *VolumeUsage) GetTotal() int64 { + if x != nil { + return x.xxx_hidden_Total + } + return 0 +} + +func (x *VolumeUsage) GetUsed() int64 { + if x != nil { + return x.xxx_hidden_Used + } + return 0 +} + +func (x *VolumeUsage) GetUnit() VolumeUsage_Unit { + if x != nil { + return x.xxx_hidden_Unit + } + return VolumeUsage_UNKNOWN +} + +func (x *VolumeUsage) SetAvailable(v int64) { + x.xxx_hidden_Available = v +} + +func (x *VolumeUsage) SetTotal(v int64) { + x.xxx_hidden_Total = v +} + +func (x *VolumeUsage) SetUsed(v int64) { + x.xxx_hidden_Used = v +} + +func (x *VolumeUsage) SetUnit(v VolumeUsage_Unit) { + x.xxx_hidden_Unit = v +} + +type VolumeUsage_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The available capacity in specified Unit. This field is OPTIONAL. + // The value of this field MUST NOT be negative. + Available int64 + // The total capacity in specified Unit. This field is REQUIRED. + // The value of this field MUST NOT be negative. + Total int64 + // The used capacity in specified Unit. This field is OPTIONAL. + // The value of this field MUST NOT be negative. + Used int64 + // Units by which values are measured. This field is REQUIRED. + Unit VolumeUsage_Unit +} + +func (b0 VolumeUsage_builder) Build() *VolumeUsage { + m0 := &VolumeUsage{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Available = b.Available + x.xxx_hidden_Total = b.Total + x.xxx_hidden_Used = b.Used + x.xxx_hidden_Unit = b.Unit + return m0 +} + +// VolumeCondition represents the current condition of a volume. +type VolumeCondition struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Abnormal bool `protobuf:"varint,1,opt,name=abnormal,proto3" json:"abnormal,omitempty"` + xxx_hidden_Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VolumeCondition) Reset() { + *x = VolumeCondition{} + mi := &file_csi_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VolumeCondition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VolumeCondition) ProtoMessage() {} + +func (x *VolumeCondition) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[54] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *VolumeCondition) GetAbnormal() bool { + if x != nil { + return x.xxx_hidden_Abnormal + } + return false +} + +func (x *VolumeCondition) GetMessage() string { + if x != nil { + return x.xxx_hidden_Message + } + return "" +} + +func (x *VolumeCondition) SetAbnormal(v bool) { + x.xxx_hidden_Abnormal = v +} + +func (x *VolumeCondition) SetMessage(v string) { + x.xxx_hidden_Message = v +} + +type VolumeCondition_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Normal volumes are available for use and operating optimally. + // An abnormal volume does not meet these criteria. + // This field is REQUIRED. + Abnormal bool + // The message describing the condition of the volume. + // This field is REQUIRED. + Message string +} + +func (b0 VolumeCondition_builder) Build() *VolumeCondition { + m0 := &VolumeCondition{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Abnormal = b.Abnormal + x.xxx_hidden_Message = b.Message + return m0 +} + +type NodeGetCapabilitiesRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeGetCapabilitiesRequest) Reset() { + *x = NodeGetCapabilitiesRequest{} + mi := &file_csi_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeGetCapabilitiesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeGetCapabilitiesRequest) ProtoMessage() {} + +func (x *NodeGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[55] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type NodeGetCapabilitiesRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 NodeGetCapabilitiesRequest_builder) Build() *NodeGetCapabilitiesRequest { + m0 := &NodeGetCapabilitiesRequest{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type NodeGetCapabilitiesResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Capabilities *[]*NodeServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeGetCapabilitiesResponse) Reset() { + *x = NodeGetCapabilitiesResponse{} + mi := &file_csi_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeGetCapabilitiesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeGetCapabilitiesResponse) ProtoMessage() {} + +func (x *NodeGetCapabilitiesResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[56] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodeGetCapabilitiesResponse) GetCapabilities() []*NodeServiceCapability { + if x != nil { + if x.xxx_hidden_Capabilities != nil { + return *x.xxx_hidden_Capabilities + } + } + return nil +} + +func (x *NodeGetCapabilitiesResponse) SetCapabilities(v []*NodeServiceCapability) { + x.xxx_hidden_Capabilities = &v +} + +type NodeGetCapabilitiesResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // All the capabilities that the node service supports. This field + // is OPTIONAL. + Capabilities []*NodeServiceCapability +} + +func (b0 NodeGetCapabilitiesResponse_builder) Build() *NodeGetCapabilitiesResponse { + m0 := &NodeGetCapabilitiesResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Capabilities = &b.Capabilities + return m0 +} + +// Specifies a capability of the node service. +type NodeServiceCapability struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Type isNodeServiceCapability_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeServiceCapability) Reset() { + *x = NodeServiceCapability{} + mi := &file_csi_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeServiceCapability) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeServiceCapability) ProtoMessage() {} + +func (x *NodeServiceCapability) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[57] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodeServiceCapability) GetRpc() *NodeServiceCapability_RPC { + if x != nil { + if x, ok := x.xxx_hidden_Type.(*nodeServiceCapability_Rpc); ok { + return x.Rpc + } + } + return nil +} + +func (x *NodeServiceCapability) SetRpc(v *NodeServiceCapability_RPC) { + if v == nil { + x.xxx_hidden_Type = nil + return + } + x.xxx_hidden_Type = &nodeServiceCapability_Rpc{v} +} + +func (x *NodeServiceCapability) HasType() bool { + if x == nil { + return false + } + return x.xxx_hidden_Type != nil +} + +func (x *NodeServiceCapability) HasRpc() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_Type.(*nodeServiceCapability_Rpc) + return ok +} + +func (x *NodeServiceCapability) ClearType() { + x.xxx_hidden_Type = nil +} + +func (x *NodeServiceCapability) ClearRpc() { + if _, ok := x.xxx_hidden_Type.(*nodeServiceCapability_Rpc); ok { + x.xxx_hidden_Type = nil + } +} + +const NodeServiceCapability_Type_not_set_case case_NodeServiceCapability_Type = 0 +const NodeServiceCapability_Rpc_case case_NodeServiceCapability_Type = 1 + +func (x *NodeServiceCapability) WhichType() case_NodeServiceCapability_Type { + if x == nil { + return NodeServiceCapability_Type_not_set_case + } + switch x.xxx_hidden_Type.(type) { + case *nodeServiceCapability_Rpc: + return NodeServiceCapability_Rpc_case + default: + return NodeServiceCapability_Type_not_set_case + } +} + +type NodeServiceCapability_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Fields of oneof xxx_hidden_Type: + // RPC that the controller supports. + Rpc *NodeServiceCapability_RPC + // -- end of xxx_hidden_Type +} + +func (b0 NodeServiceCapability_builder) Build() *NodeServiceCapability { + m0 := &NodeServiceCapability{} + b, x := &b0, m0 + _, _ = b, x + if b.Rpc != nil { + x.xxx_hidden_Type = &nodeServiceCapability_Rpc{b.Rpc} + } + return m0 +} + +type case_NodeServiceCapability_Type protoreflect.FieldNumber + +func (x case_NodeServiceCapability_Type) String() string { + md := file_csi_proto_msgTypes[57].Descriptor() + if x == 0 { + return "not set" + } + return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x)) +} + +type isNodeServiceCapability_Type interface { + isNodeServiceCapability_Type() +} + +type nodeServiceCapability_Rpc struct { + // RPC that the controller supports. + Rpc *NodeServiceCapability_RPC `protobuf:"bytes,1,opt,name=rpc,proto3,oneof"` +} + +func (*nodeServiceCapability_Rpc) isNodeServiceCapability_Type() {} + +type NodeGetInfoRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeGetInfoRequest) Reset() { + *x = NodeGetInfoRequest{} + mi := &file_csi_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeGetInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeGetInfoRequest) ProtoMessage() {} + +func (x *NodeGetInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[58] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type NodeGetInfoRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 NodeGetInfoRequest_builder) Build() *NodeGetInfoRequest { + m0 := &NodeGetInfoRequest{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type NodeGetInfoResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + xxx_hidden_MaxVolumesPerNode int64 `protobuf:"varint,2,opt,name=max_volumes_per_node,json=maxVolumesPerNode,proto3" json:"max_volumes_per_node,omitempty"` + xxx_hidden_AccessibleTopology *Topology `protobuf:"bytes,3,opt,name=accessible_topology,json=accessibleTopology,proto3" json:"accessible_topology,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeGetInfoResponse) Reset() { + *x = NodeGetInfoResponse{} + mi := &file_csi_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeGetInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeGetInfoResponse) ProtoMessage() {} + +func (x *NodeGetInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[59] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodeGetInfoResponse) GetNodeId() string { + if x != nil { + return x.xxx_hidden_NodeId + } + return "" +} + +func (x *NodeGetInfoResponse) GetMaxVolumesPerNode() int64 { + if x != nil { + return x.xxx_hidden_MaxVolumesPerNode + } + return 0 +} + +func (x *NodeGetInfoResponse) GetAccessibleTopology() *Topology { + if x != nil { + return x.xxx_hidden_AccessibleTopology + } + return nil +} + +func (x *NodeGetInfoResponse) SetNodeId(v string) { + x.xxx_hidden_NodeId = v +} + +func (x *NodeGetInfoResponse) SetMaxVolumesPerNode(v int64) { + x.xxx_hidden_MaxVolumesPerNode = v +} + +func (x *NodeGetInfoResponse) SetAccessibleTopology(v *Topology) { + x.xxx_hidden_AccessibleTopology = v +} + +func (x *NodeGetInfoResponse) HasAccessibleTopology() bool { + if x == nil { + return false + } + return x.xxx_hidden_AccessibleTopology != nil +} + +func (x *NodeGetInfoResponse) ClearAccessibleTopology() { + x.xxx_hidden_AccessibleTopology = nil +} + +type NodeGetInfoResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The identifier of the node as understood by the SP. + // This field is REQUIRED. + // This field MUST contain enough information to uniquely identify + // this specific node vs all other nodes supported by this plugin. + // This field SHALL be used by the CO in subsequent calls, including + // `ControllerPublishVolume`, to refer to this node. + // The SP is NOT responsible for global uniqueness of node_id across + // multiple SPs. + // This field overrides the general CSI size limit. + // The size of this field SHALL NOT exceed 256 bytes. The general + // CSI size limit, 128 byte, is RECOMMENDED for best backwards + // compatibility. + NodeId string + // Maximum number of volumes that controller can publish to the node. + // If value is not set or zero CO SHALL decide how many volumes of + // this type can be published by the controller to the node. The + // plugin MUST NOT set negative values here. + // This field is OPTIONAL. + MaxVolumesPerNode int64 + // Specifies where (regions, zones, racks, etc.) the node is + // accessible from. + // A plugin that returns this field MUST also set the + // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability. + // COs MAY use this information along with the topology information + // returned in CreateVolumeResponse to ensure that a given volume is + // accessible from a given node when scheduling workloads. + // This field is OPTIONAL. If it is not specified, the CO MAY assume + // the node is not subject to any topological constraint, and MAY + // schedule workloads that reference any volume V, such that there are + // no topological constraints declared for V. + // + // Example 1: + // + // accessible_topology = + // {"region": "R1", "zone": "Z2"} + // + // Indicates the node exists within the "region" "R1" and the "zone" + // "Z2". + AccessibleTopology *Topology +} + +func (b0 NodeGetInfoResponse_builder) Build() *NodeGetInfoResponse { + m0 := &NodeGetInfoResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_NodeId = b.NodeId + x.xxx_hidden_MaxVolumesPerNode = b.MaxVolumesPerNode + x.xxx_hidden_AccessibleTopology = b.AccessibleTopology + return m0 +} + +type NodeExpandVolumeRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + xxx_hidden_VolumePath string `protobuf:"bytes,2,opt,name=volume_path,json=volumePath,proto3" json:"volume_path,omitempty"` + xxx_hidden_CapacityRange *CapacityRange `protobuf:"bytes,3,opt,name=capacity_range,json=capacityRange,proto3" json:"capacity_range,omitempty"` + xxx_hidden_StagingTargetPath string `protobuf:"bytes,4,opt,name=staging_target_path,json=stagingTargetPath,proto3" json:"staging_target_path,omitempty"` + xxx_hidden_VolumeCapability *VolumeCapability `protobuf:"bytes,5,opt,name=volume_capability,json=volumeCapability,proto3" json:"volume_capability,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,6,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeExpandVolumeRequest) Reset() { + *x = NodeExpandVolumeRequest{} + mi := &file_csi_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeExpandVolumeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeExpandVolumeRequest) ProtoMessage() {} + +func (x *NodeExpandVolumeRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[60] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodeExpandVolumeRequest) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *NodeExpandVolumeRequest) GetVolumePath() string { + if x != nil { + return x.xxx_hidden_VolumePath + } + return "" +} + +func (x *NodeExpandVolumeRequest) GetCapacityRange() *CapacityRange { + if x != nil { + return x.xxx_hidden_CapacityRange + } + return nil +} + +func (x *NodeExpandVolumeRequest) GetStagingTargetPath() string { + if x != nil { + return x.xxx_hidden_StagingTargetPath + } + return "" +} + +func (x *NodeExpandVolumeRequest) GetVolumeCapability() *VolumeCapability { + if x != nil { + return x.xxx_hidden_VolumeCapability + } + return nil +} + +func (x *NodeExpandVolumeRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *NodeExpandVolumeRequest) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +func (x *NodeExpandVolumeRequest) SetVolumePath(v string) { + x.xxx_hidden_VolumePath = v +} + +func (x *NodeExpandVolumeRequest) SetCapacityRange(v *CapacityRange) { + x.xxx_hidden_CapacityRange = v +} + +func (x *NodeExpandVolumeRequest) SetStagingTargetPath(v string) { + x.xxx_hidden_StagingTargetPath = v +} + +func (x *NodeExpandVolumeRequest) SetVolumeCapability(v *VolumeCapability) { + x.xxx_hidden_VolumeCapability = v +} + +func (x *NodeExpandVolumeRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +func (x *NodeExpandVolumeRequest) HasCapacityRange() bool { + if x == nil { + return false + } + return x.xxx_hidden_CapacityRange != nil +} + +func (x *NodeExpandVolumeRequest) HasVolumeCapability() bool { + if x == nil { + return false + } + return x.xxx_hidden_VolumeCapability != nil +} + +func (x *NodeExpandVolumeRequest) ClearCapacityRange() { + x.xxx_hidden_CapacityRange = nil +} + +func (x *NodeExpandVolumeRequest) ClearVolumeCapability() { + x.xxx_hidden_VolumeCapability = nil +} + +type NodeExpandVolumeRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the volume. This field is REQUIRED. + VolumeId string + // The path on which volume is available. This field is REQUIRED. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + VolumePath string + // This allows CO to specify the capacity requirements of the volume + // after expansion. If capacity_range is omitted then a plugin MAY + // inspect the file system of the volume to determine the maximum + // capacity to which the volume can be expanded. In such cases a + // plugin MAY expand the volume to its maximum capacity. + // This field is OPTIONAL. + CapacityRange *CapacityRange + // The path where the volume is staged, if the plugin has the + // STAGE_UNSTAGE_VOLUME capability, otherwise empty. + // If not empty, it MUST be an absolute path in the root + // filesystem of the process serving this request. + // This field is OPTIONAL. + // This field overrides the general CSI size limit. + // SP SHOULD support the maximum path length allowed by the operating + // system/filesystem, but, at a minimum, SP MUST accept a max path + // length of at least 128 bytes. + StagingTargetPath string + // Volume capability describing how the CO intends to use this volume. + // This allows SP to determine if volume is being used as a block + // device or mounted file system. For example - if volume is being + // used as a block device the SP MAY choose to skip expanding the + // filesystem in NodeExpandVolume implementation but still perform + // rest of the housekeeping needed for expanding the volume. If + // volume_capability is omitted the SP MAY determine + // access_type from given volume_path for the volume and perform + // node expansion. This is an OPTIONAL field. + VolumeCapability *VolumeCapability + // Secrets required by plugin to complete node expand volume request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 NodeExpandVolumeRequest_builder) Build() *NodeExpandVolumeRequest { + m0 := &NodeExpandVolumeRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + x.xxx_hidden_VolumePath = b.VolumePath + x.xxx_hidden_CapacityRange = b.CapacityRange + x.xxx_hidden_StagingTargetPath = b.StagingTargetPath + x.xxx_hidden_VolumeCapability = b.VolumeCapability + x.xxx_hidden_Secrets = b.Secrets + return m0 +} + +type NodeExpandVolumeResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_CapacityBytes int64 `protobuf:"varint,1,opt,name=capacity_bytes,json=capacityBytes,proto3" json:"capacity_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeExpandVolumeResponse) Reset() { + *x = NodeExpandVolumeResponse{} + mi := &file_csi_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeExpandVolumeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeExpandVolumeResponse) ProtoMessage() {} + +func (x *NodeExpandVolumeResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[61] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodeExpandVolumeResponse) GetCapacityBytes() int64 { + if x != nil { + return x.xxx_hidden_CapacityBytes + } + return 0 +} + +func (x *NodeExpandVolumeResponse) SetCapacityBytes(v int64) { + x.xxx_hidden_CapacityBytes = v +} + +type NodeExpandVolumeResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The capacity of the volume in bytes. This field is OPTIONAL. + CapacityBytes int64 +} + +func (b0 NodeExpandVolumeResponse_builder) Build() *NodeExpandVolumeResponse { + m0 := &NodeExpandVolumeResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_CapacityBytes = b.CapacityBytes + return m0 +} + +type GroupControllerGetCapabilitiesRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GroupControllerGetCapabilitiesRequest) Reset() { + *x = GroupControllerGetCapabilitiesRequest{} + mi := &file_csi_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GroupControllerGetCapabilitiesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupControllerGetCapabilitiesRequest) ProtoMessage() {} + +func (x *GroupControllerGetCapabilitiesRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[62] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type GroupControllerGetCapabilitiesRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 GroupControllerGetCapabilitiesRequest_builder) Build() *GroupControllerGetCapabilitiesRequest { + m0 := &GroupControllerGetCapabilitiesRequest{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type GroupControllerGetCapabilitiesResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Capabilities *[]*GroupControllerServiceCapability `protobuf:"bytes,1,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GroupControllerGetCapabilitiesResponse) Reset() { + *x = GroupControllerGetCapabilitiesResponse{} + mi := &file_csi_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GroupControllerGetCapabilitiesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupControllerGetCapabilitiesResponse) ProtoMessage() {} + +func (x *GroupControllerGetCapabilitiesResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[63] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GroupControllerGetCapabilitiesResponse) GetCapabilities() []*GroupControllerServiceCapability { + if x != nil { + if x.xxx_hidden_Capabilities != nil { + return *x.xxx_hidden_Capabilities + } + } + return nil +} + +func (x *GroupControllerGetCapabilitiesResponse) SetCapabilities(v []*GroupControllerServiceCapability) { + x.xxx_hidden_Capabilities = &v +} + +type GroupControllerGetCapabilitiesResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // All the capabilities that the group controller service supports. + // This field is OPTIONAL. + Capabilities []*GroupControllerServiceCapability +} + +func (b0 GroupControllerGetCapabilitiesResponse_builder) Build() *GroupControllerGetCapabilitiesResponse { + m0 := &GroupControllerGetCapabilitiesResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Capabilities = &b.Capabilities + return m0 +} + +// Specifies a capability of the group controller service. +type GroupControllerServiceCapability struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Type isGroupControllerServiceCapability_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GroupControllerServiceCapability) Reset() { + *x = GroupControllerServiceCapability{} + mi := &file_csi_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GroupControllerServiceCapability) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupControllerServiceCapability) ProtoMessage() {} + +func (x *GroupControllerServiceCapability) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[64] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GroupControllerServiceCapability) GetRpc() *GroupControllerServiceCapability_RPC { + if x != nil { + if x, ok := x.xxx_hidden_Type.(*groupControllerServiceCapability_Rpc); ok { + return x.Rpc + } + } + return nil +} + +func (x *GroupControllerServiceCapability) SetRpc(v *GroupControllerServiceCapability_RPC) { + if v == nil { + x.xxx_hidden_Type = nil + return + } + x.xxx_hidden_Type = &groupControllerServiceCapability_Rpc{v} +} + +func (x *GroupControllerServiceCapability) HasType() bool { + if x == nil { + return false + } + return x.xxx_hidden_Type != nil +} + +func (x *GroupControllerServiceCapability) HasRpc() bool { + if x == nil { + return false + } + _, ok := x.xxx_hidden_Type.(*groupControllerServiceCapability_Rpc) + return ok +} + +func (x *GroupControllerServiceCapability) ClearType() { + x.xxx_hidden_Type = nil +} + +func (x *GroupControllerServiceCapability) ClearRpc() { + if _, ok := x.xxx_hidden_Type.(*groupControllerServiceCapability_Rpc); ok { + x.xxx_hidden_Type = nil + } +} + +const GroupControllerServiceCapability_Type_not_set_case case_GroupControllerServiceCapability_Type = 0 +const GroupControllerServiceCapability_Rpc_case case_GroupControllerServiceCapability_Type = 1 + +func (x *GroupControllerServiceCapability) WhichType() case_GroupControllerServiceCapability_Type { + if x == nil { + return GroupControllerServiceCapability_Type_not_set_case + } + switch x.xxx_hidden_Type.(type) { + case *groupControllerServiceCapability_Rpc: + return GroupControllerServiceCapability_Rpc_case + default: + return GroupControllerServiceCapability_Type_not_set_case + } +} + +type GroupControllerServiceCapability_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Fields of oneof xxx_hidden_Type: + // RPC that the controller supports. + Rpc *GroupControllerServiceCapability_RPC + // -- end of xxx_hidden_Type +} + +func (b0 GroupControllerServiceCapability_builder) Build() *GroupControllerServiceCapability { + m0 := &GroupControllerServiceCapability{} + b, x := &b0, m0 + _, _ = b, x + if b.Rpc != nil { + x.xxx_hidden_Type = &groupControllerServiceCapability_Rpc{b.Rpc} + } + return m0 +} + +type case_GroupControllerServiceCapability_Type protoreflect.FieldNumber + +func (x case_GroupControllerServiceCapability_Type) String() string { + md := file_csi_proto_msgTypes[64].Descriptor() + if x == 0 { + return "not set" + } + return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x)) +} + +type isGroupControllerServiceCapability_Type interface { + isGroupControllerServiceCapability_Type() +} + +type groupControllerServiceCapability_Rpc struct { + // RPC that the controller supports. + Rpc *GroupControllerServiceCapability_RPC `protobuf:"bytes,1,opt,name=rpc,proto3,oneof"` +} + +func (*groupControllerServiceCapability_Rpc) isGroupControllerServiceCapability_Type() {} + +type CreateVolumeGroupSnapshotRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + xxx_hidden_SourceVolumeIds []string `protobuf:"bytes,2,rep,name=source_volume_ids,json=sourceVolumeIds,proto3" json:"source_volume_ids,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateVolumeGroupSnapshotRequest) Reset() { + *x = CreateVolumeGroupSnapshotRequest{} + mi := &file_csi_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateVolumeGroupSnapshotRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateVolumeGroupSnapshotRequest) ProtoMessage() {} + +func (x *CreateVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[65] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *CreateVolumeGroupSnapshotRequest) GetName() string { + if x != nil { + return x.xxx_hidden_Name + } + return "" +} + +func (x *CreateVolumeGroupSnapshotRequest) GetSourceVolumeIds() []string { + if x != nil { + return x.xxx_hidden_SourceVolumeIds + } + return nil +} + +func (x *CreateVolumeGroupSnapshotRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *CreateVolumeGroupSnapshotRequest) GetParameters() map[string]string { + if x != nil { + return x.xxx_hidden_Parameters + } + return nil +} + +func (x *CreateVolumeGroupSnapshotRequest) SetName(v string) { + x.xxx_hidden_Name = v +} + +func (x *CreateVolumeGroupSnapshotRequest) SetSourceVolumeIds(v []string) { + x.xxx_hidden_SourceVolumeIds = v +} + +func (x *CreateVolumeGroupSnapshotRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +func (x *CreateVolumeGroupSnapshotRequest) SetParameters(v map[string]string) { + x.xxx_hidden_Parameters = v +} + +type CreateVolumeGroupSnapshotRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The suggested name for the group snapshot. This field is REQUIRED + // for idempotency. + // Any Unicode string that conforms to the length limit is allowed + // except those containing the following banned characters: + // U+0000-U+0008, U+000B, U+000C, U+000E-U+001F, U+007F-U+009F. + // (These are control characters other than commonly used whitespace.) + Name string + // volume IDs of the source volumes to be snapshotted together. + // This field is REQUIRED. + SourceVolumeIds []string + // Secrets required by plugin to complete + // ControllerCreateVolumeGroupSnapshot request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + // The secrets provided in this field SHOULD be the same for + // all group snapshot operations on the same group snapshot. + Secrets map[string]string + // Plugin specific parameters passed in as opaque key-value pairs. + // This field is OPTIONAL. The Plugin is responsible for parsing and + // validating these parameters. COs will treat these as opaque. + Parameters map[string]string +} + +func (b0 CreateVolumeGroupSnapshotRequest_builder) Build() *CreateVolumeGroupSnapshotRequest { + m0 := &CreateVolumeGroupSnapshotRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Name = b.Name + x.xxx_hidden_SourceVolumeIds = b.SourceVolumeIds + x.xxx_hidden_Secrets = b.Secrets + x.xxx_hidden_Parameters = b.Parameters + return m0 +} + +type CreateVolumeGroupSnapshotResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_GroupSnapshot *VolumeGroupSnapshot `protobuf:"bytes,1,opt,name=group_snapshot,json=groupSnapshot,proto3" json:"group_snapshot,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateVolumeGroupSnapshotResponse) Reset() { + *x = CreateVolumeGroupSnapshotResponse{} + mi := &file_csi_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateVolumeGroupSnapshotResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateVolumeGroupSnapshotResponse) ProtoMessage() {} + +func (x *CreateVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[66] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *CreateVolumeGroupSnapshotResponse) GetGroupSnapshot() *VolumeGroupSnapshot { + if x != nil { + return x.xxx_hidden_GroupSnapshot + } + return nil +} + +func (x *CreateVolumeGroupSnapshotResponse) SetGroupSnapshot(v *VolumeGroupSnapshot) { + x.xxx_hidden_GroupSnapshot = v +} + +func (x *CreateVolumeGroupSnapshotResponse) HasGroupSnapshot() bool { + if x == nil { + return false + } + return x.xxx_hidden_GroupSnapshot != nil +} + +func (x *CreateVolumeGroupSnapshotResponse) ClearGroupSnapshot() { + x.xxx_hidden_GroupSnapshot = nil +} + +type CreateVolumeGroupSnapshotResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Contains all attributes of the newly created group snapshot. + // This field is REQUIRED. + GroupSnapshot *VolumeGroupSnapshot +} + +func (b0 CreateVolumeGroupSnapshotResponse_builder) Build() *CreateVolumeGroupSnapshotResponse { + m0 := &CreateVolumeGroupSnapshotResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_GroupSnapshot = b.GroupSnapshot + return m0 +} + +type VolumeGroupSnapshot struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_GroupSnapshotId string `protobuf:"bytes,1,opt,name=group_snapshot_id,json=groupSnapshotId,proto3" json:"group_snapshot_id,omitempty"` + xxx_hidden_Snapshots *[]*Snapshot `protobuf:"bytes,2,rep,name=snapshots,proto3" json:"snapshots,omitempty"` + xxx_hidden_CreationTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` + xxx_hidden_ReadyToUse bool `protobuf:"varint,4,opt,name=ready_to_use,json=readyToUse,proto3" json:"ready_to_use,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VolumeGroupSnapshot) Reset() { + *x = VolumeGroupSnapshot{} + mi := &file_csi_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VolumeGroupSnapshot) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VolumeGroupSnapshot) ProtoMessage() {} + +func (x *VolumeGroupSnapshot) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[67] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *VolumeGroupSnapshot) GetGroupSnapshotId() string { + if x != nil { + return x.xxx_hidden_GroupSnapshotId + } + return "" +} + +func (x *VolumeGroupSnapshot) GetSnapshots() []*Snapshot { + if x != nil { + if x.xxx_hidden_Snapshots != nil { + return *x.xxx_hidden_Snapshots + } + } + return nil +} + +func (x *VolumeGroupSnapshot) GetCreationTime() *timestamppb.Timestamp { + if x != nil { + return x.xxx_hidden_CreationTime + } + return nil +} + +func (x *VolumeGroupSnapshot) GetReadyToUse() bool { + if x != nil { + return x.xxx_hidden_ReadyToUse + } + return false +} + +func (x *VolumeGroupSnapshot) SetGroupSnapshotId(v string) { + x.xxx_hidden_GroupSnapshotId = v +} + +func (x *VolumeGroupSnapshot) SetSnapshots(v []*Snapshot) { + x.xxx_hidden_Snapshots = &v +} + +func (x *VolumeGroupSnapshot) SetCreationTime(v *timestamppb.Timestamp) { + x.xxx_hidden_CreationTime = v +} + +func (x *VolumeGroupSnapshot) SetReadyToUse(v bool) { + x.xxx_hidden_ReadyToUse = v +} + +func (x *VolumeGroupSnapshot) HasCreationTime() bool { + if x == nil { + return false + } + return x.xxx_hidden_CreationTime != nil +} + +func (x *VolumeGroupSnapshot) ClearCreationTime() { + x.xxx_hidden_CreationTime = nil +} + +type VolumeGroupSnapshot_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The identifier for this group snapshot, generated by the plugin. + // This field MUST contain enough information to uniquely identify + // this specific snapshot vs all other group snapshots supported by + // this plugin. + // This field SHALL be used by the CO in subsequent calls to refer to + // this group snapshot. + // The SP is NOT responsible for global uniqueness of + // group_snapshot_id across multiple SPs. + // This field is REQUIRED. + GroupSnapshotId string + // A list of snapshots belonging to this group. + // This field is REQUIRED. + Snapshots []*Snapshot + // Timestamp of when the volume group snapshot was taken. + // This field is REQUIRED. + CreationTime *timestamppb.Timestamp + // Indicates if all individual snapshots in the group snapshot + // are ready to use as a `volume_content_source` in a + // `CreateVolumeRequest`. The default value is false. + // If any snapshot in the list of snapshots in this message have + // ready_to_use set to false, the SP MUST set this field to false. + // If all of the snapshots in the list of snapshots in this message + // have ready_to_use set to true, the SP SHOULD set this field to + // true. + // This field is REQUIRED. + ReadyToUse bool +} + +func (b0 VolumeGroupSnapshot_builder) Build() *VolumeGroupSnapshot { + m0 := &VolumeGroupSnapshot{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_GroupSnapshotId = b.GroupSnapshotId + x.xxx_hidden_Snapshots = &b.Snapshots + x.xxx_hidden_CreationTime = b.CreationTime + x.xxx_hidden_ReadyToUse = b.ReadyToUse + return m0 +} + +type DeleteVolumeGroupSnapshotRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_GroupSnapshotId string `protobuf:"bytes,1,opt,name=group_snapshot_id,json=groupSnapshotId,proto3" json:"group_snapshot_id,omitempty"` + xxx_hidden_SnapshotIds []string `protobuf:"bytes,2,rep,name=snapshot_ids,json=snapshotIds,proto3" json:"snapshot_ids,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteVolumeGroupSnapshotRequest) Reset() { + *x = DeleteVolumeGroupSnapshotRequest{} + mi := &file_csi_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteVolumeGroupSnapshotRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteVolumeGroupSnapshotRequest) ProtoMessage() {} + +func (x *DeleteVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[68] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *DeleteVolumeGroupSnapshotRequest) GetGroupSnapshotId() string { + if x != nil { + return x.xxx_hidden_GroupSnapshotId + } + return "" +} + +func (x *DeleteVolumeGroupSnapshotRequest) GetSnapshotIds() []string { + if x != nil { + return x.xxx_hidden_SnapshotIds + } + return nil +} + +func (x *DeleteVolumeGroupSnapshotRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *DeleteVolumeGroupSnapshotRequest) SetGroupSnapshotId(v string) { + x.xxx_hidden_GroupSnapshotId = v +} + +func (x *DeleteVolumeGroupSnapshotRequest) SetSnapshotIds(v []string) { + x.xxx_hidden_SnapshotIds = v +} + +func (x *DeleteVolumeGroupSnapshotRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +type DeleteVolumeGroupSnapshotRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the group snapshot to be deleted. + // This field is REQUIRED. + GroupSnapshotId string + // A list of snapshot IDs that are part of this group snapshot. + // If SP does not need to rely on this field to delete the snapshots + // in the group, it SHOULD check this field and report an error + // if it has the ability to detect a mismatch. + // Some SPs require this list to delete the snapshots in the group. + // If SP needs to use this field to delete the snapshots in the + // group, it MUST report an error if it has the ability to detect + // a mismatch. + // This field is REQUIRED. + SnapshotIds []string + // Secrets required by plugin to complete group snapshot deletion + // request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + // The secrets provided in this field SHOULD be the same for + // all group snapshot operations on the same group snapshot. + Secrets map[string]string +} + +func (b0 DeleteVolumeGroupSnapshotRequest_builder) Build() *DeleteVolumeGroupSnapshotRequest { + m0 := &DeleteVolumeGroupSnapshotRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_GroupSnapshotId = b.GroupSnapshotId + x.xxx_hidden_SnapshotIds = b.SnapshotIds + x.xxx_hidden_Secrets = b.Secrets + return m0 +} + +type DeleteVolumeGroupSnapshotResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteVolumeGroupSnapshotResponse) Reset() { + *x = DeleteVolumeGroupSnapshotResponse{} + mi := &file_csi_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteVolumeGroupSnapshotResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteVolumeGroupSnapshotResponse) ProtoMessage() {} + +func (x *DeleteVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[69] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type DeleteVolumeGroupSnapshotResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 DeleteVolumeGroupSnapshotResponse_builder) Build() *DeleteVolumeGroupSnapshotResponse { + m0 := &DeleteVolumeGroupSnapshotResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +type GetVolumeGroupSnapshotRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_GroupSnapshotId string `protobuf:"bytes,1,opt,name=group_snapshot_id,json=groupSnapshotId,proto3" json:"group_snapshot_id,omitempty"` + xxx_hidden_SnapshotIds []string `protobuf:"bytes,2,rep,name=snapshot_ids,json=snapshotIds,proto3" json:"snapshot_ids,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetVolumeGroupSnapshotRequest) Reset() { + *x = GetVolumeGroupSnapshotRequest{} + mi := &file_csi_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetVolumeGroupSnapshotRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetVolumeGroupSnapshotRequest) ProtoMessage() {} + +func (x *GetVolumeGroupSnapshotRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[70] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetVolumeGroupSnapshotRequest) GetGroupSnapshotId() string { + if x != nil { + return x.xxx_hidden_GroupSnapshotId + } + return "" +} + +func (x *GetVolumeGroupSnapshotRequest) GetSnapshotIds() []string { + if x != nil { + return x.xxx_hidden_SnapshotIds + } + return nil +} + +func (x *GetVolumeGroupSnapshotRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *GetVolumeGroupSnapshotRequest) SetGroupSnapshotId(v string) { + x.xxx_hidden_GroupSnapshotId = v +} + +func (x *GetVolumeGroupSnapshotRequest) SetSnapshotIds(v []string) { + x.xxx_hidden_SnapshotIds = v +} + +func (x *GetVolumeGroupSnapshotRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +type GetVolumeGroupSnapshotRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The ID of the group snapshot to fetch current group snapshot + // information for. + // This field is REQUIRED. + GroupSnapshotId string + // A list of snapshot IDs that are part of this group snapshot. + // If SP does not need to rely on this field to get the snapshots + // in the group, it SHOULD check this field and report an error + // if it has the ability to detect a mismatch. + // Some SPs require this list to get the snapshots in the group. + // If SP needs to use this field to get the snapshots in the + // group, it MUST report an error if it has the ability to detect + // a mismatch. + // This field is REQUIRED. + SnapshotIds []string + // Secrets required by plugin to complete + // GetVolumeGroupSnapshot request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + // The secrets provided in this field SHOULD be the same for + // all group snapshot operations on the same group snapshot. + Secrets map[string]string +} + +func (b0 GetVolumeGroupSnapshotRequest_builder) Build() *GetVolumeGroupSnapshotRequest { + m0 := &GetVolumeGroupSnapshotRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_GroupSnapshotId = b.GroupSnapshotId + x.xxx_hidden_SnapshotIds = b.SnapshotIds + x.xxx_hidden_Secrets = b.Secrets + return m0 +} + +type GetVolumeGroupSnapshotResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_GroupSnapshot *VolumeGroupSnapshot `protobuf:"bytes,1,opt,name=group_snapshot,json=groupSnapshot,proto3" json:"group_snapshot,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetVolumeGroupSnapshotResponse) Reset() { + *x = GetVolumeGroupSnapshotResponse{} + mi := &file_csi_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetVolumeGroupSnapshotResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetVolumeGroupSnapshotResponse) ProtoMessage() {} + +func (x *GetVolumeGroupSnapshotResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[71] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetVolumeGroupSnapshotResponse) GetGroupSnapshot() *VolumeGroupSnapshot { + if x != nil { + return x.xxx_hidden_GroupSnapshot + } + return nil +} + +func (x *GetVolumeGroupSnapshotResponse) SetGroupSnapshot(v *VolumeGroupSnapshot) { + x.xxx_hidden_GroupSnapshot = v +} + +func (x *GetVolumeGroupSnapshotResponse) HasGroupSnapshot() bool { + if x == nil { + return false + } + return x.xxx_hidden_GroupSnapshot != nil +} + +func (x *GetVolumeGroupSnapshotResponse) ClearGroupSnapshot() { + x.xxx_hidden_GroupSnapshot = nil +} + +type GetVolumeGroupSnapshotResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This field is REQUIRED + GroupSnapshot *VolumeGroupSnapshot +} + +func (b0 GetVolumeGroupSnapshotResponse_builder) Build() *GetVolumeGroupSnapshotResponse { + m0 := &GetVolumeGroupSnapshotResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_GroupSnapshot = b.GroupSnapshot + return m0 +} + +// BlockMetadata specifies a data range. +type BlockMetadata struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_ByteOffset int64 `protobuf:"varint,1,opt,name=byte_offset,json=byteOffset,proto3" json:"byte_offset,omitempty"` + xxx_hidden_SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BlockMetadata) Reset() { + *x = BlockMetadata{} + mi := &file_csi_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BlockMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockMetadata) ProtoMessage() {} + +func (x *BlockMetadata) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[72] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *BlockMetadata) GetByteOffset() int64 { + if x != nil { + return x.xxx_hidden_ByteOffset + } + return 0 +} + +func (x *BlockMetadata) GetSizeBytes() int64 { + if x != nil { + return x.xxx_hidden_SizeBytes + } + return 0 +} + +func (x *BlockMetadata) SetByteOffset(v int64) { + x.xxx_hidden_ByteOffset = v +} + +func (x *BlockMetadata) SetSizeBytes(v int64) { + x.xxx_hidden_SizeBytes = v +} + +type BlockMetadata_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This is the zero based byte position in the volume or snapshot, + // measured from the start of the object. + // This field is REQUIRED. + ByteOffset int64 + // This is the size of the data range. + // size_bytes MUST be greater than zero. + // This field is REQUIRED. + SizeBytes int64 +} + +func (b0 BlockMetadata_builder) Build() *BlockMetadata { + m0 := &BlockMetadata{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_ByteOffset = b.ByteOffset + x.xxx_hidden_SizeBytes = b.SizeBytes + return m0 +} + +// The GetMetadataAllocatedRequest message is used to solicit metadata +// on the allocated blocks of a snapshot: i.e. this identifies the +// data ranges that have valid data as they were the target of some +// previous write operation on the volume. +type GetMetadataAllocatedRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` + xxx_hidden_StartingOffset int64 `protobuf:"varint,2,opt,name=starting_offset,json=startingOffset,proto3" json:"starting_offset,omitempty"` + xxx_hidden_MaxResults int32 `protobuf:"varint,3,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,4,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetMetadataAllocatedRequest) Reset() { + *x = GetMetadataAllocatedRequest{} + mi := &file_csi_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetMetadataAllocatedRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMetadataAllocatedRequest) ProtoMessage() {} + +func (x *GetMetadataAllocatedRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[73] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetMetadataAllocatedRequest) GetSnapshotId() string { + if x != nil { + return x.xxx_hidden_SnapshotId + } + return "" +} + +func (x *GetMetadataAllocatedRequest) GetStartingOffset() int64 { + if x != nil { + return x.xxx_hidden_StartingOffset + } + return 0 +} + +func (x *GetMetadataAllocatedRequest) GetMaxResults() int32 { + if x != nil { + return x.xxx_hidden_MaxResults + } + return 0 +} + +func (x *GetMetadataAllocatedRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *GetMetadataAllocatedRequest) SetSnapshotId(v string) { + x.xxx_hidden_SnapshotId = v +} + +func (x *GetMetadataAllocatedRequest) SetStartingOffset(v int64) { + x.xxx_hidden_StartingOffset = v +} + +func (x *GetMetadataAllocatedRequest) SetMaxResults(v int32) { + x.xxx_hidden_MaxResults = v +} + +func (x *GetMetadataAllocatedRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +type GetMetadataAllocatedRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This is the identifier of the snapshot. + // This field is REQUIRED. + SnapshotId string + // This indicates the zero based starting byte position in the volume + // snapshot from which the result should be computed. + // It is intended to be used to continue a previously interrupted + // call. + // The CO SHOULD specify this value to be the offset of the byte + // position immediately after the last byte of the last data range + // received, if continuing an interrupted operation, or zero if not. + // The SP MUST ensure that the returned response stream does not + // contain BlockMetadata tuples that end before the requested + // starting_offset: i.e. if S is the requested starting_offset, and + // B0 is block_metadata[0] of the first message in the response + // stream, then (S < B0.byte_offset + B0.size_bytes) must be true. + // This field is REQUIRED. + StartingOffset int64 + // This is an optional parameter, and if non-zero it specifies the + // maximum number of tuples to be returned in each + // GetMetadataAllocatedResponse message returned by the RPC stream. + // The plugin will determine an appropriate value if 0, and is + // always free to send less than the requested value. + // This field is OPTIONAL. + MaxResults int32 + // Secrets required by plugin to complete the request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 GetMetadataAllocatedRequest_builder) Build() *GetMetadataAllocatedRequest { + m0 := &GetMetadataAllocatedRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_SnapshotId = b.SnapshotId + x.xxx_hidden_StartingOffset = b.StartingOffset + x.xxx_hidden_MaxResults = b.MaxResults + x.xxx_hidden_Secrets = b.Secrets + return m0 +} + +// GetMetadataAllocatedResponse messages are returned in a gRPC stream. +// Cumulatively, they provide information on the allocated data +// ranges in the snapshot. +type GetMetadataAllocatedResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_BlockMetadataType BlockMetadataType `protobuf:"varint,1,opt,name=block_metadata_type,json=blockMetadataType,proto3,enum=csi.v1.BlockMetadataType" json:"block_metadata_type,omitempty"` + xxx_hidden_VolumeCapacityBytes int64 `protobuf:"varint,2,opt,name=volume_capacity_bytes,json=volumeCapacityBytes,proto3" json:"volume_capacity_bytes,omitempty"` + xxx_hidden_BlockMetadata *[]*BlockMetadata `protobuf:"bytes,3,rep,name=block_metadata,json=blockMetadata,proto3" json:"block_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetMetadataAllocatedResponse) Reset() { + *x = GetMetadataAllocatedResponse{} + mi := &file_csi_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetMetadataAllocatedResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMetadataAllocatedResponse) ProtoMessage() {} + +func (x *GetMetadataAllocatedResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[74] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetMetadataAllocatedResponse) GetBlockMetadataType() BlockMetadataType { + if x != nil { + return x.xxx_hidden_BlockMetadataType + } + return BlockMetadataType_UNKNOWN +} + +func (x *GetMetadataAllocatedResponse) GetVolumeCapacityBytes() int64 { + if x != nil { + return x.xxx_hidden_VolumeCapacityBytes + } + return 0 +} + +func (x *GetMetadataAllocatedResponse) GetBlockMetadata() []*BlockMetadata { + if x != nil { + if x.xxx_hidden_BlockMetadata != nil { + return *x.xxx_hidden_BlockMetadata + } + } + return nil +} + +func (x *GetMetadataAllocatedResponse) SetBlockMetadataType(v BlockMetadataType) { + x.xxx_hidden_BlockMetadataType = v +} + +func (x *GetMetadataAllocatedResponse) SetVolumeCapacityBytes(v int64) { + x.xxx_hidden_VolumeCapacityBytes = v +} + +func (x *GetMetadataAllocatedResponse) SetBlockMetadata(v []*BlockMetadata) { + x.xxx_hidden_BlockMetadata = &v +} + +type GetMetadataAllocatedResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This specifies the style used in the BlockMetadata sequence. + // This value must be the same in all such messages returned by + // the stream. + // If block_metadata_type is FIXED_LENGTH, then the size_bytes field + // of each message in the block_metadata list MUST be constant. + // This field is REQUIRED. + BlockMetadataType BlockMetadataType + // This returns the capacity of the underlying volume in bytes. + // This value must be the same in all such messages returned by + // the stream. + // This field is REQUIRED. + VolumeCapacityBytes int64 + // This is a list of data range tuples. + // If the value of max_results in the GetMetadataAllocatedRequest + // message is greater than zero, then the number of entries in this + // list MUST be less than or equal to that value. + // The SP MUST respect the value of starting_offset in the request. + // The byte_offset fields of adjacent BlockMetadata messages + // MUST be strictly increasing and messages MUST NOT overlap: + // i.e. for any two BlockMetadata messages, A and B, if A is returned + // before B, then (A.byte_offset + A.size_bytes <= B.byte_offset) + // MUST be true. + // This MUST also be true if A and B are from block_metadata lists in + // different GetMetadataAllocatedResponse messages in the gRPC stream. + // This field is OPTIONAL. + BlockMetadata []*BlockMetadata +} + +func (b0 GetMetadataAllocatedResponse_builder) Build() *GetMetadataAllocatedResponse { + m0 := &GetMetadataAllocatedResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_BlockMetadataType = b.BlockMetadataType + x.xxx_hidden_VolumeCapacityBytes = b.VolumeCapacityBytes + x.xxx_hidden_BlockMetadata = &b.BlockMetadata + return m0 +} + +// The GetMetadataDeltaRequest message is used to solicit metadata on +// the data ranges that have changed between two snapshots. +type GetMetadataDeltaRequest struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_BaseSnapshotId string `protobuf:"bytes,1,opt,name=base_snapshot_id,json=baseSnapshotId,proto3" json:"base_snapshot_id,omitempty"` + xxx_hidden_TargetSnapshotId string `protobuf:"bytes,2,opt,name=target_snapshot_id,json=targetSnapshotId,proto3" json:"target_snapshot_id,omitempty"` + xxx_hidden_StartingOffset int64 `protobuf:"varint,3,opt,name=starting_offset,json=startingOffset,proto3" json:"starting_offset,omitempty"` + xxx_hidden_MaxResults int32 `protobuf:"varint,4,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"` + xxx_hidden_Secrets map[string]string `protobuf:"bytes,5,rep,name=secrets,proto3" json:"secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetMetadataDeltaRequest) Reset() { + *x = GetMetadataDeltaRequest{} + mi := &file_csi_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetMetadataDeltaRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMetadataDeltaRequest) ProtoMessage() {} + +func (x *GetMetadataDeltaRequest) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[75] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetMetadataDeltaRequest) GetBaseSnapshotId() string { + if x != nil { + return x.xxx_hidden_BaseSnapshotId + } + return "" +} + +func (x *GetMetadataDeltaRequest) GetTargetSnapshotId() string { + if x != nil { + return x.xxx_hidden_TargetSnapshotId + } + return "" +} + +func (x *GetMetadataDeltaRequest) GetStartingOffset() int64 { + if x != nil { + return x.xxx_hidden_StartingOffset + } + return 0 +} + +func (x *GetMetadataDeltaRequest) GetMaxResults() int32 { + if x != nil { + return x.xxx_hidden_MaxResults + } + return 0 +} + +func (x *GetMetadataDeltaRequest) GetSecrets() map[string]string { + if x != nil { + return x.xxx_hidden_Secrets + } + return nil +} + +func (x *GetMetadataDeltaRequest) SetBaseSnapshotId(v string) { + x.xxx_hidden_BaseSnapshotId = v +} + +func (x *GetMetadataDeltaRequest) SetTargetSnapshotId(v string) { + x.xxx_hidden_TargetSnapshotId = v +} + +func (x *GetMetadataDeltaRequest) SetStartingOffset(v int64) { + x.xxx_hidden_StartingOffset = v +} + +func (x *GetMetadataDeltaRequest) SetMaxResults(v int32) { + x.xxx_hidden_MaxResults = v +} + +func (x *GetMetadataDeltaRequest) SetSecrets(v map[string]string) { + x.xxx_hidden_Secrets = v +} + +type GetMetadataDeltaRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This is the identifier of the snapshot against which changes + // are to be computed. + // This field is REQUIRED. + BaseSnapshotId string + // This is the identifier of a second snapshot in the same volume, + // created after the base snapshot. + // This field is REQUIRED. + TargetSnapshotId string + // This indicates the zero based starting byte position in the volume + // snapshot from which the result should be computed. + // It is intended to be used to continue a previously interrupted + // call. + // The CO SHOULD specify this value to be the offset of the byte + // position immediately after the last byte of the last data range + // received, if continuing an interrupted operation, or zero if not. + // The SP MUST ensure that the returned response stream does not + // contain BlockMetadata tuples that end before the requested + // starting_offset: i.e. if S is the requested starting_offset, and + // B0 is block_metadata[0] of the first message in the response + // stream, then (S < B0.byte_offset + B0.size_bytes) must be true. + // This field is REQUIRED. + StartingOffset int64 + // This is an optional parameter, and if non-zero it specifies the + // maximum number of tuples to be returned in each + // GetMetadataDeltaResponse message returned by the RPC stream. + // The plugin will determine an appropriate value if 0, and is + // always free to send less than the requested value. + // This field is OPTIONAL. + MaxResults int32 + // Secrets required by plugin to complete the request. + // This field is OPTIONAL. Refer to the `Secrets Requirements` + // section on how to use this field. + Secrets map[string]string +} + +func (b0 GetMetadataDeltaRequest_builder) Build() *GetMetadataDeltaRequest { + m0 := &GetMetadataDeltaRequest{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_BaseSnapshotId = b.BaseSnapshotId + x.xxx_hidden_TargetSnapshotId = b.TargetSnapshotId + x.xxx_hidden_StartingOffset = b.StartingOffset + x.xxx_hidden_MaxResults = b.MaxResults + x.xxx_hidden_Secrets = b.Secrets + return m0 +} + +// GetMetadataDeltaResponse messages are returned in a gRPC stream. +// Cumulatively, they provide information on the data ranges that +// have changed between the base and target snapshots specified +// in the GetMetadataDeltaRequest message. +type GetMetadataDeltaResponse struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_BlockMetadataType BlockMetadataType `protobuf:"varint,1,opt,name=block_metadata_type,json=blockMetadataType,proto3,enum=csi.v1.BlockMetadataType" json:"block_metadata_type,omitempty"` + xxx_hidden_VolumeCapacityBytes int64 `protobuf:"varint,2,opt,name=volume_capacity_bytes,json=volumeCapacityBytes,proto3" json:"volume_capacity_bytes,omitempty"` + xxx_hidden_BlockMetadata *[]*BlockMetadata `protobuf:"bytes,3,rep,name=block_metadata,json=blockMetadata,proto3" json:"block_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetMetadataDeltaResponse) Reset() { + *x = GetMetadataDeltaResponse{} + mi := &file_csi_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetMetadataDeltaResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMetadataDeltaResponse) ProtoMessage() {} + +func (x *GetMetadataDeltaResponse) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[76] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GetMetadataDeltaResponse) GetBlockMetadataType() BlockMetadataType { + if x != nil { + return x.xxx_hidden_BlockMetadataType + } + return BlockMetadataType_UNKNOWN +} + +func (x *GetMetadataDeltaResponse) GetVolumeCapacityBytes() int64 { + if x != nil { + return x.xxx_hidden_VolumeCapacityBytes + } + return 0 +} + +func (x *GetMetadataDeltaResponse) GetBlockMetadata() []*BlockMetadata { + if x != nil { + if x.xxx_hidden_BlockMetadata != nil { + return *x.xxx_hidden_BlockMetadata + } + } + return nil +} + +func (x *GetMetadataDeltaResponse) SetBlockMetadataType(v BlockMetadataType) { + x.xxx_hidden_BlockMetadataType = v +} + +func (x *GetMetadataDeltaResponse) SetVolumeCapacityBytes(v int64) { + x.xxx_hidden_VolumeCapacityBytes = v +} + +func (x *GetMetadataDeltaResponse) SetBlockMetadata(v []*BlockMetadata) { + x.xxx_hidden_BlockMetadata = &v +} + +type GetMetadataDeltaResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This specifies the style used in the BlockMetadata sequence. + // This value must be the same in all such messages returned by + // the stream. + // If block_metadata_type is FIXED_LENGTH, then the size_bytes field + // of each message in the block_metadata list MUST be constant. + // This field is REQUIRED. + BlockMetadataType BlockMetadataType + // This returns the capacity of the underlying volume in bytes. + // This value must be the same in all such messages returned by + // the stream. + // This field is REQUIRED. + VolumeCapacityBytes int64 + // This is a list of data range tuples. + // If the value of max_results in the GetMetadataDeltaRequest message + // is greater than zero, then the number of entries in this list MUST + // be less than or equal to that value. + // The SP MUST respect the value of starting_offset in the request. + // The byte_offset fields of adjacent BlockMetadata messages + // MUST be strictly increasing and messages MUST NOT overlap: + // i.e. for any two BlockMetadata messages, A and B, if A is returned + // before B, then (A.byte_offset + A.size_bytes <= B.byte_offset) + // MUST be true. + // This MUST also be true if A and B are from block_metadata lists in + // different GetMetadataDeltaResponse messages in the gRPC stream. + // This field is OPTIONAL. + BlockMetadata []*BlockMetadata +} + +func (b0 GetMetadataDeltaResponse_builder) Build() *GetMetadataDeltaResponse { + m0 := &GetMetadataDeltaResponse{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_BlockMetadataType = b.BlockMetadataType + x.xxx_hidden_VolumeCapacityBytes = b.VolumeCapacityBytes + x.xxx_hidden_BlockMetadata = &b.BlockMetadata + return m0 +} + +type PluginCapability_Service struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Type PluginCapability_Service_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.PluginCapability_Service_Type" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PluginCapability_Service) Reset() { + *x = PluginCapability_Service{} + mi := &file_csi_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PluginCapability_Service) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PluginCapability_Service) ProtoMessage() {} + +func (x *PluginCapability_Service) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[78] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *PluginCapability_Service) GetType() PluginCapability_Service_Type { + if x != nil { + return x.xxx_hidden_Type + } + return PluginCapability_Service_UNKNOWN +} + +func (x *PluginCapability_Service) SetType(v PluginCapability_Service_Type) { + x.xxx_hidden_Type = v +} + +type PluginCapability_Service_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Type PluginCapability_Service_Type +} + +func (b0 PluginCapability_Service_builder) Build() *PluginCapability_Service { + m0 := &PluginCapability_Service{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Type = b.Type + return m0 +} + +type PluginCapability_VolumeExpansion struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Type PluginCapability_VolumeExpansion_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.PluginCapability_VolumeExpansion_Type" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PluginCapability_VolumeExpansion) Reset() { + *x = PluginCapability_VolumeExpansion{} + mi := &file_csi_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PluginCapability_VolumeExpansion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PluginCapability_VolumeExpansion) ProtoMessage() {} + +func (x *PluginCapability_VolumeExpansion) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[79] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *PluginCapability_VolumeExpansion) GetType() PluginCapability_VolumeExpansion_Type { + if x != nil { + return x.xxx_hidden_Type + } + return PluginCapability_VolumeExpansion_UNKNOWN +} + +func (x *PluginCapability_VolumeExpansion) SetType(v PluginCapability_VolumeExpansion_Type) { + x.xxx_hidden_Type = v +} + +type PluginCapability_VolumeExpansion_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Type PluginCapability_VolumeExpansion_Type +} + +func (b0 PluginCapability_VolumeExpansion_builder) Build() *PluginCapability_VolumeExpansion { + m0 := &PluginCapability_VolumeExpansion{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Type = b.Type + return m0 +} + +type VolumeContentSource_SnapshotSource struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VolumeContentSource_SnapshotSource) Reset() { + *x = VolumeContentSource_SnapshotSource{} + mi := &file_csi_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VolumeContentSource_SnapshotSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VolumeContentSource_SnapshotSource) ProtoMessage() {} + +func (x *VolumeContentSource_SnapshotSource) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[83] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *VolumeContentSource_SnapshotSource) GetSnapshotId() string { + if x != nil { + return x.xxx_hidden_SnapshotId + } + return "" +} + +func (x *VolumeContentSource_SnapshotSource) SetSnapshotId(v string) { + x.xxx_hidden_SnapshotId = v +} + +type VolumeContentSource_SnapshotSource_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Contains identity information for the existing source snapshot. + // This field is REQUIRED. Plugin is REQUIRED to support creating + // volume from snapshot if it supports the capability + // CREATE_DELETE_SNAPSHOT. + SnapshotId string +} + +func (b0 VolumeContentSource_SnapshotSource_builder) Build() *VolumeContentSource_SnapshotSource { + m0 := &VolumeContentSource_SnapshotSource{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_SnapshotId = b.SnapshotId + return m0 +} + +type VolumeContentSource_VolumeSource struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId,proto3" json:"volume_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VolumeContentSource_VolumeSource) Reset() { + *x = VolumeContentSource_VolumeSource{} + mi := &file_csi_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VolumeContentSource_VolumeSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VolumeContentSource_VolumeSource) ProtoMessage() {} + +func (x *VolumeContentSource_VolumeSource) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[84] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *VolumeContentSource_VolumeSource) GetVolumeId() string { + if x != nil { + return x.xxx_hidden_VolumeId + } + return "" +} + +func (x *VolumeContentSource_VolumeSource) SetVolumeId(v string) { + x.xxx_hidden_VolumeId = v +} + +type VolumeContentSource_VolumeSource_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Contains identity information for the existing source volume. + // This field is REQUIRED. Plugins reporting CLONE_VOLUME + // capability MUST support creating a volume from another volume. + VolumeId string +} + +func (b0 VolumeContentSource_VolumeSource_builder) Build() *VolumeContentSource_VolumeSource { + m0 := &VolumeContentSource_VolumeSource{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeId = b.VolumeId + return m0 +} + +// Indicate that the volume will be accessed via the block device API. +type VolumeCapability_BlockVolume struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VolumeCapability_BlockVolume) Reset() { + *x = VolumeCapability_BlockVolume{} + mi := &file_csi_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VolumeCapability_BlockVolume) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VolumeCapability_BlockVolume) ProtoMessage() {} + +func (x *VolumeCapability_BlockVolume) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[85] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +type VolumeCapability_BlockVolume_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 VolumeCapability_BlockVolume_builder) Build() *VolumeCapability_BlockVolume { + m0 := &VolumeCapability_BlockVolume{} + b, x := &b0, m0 + _, _ = b, x + return m0 +} + +// Indicate that the volume will be accessed via the filesystem API. +type VolumeCapability_MountVolume struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_FsType string `protobuf:"bytes,1,opt,name=fs_type,json=fsType,proto3" json:"fs_type,omitempty"` + xxx_hidden_MountFlags []string `protobuf:"bytes,2,rep,name=mount_flags,json=mountFlags,proto3" json:"mount_flags,omitempty"` + xxx_hidden_VolumeMountGroup string `protobuf:"bytes,3,opt,name=volume_mount_group,json=volumeMountGroup,proto3" json:"volume_mount_group,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VolumeCapability_MountVolume) Reset() { + *x = VolumeCapability_MountVolume{} + mi := &file_csi_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VolumeCapability_MountVolume) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VolumeCapability_MountVolume) ProtoMessage() {} + +func (x *VolumeCapability_MountVolume) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[86] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *VolumeCapability_MountVolume) GetFsType() string { + if x != nil { + return x.xxx_hidden_FsType + } + return "" +} + +func (x *VolumeCapability_MountVolume) GetMountFlags() []string { + if x != nil { + return x.xxx_hidden_MountFlags + } + return nil +} + +func (x *VolumeCapability_MountVolume) GetVolumeMountGroup() string { + if x != nil { + return x.xxx_hidden_VolumeMountGroup + } + return "" +} + +func (x *VolumeCapability_MountVolume) SetFsType(v string) { + x.xxx_hidden_FsType = v +} + +func (x *VolumeCapability_MountVolume) SetMountFlags(v []string) { + x.xxx_hidden_MountFlags = v +} + +func (x *VolumeCapability_MountVolume) SetVolumeMountGroup(v string) { + x.xxx_hidden_VolumeMountGroup = v +} + +type VolumeCapability_MountVolume_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // The filesystem type. This field is OPTIONAL. + // An empty string is equal to an unspecified field value. + FsType string + // The mount options that can be used for the volume. This field is + // OPTIONAL. `mount_flags` MAY contain sensitive information. + // Therefore, the CO and the Plugin MUST NOT leak this information + // to untrusted entities. The total size of this repeated field + // SHALL NOT exceed 4 KiB. + MountFlags []string + // If SP has VOLUME_MOUNT_GROUP node capability and CO provides + // this field then SP MUST ensure that the volume_mount_group + // parameter is passed as the group identifier to the underlying + // operating system mount system call, with the understanding + // that the set of available mount call parameters and/or + // mount implementations may vary across operating systems. + // Additionally, new file and/or directory entries written to + // the underlying filesystem SHOULD be permission-labeled in such a + // manner, unless otherwise modified by a workload, that they are + // both readable and writable by said mount group identifier. + // This is an OPTIONAL field. + VolumeMountGroup string +} + +func (b0 VolumeCapability_MountVolume_builder) Build() *VolumeCapability_MountVolume { + m0 := &VolumeCapability_MountVolume{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_FsType = b.FsType + x.xxx_hidden_MountFlags = b.MountFlags + x.xxx_hidden_VolumeMountGroup = b.VolumeMountGroup + return m0 +} + +// Specify how a volume can be accessed. +type VolumeCapability_AccessMode struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Mode VolumeCapability_AccessMode_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=csi.v1.VolumeCapability_AccessMode_Mode" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VolumeCapability_AccessMode) Reset() { + *x = VolumeCapability_AccessMode{} + mi := &file_csi_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VolumeCapability_AccessMode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VolumeCapability_AccessMode) ProtoMessage() {} + +func (x *VolumeCapability_AccessMode) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[87] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *VolumeCapability_AccessMode) GetMode() VolumeCapability_AccessMode_Mode { + if x != nil { + return x.xxx_hidden_Mode + } + return VolumeCapability_AccessMode_UNKNOWN +} + +func (x *VolumeCapability_AccessMode) SetMode(v VolumeCapability_AccessMode_Mode) { + x.xxx_hidden_Mode = v +} + +type VolumeCapability_AccessMode_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This field is REQUIRED. + Mode VolumeCapability_AccessMode_Mode +} + +func (b0 VolumeCapability_AccessMode_builder) Build() *VolumeCapability_AccessMode { + m0 := &VolumeCapability_AccessMode{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Mode = b.Mode + return m0 +} + +type ValidateVolumeCapabilitiesResponse_Confirmed struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_VolumeContext map[string]string `protobuf:"bytes,1,rep,name=volume_context,json=volumeContext,proto3" json:"volume_context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_VolumeCapabilities *[]*VolumeCapability `protobuf:"bytes,2,rep,name=volume_capabilities,json=volumeCapabilities,proto3" json:"volume_capabilities,omitempty"` + xxx_hidden_Parameters map[string]string `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + xxx_hidden_MutableParameters map[string]string `protobuf:"bytes,4,rep,name=mutable_parameters,json=mutableParameters,proto3" json:"mutable_parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) Reset() { + *x = ValidateVolumeCapabilitiesResponse_Confirmed{} + mi := &file_csi_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateVolumeCapabilitiesResponse_Confirmed) ProtoMessage() {} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[99] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) GetVolumeContext() map[string]string { + if x != nil { + return x.xxx_hidden_VolumeContext + } + return nil +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) GetVolumeCapabilities() []*VolumeCapability { + if x != nil { + if x.xxx_hidden_VolumeCapabilities != nil { + return *x.xxx_hidden_VolumeCapabilities + } + } + return nil +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) GetParameters() map[string]string { + if x != nil { + return x.xxx_hidden_Parameters + } + return nil +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) GetMutableParameters() map[string]string { + if x != nil { + return x.xxx_hidden_MutableParameters + } + return nil +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) SetVolumeContext(v map[string]string) { + x.xxx_hidden_VolumeContext = v +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) SetVolumeCapabilities(v []*VolumeCapability) { + x.xxx_hidden_VolumeCapabilities = &v +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) SetParameters(v map[string]string) { + x.xxx_hidden_Parameters = v +} + +func (x *ValidateVolumeCapabilitiesResponse_Confirmed) SetMutableParameters(v map[string]string) { + x.xxx_hidden_MutableParameters = v +} + +type ValidateVolumeCapabilitiesResponse_Confirmed_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Volume context validated by the plugin. + // This field is OPTIONAL. + VolumeContext map[string]string + // Volume capabilities supported by the plugin. + // This field is REQUIRED. + VolumeCapabilities []*VolumeCapability + // The volume creation parameters validated by the plugin. + // This field is OPTIONAL. + Parameters map[string]string + // The volume creation mutable_parameters validated by the plugin. + // This field is OPTIONAL. + MutableParameters map[string]string +} + +func (b0 ValidateVolumeCapabilitiesResponse_Confirmed_builder) Build() *ValidateVolumeCapabilitiesResponse_Confirmed { + m0 := &ValidateVolumeCapabilitiesResponse_Confirmed{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_VolumeContext = b.VolumeContext + x.xxx_hidden_VolumeCapabilities = &b.VolumeCapabilities + x.xxx_hidden_Parameters = b.Parameters + x.xxx_hidden_MutableParameters = b.MutableParameters + return m0 +} + +type ListVolumesResponse_VolumeStatus struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_PublishedNodeIds []string `protobuf:"bytes,1,rep,name=published_node_ids,json=publishedNodeIds,proto3" json:"published_node_ids,omitempty"` + xxx_hidden_VolumeCondition *VolumeCondition `protobuf:"bytes,2,opt,name=volume_condition,json=volumeCondition,proto3" json:"volume_condition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListVolumesResponse_VolumeStatus) Reset() { + *x = ListVolumesResponse_VolumeStatus{} + mi := &file_csi_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListVolumesResponse_VolumeStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListVolumesResponse_VolumeStatus) ProtoMessage() {} + +func (x *ListVolumesResponse_VolumeStatus) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[103] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ListVolumesResponse_VolumeStatus) GetPublishedNodeIds() []string { + if x != nil { + return x.xxx_hidden_PublishedNodeIds + } + return nil +} + +func (x *ListVolumesResponse_VolumeStatus) GetVolumeCondition() *VolumeCondition { + if x != nil { + return x.xxx_hidden_VolumeCondition + } + return nil +} + +func (x *ListVolumesResponse_VolumeStatus) SetPublishedNodeIds(v []string) { + x.xxx_hidden_PublishedNodeIds = v +} + +func (x *ListVolumesResponse_VolumeStatus) SetVolumeCondition(v *VolumeCondition) { + x.xxx_hidden_VolumeCondition = v +} + +func (x *ListVolumesResponse_VolumeStatus) HasVolumeCondition() bool { + if x == nil { + return false + } + return x.xxx_hidden_VolumeCondition != nil +} + +func (x *ListVolumesResponse_VolumeStatus) ClearVolumeCondition() { + x.xxx_hidden_VolumeCondition = nil +} + +type ListVolumesResponse_VolumeStatus_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // A list of all `node_id` of nodes that the volume in this entry + // is controller published on. + // This field is OPTIONAL. If it is not specified and the SP has + // the LIST_VOLUMES_PUBLISHED_NODES controller capability, the CO + // MAY assume the volume is not controller published to any nodes. + // If the field is not specified and the SP does not have the + // LIST_VOLUMES_PUBLISHED_NODES controller capability, the CO MUST + // not interpret this field. + // published_node_ids MAY include nodes not published to or + // reported by the SP. The CO MUST be resilient to that. + PublishedNodeIds []string + // Information about the current condition of the volume. + // This field is OPTIONAL. + // This field MUST be specified if the + // VOLUME_CONDITION controller capability is supported. + VolumeCondition *VolumeCondition +} + +func (b0 ListVolumesResponse_VolumeStatus_builder) Build() *ListVolumesResponse_VolumeStatus { + m0 := &ListVolumesResponse_VolumeStatus{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_PublishedNodeIds = b.PublishedNodeIds + x.xxx_hidden_VolumeCondition = b.VolumeCondition + return m0 +} + +type ListVolumesResponse_Entry struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Volume *Volume `protobuf:"bytes,1,opt,name=volume,proto3" json:"volume,omitempty"` + xxx_hidden_Status *ListVolumesResponse_VolumeStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListVolumesResponse_Entry) Reset() { + *x = ListVolumesResponse_Entry{} + mi := &file_csi_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListVolumesResponse_Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListVolumesResponse_Entry) ProtoMessage() {} + +func (x *ListVolumesResponse_Entry) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[104] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ListVolumesResponse_Entry) GetVolume() *Volume { + if x != nil { + return x.xxx_hidden_Volume + } + return nil +} + +func (x *ListVolumesResponse_Entry) GetStatus() *ListVolumesResponse_VolumeStatus { + if x != nil { + return x.xxx_hidden_Status + } + return nil +} + +func (x *ListVolumesResponse_Entry) SetVolume(v *Volume) { + x.xxx_hidden_Volume = v +} + +func (x *ListVolumesResponse_Entry) SetStatus(v *ListVolumesResponse_VolumeStatus) { + x.xxx_hidden_Status = v +} + +func (x *ListVolumesResponse_Entry) HasVolume() bool { + if x == nil { + return false + } + return x.xxx_hidden_Volume != nil +} + +func (x *ListVolumesResponse_Entry) HasStatus() bool { + if x == nil { + return false + } + return x.xxx_hidden_Status != nil +} + +func (x *ListVolumesResponse_Entry) ClearVolume() { + x.xxx_hidden_Volume = nil +} + +func (x *ListVolumesResponse_Entry) ClearStatus() { + x.xxx_hidden_Status = nil +} + +type ListVolumesResponse_Entry_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // This field is REQUIRED + Volume *Volume + // This field is OPTIONAL. This field MUST be specified if the + // LIST_VOLUMES_PUBLISHED_NODES controller capability is + // supported. + Status *ListVolumesResponse_VolumeStatus +} + +func (b0 ListVolumesResponse_Entry_builder) Build() *ListVolumesResponse_Entry { + m0 := &ListVolumesResponse_Entry{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Volume = b.Volume + x.xxx_hidden_Status = b.Status + return m0 +} + +type ControllerGetVolumeResponse_VolumeStatus struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_PublishedNodeIds []string `protobuf:"bytes,1,rep,name=published_node_ids,json=publishedNodeIds,proto3" json:"published_node_ids,omitempty"` + xxx_hidden_VolumeCondition *VolumeCondition `protobuf:"bytes,2,opt,name=volume_condition,json=volumeCondition,proto3" json:"volume_condition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerGetVolumeResponse_VolumeStatus) Reset() { + *x = ControllerGetVolumeResponse_VolumeStatus{} + mi := &file_csi_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerGetVolumeResponse_VolumeStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerGetVolumeResponse_VolumeStatus) ProtoMessage() {} + +func (x *ControllerGetVolumeResponse_VolumeStatus) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[105] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerGetVolumeResponse_VolumeStatus) GetPublishedNodeIds() []string { + if x != nil { + return x.xxx_hidden_PublishedNodeIds + } + return nil +} + +func (x *ControllerGetVolumeResponse_VolumeStatus) GetVolumeCondition() *VolumeCondition { + if x != nil { + return x.xxx_hidden_VolumeCondition + } + return nil +} + +func (x *ControllerGetVolumeResponse_VolumeStatus) SetPublishedNodeIds(v []string) { + x.xxx_hidden_PublishedNodeIds = v +} + +func (x *ControllerGetVolumeResponse_VolumeStatus) SetVolumeCondition(v *VolumeCondition) { + x.xxx_hidden_VolumeCondition = v +} + +func (x *ControllerGetVolumeResponse_VolumeStatus) HasVolumeCondition() bool { + if x == nil { + return false + } + return x.xxx_hidden_VolumeCondition != nil +} + +func (x *ControllerGetVolumeResponse_VolumeStatus) ClearVolumeCondition() { + x.xxx_hidden_VolumeCondition = nil +} + +type ControllerGetVolumeResponse_VolumeStatus_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // A list of all the `node_id` of nodes that this volume is + // controller published on. + // This field is OPTIONAL. + // This field MUST be specified if the LIST_VOLUMES_PUBLISHED_NODES + // controller capability is supported. + // published_node_ids MAY include nodes not published to or + // reported by the SP. The CO MUST be resilient to that. + PublishedNodeIds []string + // Information about the current condition of the volume. + // This field is OPTIONAL. + // This field MUST be specified if the + // VOLUME_CONDITION controller capability is supported. + VolumeCondition *VolumeCondition +} + +func (b0 ControllerGetVolumeResponse_VolumeStatus_builder) Build() *ControllerGetVolumeResponse_VolumeStatus { + m0 := &ControllerGetVolumeResponse_VolumeStatus{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_PublishedNodeIds = b.PublishedNodeIds + x.xxx_hidden_VolumeCondition = b.VolumeCondition + return m0 +} + +type ControllerServiceCapability_RPC struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Type ControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.ControllerServiceCapability_RPC_Type" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ControllerServiceCapability_RPC) Reset() { + *x = ControllerServiceCapability_RPC{} + mi := &file_csi_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControllerServiceCapability_RPC) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControllerServiceCapability_RPC) ProtoMessage() {} + +func (x *ControllerServiceCapability_RPC) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[109] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ControllerServiceCapability_RPC) GetType() ControllerServiceCapability_RPC_Type { + if x != nil { + return x.xxx_hidden_Type + } + return ControllerServiceCapability_RPC_UNKNOWN +} + +func (x *ControllerServiceCapability_RPC) SetType(v ControllerServiceCapability_RPC_Type) { + x.xxx_hidden_Type = v +} + +type ControllerServiceCapability_RPC_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Type ControllerServiceCapability_RPC_Type +} + +func (b0 ControllerServiceCapability_RPC_builder) Build() *ControllerServiceCapability_RPC { + m0 := &ControllerServiceCapability_RPC{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Type = b.Type + return m0 +} + +type ListSnapshotsResponse_Entry struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListSnapshotsResponse_Entry) Reset() { + *x = ListSnapshotsResponse_Entry{} + mi := &file_csi_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListSnapshotsResponse_Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListSnapshotsResponse_Entry) ProtoMessage() {} + +func (x *ListSnapshotsResponse_Entry) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[114] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *ListSnapshotsResponse_Entry) GetSnapshot() *Snapshot { + if x != nil { + return x.xxx_hidden_Snapshot + } + return nil +} + +func (x *ListSnapshotsResponse_Entry) SetSnapshot(v *Snapshot) { + x.xxx_hidden_Snapshot = v +} + +func (x *ListSnapshotsResponse_Entry) HasSnapshot() bool { + if x == nil { + return false + } + return x.xxx_hidden_Snapshot != nil +} + +func (x *ListSnapshotsResponse_Entry) ClearSnapshot() { + x.xxx_hidden_Snapshot = nil +} + +type ListSnapshotsResponse_Entry_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Snapshot *Snapshot +} + +func (b0 ListSnapshotsResponse_Entry_builder) Build() *ListSnapshotsResponse_Entry { + m0 := &ListSnapshotsResponse_Entry{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Snapshot = b.Snapshot + return m0 +} + +type NodeServiceCapability_RPC struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Type NodeServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.NodeServiceCapability_RPC_Type" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeServiceCapability_RPC) Reset() { + *x = NodeServiceCapability_RPC{} + mi := &file_csi_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeServiceCapability_RPC) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeServiceCapability_RPC) ProtoMessage() {} + +func (x *NodeServiceCapability_RPC) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[122] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *NodeServiceCapability_RPC) GetType() NodeServiceCapability_RPC_Type { + if x != nil { + return x.xxx_hidden_Type + } + return NodeServiceCapability_RPC_UNKNOWN +} + +func (x *NodeServiceCapability_RPC) SetType(v NodeServiceCapability_RPC_Type) { + x.xxx_hidden_Type = v +} + +type NodeServiceCapability_RPC_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Type NodeServiceCapability_RPC_Type +} + +func (b0 NodeServiceCapability_RPC_builder) Build() *NodeServiceCapability_RPC { + m0 := &NodeServiceCapability_RPC{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Type = b.Type + return m0 +} + +type GroupControllerServiceCapability_RPC struct { + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_Type GroupControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,proto3,enum=csi.v1.GroupControllerServiceCapability_RPC_Type" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GroupControllerServiceCapability_RPC) Reset() { + *x = GroupControllerServiceCapability_RPC{} + mi := &file_csi_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GroupControllerServiceCapability_RPC) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupControllerServiceCapability_RPC) ProtoMessage() {} + +func (x *GroupControllerServiceCapability_RPC) ProtoReflect() protoreflect.Message { + mi := &file_csi_proto_msgTypes[124] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +func (x *GroupControllerServiceCapability_RPC) GetType() GroupControllerServiceCapability_RPC_Type { + if x != nil { + return x.xxx_hidden_Type + } + return GroupControllerServiceCapability_RPC_UNKNOWN +} + +func (x *GroupControllerServiceCapability_RPC) SetType(v GroupControllerServiceCapability_RPC_Type) { + x.xxx_hidden_Type = v +} + +type GroupControllerServiceCapability_RPC_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + Type GroupControllerServiceCapability_RPC_Type +} + +func (b0 GroupControllerServiceCapability_RPC_builder) Build() *GroupControllerServiceCapability_RPC { + m0 := &GroupControllerServiceCapability_RPC{} + b, x := &b0, m0 + _, _ = b, x + x.xxx_hidden_Type = b.Type + return m0 +} + +var file_csi_proto_extTypes = []protoimpl.ExtensionInfo{ + { + ExtendedType: (*descriptorpb.EnumOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 1060, + Name: "csi.v1.alpha_enum", + Tag: "varint,1060,opt,name=alpha_enum", + Filename: "csi.proto", + }, + { + ExtendedType: (*descriptorpb.EnumValueOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 1060, + Name: "csi.v1.alpha_enum_value", + Tag: "varint,1060,opt,name=alpha_enum_value", + Filename: "csi.proto", + }, + { + ExtendedType: (*descriptorpb.FieldOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 1059, + Name: "csi.v1.csi_secret", + Tag: "varint,1059,opt,name=csi_secret", + Filename: "csi.proto", + }, + { + ExtendedType: (*descriptorpb.FieldOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 1060, + Name: "csi.v1.alpha_field", + Tag: "varint,1060,opt,name=alpha_field", + Filename: "csi.proto", + }, + { + ExtendedType: (*descriptorpb.MessageOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 1060, + Name: "csi.v1.alpha_message", + Tag: "varint,1060,opt,name=alpha_message", + Filename: "csi.proto", + }, + { + ExtendedType: (*descriptorpb.MethodOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 1060, + Name: "csi.v1.alpha_method", + Tag: "varint,1060,opt,name=alpha_method", + Filename: "csi.proto", + }, + { + ExtendedType: (*descriptorpb.ServiceOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 1060, + Name: "csi.v1.alpha_service", + Tag: "varint,1060,opt,name=alpha_service", + Filename: "csi.proto", + }, +} + +// Extension fields to descriptorpb.EnumOptions. +var ( + // Indicates that this enum is OPTIONAL and part of an experimental + // API that may be deprecated and eventually removed between minor + // releases. + // + // optional bool alpha_enum = 1060; + E_AlphaEnum = &file_csi_proto_extTypes[0] +) + +// Extension fields to descriptorpb.EnumValueOptions. +var ( + // Indicates that this enum value is OPTIONAL and part of an + // experimental API that may be deprecated and eventually removed + // between minor releases. + // + // optional bool alpha_enum_value = 1060; + E_AlphaEnumValue = &file_csi_proto_extTypes[1] +) + +// Extension fields to descriptorpb.FieldOptions. +var ( + // Indicates that a field MAY contain information that is sensitive + // and MUST be treated as such (e.g. not logged). + // + // optional bool csi_secret = 1059; + E_CsiSecret = &file_csi_proto_extTypes[2] + // Indicates that this field is OPTIONAL and part of an experimental + // API that may be deprecated and eventually removed between minor + // releases. + // + // optional bool alpha_field = 1060; + E_AlphaField = &file_csi_proto_extTypes[3] +) + +// Extension fields to descriptorpb.MessageOptions. +var ( + // Indicates that this message is OPTIONAL and part of an experimental + // API that may be deprecated and eventually removed between minor + // releases. + // + // optional bool alpha_message = 1060; + E_AlphaMessage = &file_csi_proto_extTypes[4] +) + +// Extension fields to descriptorpb.MethodOptions. +var ( + // Indicates that this method is OPTIONAL and part of an experimental + // API that may be deprecated and eventually removed between minor + // releases. + // + // optional bool alpha_method = 1060; + E_AlphaMethod = &file_csi_proto_extTypes[5] +) + +// Extension fields to descriptorpb.ServiceOptions. +var ( + // Indicates that this service is OPTIONAL and part of an experimental + // API that may be deprecated and eventually removed between minor + // releases. + // + // optional bool alpha_service = 1060; + E_AlphaService = &file_csi_proto_extTypes[6] +) + +var File_csi_proto protoreflect.FileDescriptor + +var file_csi_proto_rawDesc = []byte{ + 0x0a, 0x09, 0x63, 0x73, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x16, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xd8, + 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, + 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x0a, 0x0d, + 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1e, 0x0a, 0x1c, 0x47, 0x65, 0x74, + 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5d, 0x0a, 0x1d, 0x47, 0x65, 0x74, + 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x61, + 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x91, 0x04, 0x0a, 0x10, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3c, 0x0a, + 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, + 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x48, 0x00, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x1a, 0xda, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x39, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x63, + 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x52, 0x5f, 0x53, 0x45, + 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x56, 0x4f, 0x4c, 0x55, 0x4d, + 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, + 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x54, 0x53, 0x10, 0x02, 0x12, 0x1c, 0x0a, + 0x18, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, + 0x52, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x19, 0x53, + 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x04, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x1a, + 0x82, 0x01, 0x0a, 0x0f, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2d, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, + 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, + 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x46, 0x46, 0x4c, 0x49, + 0x4e, 0x45, 0x10, 0x02, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x0e, 0x0a, 0x0c, + 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x41, 0x0a, 0x0d, + 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, + 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x22, + 0x9e, 0x06, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0e, 0x63, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, + 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x70, 0x61, + 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x52, 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x47, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, + 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x15, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x1a, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x19, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x66, 0x0a, 0x12, 0x6d, 0x75, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xa0, 0x42, 0x01, 0x52, 0x11, 0x6d, 0x75, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, + 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, + 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x75, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x8b, 0x02, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x06, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x31, 0x0a, 0x0e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x1a, 0x2b, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3e, + 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x9f, + 0x05, 0x0a, 0x10, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x3c, 0x0a, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x44, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x1a, 0x0d, 0x0a, 0x0b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x1a, 0x75, 0x0a, 0x0b, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x2c, 0x0a, + 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0xb3, 0x02, 0x0a, 0x0a, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x4d, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x04, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x16, + 0x0a, 0x12, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x57, 0x52, + 0x49, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, + 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, + 0x59, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4e, 0x4f, 0x44, + 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, + 0x1c, 0x0a, 0x18, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, + 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x1b, 0x0a, + 0x17, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, + 0x49, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, 0x05, 0x12, 0x22, 0x0a, 0x19, 0x53, 0x49, + 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, + 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, 0x06, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x12, 0x21, + 0x0a, 0x18, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x55, + 0x4c, 0x54, 0x49, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, 0x07, 0x1a, 0x03, 0xa0, 0x42, + 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x22, 0x57, 0x0a, 0x0d, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xdf, 0x02, 0x0a, 0x06, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, + 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x61, + 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x0e, 0x76, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x12, 0x42, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x13, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x12, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, + 0x65, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x1a, 0x40, 0x0a, 0x12, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x75, 0x0a, 0x13, 0x54, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, + 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, + 0x65, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x08, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, + 0x3a, 0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, + 0x6f, 0x67, 0x79, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x53, + 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb7, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x47, 0x0a, + 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xed, 0x03, 0x0a, 0x1e, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, + 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, + 0x65, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, + 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, + 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, + 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, + 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x12, 0x52, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, + 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x60, 0x0a, 0x0e, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x3a, 0x0a, 0x0c, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xca, 0x01, 0x0a, 0x1f, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, + 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x1a, 0x41, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xea, 0x01, 0x0a, 0x20, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, + 0x49, 0x64, 0x12, 0x54, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, + 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x21, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x06, 0x0a, 0x21, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x63, 0x0a, 0x0e, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x12, 0x49, 0x0a, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, + 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x0a, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x39, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x55, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x74, + 0x0a, 0x12, 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xa0, 0x42, + 0x01, 0x52, 0x11, 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x89, 0x06, 0x0a, 0x22, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, + 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0xf4, 0x04, 0x0a, + 0x09, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x6e, 0x0a, 0x0e, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x49, 0x0a, 0x13, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x52, 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x63, 0x73, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x2e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x7f, 0x0a, 0x12, 0x6d, + 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, + 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x2e, 0x4d, 0x75, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xa0, 0x42, 0x01, 0x52, 0x11, 0x6d, 0x75, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x40, 0x0a, 0x12, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, + 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, + 0x16, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x5c, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x6d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0xec, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x85, 0x01, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, + 0x65, 0x49, 0x64, 0x73, 0x12, 0x47, 0x0a, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xa0, 0x42, 0x01, 0x52, 0x0f, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x71, 0x0a, + 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x26, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x40, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0x3e, 0x0a, 0x1a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, + 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x3a, 0x03, 0xa0, 0x42, 0x01, + 0x22, 0x97, 0x02, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, + 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x26, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x1a, 0x80, 0x01, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, + 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, + 0x73, 0x12, 0x42, 0x0a, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x03, 0xa0, 0x42, 0x01, 0x22, 0x83, 0x03, 0x0a, 0x1d, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x6f, + 0x64, 0x69, 0x66, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, + 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x6b, 0x0a, 0x12, + 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, + 0x66, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x03, 0xa0, 0x42, 0x01, + 0x22, 0x25, 0x0a, 0x1e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x6f, + 0x64, 0x69, 0x66, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x3a, 0x03, 0xa0, 0x42, 0x01, 0x22, 0xad, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, + 0x0a, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x12, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x13, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, + 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, + 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x12, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, + 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe3, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2d, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x70, + 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x4b, + 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, + 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, + 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x50, 0x0a, 0x13, 0x6d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xa0, 0x42, 0x01, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x22, 0x0a, + 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, + 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x6c, 0x0a, 0x21, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, + 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, + 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, + 0x96, 0x04, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, + 0x3b, 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, + 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x2e, 0x52, 0x50, 0x43, 0x48, 0x00, 0x52, 0x03, 0x72, 0x70, 0x63, 0x1a, 0xb1, 0x03, 0x0a, + 0x03, 0x52, 0x50, 0x43, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x50, 0x43, 0x2e, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xe7, 0x02, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x56, 0x4f, + 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, + 0x48, 0x5f, 0x55, 0x4e, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x56, 0x4f, 0x4c, 0x55, + 0x4d, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x56, 0x4f, 0x4c, + 0x55, 0x4d, 0x45, 0x53, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x45, 0x54, 0x5f, 0x43, 0x41, + 0x50, 0x41, 0x43, 0x49, 0x54, 0x59, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, + 0x4f, 0x54, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x53, 0x4e, 0x41, + 0x50, 0x53, 0x48, 0x4f, 0x54, 0x53, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4c, 0x4f, 0x4e, + 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x55, + 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x08, + 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, + 0x45, 0x10, 0x09, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, + 0x4d, 0x45, 0x53, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0x5f, 0x4e, 0x4f, + 0x44, 0x45, 0x53, 0x10, 0x0a, 0x12, 0x19, 0x0a, 0x10, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, + 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0b, 0x1a, 0x03, 0xa0, 0x42, 0x01, + 0x12, 0x13, 0x0a, 0x0a, 0x47, 0x45, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x0c, + 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x12, 0x21, 0x0a, 0x18, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, + 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, + 0x52, 0x10, 0x0d, 0x1a, 0x03, 0xa0, 0x42, 0x01, 0x12, 0x16, 0x0a, 0x0d, 0x4d, 0x4f, 0x44, 0x49, + 0x46, 0x59, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x0e, 0x1a, 0x03, 0xa0, 0x42, 0x01, + 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xea, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x49, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, + 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x0a, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x46, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2c, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0x83, 0x02, + 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, + 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x74, + 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x61, + 0x64, 0x79, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x49, 0x64, 0x22, 0xbf, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x49, + 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, + 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xaf, 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, + 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, + 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, + 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0xac, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, + 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6e, 0x65, 0x78, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x35, 0x0a, 0x05, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x22, 0xd0, 0x02, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x45, + 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, + 0x3c, 0x0a, 0x0e, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, + 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x51, 0x0a, + 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, + 0x12, 0x45, 0x0a, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x7f, 0x0a, 0x1e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6e, + 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x22, 0xf0, 0x04, 0x0a, 0x16, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x5b, 0x0a, 0x0f, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, + 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x10, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x12, 0x4a, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, + 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x0e, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x41, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x19, 0x0a, 0x17, 0x4e, 0x6f, 0x64, 0x65, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x67, 0x0a, 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x73, + 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, + 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x1b, 0x0a, 0x19, 0x4e, + 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, 0x05, 0x0a, 0x18, 0x4e, 0x6f, 0x64, + 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x61, 0x74, + 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, 0x70, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, + 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, + 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, + 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x12, 0x4c, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x73, 0x12, 0x5a, 0x0a, 0x0e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, + 0x41, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, + 0x0a, 0x12, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x1b, 0x0a, 0x19, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x0a, + 0x1a, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x1d, 0x0a, 0x1b, 0x4e, 0x6f, 0x64, + 0x65, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x19, 0x4e, 0x6f, 0x64, + 0x65, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x50, 0x61, 0x74, 0x68, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x50, 0x61, 0x74, 0x68, 0x22, 0x90, 0x01, 0x0a, 0x1a, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x47, + 0x0a, 0x10, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x03, 0xa0, 0x42, 0x01, 0x52, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0x0a, 0x0b, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, + 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x12, + 0x2c, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x55, 0x73, 0x61, + 0x67, 0x65, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x22, 0x2a, 0x0a, + 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x01, 0x12, 0x0a, 0x0a, + 0x06, 0x49, 0x4e, 0x4f, 0x44, 0x45, 0x53, 0x10, 0x02, 0x22, 0x4c, 0x0a, 0x0f, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x61, 0x62, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x61, 0x62, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x3a, 0x03, 0xa0, 0x42, 0x01, 0x22, 0x1c, 0x0a, 0x1a, 0x4e, 0x6f, 0x64, 0x65, 0x47, + 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x60, 0x0a, 0x1b, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, + 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, + 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xc9, 0x02, 0x0a, 0x15, 0x4e, 0x6f, 0x64, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x12, 0x35, 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x50, + 0x43, 0x48, 0x00, 0x52, 0x03, 0x72, 0x70, 0x63, 0x1a, 0xf0, 0x01, 0x0a, 0x03, 0x52, 0x50, 0x43, + 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x50, + 0x43, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xac, 0x01, 0x0a, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x54, + 0x41, 0x47, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, + 0x47, 0x45, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, + 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x5f, 0x56, 0x4f, 0x4c, + 0x55, 0x4d, 0x45, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x10, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, + 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x1a, 0x03, 0xa0, 0x42, 0x01, + 0x12, 0x21, 0x0a, 0x18, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, + 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, 0x05, 0x1a, 0x03, + 0xa0, 0x42, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x4d, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x06, 0x42, 0x06, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa2, 0x01, 0x0a, 0x13, 0x4e, 0x6f, + 0x64, 0x65, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x61, + 0x78, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x6f, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x41, 0x0a, 0x13, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, + 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x12, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x22, 0x98, + 0x03, 0x0a, 0x17, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x3c, 0x0a, 0x0e, 0x63, 0x61, 0x70, 0x61, + 0x63, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, + 0x74, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, + 0x67, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x45, 0x0a, 0x11, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x10, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4e, 0x0a, + 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x61, + 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x06, 0x98, 0x42, + 0x01, 0xa0, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, + 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, 0x18, 0x4e, 0x6f, 0x64, + 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x27, 0x0a, 0x25, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, + 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x26, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4c, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, + 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xfd, 0x01, + 0x0a, 0x20, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x12, 0x40, 0x0a, 0x03, 0x72, 0x70, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, + 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x50, 0x43, 0x48, 0x00, 0x52, + 0x03, 0x72, 0x70, 0x63, 0x1a, 0x8e, 0x01, 0x0a, 0x03, 0x52, 0x50, 0x43, 0x12, 0x45, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x50, 0x43, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x40, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x56, 0x4f, + 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, + 0x48, 0x4f, 0x54, 0x10, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8d, 0x03, + 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, + 0x64, 0x73, 0x12, 0x54, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, + 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, + 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, + 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x67, 0x0a, + 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0xd4, 0x01, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2a, + 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x09, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, + 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x72, + 0x65, 0x61, 0x64, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x79, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x22, 0x83, 0x02, + 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x21, + 0x0a, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, + 0x73, 0x12, 0x54, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, + 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfd, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x73, 0x12, 0x51, 0x0a, 0x07, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, + 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, + 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0x4f, + 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x1f, 0x0a, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, + 0x95, 0x02, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, + 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, + 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x69, 0x6e, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x07, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0x98, + 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdb, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x61, + 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, + 0x74, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc4, 0x02, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x61, 0x73, + 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x03, 0x98, 0x42, 0x01, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, + 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd7, 0x01, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x11, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, + 0x69, 0x74, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2a, 0x47, 0x0a, 0x11, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x49, 0x58, 0x45, + 0x44, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x41, + 0x52, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x02, 0x32, + 0xfa, 0x01, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x4e, 0x0a, 0x0d, + 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x61, + 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x14, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0xbb, 0x0a, 0x0a, + 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x0c, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1b, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x12, 0x26, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x12, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x55, 0x6e, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1a, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, + 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x43, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x72, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, + 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x73, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, + 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1d, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1d, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x73, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0d, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x1c, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x16, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x22, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0xa0, 0x42, 0x01, 0x12, 0x6c, 0x0a, 0x16, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0xa0, 0x42, 0x01, 0x32, 0xe8, 0x03, 0x0a, 0x0f, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x81, + 0x01, 0x0a, 0x1e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x2d, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2e, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x72, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, + 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x73, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x12, 0x28, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x16, 0x47, 0x65, + 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x12, 0x25, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x73, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0xd9, 0x01, 0x0a, 0x10, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x65, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x12, 0x23, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x41, 0x6c, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, + 0x01, 0x12, 0x59, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x1f, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x65, 0x6c, 0x74, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x1a, 0x03, 0xa0, 0x42, + 0x01, 0x32, 0xda, 0x05, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x4e, 0x6f, + 0x64, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1e, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x5a, 0x0a, 0x11, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x20, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x11, + 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x12, 0x20, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x13, 0x4e, 0x6f, 0x64, 0x65, + 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, + 0x22, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x12, 0x4e, 0x6f, + 0x64, 0x65, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x12, 0x21, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, + 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x10, 0x4e, 0x6f, 0x64, + 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1f, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, + 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x61, + 0x6e, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x60, 0x0a, 0x13, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x63, 0x73, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, + 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x43, 0x61, + 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1b, 0x2e, 0x63, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x3a, 0x3c, + 0x0a, 0x0a, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x4c, 0x0a, 0x10, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x3d, 0x0a, 0x0a, 0x63, 0x73, + 0x69, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x63, 0x73, 0x69, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x3a, 0x3f, 0x0a, 0x0b, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x3a, 0x45, 0x0a, 0x0d, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x08, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x3a, 0x42, 0x0a, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa4, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, 0x45, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa4, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x38, 0x5a, 0x36, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x69, 0x6e, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2d, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x6c, 0x69, 0x62, 0x2f, + 0x67, 0x6f, 0x2f, 0x63, 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_csi_proto_enumTypes = make([]protoimpl.EnumInfo, 8) +var file_csi_proto_msgTypes = make([]protoimpl.MessageInfo, 131) +var file_csi_proto_goTypes = []any{ + (BlockMetadataType)(0), // 0: csi.v1.BlockMetadataType + (PluginCapability_Service_Type)(0), // 1: csi.v1.PluginCapability.Service.Type + (PluginCapability_VolumeExpansion_Type)(0), // 2: csi.v1.PluginCapability.VolumeExpansion.Type + (VolumeCapability_AccessMode_Mode)(0), // 3: csi.v1.VolumeCapability.AccessMode.Mode + (ControllerServiceCapability_RPC_Type)(0), // 4: csi.v1.ControllerServiceCapability.RPC.Type + (VolumeUsage_Unit)(0), // 5: csi.v1.VolumeUsage.Unit + (NodeServiceCapability_RPC_Type)(0), // 6: csi.v1.NodeServiceCapability.RPC.Type + (GroupControllerServiceCapability_RPC_Type)(0), // 7: csi.v1.GroupControllerServiceCapability.RPC.Type + (*GetPluginInfoRequest)(nil), // 8: csi.v1.GetPluginInfoRequest + (*GetPluginInfoResponse)(nil), // 9: csi.v1.GetPluginInfoResponse + (*GetPluginCapabilitiesRequest)(nil), // 10: csi.v1.GetPluginCapabilitiesRequest + (*GetPluginCapabilitiesResponse)(nil), // 11: csi.v1.GetPluginCapabilitiesResponse + (*PluginCapability)(nil), // 12: csi.v1.PluginCapability + (*ProbeRequest)(nil), // 13: csi.v1.ProbeRequest + (*ProbeResponse)(nil), // 14: csi.v1.ProbeResponse + (*CreateVolumeRequest)(nil), // 15: csi.v1.CreateVolumeRequest + (*VolumeContentSource)(nil), // 16: csi.v1.VolumeContentSource + (*CreateVolumeResponse)(nil), // 17: csi.v1.CreateVolumeResponse + (*VolumeCapability)(nil), // 18: csi.v1.VolumeCapability + (*CapacityRange)(nil), // 19: csi.v1.CapacityRange + (*Volume)(nil), // 20: csi.v1.Volume + (*TopologyRequirement)(nil), // 21: csi.v1.TopologyRequirement + (*Topology)(nil), // 22: csi.v1.Topology + (*DeleteVolumeRequest)(nil), // 23: csi.v1.DeleteVolumeRequest + (*DeleteVolumeResponse)(nil), // 24: csi.v1.DeleteVolumeResponse + (*ControllerPublishVolumeRequest)(nil), // 25: csi.v1.ControllerPublishVolumeRequest + (*ControllerPublishVolumeResponse)(nil), // 26: csi.v1.ControllerPublishVolumeResponse + (*ControllerUnpublishVolumeRequest)(nil), // 27: csi.v1.ControllerUnpublishVolumeRequest + (*ControllerUnpublishVolumeResponse)(nil), // 28: csi.v1.ControllerUnpublishVolumeResponse + (*ValidateVolumeCapabilitiesRequest)(nil), // 29: csi.v1.ValidateVolumeCapabilitiesRequest + (*ValidateVolumeCapabilitiesResponse)(nil), // 30: csi.v1.ValidateVolumeCapabilitiesResponse + (*ListVolumesRequest)(nil), // 31: csi.v1.ListVolumesRequest + (*ListVolumesResponse)(nil), // 32: csi.v1.ListVolumesResponse + (*ControllerGetVolumeRequest)(nil), // 33: csi.v1.ControllerGetVolumeRequest + (*ControllerGetVolumeResponse)(nil), // 34: csi.v1.ControllerGetVolumeResponse + (*ControllerModifyVolumeRequest)(nil), // 35: csi.v1.ControllerModifyVolumeRequest + (*ControllerModifyVolumeResponse)(nil), // 36: csi.v1.ControllerModifyVolumeResponse + (*GetCapacityRequest)(nil), // 37: csi.v1.GetCapacityRequest + (*GetCapacityResponse)(nil), // 38: csi.v1.GetCapacityResponse + (*ControllerGetCapabilitiesRequest)(nil), // 39: csi.v1.ControllerGetCapabilitiesRequest + (*ControllerGetCapabilitiesResponse)(nil), // 40: csi.v1.ControllerGetCapabilitiesResponse + (*ControllerServiceCapability)(nil), // 41: csi.v1.ControllerServiceCapability + (*CreateSnapshotRequest)(nil), // 42: csi.v1.CreateSnapshotRequest + (*CreateSnapshotResponse)(nil), // 43: csi.v1.CreateSnapshotResponse + (*Snapshot)(nil), // 44: csi.v1.Snapshot + (*DeleteSnapshotRequest)(nil), // 45: csi.v1.DeleteSnapshotRequest + (*DeleteSnapshotResponse)(nil), // 46: csi.v1.DeleteSnapshotResponse + (*ListSnapshotsRequest)(nil), // 47: csi.v1.ListSnapshotsRequest + (*ListSnapshotsResponse)(nil), // 48: csi.v1.ListSnapshotsResponse + (*ControllerExpandVolumeRequest)(nil), // 49: csi.v1.ControllerExpandVolumeRequest + (*ControllerExpandVolumeResponse)(nil), // 50: csi.v1.ControllerExpandVolumeResponse + (*NodeStageVolumeRequest)(nil), // 51: csi.v1.NodeStageVolumeRequest + (*NodeStageVolumeResponse)(nil), // 52: csi.v1.NodeStageVolumeResponse + (*NodeUnstageVolumeRequest)(nil), // 53: csi.v1.NodeUnstageVolumeRequest + (*NodeUnstageVolumeResponse)(nil), // 54: csi.v1.NodeUnstageVolumeResponse + (*NodePublishVolumeRequest)(nil), // 55: csi.v1.NodePublishVolumeRequest + (*NodePublishVolumeResponse)(nil), // 56: csi.v1.NodePublishVolumeResponse + (*NodeUnpublishVolumeRequest)(nil), // 57: csi.v1.NodeUnpublishVolumeRequest + (*NodeUnpublishVolumeResponse)(nil), // 58: csi.v1.NodeUnpublishVolumeResponse + (*NodeGetVolumeStatsRequest)(nil), // 59: csi.v1.NodeGetVolumeStatsRequest + (*NodeGetVolumeStatsResponse)(nil), // 60: csi.v1.NodeGetVolumeStatsResponse + (*VolumeUsage)(nil), // 61: csi.v1.VolumeUsage + (*VolumeCondition)(nil), // 62: csi.v1.VolumeCondition + (*NodeGetCapabilitiesRequest)(nil), // 63: csi.v1.NodeGetCapabilitiesRequest + (*NodeGetCapabilitiesResponse)(nil), // 64: csi.v1.NodeGetCapabilitiesResponse + (*NodeServiceCapability)(nil), // 65: csi.v1.NodeServiceCapability + (*NodeGetInfoRequest)(nil), // 66: csi.v1.NodeGetInfoRequest + (*NodeGetInfoResponse)(nil), // 67: csi.v1.NodeGetInfoResponse + (*NodeExpandVolumeRequest)(nil), // 68: csi.v1.NodeExpandVolumeRequest + (*NodeExpandVolumeResponse)(nil), // 69: csi.v1.NodeExpandVolumeResponse + (*GroupControllerGetCapabilitiesRequest)(nil), // 70: csi.v1.GroupControllerGetCapabilitiesRequest + (*GroupControllerGetCapabilitiesResponse)(nil), // 71: csi.v1.GroupControllerGetCapabilitiesResponse + (*GroupControllerServiceCapability)(nil), // 72: csi.v1.GroupControllerServiceCapability + (*CreateVolumeGroupSnapshotRequest)(nil), // 73: csi.v1.CreateVolumeGroupSnapshotRequest + (*CreateVolumeGroupSnapshotResponse)(nil), // 74: csi.v1.CreateVolumeGroupSnapshotResponse + (*VolumeGroupSnapshot)(nil), // 75: csi.v1.VolumeGroupSnapshot + (*DeleteVolumeGroupSnapshotRequest)(nil), // 76: csi.v1.DeleteVolumeGroupSnapshotRequest + (*DeleteVolumeGroupSnapshotResponse)(nil), // 77: csi.v1.DeleteVolumeGroupSnapshotResponse + (*GetVolumeGroupSnapshotRequest)(nil), // 78: csi.v1.GetVolumeGroupSnapshotRequest + (*GetVolumeGroupSnapshotResponse)(nil), // 79: csi.v1.GetVolumeGroupSnapshotResponse + (*BlockMetadata)(nil), // 80: csi.v1.BlockMetadata + (*GetMetadataAllocatedRequest)(nil), // 81: csi.v1.GetMetadataAllocatedRequest + (*GetMetadataAllocatedResponse)(nil), // 82: csi.v1.GetMetadataAllocatedResponse + (*GetMetadataDeltaRequest)(nil), // 83: csi.v1.GetMetadataDeltaRequest + (*GetMetadataDeltaResponse)(nil), // 84: csi.v1.GetMetadataDeltaResponse + nil, // 85: csi.v1.GetPluginInfoResponse.ManifestEntry + (*PluginCapability_Service)(nil), // 86: csi.v1.PluginCapability.Service + (*PluginCapability_VolumeExpansion)(nil), // 87: csi.v1.PluginCapability.VolumeExpansion + nil, // 88: csi.v1.CreateVolumeRequest.ParametersEntry + nil, // 89: csi.v1.CreateVolumeRequest.SecretsEntry + nil, // 90: csi.v1.CreateVolumeRequest.MutableParametersEntry + (*VolumeContentSource_SnapshotSource)(nil), // 91: csi.v1.VolumeContentSource.SnapshotSource + (*VolumeContentSource_VolumeSource)(nil), // 92: csi.v1.VolumeContentSource.VolumeSource + (*VolumeCapability_BlockVolume)(nil), // 93: csi.v1.VolumeCapability.BlockVolume + (*VolumeCapability_MountVolume)(nil), // 94: csi.v1.VolumeCapability.MountVolume + (*VolumeCapability_AccessMode)(nil), // 95: csi.v1.VolumeCapability.AccessMode + nil, // 96: csi.v1.Volume.VolumeContextEntry + nil, // 97: csi.v1.Topology.SegmentsEntry + nil, // 98: csi.v1.DeleteVolumeRequest.SecretsEntry + nil, // 99: csi.v1.ControllerPublishVolumeRequest.SecretsEntry + nil, // 100: csi.v1.ControllerPublishVolumeRequest.VolumeContextEntry + nil, // 101: csi.v1.ControllerPublishVolumeResponse.PublishContextEntry + nil, // 102: csi.v1.ControllerUnpublishVolumeRequest.SecretsEntry + nil, // 103: csi.v1.ValidateVolumeCapabilitiesRequest.VolumeContextEntry + nil, // 104: csi.v1.ValidateVolumeCapabilitiesRequest.ParametersEntry + nil, // 105: csi.v1.ValidateVolumeCapabilitiesRequest.SecretsEntry + nil, // 106: csi.v1.ValidateVolumeCapabilitiesRequest.MutableParametersEntry + (*ValidateVolumeCapabilitiesResponse_Confirmed)(nil), // 107: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed + nil, // 108: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.VolumeContextEntry + nil, // 109: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.ParametersEntry + nil, // 110: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.MutableParametersEntry + (*ListVolumesResponse_VolumeStatus)(nil), // 111: csi.v1.ListVolumesResponse.VolumeStatus + (*ListVolumesResponse_Entry)(nil), // 112: csi.v1.ListVolumesResponse.Entry + (*ControllerGetVolumeResponse_VolumeStatus)(nil), // 113: csi.v1.ControllerGetVolumeResponse.VolumeStatus + nil, // 114: csi.v1.ControllerModifyVolumeRequest.SecretsEntry + nil, // 115: csi.v1.ControllerModifyVolumeRequest.MutableParametersEntry + nil, // 116: csi.v1.GetCapacityRequest.ParametersEntry + (*ControllerServiceCapability_RPC)(nil), // 117: csi.v1.ControllerServiceCapability.RPC + nil, // 118: csi.v1.CreateSnapshotRequest.SecretsEntry + nil, // 119: csi.v1.CreateSnapshotRequest.ParametersEntry + nil, // 120: csi.v1.DeleteSnapshotRequest.SecretsEntry + nil, // 121: csi.v1.ListSnapshotsRequest.SecretsEntry + (*ListSnapshotsResponse_Entry)(nil), // 122: csi.v1.ListSnapshotsResponse.Entry + nil, // 123: csi.v1.ControllerExpandVolumeRequest.SecretsEntry + nil, // 124: csi.v1.NodeStageVolumeRequest.PublishContextEntry + nil, // 125: csi.v1.NodeStageVolumeRequest.SecretsEntry + nil, // 126: csi.v1.NodeStageVolumeRequest.VolumeContextEntry + nil, // 127: csi.v1.NodePublishVolumeRequest.PublishContextEntry + nil, // 128: csi.v1.NodePublishVolumeRequest.SecretsEntry + nil, // 129: csi.v1.NodePublishVolumeRequest.VolumeContextEntry + (*NodeServiceCapability_RPC)(nil), // 130: csi.v1.NodeServiceCapability.RPC + nil, // 131: csi.v1.NodeExpandVolumeRequest.SecretsEntry + (*GroupControllerServiceCapability_RPC)(nil), // 132: csi.v1.GroupControllerServiceCapability.RPC + nil, // 133: csi.v1.CreateVolumeGroupSnapshotRequest.SecretsEntry + nil, // 134: csi.v1.CreateVolumeGroupSnapshotRequest.ParametersEntry + nil, // 135: csi.v1.DeleteVolumeGroupSnapshotRequest.SecretsEntry + nil, // 136: csi.v1.GetVolumeGroupSnapshotRequest.SecretsEntry + nil, // 137: csi.v1.GetMetadataAllocatedRequest.SecretsEntry + nil, // 138: csi.v1.GetMetadataDeltaRequest.SecretsEntry + (*wrapperspb.BoolValue)(nil), // 139: google.protobuf.BoolValue + (*wrapperspb.Int64Value)(nil), // 140: google.protobuf.Int64Value + (*timestamppb.Timestamp)(nil), // 141: google.protobuf.Timestamp + (*descriptorpb.EnumOptions)(nil), // 142: google.protobuf.EnumOptions + (*descriptorpb.EnumValueOptions)(nil), // 143: google.protobuf.EnumValueOptions + (*descriptorpb.FieldOptions)(nil), // 144: google.protobuf.FieldOptions + (*descriptorpb.MessageOptions)(nil), // 145: google.protobuf.MessageOptions + (*descriptorpb.MethodOptions)(nil), // 146: google.protobuf.MethodOptions + (*descriptorpb.ServiceOptions)(nil), // 147: google.protobuf.ServiceOptions +} +var file_csi_proto_depIdxs = []int32{ + 85, // 0: csi.v1.GetPluginInfoResponse.manifest:type_name -> csi.v1.GetPluginInfoResponse.ManifestEntry + 12, // 1: csi.v1.GetPluginCapabilitiesResponse.capabilities:type_name -> csi.v1.PluginCapability + 86, // 2: csi.v1.PluginCapability.service:type_name -> csi.v1.PluginCapability.Service + 87, // 3: csi.v1.PluginCapability.volume_expansion:type_name -> csi.v1.PluginCapability.VolumeExpansion + 139, // 4: csi.v1.ProbeResponse.ready:type_name -> google.protobuf.BoolValue + 19, // 5: csi.v1.CreateVolumeRequest.capacity_range:type_name -> csi.v1.CapacityRange + 18, // 6: csi.v1.CreateVolumeRequest.volume_capabilities:type_name -> csi.v1.VolumeCapability + 88, // 7: csi.v1.CreateVolumeRequest.parameters:type_name -> csi.v1.CreateVolumeRequest.ParametersEntry + 89, // 8: csi.v1.CreateVolumeRequest.secrets:type_name -> csi.v1.CreateVolumeRequest.SecretsEntry + 16, // 9: csi.v1.CreateVolumeRequest.volume_content_source:type_name -> csi.v1.VolumeContentSource + 21, // 10: csi.v1.CreateVolumeRequest.accessibility_requirements:type_name -> csi.v1.TopologyRequirement + 90, // 11: csi.v1.CreateVolumeRequest.mutable_parameters:type_name -> csi.v1.CreateVolumeRequest.MutableParametersEntry + 91, // 12: csi.v1.VolumeContentSource.snapshot:type_name -> csi.v1.VolumeContentSource.SnapshotSource + 92, // 13: csi.v1.VolumeContentSource.volume:type_name -> csi.v1.VolumeContentSource.VolumeSource + 20, // 14: csi.v1.CreateVolumeResponse.volume:type_name -> csi.v1.Volume + 93, // 15: csi.v1.VolumeCapability.block:type_name -> csi.v1.VolumeCapability.BlockVolume + 94, // 16: csi.v1.VolumeCapability.mount:type_name -> csi.v1.VolumeCapability.MountVolume + 95, // 17: csi.v1.VolumeCapability.access_mode:type_name -> csi.v1.VolumeCapability.AccessMode + 96, // 18: csi.v1.Volume.volume_context:type_name -> csi.v1.Volume.VolumeContextEntry + 16, // 19: csi.v1.Volume.content_source:type_name -> csi.v1.VolumeContentSource + 22, // 20: csi.v1.Volume.accessible_topology:type_name -> csi.v1.Topology + 22, // 21: csi.v1.TopologyRequirement.requisite:type_name -> csi.v1.Topology + 22, // 22: csi.v1.TopologyRequirement.preferred:type_name -> csi.v1.Topology + 97, // 23: csi.v1.Topology.segments:type_name -> csi.v1.Topology.SegmentsEntry + 98, // 24: csi.v1.DeleteVolumeRequest.secrets:type_name -> csi.v1.DeleteVolumeRequest.SecretsEntry + 18, // 25: csi.v1.ControllerPublishVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability + 99, // 26: csi.v1.ControllerPublishVolumeRequest.secrets:type_name -> csi.v1.ControllerPublishVolumeRequest.SecretsEntry + 100, // 27: csi.v1.ControllerPublishVolumeRequest.volume_context:type_name -> csi.v1.ControllerPublishVolumeRequest.VolumeContextEntry + 101, // 28: csi.v1.ControllerPublishVolumeResponse.publish_context:type_name -> csi.v1.ControllerPublishVolumeResponse.PublishContextEntry + 102, // 29: csi.v1.ControllerUnpublishVolumeRequest.secrets:type_name -> csi.v1.ControllerUnpublishVolumeRequest.SecretsEntry + 103, // 30: csi.v1.ValidateVolumeCapabilitiesRequest.volume_context:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.VolumeContextEntry + 18, // 31: csi.v1.ValidateVolumeCapabilitiesRequest.volume_capabilities:type_name -> csi.v1.VolumeCapability + 104, // 32: csi.v1.ValidateVolumeCapabilitiesRequest.parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.ParametersEntry + 105, // 33: csi.v1.ValidateVolumeCapabilitiesRequest.secrets:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.SecretsEntry + 106, // 34: csi.v1.ValidateVolumeCapabilitiesRequest.mutable_parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesRequest.MutableParametersEntry + 107, // 35: csi.v1.ValidateVolumeCapabilitiesResponse.confirmed:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed + 112, // 36: csi.v1.ListVolumesResponse.entries:type_name -> csi.v1.ListVolumesResponse.Entry + 20, // 37: csi.v1.ControllerGetVolumeResponse.volume:type_name -> csi.v1.Volume + 113, // 38: csi.v1.ControllerGetVolumeResponse.status:type_name -> csi.v1.ControllerGetVolumeResponse.VolumeStatus + 114, // 39: csi.v1.ControllerModifyVolumeRequest.secrets:type_name -> csi.v1.ControllerModifyVolumeRequest.SecretsEntry + 115, // 40: csi.v1.ControllerModifyVolumeRequest.mutable_parameters:type_name -> csi.v1.ControllerModifyVolumeRequest.MutableParametersEntry + 18, // 41: csi.v1.GetCapacityRequest.volume_capabilities:type_name -> csi.v1.VolumeCapability + 116, // 42: csi.v1.GetCapacityRequest.parameters:type_name -> csi.v1.GetCapacityRequest.ParametersEntry + 22, // 43: csi.v1.GetCapacityRequest.accessible_topology:type_name -> csi.v1.Topology + 140, // 44: csi.v1.GetCapacityResponse.maximum_volume_size:type_name -> google.protobuf.Int64Value + 140, // 45: csi.v1.GetCapacityResponse.minimum_volume_size:type_name -> google.protobuf.Int64Value + 41, // 46: csi.v1.ControllerGetCapabilitiesResponse.capabilities:type_name -> csi.v1.ControllerServiceCapability + 117, // 47: csi.v1.ControllerServiceCapability.rpc:type_name -> csi.v1.ControllerServiceCapability.RPC + 118, // 48: csi.v1.CreateSnapshotRequest.secrets:type_name -> csi.v1.CreateSnapshotRequest.SecretsEntry + 119, // 49: csi.v1.CreateSnapshotRequest.parameters:type_name -> csi.v1.CreateSnapshotRequest.ParametersEntry + 44, // 50: csi.v1.CreateSnapshotResponse.snapshot:type_name -> csi.v1.Snapshot + 141, // 51: csi.v1.Snapshot.creation_time:type_name -> google.protobuf.Timestamp + 120, // 52: csi.v1.DeleteSnapshotRequest.secrets:type_name -> csi.v1.DeleteSnapshotRequest.SecretsEntry + 121, // 53: csi.v1.ListSnapshotsRequest.secrets:type_name -> csi.v1.ListSnapshotsRequest.SecretsEntry + 122, // 54: csi.v1.ListSnapshotsResponse.entries:type_name -> csi.v1.ListSnapshotsResponse.Entry + 19, // 55: csi.v1.ControllerExpandVolumeRequest.capacity_range:type_name -> csi.v1.CapacityRange + 123, // 56: csi.v1.ControllerExpandVolumeRequest.secrets:type_name -> csi.v1.ControllerExpandVolumeRequest.SecretsEntry + 18, // 57: csi.v1.ControllerExpandVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability + 124, // 58: csi.v1.NodeStageVolumeRequest.publish_context:type_name -> csi.v1.NodeStageVolumeRequest.PublishContextEntry + 18, // 59: csi.v1.NodeStageVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability + 125, // 60: csi.v1.NodeStageVolumeRequest.secrets:type_name -> csi.v1.NodeStageVolumeRequest.SecretsEntry + 126, // 61: csi.v1.NodeStageVolumeRequest.volume_context:type_name -> csi.v1.NodeStageVolumeRequest.VolumeContextEntry + 127, // 62: csi.v1.NodePublishVolumeRequest.publish_context:type_name -> csi.v1.NodePublishVolumeRequest.PublishContextEntry + 18, // 63: csi.v1.NodePublishVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability + 128, // 64: csi.v1.NodePublishVolumeRequest.secrets:type_name -> csi.v1.NodePublishVolumeRequest.SecretsEntry + 129, // 65: csi.v1.NodePublishVolumeRequest.volume_context:type_name -> csi.v1.NodePublishVolumeRequest.VolumeContextEntry + 61, // 66: csi.v1.NodeGetVolumeStatsResponse.usage:type_name -> csi.v1.VolumeUsage + 62, // 67: csi.v1.NodeGetVolumeStatsResponse.volume_condition:type_name -> csi.v1.VolumeCondition + 5, // 68: csi.v1.VolumeUsage.unit:type_name -> csi.v1.VolumeUsage.Unit + 65, // 69: csi.v1.NodeGetCapabilitiesResponse.capabilities:type_name -> csi.v1.NodeServiceCapability + 130, // 70: csi.v1.NodeServiceCapability.rpc:type_name -> csi.v1.NodeServiceCapability.RPC + 22, // 71: csi.v1.NodeGetInfoResponse.accessible_topology:type_name -> csi.v1.Topology + 19, // 72: csi.v1.NodeExpandVolumeRequest.capacity_range:type_name -> csi.v1.CapacityRange + 18, // 73: csi.v1.NodeExpandVolumeRequest.volume_capability:type_name -> csi.v1.VolumeCapability + 131, // 74: csi.v1.NodeExpandVolumeRequest.secrets:type_name -> csi.v1.NodeExpandVolumeRequest.SecretsEntry + 72, // 75: csi.v1.GroupControllerGetCapabilitiesResponse.capabilities:type_name -> csi.v1.GroupControllerServiceCapability + 132, // 76: csi.v1.GroupControllerServiceCapability.rpc:type_name -> csi.v1.GroupControllerServiceCapability.RPC + 133, // 77: csi.v1.CreateVolumeGroupSnapshotRequest.secrets:type_name -> csi.v1.CreateVolumeGroupSnapshotRequest.SecretsEntry + 134, // 78: csi.v1.CreateVolumeGroupSnapshotRequest.parameters:type_name -> csi.v1.CreateVolumeGroupSnapshotRequest.ParametersEntry + 75, // 79: csi.v1.CreateVolumeGroupSnapshotResponse.group_snapshot:type_name -> csi.v1.VolumeGroupSnapshot + 44, // 80: csi.v1.VolumeGroupSnapshot.snapshots:type_name -> csi.v1.Snapshot + 141, // 81: csi.v1.VolumeGroupSnapshot.creation_time:type_name -> google.protobuf.Timestamp + 135, // 82: csi.v1.DeleteVolumeGroupSnapshotRequest.secrets:type_name -> csi.v1.DeleteVolumeGroupSnapshotRequest.SecretsEntry + 136, // 83: csi.v1.GetVolumeGroupSnapshotRequest.secrets:type_name -> csi.v1.GetVolumeGroupSnapshotRequest.SecretsEntry + 75, // 84: csi.v1.GetVolumeGroupSnapshotResponse.group_snapshot:type_name -> csi.v1.VolumeGroupSnapshot + 137, // 85: csi.v1.GetMetadataAllocatedRequest.secrets:type_name -> csi.v1.GetMetadataAllocatedRequest.SecretsEntry + 0, // 86: csi.v1.GetMetadataAllocatedResponse.block_metadata_type:type_name -> csi.v1.BlockMetadataType + 80, // 87: csi.v1.GetMetadataAllocatedResponse.block_metadata:type_name -> csi.v1.BlockMetadata + 138, // 88: csi.v1.GetMetadataDeltaRequest.secrets:type_name -> csi.v1.GetMetadataDeltaRequest.SecretsEntry + 0, // 89: csi.v1.GetMetadataDeltaResponse.block_metadata_type:type_name -> csi.v1.BlockMetadataType + 80, // 90: csi.v1.GetMetadataDeltaResponse.block_metadata:type_name -> csi.v1.BlockMetadata + 1, // 91: csi.v1.PluginCapability.Service.type:type_name -> csi.v1.PluginCapability.Service.Type + 2, // 92: csi.v1.PluginCapability.VolumeExpansion.type:type_name -> csi.v1.PluginCapability.VolumeExpansion.Type + 3, // 93: csi.v1.VolumeCapability.AccessMode.mode:type_name -> csi.v1.VolumeCapability.AccessMode.Mode + 108, // 94: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.volume_context:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.VolumeContextEntry + 18, // 95: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.volume_capabilities:type_name -> csi.v1.VolumeCapability + 109, // 96: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.ParametersEntry + 110, // 97: csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.mutable_parameters:type_name -> csi.v1.ValidateVolumeCapabilitiesResponse.Confirmed.MutableParametersEntry + 62, // 98: csi.v1.ListVolumesResponse.VolumeStatus.volume_condition:type_name -> csi.v1.VolumeCondition + 20, // 99: csi.v1.ListVolumesResponse.Entry.volume:type_name -> csi.v1.Volume + 111, // 100: csi.v1.ListVolumesResponse.Entry.status:type_name -> csi.v1.ListVolumesResponse.VolumeStatus + 62, // 101: csi.v1.ControllerGetVolumeResponse.VolumeStatus.volume_condition:type_name -> csi.v1.VolumeCondition + 4, // 102: csi.v1.ControllerServiceCapability.RPC.type:type_name -> csi.v1.ControllerServiceCapability.RPC.Type + 44, // 103: csi.v1.ListSnapshotsResponse.Entry.snapshot:type_name -> csi.v1.Snapshot + 6, // 104: csi.v1.NodeServiceCapability.RPC.type:type_name -> csi.v1.NodeServiceCapability.RPC.Type + 7, // 105: csi.v1.GroupControllerServiceCapability.RPC.type:type_name -> csi.v1.GroupControllerServiceCapability.RPC.Type + 142, // 106: csi.v1.alpha_enum:extendee -> google.protobuf.EnumOptions + 143, // 107: csi.v1.alpha_enum_value:extendee -> google.protobuf.EnumValueOptions + 144, // 108: csi.v1.csi_secret:extendee -> google.protobuf.FieldOptions + 144, // 109: csi.v1.alpha_field:extendee -> google.protobuf.FieldOptions + 145, // 110: csi.v1.alpha_message:extendee -> google.protobuf.MessageOptions + 146, // 111: csi.v1.alpha_method:extendee -> google.protobuf.MethodOptions + 147, // 112: csi.v1.alpha_service:extendee -> google.protobuf.ServiceOptions + 8, // 113: csi.v1.Identity.GetPluginInfo:input_type -> csi.v1.GetPluginInfoRequest + 10, // 114: csi.v1.Identity.GetPluginCapabilities:input_type -> csi.v1.GetPluginCapabilitiesRequest + 13, // 115: csi.v1.Identity.Probe:input_type -> csi.v1.ProbeRequest + 15, // 116: csi.v1.Controller.CreateVolume:input_type -> csi.v1.CreateVolumeRequest + 23, // 117: csi.v1.Controller.DeleteVolume:input_type -> csi.v1.DeleteVolumeRequest + 25, // 118: csi.v1.Controller.ControllerPublishVolume:input_type -> csi.v1.ControllerPublishVolumeRequest + 27, // 119: csi.v1.Controller.ControllerUnpublishVolume:input_type -> csi.v1.ControllerUnpublishVolumeRequest + 29, // 120: csi.v1.Controller.ValidateVolumeCapabilities:input_type -> csi.v1.ValidateVolumeCapabilitiesRequest + 31, // 121: csi.v1.Controller.ListVolumes:input_type -> csi.v1.ListVolumesRequest + 37, // 122: csi.v1.Controller.GetCapacity:input_type -> csi.v1.GetCapacityRequest + 39, // 123: csi.v1.Controller.ControllerGetCapabilities:input_type -> csi.v1.ControllerGetCapabilitiesRequest + 42, // 124: csi.v1.Controller.CreateSnapshot:input_type -> csi.v1.CreateSnapshotRequest + 45, // 125: csi.v1.Controller.DeleteSnapshot:input_type -> csi.v1.DeleteSnapshotRequest + 47, // 126: csi.v1.Controller.ListSnapshots:input_type -> csi.v1.ListSnapshotsRequest + 49, // 127: csi.v1.Controller.ControllerExpandVolume:input_type -> csi.v1.ControllerExpandVolumeRequest + 33, // 128: csi.v1.Controller.ControllerGetVolume:input_type -> csi.v1.ControllerGetVolumeRequest + 35, // 129: csi.v1.Controller.ControllerModifyVolume:input_type -> csi.v1.ControllerModifyVolumeRequest + 70, // 130: csi.v1.GroupController.GroupControllerGetCapabilities:input_type -> csi.v1.GroupControllerGetCapabilitiesRequest + 73, // 131: csi.v1.GroupController.CreateVolumeGroupSnapshot:input_type -> csi.v1.CreateVolumeGroupSnapshotRequest + 76, // 132: csi.v1.GroupController.DeleteVolumeGroupSnapshot:input_type -> csi.v1.DeleteVolumeGroupSnapshotRequest + 78, // 133: csi.v1.GroupController.GetVolumeGroupSnapshot:input_type -> csi.v1.GetVolumeGroupSnapshotRequest + 81, // 134: csi.v1.SnapshotMetadata.GetMetadataAllocated:input_type -> csi.v1.GetMetadataAllocatedRequest + 83, // 135: csi.v1.SnapshotMetadata.GetMetadataDelta:input_type -> csi.v1.GetMetadataDeltaRequest + 51, // 136: csi.v1.Node.NodeStageVolume:input_type -> csi.v1.NodeStageVolumeRequest + 53, // 137: csi.v1.Node.NodeUnstageVolume:input_type -> csi.v1.NodeUnstageVolumeRequest + 55, // 138: csi.v1.Node.NodePublishVolume:input_type -> csi.v1.NodePublishVolumeRequest + 57, // 139: csi.v1.Node.NodeUnpublishVolume:input_type -> csi.v1.NodeUnpublishVolumeRequest + 59, // 140: csi.v1.Node.NodeGetVolumeStats:input_type -> csi.v1.NodeGetVolumeStatsRequest + 68, // 141: csi.v1.Node.NodeExpandVolume:input_type -> csi.v1.NodeExpandVolumeRequest + 63, // 142: csi.v1.Node.NodeGetCapabilities:input_type -> csi.v1.NodeGetCapabilitiesRequest + 66, // 143: csi.v1.Node.NodeGetInfo:input_type -> csi.v1.NodeGetInfoRequest + 9, // 144: csi.v1.Identity.GetPluginInfo:output_type -> csi.v1.GetPluginInfoResponse + 11, // 145: csi.v1.Identity.GetPluginCapabilities:output_type -> csi.v1.GetPluginCapabilitiesResponse + 14, // 146: csi.v1.Identity.Probe:output_type -> csi.v1.ProbeResponse + 17, // 147: csi.v1.Controller.CreateVolume:output_type -> csi.v1.CreateVolumeResponse + 24, // 148: csi.v1.Controller.DeleteVolume:output_type -> csi.v1.DeleteVolumeResponse + 26, // 149: csi.v1.Controller.ControllerPublishVolume:output_type -> csi.v1.ControllerPublishVolumeResponse + 28, // 150: csi.v1.Controller.ControllerUnpublishVolume:output_type -> csi.v1.ControllerUnpublishVolumeResponse + 30, // 151: csi.v1.Controller.ValidateVolumeCapabilities:output_type -> csi.v1.ValidateVolumeCapabilitiesResponse + 32, // 152: csi.v1.Controller.ListVolumes:output_type -> csi.v1.ListVolumesResponse + 38, // 153: csi.v1.Controller.GetCapacity:output_type -> csi.v1.GetCapacityResponse + 40, // 154: csi.v1.Controller.ControllerGetCapabilities:output_type -> csi.v1.ControllerGetCapabilitiesResponse + 43, // 155: csi.v1.Controller.CreateSnapshot:output_type -> csi.v1.CreateSnapshotResponse + 46, // 156: csi.v1.Controller.DeleteSnapshot:output_type -> csi.v1.DeleteSnapshotResponse + 48, // 157: csi.v1.Controller.ListSnapshots:output_type -> csi.v1.ListSnapshotsResponse + 50, // 158: csi.v1.Controller.ControllerExpandVolume:output_type -> csi.v1.ControllerExpandVolumeResponse + 34, // 159: csi.v1.Controller.ControllerGetVolume:output_type -> csi.v1.ControllerGetVolumeResponse + 36, // 160: csi.v1.Controller.ControllerModifyVolume:output_type -> csi.v1.ControllerModifyVolumeResponse + 71, // 161: csi.v1.GroupController.GroupControllerGetCapabilities:output_type -> csi.v1.GroupControllerGetCapabilitiesResponse + 74, // 162: csi.v1.GroupController.CreateVolumeGroupSnapshot:output_type -> csi.v1.CreateVolumeGroupSnapshotResponse + 77, // 163: csi.v1.GroupController.DeleteVolumeGroupSnapshot:output_type -> csi.v1.DeleteVolumeGroupSnapshotResponse + 79, // 164: csi.v1.GroupController.GetVolumeGroupSnapshot:output_type -> csi.v1.GetVolumeGroupSnapshotResponse + 82, // 165: csi.v1.SnapshotMetadata.GetMetadataAllocated:output_type -> csi.v1.GetMetadataAllocatedResponse + 84, // 166: csi.v1.SnapshotMetadata.GetMetadataDelta:output_type -> csi.v1.GetMetadataDeltaResponse + 52, // 167: csi.v1.Node.NodeStageVolume:output_type -> csi.v1.NodeStageVolumeResponse + 54, // 168: csi.v1.Node.NodeUnstageVolume:output_type -> csi.v1.NodeUnstageVolumeResponse + 56, // 169: csi.v1.Node.NodePublishVolume:output_type -> csi.v1.NodePublishVolumeResponse + 58, // 170: csi.v1.Node.NodeUnpublishVolume:output_type -> csi.v1.NodeUnpublishVolumeResponse + 60, // 171: csi.v1.Node.NodeGetVolumeStats:output_type -> csi.v1.NodeGetVolumeStatsResponse + 69, // 172: csi.v1.Node.NodeExpandVolume:output_type -> csi.v1.NodeExpandVolumeResponse + 64, // 173: csi.v1.Node.NodeGetCapabilities:output_type -> csi.v1.NodeGetCapabilitiesResponse + 67, // 174: csi.v1.Node.NodeGetInfo:output_type -> csi.v1.NodeGetInfoResponse + 144, // [144:175] is the sub-list for method output_type + 113, // [113:144] is the sub-list for method input_type + 113, // [113:113] is the sub-list for extension type_name + 106, // [106:113] is the sub-list for extension extendee + 0, // [0:106] is the sub-list for field type_name +} + +func init() { file_csi_proto_init() } +func file_csi_proto_init() { + if File_csi_proto != nil { + return + } + file_csi_proto_msgTypes[4].OneofWrappers = []any{ + (*pluginCapability_Service_)(nil), + (*pluginCapability_VolumeExpansion_)(nil), + } + file_csi_proto_msgTypes[8].OneofWrappers = []any{ + (*volumeContentSource_Snapshot)(nil), + (*volumeContentSource_Volume)(nil), + } + file_csi_proto_msgTypes[10].OneofWrappers = []any{ + (*volumeCapability_Block)(nil), + (*volumeCapability_Mount)(nil), + } + file_csi_proto_msgTypes[33].OneofWrappers = []any{ + (*controllerServiceCapability_Rpc)(nil), + } + file_csi_proto_msgTypes[57].OneofWrappers = []any{ + (*nodeServiceCapability_Rpc)(nil), + } + file_csi_proto_msgTypes[64].OneofWrappers = []any{ + (*groupControllerServiceCapability_Rpc)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_csi_proto_rawDesc, + NumEnums: 8, + NumMessages: 131, + NumExtensions: 7, + NumServices: 5, + }, + GoTypes: file_csi_proto_goTypes, + DependencyIndexes: file_csi_proto_depIdxs, + EnumInfos: file_csi_proto_enumTypes, + MessageInfos: file_csi_proto_msgTypes, + ExtensionInfos: file_csi_proto_extTypes, + }.Build() + File_csi_proto = out.File + file_csi_proto_rawDesc = nil + file_csi_proto_goTypes = nil + file_csi_proto_depIdxs = nil +}