From 4673f4f5c47134bde9b6814f1bfb3d63aa45a694 Mon Sep 17 00:00:00 2001 From: David Zhu Date: Fri, 2 Feb 2018 15:02:14 -0800 Subject: [PATCH] NodeStageVolume modifications: added publish_volume_info to response. Changed credential naming. Added credentials to unstage. --- csi.proto | 31 +++- lib/go/csi/csi.pb.go | 344 ++++++++++++++++++++++++------------------- spec.md | 50 +++++-- 3 files changed, 252 insertions(+), 173 deletions(-) diff --git a/csi.proto b/csi.proto index 71af621f..b6f4b734 100644 --- a/csi.proto +++ b/csi.proto @@ -337,7 +337,7 @@ message ControllerPublishVolumeRequest { message ControllerPublishVolumeResponse { // The SP specific information that will be passed to the Plugin in - // the subsequent `NodeStageVolume` and `NodePublishVolume` calls + // the subsequent `NodeStageVolume` or `NodePublishVolume` calls // for the given volume. // This information is opaque to the CO. This field is OPTIONAL. map publish_info = 1; @@ -536,18 +536,18 @@ message NodeStageVolumeRequest { // This is a REQUIRED field. VolumeCapability volume_capability = 5; - // End user credentials used to authenticate/authorize node - // publish request. + // Credentials used by Node plugin to authenticate/authorize node + // stage request. // This field contains credential data, for example username and // password. Each key must consist of alphanumeric characters, '-', // '_' or '.'. Each value MUST contain a valid string. An SP MAY // choose to accept binary (non-string) data by using a binary-to-text // encoding scheme, like base64. An SP SHALL advertise the // requirements for credentials in documentation. COs SHALL permit - // users to pass through the required credentials. This information is + // passing through the required credentials. This information is // sensitive and MUST be treated as such (not logged, etc.) by the CO. // This field is OPTIONAL. - map user_credentials = 6; + map node_stage_credentials = 6; // Attributes of the volume to publish. This field is OPTIONAL and // MUST match the attributes of the VolumeInfo identified by @@ -555,7 +555,13 @@ message NodeStageVolumeRequest { map volume_attributes = 7; } -message NodeStageVolumeResponse {} +message NodeStageVolumeResponse { + // The SP specific information that will be passed to the Plugin in + // the subsequent `NodePublishVolume` calls + // for the given volume. + // This information is opaque to the CO. This field is OPTIONAL. + map publish_volume_info = 1; +} //////// //////// message NodeUnstageVolumeRequest { @@ -569,6 +575,19 @@ message NodeUnstageVolumeRequest { // path in the root filesystem of the process serving this request. // This is a REQUIRED field. string staging_target_path = 3; + + // Credentials used by Node plugin to authenticate/authorize node + // unstage request. + // This field contains credential data, for example username and + // password. Each key must consist of alphanumeric characters, '-', + // '_' or '.'. Each value MUST contain a valid string. An SP MAY + // choose to accept binary (non-string) data by using a binary-to-text + // encoding scheme, like base64. An SP SHALL advertise the + // requirements for credentials in documentation. COs SHALL permit + // passing through the required credentials. This information is + // sensitive and MUST be treated as such (not logged, etc.) by the CO. + // This field is OPTIONAL. + map node_unstage_credentials = 4; } message NodeUnstageVolumeResponse {} diff --git a/lib/go/csi/csi.pb.go b/lib/go/csi/csi.pb.go index ca15a2c6..6012e91a 100644 --- a/lib/go/csi/csi.pb.go +++ b/lib/go/csi/csi.pb.go @@ -430,7 +430,9 @@ func (m *VolumeCapability) String() string { return proto.CompactText func (*VolumeCapability) ProtoMessage() {} func (*VolumeCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } -type isVolumeCapability_AccessType interface{ isVolumeCapability_AccessType() } +type isVolumeCapability_AccessType interface { + isVolumeCapability_AccessType() +} type VolumeCapability_Block struct { Block *VolumeCapability_BlockVolume `protobuf:"bytes,1,opt,name=block,oneof"` @@ -828,7 +830,7 @@ func (m *ControllerPublishVolumeRequest) GetVolumeAttributes() map[string]string type ControllerPublishVolumeResponse struct { // The SP specific information that will be passed to the Plugin in - // the subsequent `NodeStageVolume` and `NodePublishVolume` calls + // the subsequent `NodeStageVolume` or `NodePublishVolume` calls // for the given volume. // This information is opaque to the CO. This field is OPTIONAL. PublishVolumeInfo map[string]string `protobuf:"bytes,1,rep,name=publish_volume_info,json=publishVolumeInfo" json:"publish_volume_info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` @@ -1239,7 +1241,9 @@ func (m *ControllerServiceCapability) String() string { return proto. func (*ControllerServiceCapability) ProtoMessage() {} func (*ControllerServiceCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } -type isControllerServiceCapability_Type interface{ isControllerServiceCapability_Type() } +type isControllerServiceCapability_Type interface { + isControllerServiceCapability_Type() +} type ControllerServiceCapability_Rpc struct { Rpc *ControllerServiceCapability_RPC `protobuf:"bytes,1,opt,name=rpc,oneof"` @@ -1356,18 +1360,18 @@ type NodeStageVolumeRequest struct { // The capability of the volume the CO expects the volume to have. // This is a REQUIRED field. VolumeCapability *VolumeCapability `protobuf:"bytes,5,opt,name=volume_capability,json=volumeCapability" json:"volume_capability,omitempty"` - // End user credentials used to authenticate/authorize node - // publish request. + // Credentials used by Node plugin to authenticate/authorize node + // stage request. // This field contains credential data, for example username and // password. Each key must consist of alphanumeric characters, '-', // '_' or '.'. Each value MUST contain a valid string. An SP MAY // choose to accept binary (non-string) data by using a binary-to-text // encoding scheme, like base64. An SP SHALL advertise the // requirements for credentials in documentation. COs SHALL permit - // users to pass through the required credentials. This information is + // passing through the required credentials. This information is // sensitive and MUST be treated as such (not logged, etc.) by the CO. // This field is OPTIONAL. - UserCredentials map[string]string `protobuf:"bytes,6,rep,name=user_credentials,json=userCredentials" json:"user_credentials,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + NodeStageCredentials map[string]string `protobuf:"bytes,6,rep,name=node_stage_credentials,json=nodeStageCredentials" json:"node_stage_credentials,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Attributes of the volume to publish. This field is OPTIONAL and // MUST match the attributes of the VolumeInfo identified by // `volume_id`. @@ -1414,9 +1418,9 @@ func (m *NodeStageVolumeRequest) GetVolumeCapability() *VolumeCapability { return nil } -func (m *NodeStageVolumeRequest) GetUserCredentials() map[string]string { +func (m *NodeStageVolumeRequest) GetNodeStageCredentials() map[string]string { if m != nil { - return m.UserCredentials + return m.NodeStageCredentials } return nil } @@ -1429,6 +1433,11 @@ func (m *NodeStageVolumeRequest) GetVolumeAttributes() map[string]string { } type NodeStageVolumeResponse struct { + // The SP specific information that will be passed to the Plugin in + // the subsequent `NodePublishVolume` calls + // for the given volume. + // This information is opaque to the CO. This field is OPTIONAL. + PublishVolumeInfo map[string]string `protobuf:"bytes,1,rep,name=publish_volume_info,json=publishVolumeInfo" json:"publish_volume_info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` } func (m *NodeStageVolumeResponse) Reset() { *m = NodeStageVolumeResponse{} } @@ -1436,6 +1445,13 @@ func (m *NodeStageVolumeResponse) String() string { return proto.Comp func (*NodeStageVolumeResponse) ProtoMessage() {} func (*NodeStageVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } +func (m *NodeStageVolumeResponse) GetPublishVolumeInfo() map[string]string { + if m != nil { + return m.PublishVolumeInfo + } + return nil +} + // ////// // ////// type NodeUnstageVolumeRequest struct { @@ -1447,6 +1463,18 @@ type NodeUnstageVolumeRequest struct { // path in the root filesystem of the process serving this request. // This is a REQUIRED field. StagingTargetPath string `protobuf:"bytes,3,opt,name=staging_target_path,json=stagingTargetPath" json:"staging_target_path,omitempty"` + // Credentials used by Node plugin to authenticate/authorize node + // unstage request. + // This field contains credential data, for example username and + // password. Each key must consist of alphanumeric characters, '-', + // '_' or '.'. Each value MUST contain a valid string. An SP MAY + // choose to accept binary (non-string) data by using a binary-to-text + // encoding scheme, like base64. An SP SHALL advertise the + // requirements for credentials in documentation. COs SHALL permit + // passing through the required credentials. This information is + // sensitive and MUST be treated as such (not logged, etc.) by the CO. + // This field is OPTIONAL. + NodeUnstageCredentials map[string]string `protobuf:"bytes,4,rep,name=node_unstage_credentials,json=nodeUnstageCredentials" json:"node_unstage_credentials,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` } func (m *NodeUnstageVolumeRequest) Reset() { *m = NodeUnstageVolumeRequest{} } @@ -1475,6 +1503,13 @@ func (m *NodeUnstageVolumeRequest) GetStagingTargetPath() string { return "" } +func (m *NodeUnstageVolumeRequest) GetNodeUnstageCredentials() map[string]string { + if m != nil { + return m.NodeUnstageCredentials + } + return nil +} + type NodeUnstageVolumeResponse struct { } @@ -1790,7 +1825,9 @@ func (m *NodeServiceCapability) String() string { return proto.Compac func (*NodeServiceCapability) ProtoMessage() {} func (*NodeServiceCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } -type isNodeServiceCapability_Type interface{ isNodeServiceCapability_Type() } +type isNodeServiceCapability_Type interface { + isNodeServiceCapability_Type() +} type NodeServiceCapability_Rpc struct { Rpc *NodeServiceCapability_RPC `protobuf:"bytes,1,opt,name=rpc,oneof"` @@ -2635,146 +2672,149 @@ var _Node_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("csi.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 2255 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x1a, 0x4d, 0x73, 0xe3, 0x48, - 0xd5, 0xb2, 0x9d, 0x0f, 0x3f, 0x8f, 0x33, 0x4e, 0xe7, 0xcb, 0x51, 0xbe, 0x3c, 0x9a, 0x9d, 0xd9, - 0x50, 0xc5, 0xba, 0x96, 0x2c, 0x55, 0x4c, 0x76, 0x76, 0x16, 0x12, 0xdb, 0x9b, 0x98, 0x49, 0x9c, - 0xa0, 0x38, 0x33, 0xb5, 0x2c, 0x8b, 0x51, 0xec, 0x4e, 0x46, 0x8c, 0x2d, 0x79, 0x25, 0x39, 0x35, - 0x2e, 0x8a, 0x1b, 0x37, 0xa8, 0xe2, 0xc0, 0x81, 0x1b, 0x1c, 0x38, 0x50, 0x5b, 0xc5, 0x8d, 0x82, - 0x3b, 0x70, 0xe5, 0x08, 0x77, 0xae, 0xcb, 0xaf, 0xd8, 0x52, 0x77, 0x4b, 0x6e, 0x49, 0x2d, 0x3b, - 0x9e, 0x9d, 0xcc, 0xc9, 0xd2, 0xfb, 0xea, 0xf7, 0xfa, 0x7d, 0xf4, 0x7b, 0x2d, 0x43, 0xa6, 0x65, - 0xeb, 0xa5, 0x9e, 0x65, 0x3a, 0x26, 0x4a, 0xb5, 0x6c, 0x5d, 0xd9, 0x80, 0xb5, 0x03, 0xec, 0x9c, - 0xf5, 0x7b, 0x3d, 0xd3, 0x72, 0x70, 0xfb, 0x19, 0xb6, 0x6c, 0xdd, 0x34, 0x6c, 0x15, 0x7f, 0xd1, - 0xc7, 0xb6, 0xa3, 0x7c, 0x06, 0xeb, 0x62, 0xb4, 0xdd, 0x33, 0x0d, 0x1b, 0xa3, 0xc7, 0x80, 0x6c, - 0x0f, 0xd9, 0xbc, 0x66, 0xd8, 0x82, 0x54, 0x4c, 0x6d, 0x67, 0x77, 0xee, 0x94, 0xdc, 0xb5, 0x18, - 0x8b, 0x3a, 0x6f, 0x87, 0x85, 0x28, 0x4f, 0x61, 0x86, 0x3d, 0xa3, 0x45, 0x98, 0xea, 0x6a, 0x3f, - 0x37, 0xad, 0x82, 0x54, 0x94, 0xb6, 0x73, 0x2a, 0x7d, 0x21, 0x50, 0xdd, 0x30, 0xad, 0x42, 0x92, - 0x41, 0xdd, 0x17, 0x17, 0xda, 0xd3, 0x9c, 0xd6, 0x8b, 0x42, 0x8a, 0x42, 0xc9, 0x8b, 0xf2, 0x31, - 0x2c, 0x1e, 0x60, 0xe7, 0xb4, 0xd3, 0xbf, 0xd2, 0x8d, 0x9a, 0x71, 0x69, 0x32, 0x0b, 0xd0, 0x43, - 0x98, 0x61, 0x7a, 0x11, 0xd9, 0x61, 0xb5, 0x3c, 0xa4, 0xf2, 0x5f, 0x09, 0x96, 0x42, 0x02, 0x98, - 0x8d, 0x08, 0xd2, 0x86, 0xd6, 0xc5, 0x84, 0x3d, 0xa3, 0x92, 0x67, 0xf4, 0x00, 0xe6, 0xae, 0xb1, - 0xd1, 0x36, 0x2d, 0xcf, 0x68, 0xa2, 0x62, 0x46, 0xcd, 0x51, 0xa8, 0x67, 0x56, 0x05, 0x66, 0xbb, - 0x9a, 0xa1, 0x5f, 0x62, 0xdb, 0x29, 0xa4, 0xc8, 0xa6, 0x6c, 0x93, 0xd5, 0x85, 0x0b, 0x95, 0x8e, - 0x19, 0x69, 0xd5, 0x70, 0xac, 0x81, 0xea, 0x73, 0xca, 0x8f, 0x21, 0x17, 0x40, 0xa1, 0x3c, 0xa4, - 0x5e, 0xe2, 0x01, 0x53, 0xc8, 0x7d, 0x74, 0xf7, 0xe4, 0x5a, 0xeb, 0xf4, 0x31, 0x53, 0x83, 0xbe, - 0x7c, 0x98, 0x7c, 0x24, 0x29, 0x7f, 0x49, 0xc3, 0x42, 0xd9, 0xc2, 0x9a, 0x83, 0x9f, 0x99, 0x9d, - 0x7e, 0x17, 0x4f, 0xb8, 0x2f, 0xbe, 0xf5, 0x49, 0xce, 0xfa, 0x5d, 0x98, 0x6b, 0x69, 0x3d, 0xad, - 0xa5, 0x3b, 0x83, 0xa6, 0xa5, 0x19, 0x57, 0x98, 0xb8, 0x22, 0xbb, 0x83, 0x88, 0x88, 0x32, 0x43, - 0xa9, 0x2e, 0x46, 0xcd, 0xb5, 0xf8, 0x57, 0xf4, 0x09, 0x2c, 0x5c, 0x13, 0x3d, 0x9a, 0x2e, 0xfc, - 0x42, 0xef, 0xe8, 0x8e, 0x8e, 0xed, 0x42, 0x9a, 0x6c, 0xce, 0x12, 0x55, 0x81, 0xe0, 0xcb, 0x1e, - 0x7a, 0xa0, 0xa2, 0xeb, 0x20, 0x44, 0xc7, 0x36, 0x3a, 0x04, 0xe8, 0x69, 0x96, 0xd6, 0xc5, 0x0e, - 0xb6, 0xec, 0xc2, 0x14, 0xb7, 0xb7, 0x02, 0x63, 0x4b, 0xa7, 0x3e, 0x29, 0xdd, 0x5b, 0x8e, 0x17, - 0xfd, 0x12, 0x36, 0x5a, 0xa6, 0xe1, 0x58, 0x66, 0xa7, 0x83, 0xad, 0x66, 0x8b, 0x70, 0xbb, 0x3f, - 0x6d, 0x6c, 0x38, 0xba, 0xd6, 0xb1, 0x0b, 0xd3, 0x44, 0xf8, 0x6e, 0xac, 0xf0, 0xb2, 0xcf, 0x4d, - 0xb1, 0xe5, 0x21, 0x2f, 0x5d, 0x6d, 0xad, 0x15, 0x4f, 0x21, 0x3f, 0x81, 0xbb, 0x21, 0xed, 0x26, - 0x71, 0xaf, 0x5c, 0x87, 0xe2, 0xb8, 0xf5, 0x27, 0x0a, 0x97, 0x43, 0x58, 0x0c, 0xda, 0xc8, 0x92, - 0xe0, 0x7d, 0xc8, 0x32, 0xbf, 0xe9, 0xc6, 0xa5, 0xc9, 0x42, 0xe6, 0x2e, 0xe7, 0x2f, 0x12, 0xc9, - 0x70, 0xed, 0x3f, 0x2b, 0x7f, 0x48, 0x43, 0x3e, 0xec, 0x4a, 0xb4, 0x0b, 0x53, 0x17, 0x1d, 0xb3, - 0xf5, 0x92, 0x09, 0xb8, 0x27, 0x74, 0x78, 0x69, 0xdf, 0x25, 0xa1, 0xd0, 0xc3, 0x84, 0x4a, 0x39, - 0x5c, 0xd6, 0xae, 0xd9, 0x37, 0x1c, 0xa2, 0x73, 0x2c, 0xeb, 0xb1, 0x4b, 0x32, 0x64, 0x25, 0x1c, - 0x68, 0x0f, 0xb2, 0x5a, 0xab, 0x85, 0x6d, 0xbb, 0xd9, 0x35, 0xdb, 0x5e, 0xb0, 0x16, 0xc5, 0x02, - 0xf6, 0x08, 0xe1, 0xb1, 0xd9, 0xc6, 0x2a, 0x68, 0xfe, 0xb3, 0x9c, 0x83, 0x2c, 0xa7, 0x95, 0x7c, - 0x00, 0x59, 0x6e, 0x25, 0xb4, 0x02, 0x33, 0x97, 0x76, 0xd3, 0x19, 0xf4, 0xbc, 0x2a, 0x31, 0x7d, - 0x69, 0x37, 0x06, 0x3d, 0x8c, 0xb6, 0x20, 0x4b, 0x54, 0x68, 0x5e, 0x76, 0xb4, 0x2b, 0xbb, 0x90, - 0x2c, 0xa6, 0xb6, 0x33, 0x2a, 0x10, 0xd0, 0x27, 0x2e, 0x44, 0xfe, 0x4a, 0x02, 0x18, 0x2e, 0x89, - 0x76, 0x21, 0x4d, 0x54, 0x74, 0xa5, 0xcc, 0xed, 0x3c, 0x18, 0xa7, 0x62, 0x89, 0xe8, 0x49, 0x58, - 0x94, 0x3f, 0x4a, 0x90, 0x26, 0x32, 0xb2, 0x30, 0x73, 0x5e, 0x7f, 0x5a, 0x3f, 0x79, 0x5e, 0xcf, - 0x27, 0xd0, 0x32, 0xa0, 0xb3, 0x5a, 0xfd, 0xe0, 0xa8, 0xda, 0xac, 0x9f, 0x54, 0xaa, 0xcd, 0xe7, - 0x6a, 0xad, 0x51, 0x55, 0xf3, 0x12, 0x5a, 0x83, 0x15, 0x1e, 0xae, 0x56, 0xf7, 0x2a, 0x55, 0xb5, - 0x79, 0x52, 0x3f, 0xfa, 0x34, 0x9f, 0x44, 0x32, 0x2c, 0x1f, 0x9f, 0x1f, 0x35, 0x6a, 0x51, 0x5c, - 0x0a, 0xad, 0x43, 0x81, 0xc3, 0x31, 0x19, 0x4c, 0x6c, 0xda, 0x15, 0xcb, 0x61, 0xe9, 0x23, 0x43, - 0x4e, 0xed, 0xe7, 0x7c, 0x37, 0xb8, 0x3b, 0xa5, 0x3c, 0x87, 0x5c, 0xa0, 0x54, 0xb8, 0x45, 0xd5, - 0xc2, 0x5f, 0xf4, 0x75, 0x0b, 0xb7, 0x9b, 0x17, 0x03, 0x07, 0xdb, 0x64, 0x1b, 0xd2, 0x6a, 0xce, - 0x83, 0xee, 0xbb, 0x40, 0x77, 0x4f, 0x3b, 0x7a, 0x57, 0x77, 0x18, 0x4d, 0x92, 0xd0, 0x00, 0x01, - 0x11, 0x02, 0xe5, 0x5f, 0x12, 0xc0, 0x30, 0x28, 0x5d, 0xb1, 0x7e, 0xb5, 0x0a, 0x88, 0xf5, 0xa0, - 0x54, 0xec, 0x1c, 0x24, 0xf5, 0x36, 0x4b, 0x88, 0xa4, 0xde, 0x46, 0xdf, 0x07, 0xd0, 0x1c, 0xc7, - 0xd2, 0x2f, 0xfa, 0x2e, 0x0b, 0xad, 0xde, 0x5b, 0xa1, 0x80, 0x2f, 0xed, 0xf9, 0x14, 0xac, 0xb0, - 0x0c, 0x59, 0xdc, 0xcc, 0x0e, 0xa1, 0x27, 0xca, 0xc4, 0x2f, 0x93, 0xb0, 0x50, 0xc1, 0x1d, 0xfc, - 0xba, 0x85, 0x7b, 0x0d, 0x32, 0x5e, 0xc6, 0x7a, 0x66, 0xcd, 0xb2, 0xf4, 0x6c, 0x87, 0x8a, 0x5e, - 0x9b, 0x2c, 0x13, 0x28, 0x7a, 0x29, 0xae, 0xe8, 0x09, 0xb4, 0xe0, 0x8a, 0x1e, 0xc5, 0x8e, 0x2a, - 0x7a, 0x11, 0x8a, 0x60, 0xd5, 0x12, 0x0b, 0x98, 0x68, 0xaf, 0x96, 0x61, 0x31, 0xa8, 0x24, 0xad, - 0x5a, 0xca, 0xff, 0xd3, 0xb0, 0x39, 0x5c, 0xe8, 0xb4, 0x7f, 0xd1, 0xd1, 0xed, 0x17, 0xb7, 0xb0, - 0x9d, 0x2b, 0x30, 0x63, 0x98, 0x6d, 0x82, 0x4a, 0xd1, 0xfc, 0x77, 0x5f, 0x6b, 0x6d, 0xb4, 0x0f, - 0xf3, 0xe1, 0xe3, 0x6e, 0x50, 0x48, 0x93, 0x75, 0x62, 0x0e, 0xbb, 0xfc, 0x75, 0xb8, 0x66, 0xca, - 0x30, 0x6b, 0x61, 0xad, 0x6d, 0x1a, 0x9d, 0x41, 0x61, 0xaa, 0x28, 0x6d, 0xcf, 0xaa, 0xfe, 0x3b, - 0xfa, 0xb5, 0x04, 0x9b, 0x9c, 0x23, 0x7b, 0xd4, 0x42, 0xc1, 0xf1, 0x55, 0xa5, 0xc7, 0xd7, 0xc8, - 0xbd, 0x88, 0xa2, 0x23, 0x5e, 0x5d, 0x6f, 0x8d, 0x20, 0x41, 0x97, 0xbe, 0xb5, 0x5c, 0xe6, 0xcc, - 0xf0, 0xc7, 0xe7, 0xe8, 0xf5, 0xe9, 0x5b, 0x38, 0xa7, 0xd8, 0x8e, 0x0c, 0xc1, 0xf2, 0x09, 0xdc, - 0x1b, 0xab, 0xea, 0x44, 0xa7, 0x68, 0x19, 0x96, 0x84, 0x6b, 0x4f, 0x14, 0x84, 0xff, 0x91, 0x60, - 0x2b, 0xd6, 0x40, 0x76, 0x8c, 0xbe, 0x84, 0x05, 0xcf, 0x47, 0xc1, 0xe3, 0xd4, 0xdd, 0xa3, 0xc7, - 0xa3, 0xf7, 0x88, 0x75, 0x89, 0x01, 0xa8, 0x5b, 0x84, 0xe8, 0x2e, 0xcd, 0xf7, 0xc2, 0x70, 0xb9, - 0x02, 0xcb, 0x62, 0xe2, 0x89, 0xcc, 0xfa, 0x2a, 0xc9, 0x27, 0xeb, 0xb9, 0xd1, 0x7b, 0xfb, 0x59, - 0xf4, 0x3b, 0x09, 0x8a, 0x5c, 0x94, 0xf7, 0x0d, 0x51, 0x9c, 0xd3, 0x16, 0xb2, 0x16, 0xda, 0x43, - 0xb1, 0xbe, 0x22, 0x82, 0x48, 0xac, 0x73, 0x89, 0x25, 0x22, 0x92, 0x7f, 0x04, 0xf7, 0x6f, 0x20, - 0x66, 0xa2, 0xbd, 0xbe, 0xcf, 0x07, 0x76, 0x44, 0x75, 0x56, 0xd4, 0xfe, 0x97, 0x84, 0x7b, 0xcf, - 0xb4, 0x8e, 0xde, 0xf6, 0xbb, 0x34, 0xbe, 0x33, 0x7e, 0xa3, 0x1e, 0x89, 0xe9, 0xd6, 0x53, 0x93, - 0x76, 0xeb, 0xba, 0xa8, 0x30, 0x50, 0x87, 0x7d, 0x44, 0xa5, 0x8c, 0xb3, 0xe7, 0xc6, 0xb5, 0xe1, - 0x8d, 0xa4, 0xf2, 0x4f, 0x40, 0x19, 0xa5, 0x11, 0x4b, 0xe6, 0x75, 0xc8, 0xf8, 0x43, 0x2d, 0x91, - 0x3b, 0xab, 0x0e, 0x01, 0xa8, 0x00, 0x33, 0x5d, 0x6c, 0xdb, 0xda, 0x95, 0x27, 0xdf, 0x7b, 0x55, - 0x7e, 0x25, 0x01, 0x3a, 0xd2, 0x6d, 0xd6, 0x3c, 0x4e, 0xec, 0x31, 0xb7, 0xa7, 0xd4, 0x5e, 0x35, - 0xb1, 0xe1, 0x58, 0x3a, 0xeb, 0x7f, 0x72, 0x2a, 0x74, 0xb5, 0x57, 0x55, 0x0a, 0x71, 0x1b, 0x1e, - 0xdb, 0xd1, 0x2c, 0x47, 0x37, 0xae, 0x9a, 0x8e, 0xf9, 0x12, 0x1b, 0x2c, 0x9d, 0x72, 0x1e, 0xb4, - 0xe1, 0x02, 0x95, 0x2f, 0x25, 0x58, 0x08, 0xa8, 0xc1, 0xcc, 0x7a, 0x04, 0x33, 0x9e, 0x6c, 0x5a, - 0x97, 0x36, 0x89, 0x1e, 0x02, 0xd2, 0x12, 0x75, 0x82, 0x47, 0x8e, 0x36, 0x00, 0x0c, 0xfc, 0xca, - 0x61, 0x8b, 0x52, 0xab, 0x33, 0x2e, 0x84, 0x2c, 0x28, 0xef, 0xc2, 0x14, 0x75, 0xc5, 0xe4, 0xc3, - 0xc4, 0x6f, 0x92, 0x80, 0x0e, 0xb0, 0xe3, 0xf7, 0x8b, 0x13, 0x6e, 0x59, 0x4c, 0x1c, 0x27, 0x27, - 0x8d, 0xe3, 0x83, 0xc0, 0xd4, 0x49, 0xd3, 0xe0, 0x5d, 0x6f, 0xa2, 0x0f, 0x29, 0x37, 0x6a, 0xe8, - 0xfc, 0x86, 0x53, 0x9f, 0x52, 0x81, 0x85, 0xc0, 0x82, 0xcc, 0x73, 0xef, 0x01, 0xd2, 0xae, 0x35, - 0xbd, 0xa3, 0x5d, 0x74, 0xa8, 0xa5, 0x2e, 0x96, 0x75, 0xbb, 0xf3, 0x3e, 0xc6, 0x63, 0x53, 0x7e, - 0x00, 0xcb, 0xdc, 0x61, 0x63, 0x99, 0x17, 0x93, 0x96, 0x73, 0x65, 0x15, 0x56, 0x22, 0x12, 0x58, - 0x95, 0xfa, 0x21, 0x7f, 0x6a, 0x30, 0x65, 0x5f, 0xb3, 0x46, 0x29, 0x3a, 0x5f, 0x16, 0x23, 0xb2, - 0x98, 0xf1, 0x15, 0xb8, 0x23, 0x70, 0x6e, 0x31, 0x74, 0x1e, 0x9c, 0x61, 0xeb, 0x5a, 0x6f, 0xf1, - 0x7e, 0x0e, 0x70, 0x29, 0xbf, 0x4f, 0xc2, 0xda, 0x08, 0x6a, 0xf4, 0x08, 0x52, 0x56, 0xaf, 0xc5, - 0xd4, 0x7d, 0x67, 0x9c, 0xf0, 0x92, 0x7a, 0x5a, 0x3e, 0x4c, 0xa8, 0x2e, 0x8b, 0xfc, 0x37, 0x09, - 0x52, 0xea, 0x69, 0x19, 0x3d, 0x81, 0xb4, 0x3f, 0x28, 0xce, 0xed, 0x7c, 0xeb, 0x26, 0x22, 0x4a, - 0xee, 0x2c, 0xa9, 0x12, 0x36, 0xc5, 0x84, 0x34, 0x99, 0x2c, 0x03, 0x53, 0x5e, 0x01, 0x16, 0xcb, - 0x6a, 0x75, 0xaf, 0x51, 0x6d, 0x56, 0xaa, 0x47, 0xd5, 0x46, 0xb5, 0xf9, 0xec, 0xe4, 0xe8, 0xfc, - 0xb8, 0x9a, 0x97, 0xdc, 0x71, 0xed, 0xf4, 0x7c, 0xff, 0xa8, 0x76, 0x76, 0xd8, 0x3c, 0xaf, 0x7b, - 0x4f, 0x0c, 0x9b, 0x44, 0x79, 0xb8, 0x73, 0x54, 0x3b, 0x6b, 0x30, 0xc0, 0x59, 0x3e, 0xe5, 0x42, - 0x0e, 0xaa, 0x8d, 0x66, 0x79, 0xef, 0x74, 0xaf, 0x5c, 0x6b, 0x7c, 0x9a, 0x4f, 0xef, 0x4f, 0x53, - 0x7d, 0x95, 0x7f, 0x4c, 0xc1, 0x72, 0xdd, 0x6c, 0xe3, 0x33, 0x47, 0xbb, 0xba, 0x8d, 0x91, 0xe4, - 0x42, 0xdc, 0x1a, 0xd1, 0x24, 0xdb, 0x21, 0x02, 0xc5, 0xcb, 0xdf, 0xbc, 0x23, 0x42, 0x25, 0x58, - 0xb0, 0x1d, 0xed, 0x8a, 0x14, 0x46, 0xcd, 0xba, 0xc2, 0x4e, 0xb3, 0xa7, 0x39, 0x2f, 0x48, 0x43, - 0x9e, 0x51, 0xe7, 0x19, 0xaa, 0x41, 0x30, 0xa7, 0x9a, 0xf3, 0x42, 0xdc, 0xbe, 0x4f, 0x4d, 0xd6, - 0xbe, 0x7f, 0x06, 0xf9, 0xbe, 0x4d, 0x6f, 0x96, 0x42, 0x3d, 0xf9, 0xfb, 0xa3, 0x8c, 0x3a, 0xb7, - 0xc9, 0x7d, 0x4e, 0xb0, 0x25, 0xb9, 0xdb, 0x0f, 0x42, 0xd1, 0x4f, 0xe3, 0x3b, 0xee, 0xef, 0x8c, - 0x92, 0x7e, 0xd3, 0xd3, 0xf4, 0x8d, 0xb4, 0x90, 0xf2, 0x3e, 0x2c, 0x8a, 0xcc, 0x79, 0xfb, 0x2d, - 0xfa, 0x2a, 0xac, 0x44, 0x36, 0x84, 0xd5, 0xab, 0xdf, 0x4a, 0x50, 0x70, 0x71, 0xe7, 0x86, 0x7d, - 0x4b, 0x01, 0x1e, 0x13, 0x7c, 0xa9, 0x98, 0xe0, 0x53, 0xd6, 0x60, 0x55, 0xa0, 0x10, 0x53, 0xf7, - 0x4f, 0xd3, 0x54, 0xdd, 0xdb, 0x9b, 0x69, 0xdb, 0xa3, 0xf2, 0xf1, 0xbb, 0x7e, 0x70, 0x09, 0x07, - 0xb9, 0xdb, 0xcb, 0xc8, 0x2d, 0xc8, 0xf2, 0x74, 0x53, 0x84, 0x0e, 0x9c, 0x31, 0x29, 0x3b, 0xfd, - 0xfa, 0x13, 0xf7, 0x4c, 0x68, 0xe2, 0xb6, 0xa1, 0x40, 0x86, 0x14, 0xd1, 0x08, 0x32, 0xcb, 0x8d, - 0xba, 0xb1, 0x7b, 0xc3, 0x21, 0x22, 0xf9, 0xbd, 0x6c, 0x08, 0x91, 0xe8, 0x67, 0xa2, 0x34, 0xcf, - 0x90, 0xd5, 0x3e, 0x18, 0xbd, 0xda, 0xdb, 0x4d, 0xf4, 0x1a, 0xac, 0x8d, 0x30, 0xef, 0xed, 0xe7, - 0x3b, 0x4b, 0x21, 0xe1, 0x20, 0xad, 0xfc, 0x3b, 0x09, 0x32, 0x4d, 0xb0, 0xdb, 0x1b, 0x69, 0x43, - 0xe1, 0x9a, 0x8a, 0x84, 0xeb, 0x2f, 0x40, 0x26, 0xe1, 0x34, 0x6a, 0xa6, 0x7d, 0xe2, 0xbb, 0x38, - 0x66, 0x9a, 0x0d, 0xa0, 0x22, 0x41, 0x45, 0xe2, 0x55, 0x38, 0xc1, 0x3e, 0x85, 0x8d, 0x91, 0xac, - 0x13, 0xed, 0xf5, 0x06, 0xf5, 0x7d, 0xdc, 0xd4, 0xfa, 0x21, 0xe4, 0x0f, 0xb0, 0xe3, 0x52, 0xd4, - 0x2a, 0x93, 0xf6, 0x7f, 0xdf, 0x86, 0x79, 0x8e, 0x97, 0xf5, 0x7b, 0xdc, 0x6d, 0x81, 0xc4, 0xdf, - 0x16, 0xb8, 0x2b, 0x11, 0xa7, 0xbf, 0x4e, 0x43, 0xbb, 0x00, 0xf3, 0x1c, 0x2f, 0x53, 0xbd, 0x42, - 0xe3, 0xe4, 0x1b, 0x36, 0xb1, 0x9f, 0xd3, 0xfd, 0x89, 0x6b, 0x5f, 0x3f, 0x0e, 0xb5, 0xaf, 0x74, - 0xf4, 0x92, 0x87, 0x87, 0xf8, 0x98, 0xc6, 0xf5, 0x9f, 0x12, 0x2c, 0x09, 0xe9, 0xd0, 0x0e, 0xdf, - 0xb2, 0x6e, 0xc6, 0x0b, 0xe4, 0x9b, 0xd5, 0x2e, 0xed, 0x55, 0xbf, 0x17, 0xe8, 0x55, 0xef, 0x8f, - 0xe6, 0xe5, 0xbb, 0xd4, 0xf7, 0x62, 0xba, 0xd4, 0xb3, 0xc6, 0xde, 0x41, 0xb5, 0x79, 0x5e, 0xa7, - 0xbf, 0x5e, 0x97, 0xea, 0xf5, 0x98, 0x3b, 0x7f, 0x95, 0x60, 0xb6, 0x46, 0x42, 0xd0, 0x19, 0xa0, - 0xcf, 0xc9, 0x17, 0xdd, 0xc8, 0xb7, 0x67, 0x54, 0xf4, 0x06, 0xae, 0xb8, 0xaf, 0xd6, 0xf2, 0xbd, - 0x11, 0x14, 0xcc, 0xa7, 0x09, 0x74, 0x08, 0xb9, 0xc0, 0x67, 0x58, 0xb4, 0x2a, 0xfa, 0x34, 0x4b, - 0x05, 0xca, 0xf1, 0x5f, 0x6d, 0x95, 0xc4, 0xce, 0x9f, 0xa7, 0x01, 0x86, 0x1d, 0x3c, 0xaa, 0xc2, - 0x1d, 0xfe, 0x13, 0x1a, 0x2a, 0xc4, 0x7d, 0x39, 0x94, 0x57, 0x05, 0x18, 0x5f, 0xbf, 0x2a, 0xdc, - 0xe1, 0xef, 0xb4, 0x99, 0x18, 0xc1, 0x5d, 0x3c, 0x13, 0x23, 0xbc, 0x00, 0x4f, 0xa0, 0xcb, 0xc0, - 0x88, 0xc6, 0xa7, 0x26, 0xba, 0x7f, 0x83, 0x3b, 0x59, 0xf9, 0x9d, 0x9b, 0x5c, 0x4a, 0x2a, 0x09, - 0xd4, 0x81, 0xd5, 0xd8, 0xab, 0x2b, 0xf4, 0xe0, 0x46, 0xb7, 0x72, 0xf2, 0xc3, 0x71, 0x64, 0xfe, - 0x6a, 0x26, 0xc8, 0xf1, 0x17, 0x34, 0xe8, 0xe1, 0xcd, 0xee, 0x94, 0xe4, 0x77, 0xc7, 0xd2, 0xf9, - 0x0b, 0xee, 0x43, 0x96, 0xbb, 0x00, 0x41, 0x2b, 0xd1, 0x2b, 0x11, 0x2a, 0xb2, 0x10, 0x77, 0x57, - 0x42, 0x65, 0x70, 0x53, 0x3b, 0x93, 0x11, 0xbd, 0x38, 0x60, 0x32, 0x04, 0x03, 0xbe, 0x92, 0x40, - 0x75, 0xb8, 0x1b, 0x9a, 0xb8, 0xd1, 0x5a, 0xd8, 0x43, 0x5c, 0xe1, 0x93, 0xd7, 0xc5, 0x48, 0xb1, - 0xdb, 0x42, 0xb5, 0x29, 0xe2, 0x36, 0x71, 0x05, 0x8c, 0xb8, 0x2d, 0xa6, 0xc4, 0x29, 0x89, 0x9d, - 0xbf, 0xa7, 0x21, 0xed, 0xd6, 0x0f, 0xd7, 0x8c, 0x50, 0x23, 0xce, 0xcc, 0x10, 0xcf, 0x2b, 0xcc, - 0x8c, 0xb8, 0xde, 0x3d, 0x81, 0x1a, 0xb4, 0x6e, 0x07, 0x7a, 0x65, 0xb4, 0xc1, 0x9d, 0x9b, 0xd1, - 0xa6, 0x5e, 0xde, 0x8c, 0x43, 0x87, 0xa5, 0x06, 0xb3, 0x66, 0x63, 0x64, 0xc3, 0xc5, 0x49, 0x8d, - 0xcb, 0x94, 0x1f, 0xc3, 0x82, 0xe0, 0xa0, 0x44, 0x5b, 0x63, 0x4e, 0x79, 0xb9, 0x18, 0x4f, 0xe0, - 0xcb, 0xfe, 0x08, 0x32, 0xfe, 0x49, 0x89, 0x96, 0xbc, 0x38, 0x0a, 0x9c, 0xba, 0xf2, 0x72, 0x18, - 0xcc, 0x73, 0xfb, 0xa7, 0x1f, 0xe3, 0x0e, 0x9f, 0xa4, 0x8c, 0x3b, 0x7a, 0x48, 0xfa, 0x76, 0x85, - 0x83, 0x68, 0x68, 0x57, 0x4c, 0xf8, 0x14, 0xe3, 0x09, 0x3c, 0xd9, 0x17, 0xd3, 0xe4, 0x2f, 0x4b, - 0x1f, 0x7c, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xc1, 0xd5, 0x74, 0x87, 0xbf, 0x24, 0x00, 0x00, + // 2297 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3a, 0xcd, 0x73, 0xe3, 0x48, + 0xf5, 0x96, 0xed, 0x7c, 0xf8, 0x79, 0x3c, 0xe3, 0x74, 0x32, 0x89, 0x47, 0xf9, 0xf2, 0x68, 0x76, + 0x66, 0xf3, 0xab, 0xfa, 0xad, 0x0b, 0xb2, 0x50, 0x4c, 0x76, 0x76, 0x16, 0x12, 0xdb, 0xeb, 0x98, + 0x49, 0x9c, 0xa0, 0x38, 0x33, 0xb5, 0xc0, 0x62, 0x14, 0xbb, 0x93, 0x11, 0xb1, 0x25, 0xaf, 0x24, + 0xa7, 0xc6, 0x45, 0x71, 0xe3, 0x06, 0x37, 0x0e, 0xdc, 0xe0, 0xc0, 0x81, 0xda, 0x2a, 0x6e, 0x14, + 0xfc, 0x01, 0xc0, 0x91, 0x2a, 0x2e, 0xc0, 0x99, 0xeb, 0xf2, 0x57, 0x50, 0xea, 0x6e, 0xc9, 0x2d, + 0xa9, 0x65, 0xc7, 0x33, 0x93, 0x85, 0x93, 0xa5, 0xf7, 0xd5, 0xaf, 0x5f, 0xbf, 0xf7, 0xfa, 0xbd, + 0x27, 0x43, 0xa6, 0x6d, 0xeb, 0xa5, 0xbe, 0x65, 0x3a, 0x26, 0x4a, 0xb5, 0x6d, 0x5d, 0x59, 0x87, + 0xd5, 0x1a, 0x76, 0x4e, 0x06, 0xfd, 0xbe, 0x69, 0x39, 0xb8, 0xf3, 0x1c, 0x5b, 0xb6, 0x6e, 0x1a, + 0xb6, 0x8a, 0x3f, 0x1b, 0x60, 0xdb, 0x51, 0xbe, 0x07, 0x6b, 0x62, 0xb4, 0xdd, 0x37, 0x0d, 0x1b, + 0xa3, 0x27, 0x80, 0x6c, 0x0f, 0xd9, 0xba, 0x62, 0xd8, 0x82, 0x54, 0x4c, 0x6d, 0x65, 0xb7, 0x6f, + 0x95, 0xdc, 0xb5, 0x18, 0x8b, 0xba, 0x60, 0x87, 0x85, 0x28, 0xcf, 0x60, 0x8e, 0x3d, 0xa3, 0x25, + 0x98, 0xe9, 0x69, 0x3f, 0x32, 0xad, 0x82, 0x54, 0x94, 0xb6, 0x72, 0x2a, 0x7d, 0x21, 0x50, 0xdd, + 0x30, 0xad, 0x42, 0x92, 0x41, 0xdd, 0x17, 0x17, 0xda, 0xd7, 0x9c, 0xf6, 0xcb, 0x42, 0x8a, 0x42, + 0xc9, 0x8b, 0xf2, 0x11, 0x2c, 0xd5, 0xb0, 0x73, 0xdc, 0x1d, 0x5c, 0xe8, 0x46, 0xdd, 0x38, 0x37, + 0xd9, 0x0e, 0xd0, 0x23, 0x98, 0x63, 0x7a, 0x11, 0xd9, 0x61, 0xb5, 0x3c, 0xa4, 0xf2, 0x0f, 0x09, + 0xee, 0x86, 0x04, 0xb0, 0x3d, 0x22, 0x48, 0x1b, 0x5a, 0x0f, 0x13, 0xf6, 0x8c, 0x4a, 0x9e, 0xd1, + 0x43, 0xb8, 0x7d, 0x85, 0x8d, 0x8e, 0x69, 0x79, 0x9b, 0x26, 0x2a, 0x66, 0xd4, 0x1c, 0x85, 0x7a, + 0xdb, 0xaa, 0xc0, 0x7c, 0x4f, 0x33, 0xf4, 0x73, 0x6c, 0x3b, 0x85, 0x14, 0x31, 0xca, 0x16, 0x59, + 0x5d, 0xb8, 0x50, 0xe9, 0x90, 0x91, 0x56, 0x0d, 0xc7, 0x1a, 0xaa, 0x3e, 0xa7, 0xfc, 0x04, 0x72, + 0x01, 0x14, 0xca, 0x43, 0xea, 0x12, 0x0f, 0x99, 0x42, 0xee, 0xa3, 0x6b, 0x93, 0x2b, 0xad, 0x3b, + 0xc0, 0x4c, 0x0d, 0xfa, 0xf2, 0x41, 0xf2, 0xb1, 0xa4, 0xfc, 0x2e, 0x0d, 0x8b, 0x65, 0x0b, 0x6b, + 0x0e, 0x7e, 0x6e, 0x76, 0x07, 0x3d, 0x3c, 0xa5, 0x5d, 0xfc, 0xdd, 0x27, 0xb9, 0xdd, 0xef, 0xc0, + 0xed, 0xb6, 0xd6, 0xd7, 0xda, 0xba, 0x33, 0x6c, 0x59, 0x9a, 0x71, 0x81, 0xc9, 0x51, 0x64, 0xb7, + 0x11, 0x11, 0x51, 0x66, 0x28, 0xd5, 0xc5, 0xa8, 0xb9, 0x36, 0xff, 0x8a, 0x3e, 0x86, 0xc5, 0x2b, + 0xa2, 0x47, 0xcb, 0x85, 0x9f, 0xe9, 0x5d, 0xdd, 0xd1, 0xb1, 0x5d, 0x48, 0x13, 0xe3, 0xdc, 0xa5, + 0x2a, 0x10, 0x7c, 0xd9, 0x43, 0x0f, 0x55, 0x74, 0x15, 0x84, 0xe8, 0xd8, 0x46, 0xfb, 0x00, 0x7d, + 0xcd, 0xd2, 0x7a, 0xd8, 0xc1, 0x96, 0x5d, 0x98, 0xe1, 0x6c, 0x2b, 0xd8, 0x6c, 0xe9, 0xd8, 0x27, + 0xa5, 0xb6, 0xe5, 0x78, 0xd1, 0x4f, 0x60, 0xbd, 0x6d, 0x1a, 0x8e, 0x65, 0x76, 0xbb, 0xd8, 0x6a, + 0xb5, 0x09, 0xb7, 0xfb, 0xd3, 0xc1, 0x86, 0xa3, 0x6b, 0x5d, 0xbb, 0x30, 0x4b, 0x84, 0xef, 0xc4, + 0x0a, 0x2f, 0xfb, 0xdc, 0x14, 0x5b, 0x1e, 0xf1, 0xd2, 0xd5, 0x56, 0xdb, 0xf1, 0x14, 0xf2, 0x53, + 0xb8, 0x13, 0xd2, 0x6e, 0x9a, 0xe3, 0x95, 0x1b, 0x50, 0x9c, 0xb4, 0xfe, 0x54, 0xee, 0xb2, 0x0f, + 0x4b, 0xc1, 0x3d, 0xb2, 0x20, 0xf8, 0x0a, 0x64, 0xd9, 0xb9, 0xe9, 0xc6, 0xb9, 0xc9, 0x5c, 0xe6, + 0x0e, 0x77, 0x5e, 0xc4, 0x93, 0xe1, 0xca, 0x7f, 0x56, 0x7e, 0x95, 0x86, 0x7c, 0xf8, 0x28, 0xd1, + 0x0e, 0xcc, 0x9c, 0x75, 0xcd, 0xf6, 0x25, 0x13, 0x70, 0x5f, 0x78, 0xe0, 0xa5, 0x3d, 0x97, 0x84, + 0x42, 0xf7, 0x13, 0x2a, 0xe5, 0x70, 0x59, 0x7b, 0xe6, 0xc0, 0x70, 0x88, 0xce, 0xb1, 0xac, 0x87, + 0x2e, 0xc9, 0x88, 0x95, 0x70, 0xa0, 0x5d, 0xc8, 0x6a, 0xed, 0x36, 0xb6, 0xed, 0x56, 0xcf, 0xec, + 0x78, 0xce, 0x5a, 0x14, 0x0b, 0xd8, 0x25, 0x84, 0x87, 0x66, 0x07, 0xab, 0xa0, 0xf9, 0xcf, 0x72, + 0x0e, 0xb2, 0x9c, 0x56, 0x72, 0x0d, 0xb2, 0xdc, 0x4a, 0x68, 0x05, 0xe6, 0xce, 0xed, 0x96, 0x33, + 0xec, 0x7b, 0x59, 0x62, 0xf6, 0xdc, 0x6e, 0x0e, 0xfb, 0x18, 0x6d, 0x42, 0x96, 0xa8, 0xd0, 0x3a, + 0xef, 0x6a, 0x17, 0x76, 0x21, 0x59, 0x4c, 0x6d, 0x65, 0x54, 0x20, 0xa0, 0x8f, 0x5d, 0x88, 0xfc, + 0x85, 0x04, 0x30, 0x5a, 0x12, 0xed, 0x40, 0x9a, 0xa8, 0xe8, 0x4a, 0xb9, 0xbd, 0xfd, 0x70, 0x92, + 0x8a, 0x25, 0xa2, 0x27, 0x61, 0x51, 0x7e, 0x2d, 0x41, 0x9a, 0xc8, 0xc8, 0xc2, 0xdc, 0x69, 0xe3, + 0x59, 0xe3, 0xe8, 0x45, 0x23, 0x9f, 0x40, 0xcb, 0x80, 0x4e, 0xea, 0x8d, 0xda, 0x41, 0xb5, 0xd5, + 0x38, 0xaa, 0x54, 0x5b, 0x2f, 0xd4, 0x7a, 0xb3, 0xaa, 0xe6, 0x25, 0xb4, 0x0a, 0x2b, 0x3c, 0x5c, + 0xad, 0xee, 0x56, 0xaa, 0x6a, 0xeb, 0xa8, 0x71, 0xf0, 0x49, 0x3e, 0x89, 0x64, 0x58, 0x3e, 0x3c, + 0x3d, 0x68, 0xd6, 0xa3, 0xb8, 0x14, 0x5a, 0x83, 0x02, 0x87, 0x63, 0x32, 0x98, 0xd8, 0xb4, 0x2b, + 0x96, 0xc3, 0xd2, 0x47, 0x86, 0x9c, 0xd9, 0xcb, 0xf9, 0xc7, 0xe0, 0x5a, 0x4a, 0x79, 0x01, 0xb9, + 0x40, 0xaa, 0x70, 0x93, 0xaa, 0x85, 0x3f, 0x1b, 0xe8, 0x16, 0xee, 0xb4, 0xce, 0x86, 0x0e, 0xb6, + 0x89, 0x19, 0xd2, 0x6a, 0xce, 0x83, 0xee, 0xb9, 0x40, 0xd7, 0xa6, 0x5d, 0xbd, 0xa7, 0x3b, 0x8c, + 0x26, 0x49, 0x68, 0x80, 0x80, 0x08, 0x81, 0xf2, 0x67, 0x09, 0x60, 0xe4, 0x94, 0xae, 0x58, 0x3f, + 0x5b, 0x05, 0xc4, 0x7a, 0x50, 0x2a, 0xf6, 0x36, 0x24, 0xf5, 0x0e, 0x0b, 0x88, 0xa4, 0xde, 0x41, + 0xdf, 0x04, 0xd0, 0x1c, 0xc7, 0xd2, 0xcf, 0x06, 0x2e, 0x0b, 0xcd, 0xde, 0x9b, 0x21, 0x87, 0x2f, + 0xed, 0xfa, 0x14, 0x2c, 0xb1, 0x8c, 0x58, 0xdc, 0xc8, 0x0e, 0xa1, 0xa7, 0x8a, 0xc4, 0xcf, 0x93, + 0xb0, 0x58, 0xc1, 0x5d, 0xfc, 0xba, 0x89, 0x7b, 0x15, 0x32, 0x5e, 0xc4, 0x7a, 0xdb, 0x9a, 0x67, + 0xe1, 0xd9, 0x09, 0x25, 0xbd, 0x0e, 0x59, 0x26, 0x90, 0xf4, 0x52, 0x5c, 0xd2, 0x13, 0x68, 0xc1, + 0x25, 0x3d, 0x8a, 0x1d, 0x97, 0xf4, 0x22, 0x14, 0xc1, 0xac, 0x25, 0x16, 0x30, 0x95, 0xad, 0x96, + 0x61, 0x29, 0xa8, 0x24, 0xcd, 0x5a, 0xca, 0xbf, 0xd3, 0xb0, 0x31, 0x5a, 0xe8, 0x78, 0x70, 0xd6, + 0xd5, 0xed, 0x97, 0x37, 0x60, 0xce, 0x15, 0x98, 0x33, 0xcc, 0x0e, 0x41, 0xa5, 0x68, 0xfc, 0xbb, + 0xaf, 0xf5, 0x0e, 0xda, 0x83, 0x85, 0xf0, 0x75, 0x37, 0x2c, 0xa4, 0xc9, 0x3a, 0x31, 0x97, 0x5d, + 0xfe, 0x2a, 0x9c, 0x33, 0x65, 0x98, 0xb7, 0xb0, 0xd6, 0x31, 0x8d, 0xee, 0xb0, 0x30, 0x53, 0x94, + 0xb6, 0xe6, 0x55, 0xff, 0x1d, 0xfd, 0x4c, 0x82, 0x0d, 0xee, 0x20, 0xfb, 0x74, 0x87, 0x82, 0xeb, + 0xab, 0x4a, 0xaf, 0xaf, 0xb1, 0xb6, 0x88, 0xa2, 0x23, 0xa7, 0xba, 0xd6, 0x1e, 0x43, 0x82, 0xce, + 0xfd, 0xdd, 0x72, 0x91, 0x33, 0xc7, 0x5f, 0x9f, 0xe3, 0xd7, 0xa7, 0x6f, 0xe1, 0x98, 0x62, 0x16, + 0x19, 0x81, 0xe5, 0x23, 0xb8, 0x3f, 0x51, 0xd5, 0xa9, 0x6e, 0xd1, 0x32, 0xdc, 0x15, 0xae, 0x3d, + 0x95, 0x13, 0xfe, 0x5d, 0x82, 0xcd, 0xd8, 0x0d, 0xb2, 0x6b, 0xf4, 0x12, 0x16, 0xbd, 0x33, 0x0a, + 0x5e, 0xa7, 0xae, 0x8d, 0x9e, 0x8c, 0xb7, 0x11, 0xab, 0x12, 0x03, 0x50, 0x37, 0x09, 0x51, 0x2b, + 0x2d, 0xf4, 0xc3, 0x70, 0xb9, 0x02, 0xcb, 0x62, 0xe2, 0xa9, 0xb6, 0xf5, 0x45, 0x92, 0x0f, 0xd6, + 0x53, 0xa3, 0xff, 0xe5, 0x47, 0xd1, 0x2f, 0x24, 0x28, 0x72, 0x5e, 0x3e, 0x30, 0x44, 0x7e, 0x4e, + 0x4b, 0xc8, 0x7a, 0xc8, 0x86, 0x62, 0x7d, 0x45, 0x04, 0x11, 0x5f, 0xe7, 0x02, 0x4b, 0x44, 0x24, + 0x7f, 0x07, 0x1e, 0x5c, 0x43, 0xcc, 0x54, 0xb6, 0x7e, 0xc0, 0x3b, 0x76, 0x44, 0x75, 0x96, 0xd4, + 0xfe, 0x95, 0x84, 0xfb, 0xcf, 0xb5, 0xae, 0xde, 0xf1, 0xab, 0x34, 0xbe, 0x32, 0x7e, 0xab, 0x27, + 0x12, 0x53, 0xad, 0xa7, 0xa6, 0xad, 0xd6, 0x75, 0x51, 0x62, 0xa0, 0x07, 0xf6, 0x21, 0x95, 0x32, + 0x69, 0x3f, 0xd7, 0xce, 0x0d, 0x6f, 0x25, 0x94, 0xbf, 0x0f, 0xca, 0x38, 0x8d, 0x58, 0x30, 0xaf, + 0x41, 0xc6, 0x6f, 0x6a, 0x89, 0xdc, 0x79, 0x75, 0x04, 0x40, 0x05, 0x98, 0xeb, 0x61, 0xdb, 0xd6, + 0x2e, 0x3c, 0xf9, 0xde, 0xab, 0xf2, 0x53, 0x09, 0xd0, 0x81, 0x6e, 0xb3, 0xe2, 0x71, 0xea, 0x13, + 0x73, 0x6b, 0x4a, 0xed, 0x55, 0x0b, 0x1b, 0x8e, 0xa5, 0xb3, 0xfa, 0x27, 0xa7, 0x42, 0x4f, 0x7b, + 0x55, 0xa5, 0x10, 0xb7, 0xe0, 0xb1, 0x1d, 0xcd, 0x72, 0x74, 0xe3, 0xa2, 0xe5, 0x98, 0x97, 0xd8, + 0x60, 0xe1, 0x94, 0xf3, 0xa0, 0x4d, 0x17, 0xa8, 0x7c, 0x2e, 0xc1, 0x62, 0x40, 0x0d, 0xb6, 0xad, + 0xc7, 0x30, 0xe7, 0xc9, 0xa6, 0x79, 0x69, 0x83, 0xe8, 0x21, 0x20, 0x2d, 0xd1, 0x43, 0xf0, 0xc8, + 0xd1, 0x3a, 0x80, 0x81, 0x5f, 0x39, 0x6c, 0x51, 0xba, 0xeb, 0x8c, 0x0b, 0x21, 0x0b, 0xca, 0x3b, + 0x30, 0x43, 0x8f, 0x62, 0xfa, 0x66, 0xe2, 0xe7, 0x49, 0x40, 0x35, 0xec, 0xf8, 0xf5, 0xe2, 0x94, + 0x26, 0x8b, 0xf1, 0xe3, 0xe4, 0xb4, 0x7e, 0x5c, 0x0b, 0x74, 0x9d, 0x34, 0x0c, 0xde, 0xf5, 0x3a, + 0xfa, 0x90, 0x72, 0xe3, 0x9a, 0xce, 0x37, 0xec, 0xfa, 0x94, 0x0a, 0x2c, 0x06, 0x16, 0x64, 0x27, + 0xf7, 0x1e, 0x20, 0xed, 0x4a, 0xd3, 0xbb, 0xda, 0x59, 0x97, 0xee, 0xd4, 0xc5, 0xb2, 0x6a, 0x77, + 0xc1, 0xc7, 0x78, 0x6c, 0xca, 0xb7, 0x60, 0x99, 0xbb, 0x6c, 0x2c, 0xf3, 0x6c, 0xda, 0x74, 0xae, + 0xdc, 0x83, 0x95, 0x88, 0x04, 0x96, 0xa5, 0xbe, 0xcd, 0xdf, 0x1a, 0x4c, 0xd9, 0xd7, 0xcc, 0x51, + 0x8a, 0xce, 0xa7, 0xc5, 0x88, 0x2c, 0xb6, 0xf9, 0x0a, 0xdc, 0x12, 0x1c, 0x6e, 0x31, 0x74, 0x1f, + 0x9c, 0x60, 0xeb, 0x4a, 0x6f, 0xf3, 0xe7, 0x1c, 0xe0, 0x52, 0x7e, 0x99, 0x84, 0xd5, 0x31, 0xd4, + 0xe8, 0x31, 0xa4, 0xac, 0x7e, 0x9b, 0xa9, 0xfb, 0xce, 0x24, 0xe1, 0x25, 0xf5, 0xb8, 0xbc, 0x9f, + 0x50, 0x5d, 0x16, 0xf9, 0x0f, 0x12, 0xa4, 0xd4, 0xe3, 0x32, 0x7a, 0x0a, 0x69, 0xbf, 0x51, 0xbc, + 0xbd, 0xfd, 0x7f, 0xd7, 0x11, 0x51, 0x72, 0x7b, 0x49, 0x95, 0xb0, 0x29, 0x26, 0xa4, 0x49, 0x67, + 0x19, 0xe8, 0xf2, 0x0a, 0xb0, 0x54, 0x56, 0xab, 0xbb, 0xcd, 0x6a, 0xab, 0x52, 0x3d, 0xa8, 0x36, + 0xab, 0xad, 0xe7, 0x47, 0x07, 0xa7, 0x87, 0xd5, 0xbc, 0xe4, 0xb6, 0x6b, 0xc7, 0xa7, 0x7b, 0x07, + 0xf5, 0x93, 0xfd, 0xd6, 0x69, 0xc3, 0x7b, 0x62, 0xd8, 0x24, 0xca, 0xc3, 0xad, 0x83, 0xfa, 0x49, + 0x93, 0x01, 0x4e, 0xf2, 0x29, 0x17, 0x52, 0xab, 0x36, 0x5b, 0xe5, 0xdd, 0xe3, 0xdd, 0x72, 0xbd, + 0xf9, 0x49, 0x3e, 0xbd, 0x37, 0x4b, 0xf5, 0x55, 0xfe, 0x39, 0x03, 0xcb, 0x0d, 0xb3, 0x83, 0x4f, + 0x1c, 0xed, 0xe2, 0x26, 0x5a, 0x92, 0x33, 0x71, 0x69, 0x44, 0x83, 0x6c, 0x9b, 0x08, 0x14, 0x2f, + 0x7f, 0xfd, 0x8a, 0x08, 0x95, 0x60, 0xd1, 0x76, 0xb4, 0x0b, 0x92, 0x18, 0x35, 0xeb, 0x02, 0x3b, + 0xad, 0xbe, 0xe6, 0xbc, 0x24, 0x05, 0x79, 0x46, 0x5d, 0x60, 0xa8, 0x26, 0xc1, 0x1c, 0x6b, 0xce, + 0x4b, 0x71, 0xf9, 0x3e, 0x33, 0x5d, 0xf9, 0x7e, 0x09, 0xcb, 0xa4, 0xaa, 0x71, 0xa5, 0x8b, 0x06, + 0x4b, 0x5f, 0x1f, 0xb7, 0x35, 0x1f, 0x1c, 0xa9, 0x4e, 0x96, 0x0c, 0x01, 0x0a, 0xfd, 0x20, 0xbe, + 0x02, 0xff, 0xea, 0xb8, 0x75, 0xae, 0x7b, 0xbb, 0xbe, 0x95, 0x92, 0x52, 0xae, 0xc1, 0xbd, 0xd8, + 0x8d, 0x7d, 0xf9, 0x75, 0xfb, 0x5f, 0x24, 0x58, 0x89, 0x98, 0x85, 0x25, 0x95, 0xf6, 0xb8, 0x7a, + 0xfd, 0x7d, 0xb1, 0x45, 0xff, 0x4b, 0x75, 0xfa, 0xdf, 0x92, 0x50, 0x70, 0x75, 0x39, 0x35, 0xec, + 0x1b, 0x8a, 0xd0, 0x98, 0xe8, 0x49, 0xc5, 0x45, 0x8f, 0x0d, 0x05, 0xe2, 0xf9, 0x03, 0x23, 0xea, + 0xfb, 0x69, 0xae, 0x2b, 0x8c, 0xd3, 0x9a, 0x47, 0x44, 0xfc, 0x9f, 0x04, 0x55, 0x14, 0x29, 0xd7, + 0x61, 0x75, 0x0c, 0xdb, 0x54, 0x16, 0x5d, 0xa5, 0x6e, 0x1a, 0x52, 0x8d, 0xdd, 0x6f, 0xbf, 0x99, + 0xa5, 0xe6, 0xbe, 0xb9, 0xa1, 0x42, 0x67, 0x5c, 0x42, 0xfc, 0x9a, 0x6f, 0x39, 0x61, 0x27, 0x7d, + 0x73, 0x29, 0x71, 0x13, 0xb2, 0x3c, 0xdd, 0x0c, 0xa1, 0x03, 0x67, 0x42, 0xce, 0x9c, 0x7d, 0xfd, + 0x91, 0xc7, 0x5c, 0x68, 0xe4, 0xe1, 0x79, 0x95, 0xa8, 0x07, 0x9c, 0x0f, 0x79, 0x95, 0xd0, 0x36, + 0x1c, 0x42, 0xec, 0x55, 0x82, 0xc9, 0xc6, 0x0f, 0x45, 0x79, 0x35, 0x13, 0xca, 0x02, 0x6f, 0x34, + 0xd3, 0x78, 0x3b, 0x99, 0x95, 0x79, 0xff, 0xff, 0xcc, 0x4c, 0x84, 0x85, 0x90, 0x70, 0x92, 0xa1, + 0xfc, 0x35, 0x09, 0x32, 0x0d, 0xb0, 0x9b, 0x9b, 0x29, 0x84, 0xdc, 0x35, 0x15, 0x71, 0xd7, 0x1f, + 0x83, 0xcc, 0x92, 0x54, 0xfc, 0x50, 0xe1, 0x29, 0x97, 0xa6, 0xfa, 0x71, 0x2e, 0x15, 0x3f, 0x48, + 0x28, 0x18, 0x31, 0x68, 0xf9, 0x19, 0xac, 0x8f, 0x65, 0x9d, 0xca, 0xd6, 0xeb, 0x5e, 0xe6, 0x13, + 0x8f, 0x0d, 0x3e, 0x80, 0x7c, 0x0d, 0x3b, 0x2e, 0x45, 0xbd, 0x32, 0x6d, 0x01, 0xfe, 0xff, 0xb0, + 0xc0, 0xf1, 0xb2, 0xbb, 0x91, 0x1b, 0xd7, 0x48, 0xfc, 0xb8, 0xc6, 0x5d, 0x89, 0x1c, 0xfa, 0xeb, + 0x74, 0x14, 0x8b, 0xb0, 0xc0, 0xf1, 0x32, 0xd5, 0x2b, 0xd4, 0x4f, 0xde, 0xb0, 0x8b, 0xf8, 0x94, + 0xda, 0x27, 0xae, 0x7f, 0xf8, 0x28, 0xd4, 0x3f, 0xd0, 0x3b, 0x5e, 0x1e, 0xdd, 0xf1, 0x13, 0x3a, + 0x87, 0x3f, 0x49, 0x70, 0x57, 0x48, 0x87, 0xb6, 0xf9, 0x9e, 0x61, 0x23, 0x5e, 0x20, 0xdf, 0x2d, + 0xf4, 0x68, 0xb3, 0xf0, 0x8d, 0x40, 0xb3, 0xf0, 0x60, 0x3c, 0x2f, 0xdf, 0x26, 0xbc, 0x17, 0xd3, + 0x26, 0x9c, 0x34, 0x77, 0x6b, 0xd5, 0xd6, 0x69, 0x83, 0xfe, 0x7a, 0x6d, 0x82, 0x57, 0xe4, 0x6f, + 0xff, 0x5e, 0x82, 0xf9, 0x3a, 0x71, 0x41, 0x67, 0x88, 0x3e, 0x25, 0x9f, 0xd4, 0x23, 0x1f, 0xff, + 0x51, 0xd1, 0xeb, 0x78, 0xe3, 0xfe, 0x36, 0x20, 0xdf, 0x1f, 0x43, 0xc1, 0xce, 0x34, 0x81, 0xf6, + 0x21, 0x17, 0xf8, 0x0e, 0x8e, 0xee, 0x89, 0xbe, 0x8d, 0x53, 0x81, 0x72, 0xfc, 0x67, 0x73, 0x25, + 0xb1, 0xfd, 0xdb, 0x59, 0x80, 0x51, 0x0b, 0x85, 0xaa, 0x70, 0x8b, 0xff, 0x86, 0x89, 0x0a, 0x71, + 0x9f, 0x6e, 0xe5, 0x7b, 0x02, 0x8c, 0xaf, 0x5f, 0x15, 0x6e, 0xf1, 0x1f, 0x15, 0x98, 0x18, 0xc1, + 0xc7, 0x10, 0x26, 0x46, 0xf8, 0x05, 0x22, 0x81, 0xce, 0x03, 0x3d, 0x32, 0x1f, 0x9a, 0xe8, 0xc1, + 0x35, 0x86, 0xe2, 0xf2, 0x3b, 0xd7, 0x99, 0x0a, 0x2b, 0x09, 0xd4, 0x85, 0x7b, 0xb1, 0xb3, 0x43, + 0xf4, 0xf0, 0x5a, 0x63, 0x51, 0xf9, 0xd1, 0x24, 0x32, 0x7f, 0x35, 0x13, 0xe4, 0xf8, 0x09, 0x19, + 0x7a, 0x74, 0xbd, 0xa1, 0x9e, 0xfc, 0xee, 0x44, 0x3a, 0x7f, 0xc1, 0x3d, 0xc8, 0x72, 0x13, 0x28, + 0xb4, 0x12, 0x9d, 0x49, 0x51, 0x91, 0x85, 0xb8, 0x61, 0x15, 0x95, 0xc1, 0x8d, 0x4d, 0x98, 0x8c, + 0xe8, 0xe4, 0x86, 0xc9, 0x10, 0x4c, 0x58, 0x94, 0x04, 0x6a, 0xc0, 0x9d, 0xd0, 0xc8, 0x03, 0xad, + 0x86, 0x4f, 0x88, 0x4b, 0x7c, 0xf2, 0x9a, 0x18, 0x29, 0x3e, 0xb6, 0x50, 0x6e, 0x8a, 0x1c, 0x9b, + 0x38, 0x03, 0x46, 0x8e, 0x2d, 0x26, 0xc5, 0x29, 0x89, 0xed, 0x3f, 0xa6, 0x21, 0xed, 0xe6, 0x0f, + 0x77, 0x1b, 0xa1, 0xc6, 0x85, 0x6d, 0x43, 0xdc, 0x20, 0xb2, 0x6d, 0xc4, 0xf4, 0x3a, 0x4a, 0x02, + 0x35, 0x69, 0xde, 0x0e, 0xd4, 0xca, 0x68, 0x7d, 0x6c, 0x79, 0x2f, 0x6f, 0xc4, 0xa1, 0xc3, 0x52, + 0x83, 0x51, 0xb3, 0x3e, 0xb6, 0xe0, 0xe2, 0xa4, 0xc6, 0x45, 0xca, 0x77, 0x61, 0x51, 0x70, 0x51, + 0xa2, 0xcd, 0x09, 0xb7, 0xbc, 0x5c, 0x8c, 0x27, 0xf0, 0x65, 0x7f, 0x08, 0x19, 0xff, 0xa6, 0x44, + 0x77, 0x3d, 0x3f, 0x0a, 0xdc, 0xba, 0xf2, 0x72, 0x18, 0xcc, 0x73, 0xfb, 0xb7, 0x1f, 0xe3, 0x0e, + 0xdf, 0xa4, 0x8c, 0x3b, 0x7a, 0x49, 0xfa, 0xfb, 0x0a, 0x3b, 0xd1, 0x68, 0x5f, 0x31, 0xee, 0x53, + 0x8c, 0x27, 0xf0, 0x64, 0x9f, 0xcd, 0x92, 0xff, 0x8c, 0xbd, 0xff, 0x9f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x73, 0x62, 0x72, 0x8e, 0x40, 0x26, 0x00, 0x00, } diff --git a/spec.md b/spec.md index bc6f142a..91335673 100644 --- a/spec.md +++ b/spec.md @@ -755,7 +755,7 @@ message ControllerPublishVolumeRequest { message ControllerPublishVolumeResponse { // The SP specific information that will be passed to the Plugin in - // the subsequent `NodeStageVolume` and `NodePublishVolume` calls + // the subsequent `NodeStageVolume` or `NodePublishVolume` calls // for the given volume. // This information is opaque to the CO. This field is OPTIONAL. map publish_info = 1; @@ -1069,7 +1069,7 @@ It is NOT REQUIRED for a controller plugin to implement the `LIST_VOLUMES` capab A Node Plugin MUST implement this RPC call if it has `STAGE_UNSTAGE_VOLUME` node capability. This RPC is called by the CO when a workload that wants to use the specified volume is placed (scheduled) on a node. The Plugin SHALL assume that this RPC will be executed on the node where the volume will be used. -This RPC SHOULD be called by the CO a maximum of once per node, per volume. +This RPC SHOULD be called by the CO when a workload that wants to use the specified volume is placed (scheduled) on the specified node for the first time or for the first time since a `NodeUnstageVolume` call for the specified volume was called and returned success on that node. If the corresponding Controller Plugin has `PUBLISH_UNPUBLISH_VOLUME` controller capability and the Node Plugin has `STAGE_UNSTAGE_VOLUME` capability, then the CO MUST guarantee that this RPC is called after `ControllerPublishVolume` is called for the given volume on the given node and returns a success. The CO MUST guarantee that this RPC is called and returns a success before any `NodePublishVolume` is called for the given volume on the given node. This operation MUST be idempotent. @@ -1101,18 +1101,18 @@ message NodeStageVolumeRequest { // This is a REQUIRED field. VolumeCapability volume_capability = 5; - // End user credentials used to authenticate/authorize node - // publish request. + // Credentials used by Node plugin to authenticate/authorize node + // stage request. // This field contains credential data, for example username and // password. Each key must consist of alphanumeric characters, '-', // '_' or '.'. Each value MUST contain a valid string. An SP MAY // choose to accept binary (non-string) data by using a binary-to-text // encoding scheme, like base64. An SP SHALL advertise the // requirements for credentials in documentation. COs SHALL permit - // users to pass through the required credentials. This information is + // passing through the required credentials. This information is // sensitive and MUST be treated as such (not logged, etc.) by the CO. // This field is OPTIONAL. - map user_credentials = 6; + map node_stage_credentials = 6; // Attributes of the volume to publish. This field is OPTIONAL and // MUST match the attributes of the VolumeInfo identified by @@ -1120,7 +1120,13 @@ message NodeStageVolumeRequest { map volume_attributes = 7; } -message NodeStageVolumeResponse {} +message NodeStageVolumeResponse { + // The SP specific information that will be passed to the Plugin in + // the subsequent `NodePublishVolume` calls + // for the given volume. + // This information is opaque to the CO. This field is OPTIONAL. + map publish_volume_info = 1; +} ``` #### NodeStageVolume Errors @@ -1164,6 +1170,19 @@ message NodeUnstageVolumeRequest { // path in the root filesystem of the process serving this request. // This is a REQUIRED field. string staging_target_path = 3; + + // Credentials used by Node plugin to authenticate/authorize node + // unstage request. + // This field contains credential data, for example username and + // password. Each key must consist of alphanumeric characters, '-', + // '_' or '.'. Each value MUST contain a valid string. An SP MAY + // choose to accept binary (non-string) data by using a binary-to-text + // encoding scheme, like base64. An SP SHALL advertise the + // requirements for credentials in documentation. COs SHALL permit + // passing through the required credentials. This information is + // sensitive and MUST be treated as such (not logged, etc.) by the CO. + // This field is OPTIONAL. + map node_unstage_credentials = 4; } message NodeUnstageVolumeResponse {} @@ -1180,6 +1199,15 @@ The CO MUST implement the specified error recovery behavior when it encounters t | Volume does not exists | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | | Operation pending for volume | 10 ABORTED | Indicates that there is a already an operation pending for the specified volume. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per volume at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified volume, and then retry with exponential back off. | +#### RPC Interactions and Reference Counting +`NodeStageVolume`, `NodeUnstageVolume`, `NodePublishVolume`, `NodeUnpublishVolume` + +The following interaction semantics ARE REQUIRED if the plugin advertises the `STAGE_UNSTAGE_VOLUME` capability. +`NodeStageVolume` MUST be called and return success once per volume per node before any `NodePublishVolume` MAY be called for the volume. +All `NodeUnpublishVolume` MUST be called and return success for a volume before `NodeUnstageVolume` MAY be called for the volume. + +Note that this requires that all COs MUST support reference counting of volumes so that if `STAGE_UNSTAGE_VOLUME` is advertised by the SP, the CO MUST fufill the above interaction semantics. + #### `NodePublishVolume` This RPC is called by the CO when a workload that wants to use the specified volume is placed (scheduled) on a node. @@ -1321,14 +1349,6 @@ message NodeUnpublishVolumeRequest { message NodeUnpublishVolumeResponse {} ``` -#### RPC Interactions and Reference Counting -`NodeStageVolume`, `NodeUnstageVolume`, `NodePublishVolume`, `NodeUnpublishVolume` - -The following interaction semantics ARE REQUIRED if the plugin advertises the `STAGE_UNSTAGE_VOLUME` capability. -`NodeStageVolume` MUST be called and return success once per volume per node before any `NodePublishVolume` MAY be called for the volume. -All `NodeUnpublishVolume` MUST be called and return success for a volume before `NodeUnstageVolume` MAY be called for the volume. - -Note that this requires that all COs MUST support reference counting of volumes so that if `STAGE_UNSTAGE_VOLUME` is advertised by the SP, the CO MUST fufill the above interaction semantics. ##### NodeUnpublishVolume Errors