diff --git a/csi.proto b/csi.proto index e449e336..8b507cd9 100644 --- a/csi.proto +++ b/csi.proto @@ -245,31 +245,9 @@ message VolumeInfo { // Contains identity information for the created volume. This field is // REQUIRED. The identity information will be used by the CO in - // subsequent calls to refer to the provisioned volume. - VolumeHandle handle = 2; -} - -// VolumeHandle objects are generated by Plugin implementations to -// serve two purposes: first, to efficiently identify a volume known -// to the Plugin implementation; second, to capture additional, opaque, -// possibly sensitive information associated with a volume. It SHALL -// NOT change over the lifetime of the volume and MAY be safely cached -// by the CO. -// Since this object will be passed around by the CO, it is RECOMMENDED -// that each Plugin keeps the information herein as small as possible. -// The total bytes of a serialized VolumeHandle must be less than 1 MiB. -message VolumeHandle { - // ID is the identity of the provisioned volume specified by the - // Plugin. This field is REQUIRED. - // This information SHALL NOT be considered sensitive such that, for - // example, the CO MAY generate log messages that include this data. - string id = 1; - - // Metadata captures additional, possibly sensitive, information about - // a volume in the form of key-value pairs. This field is OPTIONAL. - // Since this field MAY contain sensitive information, the CO MUST NOT - // leak this information to untrusted entities. - map metadata = 2; + // subsequent calls to refer to the provisioned volume. This field + // should not exceed 1MiB. + string id = 2; } // A standard way to encode credential data. The total bytes of the @@ -292,9 +270,9 @@ message DeleteVolumeRequest { // The API version assumed by the CO. This field is REQUIRED. Version version = 1; - // The handle of the volume to be deprovisioned. + // The ID of the volume to be deprovisioned. // This field is REQUIRED. - VolumeHandle volume_handle = 2; + string volume_id = 2; // End user credentials used to authenticate/authorize volume deletion // request. @@ -317,15 +295,15 @@ message ControllerPublishVolumeRequest { // The API version assumed by the CO. This field is REQUIRED. Version version = 1; - // The handle of the volume to be used on a node. + // The ID of the volume to be used on a node. // This field is REQUIRED. - VolumeHandle volume_handle = 2; + string volume_id = 2; // The ID of the node. This field is OPTIONAL. The CO SHALL set (or - // clear) this field to match the `NodeID` returned by `GetNodeID`. - // `GetNodeID` is allowed to omit `NodeID` from a successful `Result`; + // clear) this field to match the node ID returned by `GetNodeID`. + // `GetNodeID` is allowed to omit node ID from a successful `Result`; // in such cases the CO SHALL NOT specify this field. - NodeID node_id = 3; + string node_id = 3; // The capability of the volume the CO expects the volume to have. // This is a REQUIRED field. @@ -356,14 +334,6 @@ message ControllerPublishVolumeResponse { } } -message NodeID { - // Information about a node in the form of key-value pairs. This - // information is opaque to the CO. Given this information will be - // passed around by the CO, it is RECOMMENDED that each Plugin keeps - // this information as small as possible. This field is REQUIRED. - map values = 1; -} - message PublishVolumeInfo { // Information returned by the Plugin in `ControllerPublishVolume` // call. It is in the form of key-value pairs, and is opaque to the @@ -378,19 +348,19 @@ message ControllerUnpublishVolumeRequest { // The API version assumed by the CO. This field is REQUIRED. Version version = 1; - // The handle of the volume. This field is REQUIRED. - VolumeHandle volume_handle = 2; + // The ID of the volume. This field is REQUIRED. + string volume_id = 2; // The ID of the node. This field is OPTIONAL. The CO SHALL set (or - // clear) this field to match the `NodeID` returned by `GetNodeID`. - // `GetNodeID` is allowed to omit `NodeID` from a successful `Result`; + // clear) this field to match the node ID returned by `GetNodeID`. + // `GetNodeID` is allowed to omit node ID from a successful `Result`; // in such cases the CO SHALL NOT specify this field. // - // If `GetNodeID` does not omit `NodeID` from a successful `Result`, + // If `GetNodeID` does not omit node ID from a successful `Result`, // the CO MAY omit this field as well, indicating that it does not // know which node the volume was previously used. The Plugin SHOULD // return an Error if this is not supported. - NodeID node_id = 3; + string node_id = 3; // End user credentials used to authenticate/authorize controller // unpublish request. @@ -413,9 +383,8 @@ message ValidateVolumeCapabilitiesRequest { // The API version assumed by the CO. This is a REQUIRED field. Version version = 1; - // The information about the volume to check. This is a REQUIRED - // field. - VolumeInfo volume_info = 2; + // The ID of the volume to check. This field is REQUIRED. + string volume_id = 2; // The capabilities that the CO wants to check for the volume. This // call SHALL return "supported" only if all the volume capabilities @@ -565,8 +534,8 @@ message NodePublishVolumeRequest { // The API version assumed by the CO. This is a REQUIRED field. Version version = 1; - // The handle of the volume to publish. This field is REQUIRED. - VolumeHandle volume_handle = 2; + // The ID of the volume to publish. This field is REQUIRED. + string volume_id = 2; // The CO SHALL set this field to the value returned by // `ControllerPublishVolume` if the corresponding Controller Plugin @@ -609,8 +578,8 @@ message NodeUnpublishVolumeRequest { // The API version assumed by the CO. This is a REQUIRED field. Version version = 1; - // The handle of the volume. This field is REQUIRED. - VolumeHandle volume_handle = 2; + // The ID of the volume. This field is REQUIRED. + string volume_id = 2; // The path at which the volume was published. It MUST be an absolute // path in the root filesystem of the process serving this request. @@ -644,7 +613,7 @@ message GetNodeIDResponse { // `ControllerPublishVolume`. This is an OPTIONAL field. If unset, // the CO SHALL leave the `node_id` field unset in // `ControllerPublishVolume`. - NodeID node_id = 1; + string node_id = 1; } // One of the following fields MUST be specified. @@ -885,16 +854,16 @@ message Error { // exponential back off. OPERATION_PENDING_FOR_VOLUME = 2; - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - INVALID_VOLUME_HANDLE = 3; + INVALID_VOLUME_ID = 3; // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // // Recovery behavior: Caller SHOULD assume the `DeleteVolume` call // succeeded. @@ -945,24 +914,24 @@ message Error { // exponential back off. OPERATION_PENDING_FOR_VOLUME = 2; - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - INVALID_VOLUME_HANDLE = 3; + INVALID_VOLUME_ID = 3; // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. VOLUME_DOES_NOT_EXIST = 4; // Indicates that a volume corresponding to the specified - // `VolumeHandle` is already attached to another node and does not + // volume ID is already attached to another node and does not // support multi-node attach. If this error code is returned, the // Plugin MUST also specify the `node_id` of the node the volume // is already attached to. @@ -973,20 +942,20 @@ message Error { // node before retrying with exponential back off. VOLUME_ALREADY_PUBLISHED = 5; - // Indicates that a node corresponding to the specified `NodeID` + // Indicates that a node corresponding to the specified node ID // does not exist. // - // Recovery behavior: Caller SHOULD verify that the `NodeID` is + // Recovery behavior: Caller SHOULD verify that the node ID is // correct and that the node is available and has not been // terminated or deleted before retrying with exponential backoff. NODE_DOES_NOT_EXIST = 6; // Indicates that a volume corresponding to the specified - // `VolumeHandle` is already attached to the maximum supported + // volume ID is already attached to the maximum supported // number of nodes and therefore this operation can not be // completed until the volume is detached from at least one of the // existing nodes. When this error code is returned, the Plugin - // MUST also specify the `NodeId` of all the nodes the volume is + // MUST also specify the node ID of all the nodes the volume is // attached to. // // Recovery behavior: Caller MAY use the provided `node_ids` @@ -998,12 +967,12 @@ message Error { UNSUPPORTED_VOLUME_TYPE = 10; UNSUPPORTED_FS_TYPE = 11; - // Indicates that the specified `NodeID` is not allowed or + // Indicates that the specified node ID is not allowed or // understood by the Plugin, or the Plugin does not support the - // operation without a `NodeID`. More human-readable information + // operation without a node ID. More human-readable information // MAY be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `NodeID` before + // Recovery behavior: Caller MUST fix the node ID before // retrying. INVALID_NODE_ID = 8; } @@ -1018,7 +987,7 @@ message Error { // On `VOLUME_ALREADY_ATTACHED` and `MAX_ATTACHED_NODES` errors, // this field contains the node(s) that the specified volume is // already attached to. - repeated NodeID node_ids = 3; + repeated string node_ids = 3; } // `ControllerUnpublishVolume` specific error. @@ -1057,44 +1026,44 @@ message Error { // exponential back off. OPERATION_PENDING_FOR_VOLUME = 2; - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - INVALID_VOLUME_HANDLE = 3; + INVALID_VOLUME_ID = 3; // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. VOLUME_DOES_NOT_EXIST = 4; - // Indicates that a node corresponding to the specified `NodeID` + // Indicates that a node corresponding to the specified node ID // does not exist. // - // Recovery behavior: Caller SHOULD verify that the `NodeID` is + // Recovery behavior: Caller SHOULD verify that the node ID is // correct and that the node is available and has not been // terminated or deleted before retrying. NODE_DOES_NOT_EXIST = 5; - // Indicates that the specified `NodeID` is not allowed or + // Indicates that the specified node ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `NodeID` before + // Recovery behavior: Caller MUST fix the node ID before // retrying. INVALID_NODE_ID = 6; VOLUME_NOT_ATTACHED_TO_SPECIFIED_NODE = 7; // Indicates that the Plugin does not support the operation - // without a `NodeID`. + // without a node ID. // - // Recovery behavior: Caller MUST specify the `NodeID` before + // Recovery behavior: Caller MUST specify the node ID before // retrying. NODE_ID_REQUIRED = 8; } @@ -1170,9 +1139,9 @@ message Error { OPERATION_PENDING_FOR_VOLUME = 1; // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. VOLUME_DOES_NOT_EXIST = 2; @@ -1182,13 +1151,13 @@ message Error { UNSUPPORTED_FS_TYPE = 5; MOUNT_ERROR = 6; - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - INVALID_VOLUME_HANDLE = 7; + INVALID_VOLUME_ID = 7; } NodePublishVolumeErrorCode error_code = 1; @@ -1224,22 +1193,22 @@ message Error { OPERATION_PENDING_FOR_VOLUME = 1; // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. VOLUME_DOES_NOT_EXIST = 2; UNMOUNT_ERROR = 3; - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - INVALID_VOLUME_HANDLE = 4; + INVALID_VOLUME_ID = 4; } NodeUnpublishVolumeErrorCode error_code = 1; diff --git a/lib/go/csi/csi.pb.go b/lib/go/csi/csi.pb.go index d6f99f91..9c6ed51d 100644 --- a/lib/go/csi/csi.pb.go +++ b/lib/go/csi/csi.pb.go @@ -18,13 +18,11 @@ It has these top-level messages: VolumeCapability CapacityRange VolumeInfo - VolumeHandle Credentials DeleteVolumeRequest DeleteVolumeResponse ControllerPublishVolumeRequest ControllerPublishVolumeResponse - NodeID PublishVolumeInfo ControllerUnpublishVolumeRequest ControllerUnpublishVolumeResponse @@ -143,7 +141,7 @@ func (x ControllerServiceCapability_RPC_Type) String() string { return proto.EnumName(ControllerServiceCapability_RPC_Type_name, int32(x)) } func (ControllerServiceCapability_RPC_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 0, 0} + return fileDescriptor0, []int{26, 0, 0} } type NodeServiceCapability_RPC_Type int32 @@ -163,7 +161,7 @@ func (x NodeServiceCapability_RPC_Type) String() string { return proto.EnumName(NodeServiceCapability_RPC_Type_name, int32(x)) } func (NodeServiceCapability_RPC_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{39, 0, 0} + return fileDescriptor0, []int{37, 0, 0} } type Error_GeneralError_GeneralErrorCode int32 @@ -221,7 +219,7 @@ func (x Error_GeneralError_GeneralErrorCode) String() string { return proto.EnumName(Error_GeneralError_GeneralErrorCode_name, int32(x)) } func (Error_GeneralError_GeneralErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 0, 0} + return fileDescriptor0, []int{38, 0, 0} } type Error_CreateVolumeError_CreateVolumeErrorCode int32 @@ -319,7 +317,7 @@ func (x Error_CreateVolumeError_CreateVolumeErrorCode) String() string { return proto.EnumName(Error_CreateVolumeError_CreateVolumeErrorCode_name, int32(x)) } func (Error_CreateVolumeError_CreateVolumeErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 1, 0} + return fileDescriptor0, []int{38, 1, 0} } type Error_DeleteVolumeError_DeleteVolumeErrorCode int32 @@ -354,15 +352,15 @@ const ( // calls pending for the specified volume, and then retry with // exponential back off. Error_DeleteVolumeError_OPERATION_PENDING_FOR_VOLUME Error_DeleteVolumeError_DeleteVolumeErrorCode = 2 - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - Error_DeleteVolumeError_INVALID_VOLUME_HANDLE Error_DeleteVolumeError_DeleteVolumeErrorCode = 3 + Error_DeleteVolumeError_INVALID_VOLUME_ID Error_DeleteVolumeError_DeleteVolumeErrorCode = 3 // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // // Recovery behavior: Caller SHOULD assume the `DeleteVolume` call // succeeded. @@ -373,14 +371,14 @@ var Error_DeleteVolumeError_DeleteVolumeErrorCode_name = map[int32]string{ 0: "UNKNOWN", 1: "CALL_NOT_IMPLEMENTED", 2: "OPERATION_PENDING_FOR_VOLUME", - 3: "INVALID_VOLUME_HANDLE", + 3: "INVALID_VOLUME_ID", 4: "VOLUME_DOES_NOT_EXIST", } var Error_DeleteVolumeError_DeleteVolumeErrorCode_value = map[string]int32{ "UNKNOWN": 0, "CALL_NOT_IMPLEMENTED": 1, "OPERATION_PENDING_FOR_VOLUME": 2, - "INVALID_VOLUME_HANDLE": 3, + "INVALID_VOLUME_ID": 3, "VOLUME_DOES_NOT_EXIST": 4, } @@ -388,7 +386,7 @@ func (x Error_DeleteVolumeError_DeleteVolumeErrorCode) String() string { return proto.EnumName(Error_DeleteVolumeError_DeleteVolumeErrorCode_name, int32(x)) } func (Error_DeleteVolumeError_DeleteVolumeErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 2, 0} + return fileDescriptor0, []int{38, 2, 0} } type Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode int32 @@ -424,22 +422,22 @@ const ( // calls pending for the specified volume, and then retry with // exponential back off. Error_ControllerPublishVolumeError_OPERATION_PENDING_FOR_VOLUME Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode = 2 - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - Error_ControllerPublishVolumeError_INVALID_VOLUME_HANDLE Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode = 3 + Error_ControllerPublishVolumeError_INVALID_VOLUME_ID Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode = 3 // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. Error_ControllerPublishVolumeError_VOLUME_DOES_NOT_EXIST Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode = 4 // Indicates that a volume corresponding to the specified - // `VolumeHandle` is already attached to another node and does not + // volume ID is already attached to another node and does not // support multi-node attach. If this error code is returned, the // Plugin MUST also specify the `node_id` of the node the volume // is already attached to. @@ -449,19 +447,19 @@ const ( // SHOULD ensure the specified volume is not attached to any other // node before retrying with exponential back off. Error_ControllerPublishVolumeError_VOLUME_ALREADY_PUBLISHED Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode = 5 - // Indicates that a node corresponding to the specified `NodeID` + // Indicates that a node corresponding to the specified node ID // does not exist. // - // Recovery behavior: Caller SHOULD verify that the `NodeID` is + // Recovery behavior: Caller SHOULD verify that the node ID is // correct and that the node is available and has not been // terminated or deleted before retrying with exponential backoff. Error_ControllerPublishVolumeError_NODE_DOES_NOT_EXIST Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode = 6 // Indicates that a volume corresponding to the specified - // `VolumeHandle` is already attached to the maximum supported + // volume ID is already attached to the maximum supported // number of nodes and therefore this operation can not be // completed until the volume is detached from at least one of the // existing nodes. When this error code is returned, the Plugin - // MUST also specify the `NodeId` of all the nodes the volume is + // MUST also specify the node ID of all the nodes the volume is // attached to. // // Recovery behavior: Caller MAY use the provided `node_ids` @@ -471,12 +469,12 @@ const ( Error_ControllerPublishVolumeError_UNSUPPORTED_MOUNT_FLAGS Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode = 9 Error_ControllerPublishVolumeError_UNSUPPORTED_VOLUME_TYPE Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode = 10 Error_ControllerPublishVolumeError_UNSUPPORTED_FS_TYPE Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode = 11 - // Indicates that the specified `NodeID` is not allowed or + // Indicates that the specified node ID is not allowed or // understood by the Plugin, or the Plugin does not support the - // operation without a `NodeID`. More human-readable information + // operation without a node ID. More human-readable information // MAY be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `NodeID` before + // Recovery behavior: Caller MUST fix the node ID before // retrying. Error_ControllerPublishVolumeError_INVALID_NODE_ID Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode = 8 ) @@ -485,7 +483,7 @@ var Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode_name = m 0: "UNKNOWN", 1: "CALL_NOT_IMPLEMENTED", 2: "OPERATION_PENDING_FOR_VOLUME", - 3: "INVALID_VOLUME_HANDLE", + 3: "INVALID_VOLUME_ID", 4: "VOLUME_DOES_NOT_EXIST", 5: "VOLUME_ALREADY_PUBLISHED", 6: "NODE_DOES_NOT_EXIST", @@ -499,7 +497,7 @@ var Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode_value = "UNKNOWN": 0, "CALL_NOT_IMPLEMENTED": 1, "OPERATION_PENDING_FOR_VOLUME": 2, - "INVALID_VOLUME_HANDLE": 3, + "INVALID_VOLUME_ID": 3, "VOLUME_DOES_NOT_EXIST": 4, "VOLUME_ALREADY_PUBLISHED": 5, "NODE_DOES_NOT_EXIST": 6, @@ -514,7 +512,7 @@ func (x Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode) Str return proto.EnumName(Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode_name, int32(x)) } func (Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 3, 0} + return fileDescriptor0, []int{38, 3, 0} } type Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode int32 @@ -550,39 +548,39 @@ const ( // calls pending for the specified volume, and then retry with // exponential back off. Error_ControllerUnpublishVolumeError_OPERATION_PENDING_FOR_VOLUME Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode = 2 - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - Error_ControllerUnpublishVolumeError_INVALID_VOLUME_HANDLE Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode = 3 + Error_ControllerUnpublishVolumeError_INVALID_VOLUME_ID Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode = 3 // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. Error_ControllerUnpublishVolumeError_VOLUME_DOES_NOT_EXIST Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode = 4 - // Indicates that a node corresponding to the specified `NodeID` + // Indicates that a node corresponding to the specified node ID // does not exist. // - // Recovery behavior: Caller SHOULD verify that the `NodeID` is + // Recovery behavior: Caller SHOULD verify that the node ID is // correct and that the node is available and has not been // terminated or deleted before retrying. Error_ControllerUnpublishVolumeError_NODE_DOES_NOT_EXIST Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode = 5 - // Indicates that the specified `NodeID` is not allowed or + // Indicates that the specified node ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `NodeID` before + // Recovery behavior: Caller MUST fix the node ID before // retrying. Error_ControllerUnpublishVolumeError_INVALID_NODE_ID Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode = 6 Error_ControllerUnpublishVolumeError_VOLUME_NOT_ATTACHED_TO_SPECIFIED_NODE Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode = 7 // Indicates that the Plugin does not support the operation - // without a `NodeID`. + // without a node ID. // - // Recovery behavior: Caller MUST specify the `NodeID` before + // Recovery behavior: Caller MUST specify the node ID before // retrying. Error_ControllerUnpublishVolumeError_NODE_ID_REQUIRED Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode = 8 ) @@ -591,7 +589,7 @@ var Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode_name 0: "UNKNOWN", 1: "CALL_NOT_IMPLEMENTED", 2: "OPERATION_PENDING_FOR_VOLUME", - 3: "INVALID_VOLUME_HANDLE", + 3: "INVALID_VOLUME_ID", 4: "VOLUME_DOES_NOT_EXIST", 5: "NODE_DOES_NOT_EXIST", 6: "INVALID_NODE_ID", @@ -602,7 +600,7 @@ var Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode_valu "UNKNOWN": 0, "CALL_NOT_IMPLEMENTED": 1, "OPERATION_PENDING_FOR_VOLUME": 2, - "INVALID_VOLUME_HANDLE": 3, + "INVALID_VOLUME_ID": 3, "VOLUME_DOES_NOT_EXIST": 4, "NODE_DOES_NOT_EXIST": 5, "INVALID_NODE_ID": 6, @@ -614,7 +612,7 @@ func (x Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode) return proto.EnumName(Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode_name, int32(x)) } func (Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 4, 0} + return fileDescriptor0, []int{38, 4, 0} } type Error_ValidateVolumeCapabilitiesError_ValidateVolumeCapabilitiesErrorCode int32 @@ -669,7 +667,7 @@ func (x Error_ValidateVolumeCapabilitiesError_ValidateVolumeCapabilitiesErrorCod return proto.EnumName(Error_ValidateVolumeCapabilitiesError_ValidateVolumeCapabilitiesErrorCode_name, int32(x)) } func (Error_ValidateVolumeCapabilitiesError_ValidateVolumeCapabilitiesErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 5, 0} + return fileDescriptor0, []int{38, 5, 0} } type Error_NodePublishVolumeError_NodePublishVolumeErrorCode int32 @@ -699,9 +697,9 @@ const ( // exponential back off. Error_NodePublishVolumeError_OPERATION_PENDING_FOR_VOLUME Error_NodePublishVolumeError_NodePublishVolumeErrorCode = 1 // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. Error_NodePublishVolumeError_VOLUME_DOES_NOT_EXIST Error_NodePublishVolumeError_NodePublishVolumeErrorCode = 2 @@ -709,13 +707,13 @@ const ( Error_NodePublishVolumeError_UNSUPPORTED_VOLUME_TYPE Error_NodePublishVolumeError_NodePublishVolumeErrorCode = 4 Error_NodePublishVolumeError_UNSUPPORTED_FS_TYPE Error_NodePublishVolumeError_NodePublishVolumeErrorCode = 5 Error_NodePublishVolumeError_MOUNT_ERROR Error_NodePublishVolumeError_NodePublishVolumeErrorCode = 6 - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - Error_NodePublishVolumeError_INVALID_VOLUME_HANDLE Error_NodePublishVolumeError_NodePublishVolumeErrorCode = 7 + Error_NodePublishVolumeError_INVALID_VOLUME_ID Error_NodePublishVolumeError_NodePublishVolumeErrorCode = 7 ) var Error_NodePublishVolumeError_NodePublishVolumeErrorCode_name = map[int32]string{ @@ -726,7 +724,7 @@ var Error_NodePublishVolumeError_NodePublishVolumeErrorCode_name = map[int32]str 4: "UNSUPPORTED_VOLUME_TYPE", 5: "UNSUPPORTED_FS_TYPE", 6: "MOUNT_ERROR", - 7: "INVALID_VOLUME_HANDLE", + 7: "INVALID_VOLUME_ID", } var Error_NodePublishVolumeError_NodePublishVolumeErrorCode_value = map[string]int32{ "UNKNOWN": 0, @@ -736,14 +734,14 @@ var Error_NodePublishVolumeError_NodePublishVolumeErrorCode_value = map[string]i "UNSUPPORTED_VOLUME_TYPE": 4, "UNSUPPORTED_FS_TYPE": 5, "MOUNT_ERROR": 6, - "INVALID_VOLUME_HANDLE": 7, + "INVALID_VOLUME_ID": 7, } func (x Error_NodePublishVolumeError_NodePublishVolumeErrorCode) String() string { return proto.EnumName(Error_NodePublishVolumeError_NodePublishVolumeErrorCode_name, int32(x)) } func (Error_NodePublishVolumeError_NodePublishVolumeErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 6, 0} + return fileDescriptor0, []int{38, 6, 0} } type Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode int32 @@ -773,20 +771,20 @@ const ( // exponential back off. Error_NodeUnpublishVolumeError_OPERATION_PENDING_FOR_VOLUME Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode = 1 // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. Error_NodeUnpublishVolumeError_VOLUME_DOES_NOT_EXIST Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode = 2 Error_NodeUnpublishVolumeError_UNMOUNT_ERROR Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode = 3 - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - Error_NodeUnpublishVolumeError_INVALID_VOLUME_HANDLE Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode = 4 + Error_NodeUnpublishVolumeError_INVALID_VOLUME_ID Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode = 4 ) var Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode_name = map[int32]string{ @@ -794,21 +792,21 @@ var Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode_name = map[int32 1: "OPERATION_PENDING_FOR_VOLUME", 2: "VOLUME_DOES_NOT_EXIST", 3: "UNMOUNT_ERROR", - 4: "INVALID_VOLUME_HANDLE", + 4: "INVALID_VOLUME_ID", } var Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode_value = map[string]int32{ "UNKNOWN": 0, "OPERATION_PENDING_FOR_VOLUME": 1, "VOLUME_DOES_NOT_EXIST": 2, "UNMOUNT_ERROR": 3, - "INVALID_VOLUME_HANDLE": 4, + "INVALID_VOLUME_ID": 4, } func (x Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode) String() string { return proto.EnumName(Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode_name, int32(x)) } func (Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 7, 0} + return fileDescriptor0, []int{38, 7, 0} } type Error_ProbeNodeError_ProbeNodeErrorCode int32 @@ -842,7 +840,7 @@ func (x Error_ProbeNodeError_ProbeNodeErrorCode) String() string { return proto.EnumName(Error_ProbeNodeError_ProbeNodeErrorCode_name, int32(x)) } func (Error_ProbeNodeError_ProbeNodeErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 8, 0} + return fileDescriptor0, []int{38, 8, 0} } type Error_GetNodeIDError_GetNodeIDErrorCode int32 @@ -875,7 +873,7 @@ func (x Error_GetNodeIDError_GetNodeIDErrorCode) String() string { return proto.EnumName(Error_GetNodeIDError_GetNodeIDErrorCode_name, int32(x)) } func (Error_GetNodeIDError_GetNodeIDErrorCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 9, 0} + return fileDescriptor0, []int{38, 9, 0} } // ////// @@ -1703,8 +1701,9 @@ type VolumeInfo struct { CapacityBytes uint64 `protobuf:"varint,1,opt,name=capacity_bytes,json=capacityBytes" json:"capacity_bytes,omitempty"` // Contains identity information for the created volume. This field is // REQUIRED. The identity information will be used by the CO in - // subsequent calls to refer to the provisioned volume. - Handle *VolumeHandle `protobuf:"bytes,2,opt,name=handle" json:"handle,omitempty"` + // subsequent calls to refer to the provisioned volume. This field + // should not exceed 1MiB. + Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` } func (m *VolumeInfo) Reset() { *m = VolumeInfo{} } @@ -1719,54 +1718,13 @@ func (m *VolumeInfo) GetCapacityBytes() uint64 { return 0 } -func (m *VolumeInfo) GetHandle() *VolumeHandle { - if m != nil { - return m.Handle - } - return nil -} - -// VolumeHandle objects are generated by Plugin implementations to -// serve two purposes: first, to efficiently identify a volume known -// to the Plugin implementation; second, to capture additional, opaque, -// possibly sensitive information associated with a volume. It SHALL -// NOT change over the lifetime of the volume and MAY be safely cached -// by the CO. -// Since this object will be passed around by the CO, it is RECOMMENDED -// that each Plugin keeps the information herein as small as possible. -// The total bytes of a serialized VolumeHandle must be less than 1 MiB. -type VolumeHandle struct { - // ID is the identity of the provisioned volume specified by the - // Plugin. This field is REQUIRED. - // This information SHALL NOT be considered sensitive such that, for - // example, the CO MAY generate log messages that include this data. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // Metadata captures additional, possibly sensitive, information about - // a volume in the form of key-value pairs. This field is OPTIONAL. - // Since this field MAY contain sensitive information, the CO MUST NOT - // leak this information to untrusted entities. - Metadata map[string]string `protobuf:"bytes,2,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *VolumeHandle) Reset() { *m = VolumeHandle{} } -func (m *VolumeHandle) String() string { return proto.CompactTextString(m) } -func (*VolumeHandle) ProtoMessage() {} -func (*VolumeHandle) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *VolumeHandle) GetId() string { +func (m *VolumeInfo) GetId() string { if m != nil { return m.Id } return "" } -func (m *VolumeHandle) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - // A standard way to encode credential data. The total bytes of the // values in the Data field must be less than 1 Mebibyte. type Credentials struct { @@ -1785,7 +1743,7 @@ type Credentials struct { func (m *Credentials) Reset() { *m = Credentials{} } func (m *Credentials) String() string { return proto.CompactTextString(m) } func (*Credentials) ProtoMessage() {} -func (*Credentials) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } +func (*Credentials) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } func (m *Credentials) GetData() map[string]string { if m != nil { @@ -1799,9 +1757,9 @@ func (m *Credentials) GetData() map[string]string { type DeleteVolumeRequest struct { // The API version assumed by the CO. This field is REQUIRED. Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"` - // The handle of the volume to be deprovisioned. + // The ID of the volume to be deprovisioned. // This field is REQUIRED. - VolumeHandle *VolumeHandle `protobuf:"bytes,2,opt,name=volume_handle,json=volumeHandle" json:"volume_handle,omitempty"` + VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // End user credentials used to authenticate/authorize volume deletion // request. // This field is OPTIONAL. @@ -1811,7 +1769,7 @@ type DeleteVolumeRequest struct { func (m *DeleteVolumeRequest) Reset() { *m = DeleteVolumeRequest{} } func (m *DeleteVolumeRequest) String() string { return proto.CompactTextString(m) } func (*DeleteVolumeRequest) ProtoMessage() {} -func (*DeleteVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } +func (*DeleteVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } func (m *DeleteVolumeRequest) GetVersion() *Version { if m != nil { @@ -1820,11 +1778,11 @@ func (m *DeleteVolumeRequest) GetVersion() *Version { return nil } -func (m *DeleteVolumeRequest) GetVolumeHandle() *VolumeHandle { +func (m *DeleteVolumeRequest) GetVolumeId() string { if m != nil { - return m.VolumeHandle + return m.VolumeId } - return nil + return "" } func (m *DeleteVolumeRequest) GetUserCredentials() *Credentials { @@ -1846,7 +1804,7 @@ type DeleteVolumeResponse struct { func (m *DeleteVolumeResponse) Reset() { *m = DeleteVolumeResponse{} } func (m *DeleteVolumeResponse) String() string { return proto.CompactTextString(m) } func (*DeleteVolumeResponse) ProtoMessage() {} -func (*DeleteVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } +func (*DeleteVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } type isDeleteVolumeResponse_Reply interface { isDeleteVolumeResponse_Reply() @@ -1963,21 +1921,21 @@ type DeleteVolumeResponse_Result struct { func (m *DeleteVolumeResponse_Result) Reset() { *m = DeleteVolumeResponse_Result{} } func (m *DeleteVolumeResponse_Result) String() string { return proto.CompactTextString(m) } func (*DeleteVolumeResponse_Result) ProtoMessage() {} -func (*DeleteVolumeResponse_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 0} } +func (*DeleteVolumeResponse_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12, 0} } // ////// // ////// type ControllerPublishVolumeRequest struct { // The API version assumed by the CO. This field is REQUIRED. Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"` - // The handle of the volume to be used on a node. + // The ID of the volume to be used on a node. // This field is REQUIRED. - VolumeHandle *VolumeHandle `protobuf:"bytes,2,opt,name=volume_handle,json=volumeHandle" json:"volume_handle,omitempty"` + VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // The ID of the node. This field is OPTIONAL. The CO SHALL set (or - // clear) this field to match the `NodeID` returned by `GetNodeID`. - // `GetNodeID` is allowed to omit `NodeID` from a successful `Result`; + // clear) this field to match the node ID returned by `GetNodeID`. + // `GetNodeID` is allowed to omit node ID from a successful `Result`; // in such cases the CO SHALL NOT specify this field. - NodeId *NodeID `protobuf:"bytes,3,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,3,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` // The capability of the volume the CO expects the volume to have. // This is a REQUIRED field. VolumeCapability *VolumeCapability `protobuf:"bytes,4,opt,name=volume_capability,json=volumeCapability" json:"volume_capability,omitempty"` @@ -1993,7 +1951,7 @@ type ControllerPublishVolumeRequest struct { func (m *ControllerPublishVolumeRequest) Reset() { *m = ControllerPublishVolumeRequest{} } func (m *ControllerPublishVolumeRequest) String() string { return proto.CompactTextString(m) } func (*ControllerPublishVolumeRequest) ProtoMessage() {} -func (*ControllerPublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } +func (*ControllerPublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } func (m *ControllerPublishVolumeRequest) GetVersion() *Version { if m != nil { @@ -2002,18 +1960,18 @@ func (m *ControllerPublishVolumeRequest) GetVersion() *Version { return nil } -func (m *ControllerPublishVolumeRequest) GetVolumeHandle() *VolumeHandle { +func (m *ControllerPublishVolumeRequest) GetVolumeId() string { if m != nil { - return m.VolumeHandle + return m.VolumeId } - return nil + return "" } -func (m *ControllerPublishVolumeRequest) GetNodeId() *NodeID { +func (m *ControllerPublishVolumeRequest) GetNodeId() string { if m != nil { return m.NodeId } - return nil + return "" } func (m *ControllerPublishVolumeRequest) GetVolumeCapability() *VolumeCapability { @@ -2050,7 +2008,7 @@ func (m *ControllerPublishVolumeResponse) Reset() { *m = ControllerPubli func (m *ControllerPublishVolumeResponse) String() string { return proto.CompactTextString(m) } func (*ControllerPublishVolumeResponse) ProtoMessage() {} func (*ControllerPublishVolumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{15} + return fileDescriptor0, []int{14} } type isControllerPublishVolumeResponse_Reply interface { @@ -2175,7 +2133,7 @@ func (m *ControllerPublishVolumeResponse_Result) Reset() { func (m *ControllerPublishVolumeResponse_Result) String() string { return proto.CompactTextString(m) } func (*ControllerPublishVolumeResponse_Result) ProtoMessage() {} func (*ControllerPublishVolumeResponse_Result) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{15, 0} + return fileDescriptor0, []int{14, 0} } func (m *ControllerPublishVolumeResponse_Result) GetPublishVolumeInfo() *PublishVolumeInfo { @@ -2185,26 +2143,6 @@ func (m *ControllerPublishVolumeResponse_Result) GetPublishVolumeInfo() *Publish return nil } -type NodeID struct { - // Information about a node in the form of key-value pairs. This - // information is opaque to the CO. Given this information will be - // passed around by the CO, it is RECOMMENDED that each Plugin keeps - // this information as small as possible. This field is REQUIRED. - Values map[string]string `protobuf:"bytes,1,rep,name=values" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *NodeID) Reset() { *m = NodeID{} } -func (m *NodeID) String() string { return proto.CompactTextString(m) } -func (*NodeID) ProtoMessage() {} -func (*NodeID) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *NodeID) GetValues() map[string]string { - if m != nil { - return m.Values - } - return nil -} - type PublishVolumeInfo struct { // Information returned by the Plugin in `ControllerPublishVolume` // call. It is in the form of key-value pairs, and is opaque to the @@ -2217,7 +2155,7 @@ type PublishVolumeInfo struct { func (m *PublishVolumeInfo) Reset() { *m = PublishVolumeInfo{} } func (m *PublishVolumeInfo) String() string { return proto.CompactTextString(m) } func (*PublishVolumeInfo) ProtoMessage() {} -func (*PublishVolumeInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } +func (*PublishVolumeInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } func (m *PublishVolumeInfo) GetValues() map[string]string { if m != nil { @@ -2231,18 +2169,18 @@ func (m *PublishVolumeInfo) GetValues() map[string]string { type ControllerUnpublishVolumeRequest struct { // The API version assumed by the CO. This field is REQUIRED. Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"` - // The handle of the volume. This field is REQUIRED. - VolumeHandle *VolumeHandle `protobuf:"bytes,2,opt,name=volume_handle,json=volumeHandle" json:"volume_handle,omitempty"` + // The ID of the volume. This field is REQUIRED. + VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // The ID of the node. This field is OPTIONAL. The CO SHALL set (or - // clear) this field to match the `NodeID` returned by `GetNodeID`. - // `GetNodeID` is allowed to omit `NodeID` from a successful `Result`; + // clear) this field to match the node ID returned by `GetNodeID`. + // `GetNodeID` is allowed to omit node ID from a successful `Result`; // in such cases the CO SHALL NOT specify this field. // - // If `GetNodeID` does not omit `NodeID` from a successful `Result`, + // If `GetNodeID` does not omit node ID from a successful `Result`, // the CO MAY omit this field as well, indicating that it does not // know which node the volume was previously used. The Plugin SHOULD // return an Error if this is not supported. - NodeId *NodeID `protobuf:"bytes,3,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,3,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` // End user credentials used to authenticate/authorize controller // unpublish request. // This field is OPTIONAL. @@ -2253,7 +2191,7 @@ func (m *ControllerUnpublishVolumeRequest) Reset() { *m = ControllerUnpu func (m *ControllerUnpublishVolumeRequest) String() string { return proto.CompactTextString(m) } func (*ControllerUnpublishVolumeRequest) ProtoMessage() {} func (*ControllerUnpublishVolumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{18} + return fileDescriptor0, []int{16} } func (m *ControllerUnpublishVolumeRequest) GetVersion() *Version { @@ -2263,18 +2201,18 @@ func (m *ControllerUnpublishVolumeRequest) GetVersion() *Version { return nil } -func (m *ControllerUnpublishVolumeRequest) GetVolumeHandle() *VolumeHandle { +func (m *ControllerUnpublishVolumeRequest) GetVolumeId() string { if m != nil { - return m.VolumeHandle + return m.VolumeId } - return nil + return "" } -func (m *ControllerUnpublishVolumeRequest) GetNodeId() *NodeID { +func (m *ControllerUnpublishVolumeRequest) GetNodeId() string { if m != nil { return m.NodeId } - return nil + return "" } func (m *ControllerUnpublishVolumeRequest) GetUserCredentials() *Credentials { @@ -2297,7 +2235,7 @@ func (m *ControllerUnpublishVolumeResponse) Reset() { *m = ControllerUnp func (m *ControllerUnpublishVolumeResponse) String() string { return proto.CompactTextString(m) } func (*ControllerUnpublishVolumeResponse) ProtoMessage() {} func (*ControllerUnpublishVolumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{19} + return fileDescriptor0, []int{17} } type isControllerUnpublishVolumeResponse_Reply interface { @@ -2418,7 +2356,7 @@ func (m *ControllerUnpublishVolumeResponse_Result) Reset() { func (m *ControllerUnpublishVolumeResponse_Result) String() string { return proto.CompactTextString(m) } func (*ControllerUnpublishVolumeResponse_Result) ProtoMessage() {} func (*ControllerUnpublishVolumeResponse_Result) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{19, 0} + return fileDescriptor0, []int{17, 0} } // ////// @@ -2426,9 +2364,8 @@ func (*ControllerUnpublishVolumeResponse_Result) Descriptor() ([]byte, []int) { type ValidateVolumeCapabilitiesRequest struct { // The API version assumed by the CO. This is a REQUIRED field. Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"` - // The information about the volume to check. This is a REQUIRED - // field. - VolumeInfo *VolumeInfo `protobuf:"bytes,2,opt,name=volume_info,json=volumeInfo" json:"volume_info,omitempty"` + // The ID of the volume to check. This field is REQUIRED. + VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // The capabilities that the CO wants to check for the volume. This // call SHALL return "supported" only if all the volume capabilities // specified below are supported. This field is REQUIRED. @@ -2439,7 +2376,7 @@ func (m *ValidateVolumeCapabilitiesRequest) Reset() { *m = ValidateVolum func (m *ValidateVolumeCapabilitiesRequest) String() string { return proto.CompactTextString(m) } func (*ValidateVolumeCapabilitiesRequest) ProtoMessage() {} func (*ValidateVolumeCapabilitiesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{20} + return fileDescriptor0, []int{18} } func (m *ValidateVolumeCapabilitiesRequest) GetVersion() *Version { @@ -2449,11 +2386,11 @@ func (m *ValidateVolumeCapabilitiesRequest) GetVersion() *Version { return nil } -func (m *ValidateVolumeCapabilitiesRequest) GetVolumeInfo() *VolumeInfo { +func (m *ValidateVolumeCapabilitiesRequest) GetVolumeId() string { if m != nil { - return m.VolumeInfo + return m.VolumeId } - return nil + return "" } func (m *ValidateVolumeCapabilitiesRequest) GetVolumeCapabilities() []*VolumeCapability { @@ -2476,7 +2413,7 @@ func (m *ValidateVolumeCapabilitiesResponse) Reset() { *m = ValidateVolu func (m *ValidateVolumeCapabilitiesResponse) String() string { return proto.CompactTextString(m) } func (*ValidateVolumeCapabilitiesResponse) ProtoMessage() {} func (*ValidateVolumeCapabilitiesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{21} + return fileDescriptor0, []int{19} } type isValidateVolumeCapabilitiesResponse_Reply interface { @@ -2603,7 +2540,7 @@ func (m *ValidateVolumeCapabilitiesResponse_Result) Reset() { func (m *ValidateVolumeCapabilitiesResponse_Result) String() string { return proto.CompactTextString(m) } func (*ValidateVolumeCapabilitiesResponse_Result) ProtoMessage() {} func (*ValidateVolumeCapabilitiesResponse_Result) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{21, 0} + return fileDescriptor0, []int{19, 0} } func (m *ValidateVolumeCapabilitiesResponse_Result) GetSupported() bool { @@ -2642,7 +2579,7 @@ type ListVolumesRequest struct { func (m *ListVolumesRequest) Reset() { *m = ListVolumesRequest{} } func (m *ListVolumesRequest) String() string { return proto.CompactTextString(m) } func (*ListVolumesRequest) ProtoMessage() {} -func (*ListVolumesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } +func (*ListVolumesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } func (m *ListVolumesRequest) GetVersion() *Version { if m != nil { @@ -2677,7 +2614,7 @@ type ListVolumesResponse struct { func (m *ListVolumesResponse) Reset() { *m = ListVolumesResponse{} } func (m *ListVolumesResponse) String() string { return proto.CompactTextString(m) } func (*ListVolumesResponse) ProtoMessage() {} -func (*ListVolumesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } +func (*ListVolumesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } type isListVolumesResponse_Reply interface { isListVolumesResponse_Reply() @@ -2801,7 +2738,7 @@ type ListVolumesResponse_Result struct { func (m *ListVolumesResponse_Result) Reset() { *m = ListVolumesResponse_Result{} } func (m *ListVolumesResponse_Result) String() string { return proto.CompactTextString(m) } func (*ListVolumesResponse_Result) ProtoMessage() {} -func (*ListVolumesResponse_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23, 0} } +func (*ListVolumesResponse_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21, 0} } func (m *ListVolumesResponse_Result) GetEntries() []*ListVolumesResponse_Result_Entry { if m != nil { @@ -2825,7 +2762,7 @@ func (m *ListVolumesResponse_Result_Entry) Reset() { *m = ListVolumesRes func (m *ListVolumesResponse_Result_Entry) String() string { return proto.CompactTextString(m) } func (*ListVolumesResponse_Result_Entry) ProtoMessage() {} func (*ListVolumesResponse_Result_Entry) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{23, 0, 0} + return fileDescriptor0, []int{21, 0, 0} } func (m *ListVolumesResponse_Result_Entry) GetVolumeInfo() *VolumeInfo { @@ -2856,7 +2793,7 @@ type GetCapacityRequest struct { func (m *GetCapacityRequest) Reset() { *m = GetCapacityRequest{} } func (m *GetCapacityRequest) String() string { return proto.CompactTextString(m) } func (*GetCapacityRequest) ProtoMessage() {} -func (*GetCapacityRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } +func (*GetCapacityRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } func (m *GetCapacityRequest) GetVersion() *Version { if m != nil { @@ -2891,7 +2828,7 @@ type GetCapacityResponse struct { func (m *GetCapacityResponse) Reset() { *m = GetCapacityResponse{} } func (m *GetCapacityResponse) String() string { return proto.CompactTextString(m) } func (*GetCapacityResponse) ProtoMessage() {} -func (*GetCapacityResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } +func (*GetCapacityResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } type isGetCapacityResponse_Reply interface { isGetCapacityResponse_Reply() @@ -3014,7 +2951,7 @@ type GetCapacityResponse_Result struct { func (m *GetCapacityResponse_Result) Reset() { *m = GetCapacityResponse_Result{} } func (m *GetCapacityResponse_Result) String() string { return proto.CompactTextString(m) } func (*GetCapacityResponse_Result) ProtoMessage() {} -func (*GetCapacityResponse_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25, 0} } +func (*GetCapacityResponse_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23, 0} } func (m *GetCapacityResponse_Result) GetAvailableCapacity() uint64 { if m != nil { @@ -3034,7 +2971,7 @@ func (m *ControllerGetCapabilitiesRequest) Reset() { *m = ControllerGetC func (m *ControllerGetCapabilitiesRequest) String() string { return proto.CompactTextString(m) } func (*ControllerGetCapabilitiesRequest) ProtoMessage() {} func (*ControllerGetCapabilitiesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{26} + return fileDescriptor0, []int{24} } func (m *ControllerGetCapabilitiesRequest) GetVersion() *Version { @@ -3057,7 +2994,7 @@ func (m *ControllerGetCapabilitiesResponse) Reset() { *m = ControllerGet func (m *ControllerGetCapabilitiesResponse) String() string { return proto.CompactTextString(m) } func (*ControllerGetCapabilitiesResponse) ProtoMessage() {} func (*ControllerGetCapabilitiesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{27} + return fileDescriptor0, []int{25} } type isControllerGetCapabilitiesResponse_Reply interface { @@ -3181,7 +3118,7 @@ func (m *ControllerGetCapabilitiesResponse_Result) Reset() { func (m *ControllerGetCapabilitiesResponse_Result) String() string { return proto.CompactTextString(m) } func (*ControllerGetCapabilitiesResponse_Result) ProtoMessage() {} func (*ControllerGetCapabilitiesResponse_Result) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{27, 0} + return fileDescriptor0, []int{25, 0} } func (m *ControllerGetCapabilitiesResponse_Result) GetCapabilities() []*ControllerServiceCapability { @@ -3201,7 +3138,7 @@ type ControllerServiceCapability struct { func (m *ControllerServiceCapability) Reset() { *m = ControllerServiceCapability{} } func (m *ControllerServiceCapability) String() string { return proto.CompactTextString(m) } func (*ControllerServiceCapability) ProtoMessage() {} -func (*ControllerServiceCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } +func (*ControllerServiceCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } type isControllerServiceCapability_Type interface { isControllerServiceCapability_Type() @@ -3290,7 +3227,7 @@ func (m *ControllerServiceCapability_RPC) Reset() { *m = ControllerServi func (m *ControllerServiceCapability_RPC) String() string { return proto.CompactTextString(m) } func (*ControllerServiceCapability_RPC) ProtoMessage() {} func (*ControllerServiceCapability_RPC) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 0} + return fileDescriptor0, []int{26, 0} } func (m *ControllerServiceCapability_RPC) GetType() ControllerServiceCapability_RPC_Type { @@ -3305,8 +3242,8 @@ func (m *ControllerServiceCapability_RPC) GetType() ControllerServiceCapability_ type NodePublishVolumeRequest struct { // The API version assumed by the CO. This is a REQUIRED field. Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"` - // The handle of the volume to publish. This field is REQUIRED. - VolumeHandle *VolumeHandle `protobuf:"bytes,2,opt,name=volume_handle,json=volumeHandle" json:"volume_handle,omitempty"` + // The ID of the volume to publish. This field is REQUIRED. + VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // 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 @@ -3332,7 +3269,7 @@ type NodePublishVolumeRequest struct { func (m *NodePublishVolumeRequest) Reset() { *m = NodePublishVolumeRequest{} } func (m *NodePublishVolumeRequest) String() string { return proto.CompactTextString(m) } func (*NodePublishVolumeRequest) ProtoMessage() {} -func (*NodePublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } +func (*NodePublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } func (m *NodePublishVolumeRequest) GetVersion() *Version { if m != nil { @@ -3341,11 +3278,11 @@ func (m *NodePublishVolumeRequest) GetVersion() *Version { return nil } -func (m *NodePublishVolumeRequest) GetVolumeHandle() *VolumeHandle { +func (m *NodePublishVolumeRequest) GetVolumeId() string { if m != nil { - return m.VolumeHandle + return m.VolumeId } - return nil + return "" } func (m *NodePublishVolumeRequest) GetPublishVolumeInfo() *PublishVolumeInfo { @@ -3395,7 +3332,7 @@ type NodePublishVolumeResponse struct { func (m *NodePublishVolumeResponse) Reset() { *m = NodePublishVolumeResponse{} } func (m *NodePublishVolumeResponse) String() string { return proto.CompactTextString(m) } func (*NodePublishVolumeResponse) ProtoMessage() {} -func (*NodePublishVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } +func (*NodePublishVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } type isNodePublishVolumeResponse_Reply interface { isNodePublishVolumeResponse_Reply() @@ -3513,7 +3450,7 @@ func (m *NodePublishVolumeResponse_Result) Reset() { *m = NodePublishVol func (m *NodePublishVolumeResponse_Result) String() string { return proto.CompactTextString(m) } func (*NodePublishVolumeResponse_Result) ProtoMessage() {} func (*NodePublishVolumeResponse_Result) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{30, 0} + return fileDescriptor0, []int{28, 0} } // ////// @@ -3521,8 +3458,8 @@ func (*NodePublishVolumeResponse_Result) Descriptor() ([]byte, []int) { type NodeUnpublishVolumeRequest struct { // The API version assumed by the CO. This is a REQUIRED field. Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"` - // The handle of the volume. This field is REQUIRED. - VolumeHandle *VolumeHandle `protobuf:"bytes,2,opt,name=volume_handle,json=volumeHandle" json:"volume_handle,omitempty"` + // The ID of the volume. This field is REQUIRED. + VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` // The path at which the volume was published. It MUST be an absolute // path in the root filesystem of the process serving this request. // This is a REQUIRED field. @@ -3535,7 +3472,7 @@ type NodeUnpublishVolumeRequest struct { func (m *NodeUnpublishVolumeRequest) Reset() { *m = NodeUnpublishVolumeRequest{} } func (m *NodeUnpublishVolumeRequest) String() string { return proto.CompactTextString(m) } func (*NodeUnpublishVolumeRequest) ProtoMessage() {} -func (*NodeUnpublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } +func (*NodeUnpublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } func (m *NodeUnpublishVolumeRequest) GetVersion() *Version { if m != nil { @@ -3544,11 +3481,11 @@ func (m *NodeUnpublishVolumeRequest) GetVersion() *Version { return nil } -func (m *NodeUnpublishVolumeRequest) GetVolumeHandle() *VolumeHandle { +func (m *NodeUnpublishVolumeRequest) GetVolumeId() string { if m != nil { - return m.VolumeHandle + return m.VolumeId } - return nil + return "" } func (m *NodeUnpublishVolumeRequest) GetTargetPath() string { @@ -3577,7 +3514,7 @@ type NodeUnpublishVolumeResponse struct { func (m *NodeUnpublishVolumeResponse) Reset() { *m = NodeUnpublishVolumeResponse{} } func (m *NodeUnpublishVolumeResponse) String() string { return proto.CompactTextString(m) } func (*NodeUnpublishVolumeResponse) ProtoMessage() {} -func (*NodeUnpublishVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } +func (*NodeUnpublishVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } type isNodeUnpublishVolumeResponse_Reply interface { isNodeUnpublishVolumeResponse_Reply() @@ -3695,7 +3632,7 @@ func (m *NodeUnpublishVolumeResponse_Result) Reset() { *m = NodeUnpublis func (m *NodeUnpublishVolumeResponse_Result) String() string { return proto.CompactTextString(m) } func (*NodeUnpublishVolumeResponse_Result) ProtoMessage() {} func (*NodeUnpublishVolumeResponse_Result) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{32, 0} + return fileDescriptor0, []int{30, 0} } // ////// @@ -3708,7 +3645,7 @@ type GetNodeIDRequest struct { func (m *GetNodeIDRequest) Reset() { *m = GetNodeIDRequest{} } func (m *GetNodeIDRequest) String() string { return proto.CompactTextString(m) } func (*GetNodeIDRequest) ProtoMessage() {} -func (*GetNodeIDRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } +func (*GetNodeIDRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } func (m *GetNodeIDRequest) GetVersion() *Version { if m != nil { @@ -3729,7 +3666,7 @@ type GetNodeIDResponse struct { func (m *GetNodeIDResponse) Reset() { *m = GetNodeIDResponse{} } func (m *GetNodeIDResponse) String() string { return proto.CompactTextString(m) } func (*GetNodeIDResponse) ProtoMessage() {} -func (*GetNodeIDResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } +func (*GetNodeIDResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } type isGetNodeIDResponse_Reply interface { isGetNodeIDResponse_Reply() @@ -3845,19 +3782,19 @@ type GetNodeIDResponse_Result struct { // `ControllerPublishVolume`. This is an OPTIONAL field. If unset, // the CO SHALL leave the `node_id` field unset in // `ControllerPublishVolume`. - NodeId *NodeID `protobuf:"bytes,1,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId" json:"node_id,omitempty"` } func (m *GetNodeIDResponse_Result) Reset() { *m = GetNodeIDResponse_Result{} } func (m *GetNodeIDResponse_Result) String() string { return proto.CompactTextString(m) } func (*GetNodeIDResponse_Result) ProtoMessage() {} -func (*GetNodeIDResponse_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34, 0} } +func (*GetNodeIDResponse_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32, 0} } -func (m *GetNodeIDResponse_Result) GetNodeId() *NodeID { +func (m *GetNodeIDResponse_Result) GetNodeId() string { if m != nil { return m.NodeId } - return nil + return "" } // ////// @@ -3870,7 +3807,7 @@ type ProbeNodeRequest struct { func (m *ProbeNodeRequest) Reset() { *m = ProbeNodeRequest{} } func (m *ProbeNodeRequest) String() string { return proto.CompactTextString(m) } func (*ProbeNodeRequest) ProtoMessage() {} -func (*ProbeNodeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } +func (*ProbeNodeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } func (m *ProbeNodeRequest) GetVersion() *Version { if m != nil { @@ -3891,7 +3828,7 @@ type ProbeNodeResponse struct { func (m *ProbeNodeResponse) Reset() { *m = ProbeNodeResponse{} } func (m *ProbeNodeResponse) String() string { return proto.CompactTextString(m) } func (*ProbeNodeResponse) ProtoMessage() {} -func (*ProbeNodeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } +func (*ProbeNodeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } type isProbeNodeResponse_Reply interface { isProbeNodeResponse_Reply() @@ -4008,7 +3945,7 @@ type ProbeNodeResponse_Result struct { func (m *ProbeNodeResponse_Result) Reset() { *m = ProbeNodeResponse_Result{} } func (m *ProbeNodeResponse_Result) String() string { return proto.CompactTextString(m) } func (*ProbeNodeResponse_Result) ProtoMessage() {} -func (*ProbeNodeResponse_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36, 0} } +func (*ProbeNodeResponse_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34, 0} } // ////// // ////// @@ -4020,7 +3957,7 @@ type NodeGetCapabilitiesRequest struct { func (m *NodeGetCapabilitiesRequest) Reset() { *m = NodeGetCapabilitiesRequest{} } func (m *NodeGetCapabilitiesRequest) String() string { return proto.CompactTextString(m) } func (*NodeGetCapabilitiesRequest) ProtoMessage() {} -func (*NodeGetCapabilitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } +func (*NodeGetCapabilitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } func (m *NodeGetCapabilitiesRequest) GetVersion() *Version { if m != nil { @@ -4041,7 +3978,7 @@ type NodeGetCapabilitiesResponse struct { func (m *NodeGetCapabilitiesResponse) Reset() { *m = NodeGetCapabilitiesResponse{} } func (m *NodeGetCapabilitiesResponse) String() string { return proto.CompactTextString(m) } func (*NodeGetCapabilitiesResponse) ProtoMessage() {} -func (*NodeGetCapabilitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } +func (*NodeGetCapabilitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } type isNodeGetCapabilitiesResponse_Reply interface { isNodeGetCapabilitiesResponse_Reply() @@ -4162,7 +4099,7 @@ func (m *NodeGetCapabilitiesResponse_Result) Reset() { *m = NodeGetCapab func (m *NodeGetCapabilitiesResponse_Result) String() string { return proto.CompactTextString(m) } func (*NodeGetCapabilitiesResponse_Result) ProtoMessage() {} func (*NodeGetCapabilitiesResponse_Result) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{38, 0} + return fileDescriptor0, []int{36, 0} } func (m *NodeGetCapabilitiesResponse_Result) GetCapabilities() []*NodeServiceCapability { @@ -4182,7 +4119,7 @@ type NodeServiceCapability struct { func (m *NodeServiceCapability) Reset() { *m = NodeServiceCapability{} } func (m *NodeServiceCapability) String() string { return proto.CompactTextString(m) } func (*NodeServiceCapability) ProtoMessage() {} -func (*NodeServiceCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } +func (*NodeServiceCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } type isNodeServiceCapability_Type interface { isNodeServiceCapability_Type() @@ -4270,7 +4207,7 @@ type NodeServiceCapability_RPC struct { func (m *NodeServiceCapability_RPC) Reset() { *m = NodeServiceCapability_RPC{} } func (m *NodeServiceCapability_RPC) String() string { return proto.CompactTextString(m) } func (*NodeServiceCapability_RPC) ProtoMessage() {} -func (*NodeServiceCapability_RPC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39, 0} } +func (*NodeServiceCapability_RPC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37, 0} } func (m *NodeServiceCapability_RPC) GetType() NodeServiceCapability_RPC_Type { if m != nil { @@ -4301,7 +4238,7 @@ type Error struct { func (m *Error) Reset() { *m = Error{} } func (m *Error) String() string { return proto.CompactTextString(m) } func (*Error) ProtoMessage() {} -func (*Error) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } +func (*Error) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } type isError_Value interface { isError_Value() @@ -4671,7 +4608,7 @@ type Error_GeneralError struct { func (m *Error_GeneralError) Reset() { *m = Error_GeneralError{} } func (m *Error_GeneralError) String() string { return proto.CompactTextString(m) } func (*Error_GeneralError) ProtoMessage() {} -func (*Error_GeneralError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40, 0} } +func (*Error_GeneralError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 0} } func (m *Error_GeneralError) GetErrorCode() Error_GeneralError_GeneralErrorCode { if m != nil { @@ -4706,7 +4643,7 @@ type Error_CreateVolumeError struct { func (m *Error_CreateVolumeError) Reset() { *m = Error_CreateVolumeError{} } func (m *Error_CreateVolumeError) String() string { return proto.CompactTextString(m) } func (*Error_CreateVolumeError) ProtoMessage() {} -func (*Error_CreateVolumeError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40, 1} } +func (*Error_CreateVolumeError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 1} } func (m *Error_CreateVolumeError) GetErrorCode() Error_CreateVolumeError_CreateVolumeErrorCode { if m != nil { @@ -4734,7 +4671,7 @@ type Error_DeleteVolumeError struct { func (m *Error_DeleteVolumeError) Reset() { *m = Error_DeleteVolumeError{} } func (m *Error_DeleteVolumeError) String() string { return proto.CompactTextString(m) } func (*Error_DeleteVolumeError) ProtoMessage() {} -func (*Error_DeleteVolumeError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40, 2} } +func (*Error_DeleteVolumeError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 2} } func (m *Error_DeleteVolumeError) GetErrorCode() Error_DeleteVolumeError_DeleteVolumeErrorCode { if m != nil { @@ -4760,14 +4697,14 @@ type Error_ControllerPublishVolumeError struct { // On `VOLUME_ALREADY_ATTACHED` and `MAX_ATTACHED_NODES` errors, // this field contains the node(s) that the specified volume is // already attached to. - NodeIds []*NodeID `protobuf:"bytes,3,rep,name=node_ids,json=nodeIds" json:"node_ids,omitempty"` + NodeIds []string `protobuf:"bytes,3,rep,name=node_ids,json=nodeIds" json:"node_ids,omitempty"` } func (m *Error_ControllerPublishVolumeError) Reset() { *m = Error_ControllerPublishVolumeError{} } func (m *Error_ControllerPublishVolumeError) String() string { return proto.CompactTextString(m) } func (*Error_ControllerPublishVolumeError) ProtoMessage() {} func (*Error_ControllerPublishVolumeError) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 3} + return fileDescriptor0, []int{38, 3} } func (m *Error_ControllerPublishVolumeError) GetErrorCode() Error_ControllerPublishVolumeError_ControllerPublishVolumeErrorCode { @@ -4784,7 +4721,7 @@ func (m *Error_ControllerPublishVolumeError) GetErrorDescription() string { return "" } -func (m *Error_ControllerPublishVolumeError) GetNodeIds() []*NodeID { +func (m *Error_ControllerPublishVolumeError) GetNodeIds() []string { if m != nil { return m.NodeIds } @@ -4801,7 +4738,7 @@ func (m *Error_ControllerUnpublishVolumeError) Reset() { *m = Error_Cont func (m *Error_ControllerUnpublishVolumeError) String() string { return proto.CompactTextString(m) } func (*Error_ControllerUnpublishVolumeError) ProtoMessage() {} func (*Error_ControllerUnpublishVolumeError) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 4} + return fileDescriptor0, []int{38, 4} } func (m *Error_ControllerUnpublishVolumeError) GetErrorCode() Error_ControllerUnpublishVolumeError_ControllerUnpublishVolumeErrorCode { @@ -4828,7 +4765,7 @@ func (m *Error_ValidateVolumeCapabilitiesError) Reset() { *m = Error_Val func (m *Error_ValidateVolumeCapabilitiesError) String() string { return proto.CompactTextString(m) } func (*Error_ValidateVolumeCapabilitiesError) ProtoMessage() {} func (*Error_ValidateVolumeCapabilitiesError) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 5} + return fileDescriptor0, []int{38, 5} } func (m *Error_ValidateVolumeCapabilitiesError) GetErrorCode() Error_ValidateVolumeCapabilitiesError_ValidateVolumeCapabilitiesErrorCode { @@ -4855,7 +4792,7 @@ func (m *Error_NodePublishVolumeError) Reset() { *m = Error_NodePublishV func (m *Error_NodePublishVolumeError) String() string { return proto.CompactTextString(m) } func (*Error_NodePublishVolumeError) ProtoMessage() {} func (*Error_NodePublishVolumeError) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 6} + return fileDescriptor0, []int{38, 6} } func (m *Error_NodePublishVolumeError) GetErrorCode() Error_NodePublishVolumeError_NodePublishVolumeErrorCode { @@ -4882,7 +4819,7 @@ func (m *Error_NodeUnpublishVolumeError) Reset() { *m = Error_NodeUnpubl func (m *Error_NodeUnpublishVolumeError) String() string { return proto.CompactTextString(m) } func (*Error_NodeUnpublishVolumeError) ProtoMessage() {} func (*Error_NodeUnpublishVolumeError) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{40, 7} + return fileDescriptor0, []int{38, 7} } func (m *Error_NodeUnpublishVolumeError) GetErrorCode() Error_NodeUnpublishVolumeError_NodeUnpublishVolumeErrorCode { @@ -4908,7 +4845,7 @@ type Error_ProbeNodeError struct { func (m *Error_ProbeNodeError) Reset() { *m = Error_ProbeNodeError{} } func (m *Error_ProbeNodeError) String() string { return proto.CompactTextString(m) } func (*Error_ProbeNodeError) ProtoMessage() {} -func (*Error_ProbeNodeError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40, 8} } +func (*Error_ProbeNodeError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 8} } func (m *Error_ProbeNodeError) GetErrorCode() Error_ProbeNodeError_ProbeNodeErrorCode { if m != nil { @@ -4933,7 +4870,7 @@ type Error_GetNodeIDError struct { func (m *Error_GetNodeIDError) Reset() { *m = Error_GetNodeIDError{} } func (m *Error_GetNodeIDError) String() string { return proto.CompactTextString(m) } func (*Error_GetNodeIDError) ProtoMessage() {} -func (*Error_GetNodeIDError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40, 9} } +func (*Error_GetNodeIDError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 9} } func (m *Error_GetNodeIDError) GetErrorCode() Error_GetNodeIDError_GetNodeIDErrorCode { if m != nil { @@ -4966,7 +4903,6 @@ func init() { proto.RegisterType((*VolumeCapability_AccessMode)(nil), "csi.VolumeCapability.AccessMode") proto.RegisterType((*CapacityRange)(nil), "csi.CapacityRange") proto.RegisterType((*VolumeInfo)(nil), "csi.VolumeInfo") - proto.RegisterType((*VolumeHandle)(nil), "csi.VolumeHandle") proto.RegisterType((*Credentials)(nil), "csi.Credentials") proto.RegisterType((*DeleteVolumeRequest)(nil), "csi.DeleteVolumeRequest") proto.RegisterType((*DeleteVolumeResponse)(nil), "csi.DeleteVolumeResponse") @@ -4974,7 +4910,6 @@ func init() { proto.RegisterType((*ControllerPublishVolumeRequest)(nil), "csi.ControllerPublishVolumeRequest") proto.RegisterType((*ControllerPublishVolumeResponse)(nil), "csi.ControllerPublishVolumeResponse") proto.RegisterType((*ControllerPublishVolumeResponse_Result)(nil), "csi.ControllerPublishVolumeResponse.Result") - proto.RegisterType((*NodeID)(nil), "csi.NodeID") proto.RegisterType((*PublishVolumeInfo)(nil), "csi.PublishVolumeInfo") proto.RegisterType((*ControllerUnpublishVolumeRequest)(nil), "csi.ControllerUnpublishVolumeRequest") proto.RegisterType((*ControllerUnpublishVolumeResponse)(nil), "csi.ControllerUnpublishVolumeResponse") @@ -5636,207 +5571,201 @@ var _Node_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("csi.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 3226 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5b, 0x4d, 0x6c, 0x23, 0x49, - 0x15, 0x76, 0xfb, 0x37, 0x7e, 0x8e, 0x67, 0xda, 0x95, 0xc9, 0xc4, 0xe9, 0xc9, 0x4c, 0x32, 0x3d, - 0x3f, 0x3b, 0xc3, 0xb2, 0x5e, 0x08, 0x12, 0xb3, 0x33, 0xb3, 0x7f, 0x8e, 0xdd, 0x71, 0xcc, 0x38, - 0x6d, 0x6f, 0xdb, 0xce, 0xee, 0x80, 0xd8, 0x56, 0xc7, 0xee, 0x64, 0xcc, 0x38, 0xb6, 0xb7, 0xbb, - 0x63, 0x6d, 0x6e, 0x48, 0x20, 0x24, 0x56, 0x1c, 0x10, 0x48, 0x2c, 0xe2, 0x00, 0x87, 0xe5, 0x00, - 0x12, 0x27, 0x10, 0x20, 0x04, 0x17, 0x84, 0x38, 0x22, 0xc4, 0x85, 0x45, 0x48, 0x1c, 0x57, 0x68, - 0x39, 0x71, 0xe5, 0x86, 0xaa, 0xba, 0xba, 0xdd, 0xdd, 0xee, 0xb6, 0x9d, 0x38, 0xcb, 0x70, 0x73, - 0xbf, 0x57, 0xef, 0xbd, 0xaa, 0xef, 0x55, 0xbd, 0xf7, 0xea, 0xc7, 0x90, 0x6c, 0xe9, 0x9d, 0xdc, - 0x40, 0xeb, 0x1b, 0x7d, 0x14, 0x69, 0xe9, 0x1d, 0xfe, 0x2a, 0x5c, 0x29, 0xa9, 0x46, 0xfd, 0x78, - 0x30, 0xe8, 0x6b, 0x86, 0xda, 0xde, 0x53, 0x35, 0xbd, 0xd3, 0xef, 0xe9, 0x92, 0xfa, 0xce, 0xb1, - 0xaa, 0x1b, 0xfc, 0x5f, 0x19, 0x58, 0xf3, 0xe7, 0xeb, 0x83, 0x7e, 0x4f, 0x57, 0xd1, 0x16, 0xc4, - 0x35, 0x55, 0x3f, 0xee, 0x1a, 0x59, 0x66, 0x83, 0xb9, 0x93, 0xda, 0xbc, 0x93, 0xc3, 0x06, 0x26, - 0x89, 0xe4, 0x24, 0xd2, 0x7e, 0x27, 0x24, 0x51, 0x49, 0xc4, 0x43, 0x4c, 0xd5, 0xb4, 0xbe, 0x96, - 0x0d, 0x13, 0x15, 0x40, 0x54, 0x08, 0x98, 0xb2, 0x13, 0x92, 0x4c, 0x16, 0x27, 0x40, 0xdc, 0x94, - 0x43, 0x0f, 0x01, 0xe9, 0x96, 0x6e, 0x79, 0x48, 0x95, 0x67, 0x99, 0x8d, 0xc8, 0x9d, 0xd4, 0xe6, - 0x22, 0x11, 0xa5, 0x16, 0xa5, 0x8c, 0xee, 0xed, 0xc3, 0x56, 0x02, 0x62, 0x9a, 0x3a, 0xe8, 0x9e, - 0xf0, 0x8f, 0x20, 0x41, 0x89, 0xe8, 0x12, 0xc4, 0x8e, 0x94, 0xaf, 0xf4, 0x35, 0x32, 0x82, 0xb4, - 0x64, 0x7e, 0x10, 0x6a, 0xa7, 0x47, 0x3b, 0x85, 0xa9, 0xf8, 0x03, 0x53, 0x07, 0x8a, 0xd1, 0x7a, - 0x92, 0x8d, 0x98, 0x54, 0xf2, 0xc1, 0xbf, 0x0a, 0x97, 0x4a, 0xaa, 0x51, 0xeb, 0x1e, 0x1f, 0x76, - 0x7a, 0xe5, 0xde, 0x41, 0x9f, 0xa2, 0x87, 0x6e, 0x43, 0x82, 0x76, 0x90, 0xa2, 0xe3, 0xee, 0x9f, - 0xc5, 0xe4, 0xff, 0x12, 0x86, 0x65, 0x8f, 0x02, 0x0a, 0xef, 0x43, 0x0f, 0xbc, 0xd7, 0x2d, 0x78, - 0xc7, 0xdb, 0x9e, 0x0d, 0xd7, 0x3f, 0x31, 0x36, 0xb0, 0x08, 0xa2, 0x3d, 0xe5, 0x48, 0x25, 0x96, - 0x92, 0x12, 0xf9, 0x8d, 0x6e, 0xc1, 0x85, 0xa1, 0xda, 0x6b, 0xf7, 0x35, 0x0b, 0x69, 0xa2, 0x2b, - 0x29, 0xa5, 0x4d, 0xaa, 0x05, 0xe1, 0x23, 0x58, 0x38, 0x52, 0x7a, 0x9d, 0x03, 0x55, 0x37, 0xb2, - 0x11, 0xe2, 0x89, 0x17, 0xa7, 0x76, 0x34, 0xb7, 0x4b, 0x25, 0x84, 0x9e, 0xa1, 0x9d, 0x48, 0xb6, - 0x02, 0xee, 0x21, 0xa4, 0x5d, 0x2c, 0xc4, 0x42, 0xe4, 0xa9, 0x7a, 0x42, 0xfb, 0x85, 0x7f, 0x62, - 0x37, 0x0c, 0x95, 0xee, 0xb1, 0x4a, 0x7b, 0x63, 0x7e, 0x3c, 0x08, 0xbf, 0xc4, 0x8c, 0x1c, 0xfc, - 0x83, 0x08, 0x2c, 0x15, 0x34, 0x55, 0x31, 0xd4, 0xbd, 0x7e, 0xf7, 0xf8, 0x48, 0x3d, 0xa5, 0x4f, - 0x6c, 0x34, 0xc2, 0x0e, 0x34, 0xee, 0xc3, 0x85, 0x96, 0x32, 0x50, 0x5a, 0x1d, 0xe3, 0x44, 0xd6, - 0x94, 0xde, 0xa1, 0x4a, 0xa6, 0x41, 0x6a, 0x13, 0x11, 0x15, 0x05, 0xca, 0x92, 0x30, 0x47, 0x4a, - 0xb7, 0x9c, 0x9f, 0x68, 0x1b, 0x96, 0x86, 0xa4, 0x1f, 0x32, 0xa6, 0xef, 0x77, 0xba, 0x1d, 0xa3, - 0xa3, 0xea, 0xd9, 0x28, 0x01, 0x6b, 0xd9, 0xec, 0x02, 0xe1, 0x17, 0x2c, 0xf6, 0x89, 0x84, 0x86, - 0x6e, 0x4a, 0x47, 0xd5, 0xd1, 0x0e, 0xc0, 0x40, 0xd1, 0x94, 0x23, 0xd5, 0x50, 0x35, 0x3d, 0x1b, - 0x23, 0xe2, 0xe6, 0x9a, 0xf3, 0x19, 0x6c, 0xae, 0x66, 0x37, 0x35, 0x41, 0x76, 0xc8, 0xa2, 0x87, - 0xc0, 0x1e, 0xeb, 0xaa, 0x26, 0xb7, 0x34, 0xb5, 0xad, 0xf6, 0x8c, 0x8e, 0xd2, 0xd5, 0xb3, 0x71, - 0x32, 0x1c, 0xd6, 0xd2, 0x67, 0xd1, 0xa5, 0x8b, 0xb8, 0xa5, 0x83, 0xc0, 0xbd, 0x02, 0x17, 0x3d, - 0xba, 0x4f, 0xe3, 0x25, 0xfe, 0xb7, 0x0c, 0x5c, 0x72, 0xf7, 0x97, 0xce, 0xf7, 0x07, 0x9e, 0xf9, - 0xbe, 0xe1, 0x33, 0xb4, 0x79, 0xa6, 0xfb, 0x03, 0x7b, 0xb6, 0x7f, 0x06, 0x52, 0xd4, 0x21, 0x9d, - 0xde, 0x41, 0x9f, 0x9a, 0xbb, 0xe8, 0x70, 0x04, 0x99, 0xb2, 0x30, 0xb4, 0x7f, 0x8f, 0xa6, 0xd6, - 0x0f, 0xa3, 0xc0, 0x7a, 0x9d, 0x85, 0xee, 0x43, 0x6c, 0xbf, 0xdb, 0x6f, 0x3d, 0x75, 0x2d, 0x54, - 0x6f, 0xab, 0xdc, 0x16, 0x6e, 0x62, 0x52, 0x71, 0xa7, 0x88, 0x04, 0x16, 0x3d, 0xea, 0x1f, 0xf7, - 0x0c, 0xda, 0xf1, 0x00, 0xd1, 0x5d, 0xdc, 0x64, 0x24, 0x4a, 0x24, 0x50, 0x1e, 0x52, 0x4a, 0xab, - 0xa5, 0xea, 0xba, 0x7c, 0xd4, 0x6f, 0x5b, 0xd3, 0x71, 0xc3, 0x5f, 0x41, 0x9e, 0x34, 0xdc, 0xed, - 0xb7, 0x55, 0x09, 0x14, 0xfb, 0x37, 0x97, 0x86, 0x94, 0xa3, 0x57, 0x5c, 0x09, 0x52, 0x0e, 0x4b, - 0x68, 0x05, 0x12, 0x07, 0xba, 0x6c, 0x9c, 0x0c, 0xac, 0xb8, 0x10, 0x3f, 0xd0, 0x1b, 0x27, 0x03, - 0x15, 0xad, 0x43, 0x8a, 0x74, 0x41, 0x3e, 0xe8, 0x2a, 0x87, 0x7a, 0x36, 0xbc, 0x11, 0xb9, 0x93, - 0x94, 0x80, 0x90, 0xb6, 0x31, 0x85, 0xfb, 0x98, 0x01, 0x18, 0x99, 0x44, 0xf7, 0x21, 0x4a, 0xba, - 0x88, 0xb5, 0x5c, 0xd8, 0xbc, 0x35, 0xad, 0x8b, 0x39, 0xd2, 0x4f, 0x22, 0xc2, 0xff, 0x88, 0x81, - 0x28, 0xd1, 0x91, 0x82, 0x44, 0x53, 0x7c, 0x24, 0x56, 0xdf, 0x14, 0xd9, 0x10, 0xba, 0x0c, 0xa8, - 0x5e, 0x16, 0x4b, 0x15, 0x41, 0x16, 0xab, 0x45, 0x41, 0x7e, 0x53, 0x2a, 0x37, 0x04, 0x89, 0x65, - 0xd0, 0x15, 0x58, 0x71, 0xd2, 0x25, 0x21, 0x5f, 0x14, 0x24, 0xb9, 0x2a, 0x56, 0x1e, 0xb3, 0x61, - 0xc4, 0xc1, 0xe5, 0xdd, 0x66, 0xa5, 0x51, 0x1e, 0xe7, 0x45, 0xd0, 0x1a, 0x64, 0x1d, 0x3c, 0xaa, - 0x83, 0xaa, 0x8d, 0x62, 0xb5, 0x0e, 0xae, 0xf9, 0x93, 0x32, 0x63, 0x5b, 0x69, 0xdb, 0x0d, 0x18, - 0x29, 0xfe, 0x4d, 0x48, 0xbb, 0x82, 0x01, 0x0e, 0xa3, 0x9a, 0xfa, 0xce, 0x71, 0x47, 0x53, 0xdb, - 0xf2, 0xfe, 0x89, 0xa1, 0xea, 0x04, 0x86, 0xa8, 0x94, 0xb6, 0xa8, 0x5b, 0x98, 0x88, 0x31, 0xed, - 0x76, 0x8e, 0x3a, 0x06, 0x6d, 0x13, 0x26, 0x6d, 0x80, 0x90, 0x48, 0x03, 0xfe, 0x6d, 0x80, 0xd1, - 0xe4, 0xc4, 0x5a, 0xed, 0x70, 0xe4, 0xd2, 0x6a, 0x51, 0x4d, 0xad, 0x77, 0x21, 0xfe, 0x44, 0xe9, - 0xb5, 0xbb, 0x2a, 0x9d, 0x5f, 0x19, 0x07, 0xf6, 0x3b, 0x84, 0x21, 0xd1, 0x06, 0xfc, 0xf7, 0x19, - 0x58, 0x74, 0x32, 0xd0, 0x05, 0x08, 0x77, 0xda, 0xd4, 0xf3, 0xe1, 0x4e, 0x1b, 0x3d, 0x84, 0x85, - 0x23, 0xd5, 0x50, 0xda, 0x8a, 0xa1, 0x10, 0x97, 0xa7, 0x36, 0xd7, 0xc7, 0xb4, 0xe5, 0x76, 0x69, - 0x0b, 0x2b, 0xb0, 0xd3, 0x4f, 0x12, 0xd8, 0x9d, 0xac, 0x53, 0x85, 0x8c, 0x21, 0xa4, 0x1c, 0x01, - 0x08, 0xe5, 0x20, 0x4a, 0x3a, 0x61, 0xe6, 0x7d, 0xce, 0x1b, 0xb1, 0x72, 0x45, 0xdb, 0x3e, 0x69, - 0xc7, 0xdd, 0x83, 0x64, 0xf1, 0x4c, 0x76, 0x7f, 0xce, 0xc0, 0x52, 0x51, 0xed, 0xaa, 0x67, 0xcd, - 0x23, 0x9f, 0x87, 0x34, 0x8d, 0x33, 0xd3, 0x9c, 0xb0, 0x38, 0x74, 0x22, 0xef, 0x17, 0x9e, 0x23, - 0x33, 0x86, 0x67, 0xfe, 0x9b, 0x0c, 0x5c, 0x72, 0x77, 0x7a, 0x62, 0x7c, 0xf5, 0x6b, 0x7a, 0xb6, - 0xf8, 0xba, 0x60, 0xc5, 0xd7, 0x51, 0xb4, 0xfc, 0x43, 0x18, 0xae, 0x15, 0xfa, 0x3d, 0x43, 0xeb, - 0x77, 0xbb, 0xaa, 0x56, 0x3b, 0xde, 0xef, 0x76, 0xf4, 0x27, 0xff, 0x5b, 0x2c, 0x6f, 0x42, 0xa2, - 0xd7, 0x6f, 0xab, 0x72, 0xa7, 0x4d, 0x21, 0x4c, 0x11, 0x09, 0xb1, 0xdf, 0x56, 0xcb, 0x45, 0x29, - 0x8e, 0x79, 0xe5, 0x36, 0xda, 0x82, 0x8c, 0x37, 0x45, 0x9f, 0x64, 0xa3, 0xa4, 0x7d, 0x40, 0x82, - 0x66, 0x87, 0xde, 0x2c, 0xc0, 0xc1, 0x82, 0xa6, 0x2a, 0xed, 0x7e, 0xaf, 0x7b, 0x92, 0x8d, 0x6d, - 0x30, 0x77, 0x16, 0x24, 0xfb, 0x7b, 0xae, 0x84, 0xcb, 0xff, 0x93, 0x81, 0xf5, 0x40, 0x14, 0xa9, - 0x73, 0x05, 0x8f, 0x73, 0x9f, 0x37, 0xd5, 0x4e, 0x96, 0x3a, 0x9b, 0x9f, 0x6b, 0x76, 0x1e, 0xdd, - 0x86, 0xa5, 0x81, 0xa9, 0x57, 0x1e, 0xcf, 0xa7, 0x97, 0x89, 0xac, 0xcb, 0x2e, 0x49, 0xab, 0x99, - 0x81, 0x97, 0x34, 0x9a, 0x2f, 0x06, 0xc4, 0x4d, 0xc7, 0xa0, 0x17, 0x21, 0x4e, 0xd6, 0xa1, 0x55, - 0xdd, 0xaf, 0x38, 0xbc, 0x96, 0xdb, 0x23, 0x1c, 0x73, 0x89, 0xd3, 0x66, 0xdc, 0x7d, 0x48, 0x39, - 0xc8, 0xa7, 0x5a, 0xe6, 0xef, 0x31, 0x90, 0x19, 0xeb, 0x27, 0x5e, 0x2e, 0xae, 0x1e, 0xf0, 0xfe, - 0xe3, 0x39, 0xef, 0xce, 0x7c, 0xc4, 0xc0, 0xc6, 0xc8, 0x6d, 0xcd, 0xde, 0xe0, 0xff, 0x77, 0xd1, - 0xf8, 0x4d, 0xea, 0xe8, 0xac, 0x93, 0xfa, 0x03, 0x06, 0xae, 0x4f, 0x18, 0x27, 0x9d, 0xd6, 0x25, - 0xcf, 0xb4, 0x7e, 0xc1, 0x33, 0xad, 0x03, 0xe4, 0xce, 0x2d, 0x80, 0xfd, 0x91, 0x81, 0xeb, 0x7b, - 0x4a, 0xb7, 0xd3, 0xb6, 0x6b, 0x50, 0x67, 0x45, 0x7e, 0x5a, 0x77, 0x78, 0xea, 0xce, 0xf0, 0xd4, - 0xba, 0x33, 0x68, 0xeb, 0x10, 0x39, 0xe5, 0xd6, 0x81, 0xff, 0x07, 0x03, 0xfc, 0xa4, 0x71, 0x50, - 0xb8, 0x77, 0x3c, 0x70, 0xe7, 0x4c, 0x0b, 0x53, 0x05, 0xcf, 0x86, 0xf7, 0xeb, 0x76, 0x20, 0x59, - 0x83, 0xa4, 0xbd, 0x5f, 0x27, 0xa6, 0x17, 0xa4, 0x11, 0x01, 0x65, 0x21, 0x71, 0xa4, 0xea, 0xba, - 0x72, 0x68, 0x2d, 0x17, 0xeb, 0x73, 0xe4, 0xa7, 0xaf, 0x33, 0x80, 0x2a, 0x1d, 0x9d, 0x56, 0xae, - 0xa7, 0x76, 0x0c, 0x2e, 0x68, 0x95, 0x77, 0x65, 0xb5, 0x67, 0x68, 0x1d, 0x5a, 0x7c, 0xa5, 0x25, - 0x38, 0x52, 0xde, 0x15, 0x4c, 0x0a, 0x2e, 0xb7, 0x74, 0x43, 0xd1, 0x8c, 0x4e, 0xef, 0x50, 0x36, - 0xfa, 0x4f, 0xd5, 0x1e, 0x59, 0x17, 0x49, 0x29, 0x6d, 0x51, 0x1b, 0x98, 0xc8, 0x7f, 0x10, 0x86, - 0x25, 0x57, 0x37, 0x28, 0xae, 0xf7, 0x3d, 0xb8, 0x9a, 0x85, 0x93, 0x4f, 0xcb, 0xb3, 0x01, 0xf9, - 0xc1, 0x68, 0x23, 0xff, 0x1a, 0x24, 0xac, 0x51, 0x98, 0x61, 0xeb, 0xd6, 0x14, 0x53, 0x39, 0x33, - 0x72, 0x59, 0x52, 0xe8, 0x2a, 0x40, 0x4f, 0x7d, 0xd7, 0xa0, 0xa3, 0x34, 0xf1, 0x4e, 0x62, 0x0a, - 0x19, 0x21, 0x77, 0x1f, 0x62, 0x66, 0x4c, 0x9b, 0x63, 0x0f, 0xf5, 0xad, 0x30, 0xa0, 0x92, 0x6a, - 0xd8, 0x65, 0xf2, 0x29, 0x9d, 0x15, 0xb0, 0x26, 0xc2, 0xa7, 0xdd, 0x4e, 0x97, 0x5c, 0xdb, 0x69, - 0x73, 0x49, 0x3d, 0x67, 0x1d, 0x5d, 0x78, 0x3a, 0x37, 0x69, 0x37, 0x3d, 0xef, 0x86, 0xf8, 0x57, - 0x0c, 0x2c, 0xb9, 0x2c, 0x4e, 0x9c, 0x34, 0x3e, 0x2d, 0xcf, 0x36, 0x69, 0xee, 0xd9, 0x73, 0xe6, - 0x05, 0x40, 0xca, 0x50, 0xe9, 0x74, 0x95, 0xfd, 0xae, 0x89, 0x29, 0x56, 0x4e, 0xf7, 0x13, 0x19, - 0x9b, 0x63, 0x59, 0x1d, 0xf9, 0xf1, 0x0b, 0xce, 0x4c, 0x45, 0xfb, 0x75, 0xc6, 0xd0, 0xc8, 0x7f, - 0xec, 0x4a, 0x07, 0x63, 0xca, 0x66, 0x4c, 0x07, 0x01, 0x72, 0x67, 0x03, 0x48, 0xb4, 0x01, 0x2a, - 0xc2, 0xa2, 0xcf, 0x54, 0xdb, 0xf0, 0x18, 0xaf, 0xab, 0xda, 0xb0, 0xd3, 0x72, 0xce, 0x3a, 0x97, - 0xd4, 0x08, 0xb7, 0xf7, 0xc3, 0x70, 0x65, 0x82, 0x18, 0x7a, 0x09, 0x22, 0xda, 0xa0, 0x45, 0x87, - 0x78, 0x73, 0x9a, 0x95, 0x9c, 0x54, 0x2b, 0xec, 0x84, 0x24, 0x2c, 0xc2, 0xfd, 0x92, 0x81, 0x88, - 0x54, 0x2b, 0xa0, 0x57, 0x20, 0x6a, 0x6f, 0xdb, 0x2f, 0x6c, 0xde, 0x9d, 0x45, 0x45, 0x0e, 0xef, - 0xec, 0x25, 0x22, 0xc6, 0xf7, 0x21, 0x4a, 0xf6, 0xf9, 0xae, 0x3d, 0x77, 0x16, 0x2e, 0x15, 0x24, - 0x21, 0xdf, 0x10, 0xe4, 0xa2, 0x50, 0x11, 0x1a, 0x82, 0xbc, 0x57, 0xad, 0x34, 0x77, 0x05, 0x96, - 0xc1, 0x9b, 0xe7, 0x5a, 0x73, 0xab, 0x52, 0xae, 0xef, 0xc8, 0x4d, 0xd1, 0xfa, 0x45, 0xb9, 0x61, - 0xc4, 0xc2, 0x62, 0xa5, 0x5c, 0x6f, 0x50, 0x42, 0x9d, 0x8d, 0x60, 0x4a, 0x49, 0x68, 0xc8, 0x85, - 0x7c, 0x2d, 0x5f, 0x28, 0x37, 0x1e, 0xb3, 0xd1, 0xad, 0xb8, 0xd9, 0x5f, 0xfe, 0xab, 0x11, 0xc8, - 0xe2, 0x22, 0xe3, 0x99, 0xec, 0x14, 0x02, 0xaa, 0xd9, 0xc8, 0x29, 0xab, 0x59, 0x9c, 0x4c, 0x0c, - 0x45, 0x3b, 0x54, 0x0d, 0x79, 0xa0, 0x18, 0x4f, 0x48, 0x45, 0x94, 0x94, 0xc0, 0x24, 0xd5, 0x14, - 0xe3, 0x89, 0xff, 0x66, 0x23, 0x76, 0xf6, 0xcd, 0x46, 0x7c, 0x86, 0xcd, 0x46, 0x62, 0xd6, 0xba, - 0xec, 0xbb, 0x0c, 0xac, 0xfa, 0xb8, 0x80, 0x2e, 0xc0, 0xd7, 0x3c, 0x0b, 0xf0, 0x96, 0x5d, 0x17, - 0xd6, 0x3e, 0xd1, 0x3a, 0xec, 0xef, 0x0c, 0x70, 0xd8, 0xca, 0x33, 0xaa, 0x87, 0x3d, 0x2e, 0x8d, - 0x8c, 0xb9, 0x74, 0xae, 0x52, 0xf8, 0x7d, 0x06, 0xae, 0xf8, 0x0e, 0x8e, 0x82, 0x9e, 0xf7, 0x80, - 0xfe, 0x9c, 0x0d, 0xfa, 0x27, 0x5d, 0xfe, 0x3e, 0x00, 0xb6, 0xa4, 0x1a, 0xb4, 0xec, 0x3f, 0x65, - 0x44, 0xff, 0x29, 0x03, 0x19, 0x87, 0x30, 0x1d, 0xcb, 0x3d, 0xcf, 0x58, 0xae, 0x5a, 0x49, 0xcd, - 0xdd, 0xee, 0x6c, 0x23, 0xc8, 0xd9, 0x11, 0xdb, 0xb1, 0x81, 0x61, 0x02, 0x37, 0x30, 0xae, 0x71, - 0xd6, 0xb4, 0xfe, 0xbe, 0x8a, 0xf9, 0xa7, 0x1d, 0xe7, 0xd7, 0xf0, 0xee, 0x71, 0x24, 0x3c, 0x71, - 0x9c, 0x63, 0xed, 0xce, 0xcd, 0x53, 0x45, 0x73, 0x7d, 0xcc, 0x99, 0x85, 0x3f, 0xa4, 0x33, 0x31, - 0x28, 0xff, 0x06, 0xcf, 0xc4, 0x73, 0xcd, 0xbc, 0x3b, 0xb6, 0x1f, 0x5f, 0xf5, 0xcd, 0xbc, 0x9c, - 0x6d, 0x76, 0xe6, 0x9c, 0xfb, 0x13, 0x06, 0x96, 0x7d, 0x05, 0xd0, 0xa6, 0x33, 0xdb, 0x5e, 0x0b, - 0xd6, 0xec, 0xcc, 0xb3, 0x75, 0x33, 0xcd, 0xde, 0x73, 0xa5, 0xd9, 0x1b, 0x93, 0x65, 0x9d, 0x09, - 0x76, 0xc9, 0x27, 0xc1, 0xda, 0x49, 0xf0, 0x77, 0x37, 0x20, 0x46, 0x00, 0x41, 0xaf, 0x42, 0xfa, - 0x50, 0xed, 0xa9, 0x9a, 0xd2, 0x95, 0x4d, 0xcc, 0xcc, 0x4e, 0xae, 0x8c, 0x30, 0xcb, 0x95, 0x4c, - 0xbe, 0x05, 0xe0, 0xe2, 0xa1, 0xe3, 0x1b, 0x89, 0xb0, 0xd4, 0x22, 0xd7, 0x27, 0x56, 0x42, 0x73, - 0x22, 0xbf, 0xe6, 0xd0, 0xe2, 0xbc, 0x64, 0xb1, 0x54, 0x65, 0x5a, 0x5e, 0x22, 0xd6, 0xd7, 0x26, - 0xc7, 0x85, 0x6e, 0x7d, 0x91, 0x31, 0x7d, 0xce, 0x43, 0x45, 0x5b, 0x5f, 0xdb, 0x4b, 0x44, 0x03, - 0x58, 0x6f, 0xd9, 0x55, 0x89, 0xec, 0x49, 0xbe, 0xa6, 0xee, 0xa8, 0x63, 0x9e, 0xd1, 0xbe, 0xfa, - 0x9f, 0x69, 0x59, 0x66, 0xd6, 0x5a, 0x13, 0xf8, 0x68, 0x08, 0xd7, 0x1d, 0x16, 0x8f, 0x7b, 0xbe, - 0x36, 0xcd, 0x54, 0x7c, 0xd7, 0xd7, 0xa6, 0x27, 0xe2, 0x5a, 0x56, 0xaf, 0xb5, 0x26, 0xb6, 0x40, - 0x27, 0xc0, 0x0f, 0xe9, 0x2e, 0x5a, 0xf6, 0xd9, 0xbc, 0x50, 0xc3, 0xe6, 0x89, 0xe0, 0xa7, 0x1c, - 0x86, 0x83, 0xb7, 0xde, 0x96, 0xe5, 0xf5, 0xe1, 0xe4, 0x26, 0xe8, 0x6d, 0x58, 0x25, 0xa1, 0xd0, - 0x77, 0xa8, 0x09, 0xc7, 0xad, 0x93, 0x69, 0x71, 0x2c, 0x97, 0x5b, 0x86, 0x2e, 0xf7, 0x7c, 0x39, - 0xa8, 0x0d, 0x57, 0x88, 0xfe, 0x00, 0x30, 0x17, 0x88, 0x85, 0x1b, 0x1e, 0x0b, 0x01, 0x30, 0x66, - 0x7b, 0x01, 0x3c, 0x24, 0x00, 0x3b, 0xc0, 0xc1, 0x53, 0x26, 0xb6, 0x4c, 0xd5, 0x49, 0xa2, 0x7a, - 0xd5, 0xa1, 0xda, 0x8e, 0xaf, 0x96, 0xc2, 0x0b, 0x03, 0x17, 0x05, 0x6d, 0x43, 0x06, 0x67, 0x71, - 0x9a, 0x1b, 0xa8, 0x1e, 0x18, 0xd3, 0x63, 0xe7, 0x23, 0x5b, 0xcf, 0x21, 0xa5, 0xb4, 0x09, 0x85, - 0xfb, 0x71, 0x18, 0x16, 0x9d, 0x4b, 0x0f, 0x6f, 0x26, 0x89, 0x32, 0xb9, 0x35, 0xba, 0xe8, 0xba, - 0x13, 0xb0, 0x4e, 0x5d, 0x1f, 0x05, 0x9c, 0x0d, 0x92, 0xaa, 0xf5, 0x13, 0x7d, 0x16, 0x96, 0x5b, - 0x0a, 0x99, 0x9d, 0x47, 0xc7, 0x3a, 0xee, 0xa9, 0x21, 0x6b, 0xaa, 0xa1, 0x9d, 0x90, 0x55, 0xbb, - 0x20, 0x21, 0x93, 0xb9, 0x7b, 0xac, 0x1b, 0x62, 0xdf, 0x90, 0x30, 0x07, 0x3d, 0x0f, 0x19, 0xd3, - 0x76, 0x5b, 0xd5, 0x5b, 0x5a, 0x67, 0x60, 0xe0, 0x38, 0x6f, 0xd6, 0x28, 0x2c, 0x61, 0x14, 0x47, - 0x74, 0xfe, 0x29, 0x4e, 0xe9, 0x6e, 0xf3, 0xee, 0x3a, 0x3f, 0x0d, 0xc9, 0xa6, 0x58, 0x14, 0xb6, - 0xcb, 0xa2, 0x50, 0x64, 0x19, 0xb4, 0x0e, 0x57, 0x9a, 0x62, 0xbd, 0x59, 0xab, 0x55, 0xa5, 0x86, - 0x50, 0x94, 0x25, 0xe1, 0x8d, 0xa6, 0x80, 0xab, 0x79, 0x41, 0xaa, 0x97, 0xab, 0x22, 0xbd, 0x56, - 0x2b, 0xd7, 0xeb, 0x65, 0xb1, 0x44, 0x98, 0x65, 0x49, 0x28, 0xca, 0xdb, 0x65, 0xa1, 0x52, 0x64, - 0x23, 0xdc, 0x37, 0x22, 0x90, 0x19, 0x8b, 0x2d, 0xe8, 0x0d, 0x1f, 0xac, 0x36, 0x27, 0x45, 0xa3, - 0x71, 0x8a, 0x17, 0x35, 0x5f, 0x08, 0xc2, 0x01, 0x10, 0xfc, 0x9b, 0x81, 0x65, 0x5f, 0x8d, 0xe3, - 0x1b, 0x9e, 0x7c, 0xa5, 0x22, 0x8b, 0xd5, 0x86, 0x5c, 0xde, 0xad, 0x55, 0x84, 0x5d, 0x41, 0x6c, - 0x10, 0x4c, 0x36, 0x60, 0xad, 0x5a, 0x13, 0xa4, 0x7c, 0xa3, 0x5c, 0x15, 0xe5, 0x9a, 0x20, 0x16, - 0xf1, 0xe0, 0xb7, 0xab, 0xd2, 0x68, 0xd3, 0xb3, 0x02, 0x4b, 0x65, 0x71, 0x2f, 0x5f, 0x29, 0x17, - 0x29, 0x4d, 0x16, 0xf3, 0xbb, 0x02, 0x1b, 0x41, 0xd7, 0x80, 0x73, 0xc2, 0x69, 0xed, 0x81, 0x64, - 0x29, 0x2f, 0x96, 0x04, 0x36, 0x8a, 0x56, 0x61, 0x99, 0x0a, 0xe4, 0x2b, 0x92, 0x90, 0x2f, 0x3e, - 0x96, 0x85, 0xb7, 0xca, 0xf5, 0x46, 0x9d, 0x8d, 0xa1, 0xab, 0xb0, 0xea, 0x14, 0xad, 0xe5, 0xa5, - 0xfc, 0xae, 0xd0, 0x10, 0x24, 0xf9, 0x91, 0xf0, 0x98, 0x8d, 0xa3, 0x2b, 0xb0, 0x62, 0x99, 0x1c, - 0xb1, 0xf6, 0xf2, 0x95, 0xa6, 0xc0, 0x26, 0xb8, 0x9f, 0x85, 0x21, 0x33, 0x16, 0x94, 0xa7, 0x3a, - 0x62, 0x4c, 0x62, 0x9c, 0x32, 0x97, 0x23, 0xbe, 0xc7, 0xc0, 0xb2, 0xaf, 0xc6, 0xf3, 0x73, 0xc4, - 0x2a, 0x2c, 0x7b, 0x1c, 0xb1, 0x93, 0x17, 0x8b, 0x15, 0xec, 0x8a, 0x11, 0xd4, 0xc5, 0xaa, 0x50, - 0x27, 0xda, 0x09, 0xd6, 0x6c, 0x94, 0xfb, 0x75, 0x14, 0xd6, 0x26, 0xe5, 0x19, 0x74, 0xe8, 0x83, - 0xdc, 0xce, 0x8c, 0x49, 0x6a, 0x22, 0x73, 0x1e, 0x3c, 0xd1, 0x6d, 0x58, 0xa0, 0x91, 0xcd, 0x3a, - 0xcf, 0x72, 0x95, 0xbd, 0x09, 0xb3, 0xec, 0xd5, 0xf9, 0xbf, 0x85, 0x9d, 0x27, 0x37, 0xfe, 0x9d, - 0x78, 0xc6, 0x2e, 0x40, 0x6b, 0x90, 0xf5, 0x2c, 0x04, 0x7a, 0xb2, 0x20, 0x14, 0xd9, 0x18, 0x5e, - 0x5f, 0xe4, 0x2e, 0xde, 0x23, 0x16, 0x47, 0x97, 0x01, 0xed, 0xe6, 0xdf, 0x92, 0xf3, 0x8d, 0x46, - 0xbe, 0xb0, 0x23, 0x14, 0xc9, 0x8d, 0x7d, 0x9d, 0x4d, 0xe0, 0xd5, 0xe1, 0x5c, 0x3c, 0xbb, 0xd5, - 0xa6, 0xd8, 0x90, 0xb7, 0x2b, 0xf9, 0x52, 0x9d, 0x4d, 0x7a, 0x99, 0xd4, 0x6e, 0xe3, 0x71, 0x4d, - 0x60, 0x01, 0x9b, 0x72, 0x32, 0xb7, 0xeb, 0x26, 0x23, 0x85, 0x96, 0xe0, 0xa2, 0x35, 0x2e, 0xd2, - 0x97, 0x72, 0x91, 0x5d, 0xe0, 0xfe, 0x1c, 0x71, 0xde, 0x78, 0xfa, 0xa6, 0xb2, 0xa7, 0x3e, 0x73, - 0xa7, 0x32, 0x73, 0xb1, 0x31, 0x85, 0x3d, 0xd7, 0x7a, 0xfc, 0x4e, 0x18, 0xf8, 0xe9, 0xea, 0x9f, - 0xf5, 0xcc, 0x08, 0xf0, 0x7d, 0xcc, 0xcf, 0x21, 0x71, 0x74, 0x17, 0x6e, 0x59, 0x11, 0xb8, 0xda, - 0x18, 0xcd, 0x8b, 0x46, 0x55, 0xae, 0xd7, 0x84, 0x42, 0x79, 0xbb, 0x4c, 0x27, 0x09, 0x9b, 0x40, - 0x97, 0x80, 0xa5, 0x72, 0x76, 0x26, 0x63, 0x17, 0xb8, 0xff, 0x84, 0x61, 0x7d, 0x4a, 0x19, 0x86, - 0x8e, 0x7c, 0x5c, 0x2a, 0xce, 0x5e, 0xc6, 0x4d, 0xe3, 0xcf, 0xe5, 0xd4, 0xdf, 0x30, 0x70, 0x63, - 0x06, 0xfd, 0x6e, 0xaf, 0x06, 0xc2, 0xcf, 0x4c, 0x5a, 0x49, 0xe1, 0x49, 0x2b, 0x29, 0x12, 0xb4, - 0x92, 0xa2, 0x3e, 0xd9, 0xb2, 0x2c, 0x6e, 0x57, 0xd9, 0x18, 0xf7, 0x5e, 0x04, 0x2e, 0xfb, 0x17, - 0xa4, 0xe8, 0x4b, 0x3e, 0x90, 0xbf, 0x3c, 0xb5, 0x8e, 0x0d, 0x20, 0xcf, 0x05, 0xf0, 0x47, 0xf4, - 0x6c, 0x6a, 0x96, 0x38, 0x3a, 0x6d, 0x4d, 0x30, 0xc1, 0xc8, 0x87, 0x27, 0x21, 0x1f, 0x99, 0x84, - 0x7c, 0x34, 0x08, 0xf9, 0x18, 0xba, 0x08, 0x29, 0x53, 0x8d, 0x20, 0x49, 0x55, 0x89, 0x8d, 0x07, - 0x2f, 0xc9, 0x04, 0xf7, 0xfb, 0xb0, 0x79, 0x38, 0xeb, 0x1b, 0xd4, 0x64, 0x1f, 0x77, 0xbc, 0x3e, - 0x43, 0xd1, 0x1f, 0xc8, 0x98, 0xb7, 0xb0, 0x58, 0x9b, 0xa4, 0xf8, 0x1c, 0x9d, 0x92, 0x81, 0x74, - 0x53, 0x74, 0x62, 0x18, 0x09, 0xc6, 0x30, 0xca, 0xfd, 0x8b, 0x81, 0x0b, 0xee, 0x4d, 0x0a, 0x7a, - 0xe4, 0x83, 0xdc, 0xa7, 0x03, 0xf7, 0x34, 0x9e, 0xcf, 0xb9, 0x50, 0x7a, 0x1b, 0xd0, 0xb8, 0x36, - 0x37, 0x34, 0xcb, 0x90, 0xd9, 0xca, 0x17, 0xe5, 0x5a, 0xa5, 0x59, 0x2a, 0x8b, 0x72, 0xa1, 0x2a, - 0x6e, 0x97, 0x4b, 0x2c, 0x83, 0x6e, 0xc2, 0xc6, 0x58, 0xcd, 0xbf, 0x53, 0xad, 0x37, 0xe4, 0xa2, - 0x80, 0xf1, 0x13, 0xc4, 0xc2, 0x63, 0x36, 0x4c, 0x06, 0xeb, 0xde, 0x49, 0x4d, 0x1d, 0xac, 0xbb, - 0xb9, 0xe7, 0x73, 0xde, 0xc1, 0x8e, 0x6b, 0x3b, 0xbf, 0xc1, 0x6e, 0x25, 0xe8, 0xfd, 0xde, 0xe6, - 0x2f, 0x18, 0x58, 0x28, 0x93, 0xb3, 0x5d, 0xe3, 0x04, 0x7d, 0x99, 0xbc, 0x0e, 0x1f, 0x7b, 0x0f, - 0x8f, 0x36, 0x26, 0x3c, 0x95, 0x27, 0x47, 0x76, 0xdc, 0xf5, 0xa9, 0x8f, 0xe9, 0xf9, 0x10, 0xda, - 0x81, 0xb4, 0xeb, 0x99, 0x35, 0x5a, 0xf5, 0x7b, 0x7a, 0x6d, 0x2a, 0xe4, 0x82, 0x5f, 0x65, 0xf3, - 0xa1, 0xcd, 0x0f, 0x63, 0x00, 0xa3, 0xd4, 0x8f, 0x04, 0x58, 0x74, 0xee, 0x90, 0x50, 0x36, 0xe8, - 0x99, 0x31, 0xb7, 0x1a, 0xf8, 0x4a, 0x97, 0x0f, 0x61, 0x35, 0xce, 0xfa, 0x9e, 0xaa, 0xf1, 0x79, - 0x52, 0x47, 0xd5, 0xf8, 0x3d, 0x46, 0xe3, 0x43, 0xe8, 0x00, 0x56, 0x02, 0xca, 0x55, 0x74, 0x63, - 0xf2, 0x3b, 0x27, 0x53, 0xf9, 0xcd, 0x59, 0x1e, 0x43, 0xf1, 0x21, 0xd4, 0x85, 0xd5, 0xc0, 0xf2, - 0x07, 0xdd, 0x9a, 0xf6, 0xf4, 0xc4, 0xb4, 0x75, 0x7b, 0xb6, 0x17, 0x2a, 0x7c, 0x08, 0xf5, 0x81, - 0x0b, 0xce, 0xcb, 0xe8, 0xf6, 0xd4, 0xa7, 0x17, 0xa6, 0xbd, 0xe7, 0x66, 0x7c, 0xa2, 0xc1, 0x87, - 0xd0, 0x16, 0xa4, 0x1c, 0xef, 0x00, 0xd0, 0xca, 0xf8, 0xcb, 0x00, 0x53, 0x65, 0x36, 0xe8, 0xc9, - 0x80, 0xa9, 0xc3, 0x71, 0x03, 0x4d, 0x75, 0x8c, 0xdf, 0x97, 0x53, 0x1d, 0x3e, 0x97, 0xd5, 0x5e, - 0x98, 0x3d, 0x07, 0xc7, 0x63, 0x30, 0xfb, 0x9f, 0x68, 0x8f, 0xc1, 0x1c, 0x70, 0xfe, 0xcc, 0x87, - 0x36, 0xbf, 0x1d, 0x81, 0x28, 0x5e, 0xf6, 0xa8, 0x01, 0x99, 0xb1, 0x34, 0x8d, 0xae, 0x06, 0x5d, - 0x60, 0x99, 0x66, 0xae, 0x4d, 0xbe, 0xdf, 0xe2, 0x43, 0xe8, 0x8b, 0xb0, 0xe4, 0x93, 0x69, 0xd0, - 0x7a, 0xf0, 0x1d, 0x8d, 0xa9, 0x79, 0x63, 0xda, 0x25, 0x0e, 0x1f, 0x42, 0x2f, 0x43, 0xd2, 0x8e, - 0x59, 0x68, 0xd9, 0x7b, 0x53, 0x62, 0xea, 0xb9, 0xec, 0x7f, 0x81, 0x62, 0x4a, 0xdb, 0xe1, 0x9d, - 0x4a, 0x7b, 0x2f, 0x39, 0xa8, 0xf4, 0xd8, 0xb5, 0xc4, 0x68, 0x5c, 0x5e, 0xf7, 0xac, 0x07, 0x9f, - 0xf8, 0x7b, 0xc7, 0x15, 0xe8, 0x92, 0xfd, 0x38, 0xf9, 0x13, 0xd2, 0xe7, 0xfe, 0x1b, 0x00, 0x00, - 0xff, 0xff, 0x9c, 0x97, 0x7c, 0x25, 0x91, 0x34, 0x00, 0x00, + // 3133 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0xdd, 0x6f, 0x1b, 0x59, + 0x15, 0xcf, 0xf8, 0x23, 0x8e, 0x8f, 0xeb, 0x76, 0x7c, 0xd3, 0x34, 0xce, 0x24, 0x6d, 0xd2, 0xe9, + 0x76, 0xb7, 0xcb, 0xb2, 0x06, 0xc2, 0x43, 0xb7, 0xed, 0x7e, 0x39, 0xf6, 0xc4, 0x19, 0xea, 0x8c, + 0xbd, 0x63, 0xbb, 0xbb, 0x05, 0xb1, 0xa3, 0xa9, 0x3d, 0x4d, 0x4d, 0x1d, 0xdb, 0x3b, 0x33, 0x89, + 0x36, 0xcf, 0x20, 0x24, 0x10, 0x42, 0x08, 0x1e, 0x56, 0x62, 0x11, 0x3c, 0x2c, 0x42, 0xfb, 0x88, + 0x84, 0x40, 0x42, 0x68, 0xc5, 0x1f, 0x80, 0x78, 0x40, 0x42, 0xec, 0x13, 0x0f, 0x3c, 0x20, 0xb4, + 0x3c, 0xf1, 0xca, 0x1b, 0xba, 0x1f, 0x33, 0x9e, 0x19, 0xcf, 0xd8, 0x4e, 0x9c, 0xb2, 0x6f, 0x9e, + 0x73, 0xef, 0x39, 0xe7, 0xde, 0xdf, 0x39, 0xf7, 0x9c, 0x73, 0x3f, 0x0c, 0xe9, 0xb6, 0xd5, 0x2d, + 0x0c, 0xcd, 0x81, 0x3d, 0x40, 0xf1, 0xb6, 0xd5, 0x15, 0xaf, 0xc2, 0x7a, 0xc5, 0xb0, 0x1b, 0x47, + 0xc3, 0xe1, 0xc0, 0xb4, 0x8d, 0xce, 0x03, 0xc3, 0xb4, 0xba, 0x83, 0xbe, 0xa5, 0x1a, 0xef, 0x1d, + 0x19, 0x96, 0x2d, 0xfe, 0x8d, 0x83, 0x8d, 0xf0, 0x76, 0x6b, 0x38, 0xe8, 0x5b, 0x06, 0xda, 0x81, + 0x45, 0xd3, 0xb0, 0x8e, 0x7a, 0x76, 0x9e, 0xdb, 0xe2, 0x6e, 0x65, 0xb6, 0x6f, 0x15, 0xb0, 0x82, + 0x49, 0x2c, 0x05, 0x95, 0xf4, 0xdf, 0x5b, 0x50, 0x19, 0x27, 0x12, 0x21, 0x69, 0x98, 0xe6, 0xc0, + 0xcc, 0xc7, 0x88, 0x08, 0x20, 0x22, 0x24, 0x4c, 0xd9, 0x5b, 0x50, 0x69, 0x93, 0x20, 0xc1, 0x22, + 0xe5, 0x43, 0xf7, 0x00, 0x59, 0x8e, 0x6c, 0xed, 0x98, 0x09, 0xcf, 0x73, 0x5b, 0xf1, 0x5b, 0x99, + 0xed, 0x0b, 0x84, 0x95, 0x69, 0x54, 0x73, 0x56, 0x70, 0x0c, 0x3b, 0x29, 0x48, 0x9a, 0xc6, 0xb0, + 0x77, 0x22, 0xde, 0x87, 0x14, 0x23, 0xa2, 0xcb, 0x90, 0x3c, 0xd4, 0xbf, 0x35, 0x30, 0xc9, 0x0c, + 0xb2, 0x2a, 0xfd, 0x20, 0xd4, 0x6e, 0x9f, 0x0d, 0x0a, 0x53, 0xf1, 0x07, 0xa6, 0x0e, 0x75, 0xbb, + 0xfd, 0x24, 0x1f, 0xa7, 0x54, 0xf2, 0x21, 0xbe, 0x0e, 0x97, 0x2b, 0x86, 0x5d, 0xef, 0x1d, 0x1d, + 0x74, 0xfb, 0x72, 0xff, 0xf1, 0x80, 0xa1, 0x87, 0x9e, 0x87, 0x14, 0x1b, 0x20, 0x43, 0xc7, 0x3f, + 0x3e, 0xa7, 0x51, 0xfc, 0x4b, 0x0c, 0x56, 0x02, 0x02, 0x18, 0xbc, 0xf7, 0x02, 0xf0, 0x5e, 0x77, + 0xe0, 0x1d, 0xef, 0x7b, 0x36, 0x5c, 0xff, 0xcc, 0xb9, 0xc0, 0x22, 0x48, 0xf4, 0xf5, 0x43, 0x83, + 0x68, 0x4a, 0xab, 0xe4, 0x37, 0xba, 0x09, 0x17, 0x8f, 0x8d, 0x7e, 0x67, 0x60, 0x3a, 0x48, 0x13, + 0x59, 0x69, 0x35, 0x4b, 0xa9, 0x0e, 0x84, 0xf7, 0x61, 0xe9, 0x50, 0xef, 0x77, 0x1f, 0x1b, 0x96, + 0x9d, 0x8f, 0x13, 0x4b, 0x7c, 0x69, 0xea, 0x40, 0x0b, 0xfb, 0x8c, 0x43, 0xea, 0xdb, 0xe6, 0x89, + 0xea, 0x0a, 0x10, 0xee, 0x41, 0xd6, 0xd7, 0x84, 0x78, 0x88, 0x3f, 0x35, 0x4e, 0xd8, 0xb8, 0xf0, + 0x4f, 0x6c, 0x86, 0x63, 0xbd, 0x77, 0x64, 0xb0, 0xd1, 0xd0, 0x8f, 0xbb, 0xb1, 0x57, 0xb8, 0x91, + 0x81, 0x7f, 0x1a, 0x87, 0xe5, 0x92, 0x69, 0xe8, 0xb6, 0xf1, 0x60, 0xd0, 0x3b, 0x3a, 0x34, 0x4e, + 0x69, 0x13, 0x17, 0x8d, 0x98, 0x07, 0x8d, 0x3b, 0x70, 0xb1, 0xad, 0x0f, 0xf5, 0x76, 0xd7, 0x3e, + 0xd1, 0x4c, 0xbd, 0x7f, 0x60, 0x10, 0x37, 0xc8, 0x6c, 0x23, 0x22, 0xa2, 0xc4, 0x9a, 0x54, 0xdc, + 0xa2, 0x66, 0xdb, 0xde, 0x4f, 0xb4, 0x0b, 0xcb, 0xc7, 0x64, 0x1c, 0x1a, 0xa6, 0x3f, 0xea, 0xf6, + 0xba, 0x76, 0xd7, 0xb0, 0xf2, 0x09, 0x02, 0xd6, 0x0a, 0x1d, 0x02, 0x69, 0x2f, 0x39, 0xcd, 0x27, + 0x2a, 0x3a, 0xf6, 0x53, 0xba, 0x86, 0x85, 0xf6, 0x00, 0x86, 0xba, 0xa9, 0x1f, 0x1a, 0xb6, 0x61, + 0x5a, 0xf9, 0x24, 0x61, 0xa7, 0x6b, 0x2e, 0x64, 0xb2, 0x85, 0xba, 0xdb, 0x95, 0x82, 0xec, 0xe1, + 0x45, 0xf7, 0x80, 0x3f, 0xb2, 0x0c, 0x53, 0x6b, 0x9b, 0x46, 0xc7, 0xe8, 0xdb, 0x5d, 0xbd, 0x67, + 0xe5, 0x17, 0xc9, 0x74, 0x78, 0x47, 0x9e, 0x43, 0x57, 0x2f, 0xe1, 0x9e, 0x1e, 0x82, 0xf0, 0x1a, + 0x5c, 0x0a, 0xc8, 0x3e, 0x8d, 0x95, 0xc4, 0x3f, 0x70, 0x70, 0xd9, 0x3f, 0x5e, 0xe6, 0xef, 0x77, + 0x03, 0xfe, 0xbe, 0x15, 0x32, 0xb5, 0x79, 0xdc, 0xfd, 0xae, 0xeb, 0xed, 0x5f, 0x86, 0x0c, 0x33, + 0x48, 0xb7, 0xff, 0x78, 0xc0, 0xd4, 0x5d, 0xf2, 0x18, 0x82, 0xb8, 0x2c, 0x1c, 0xbb, 0xbf, 0x47, + 0xae, 0xf5, 0xf3, 0x04, 0xf0, 0x41, 0x63, 0xa1, 0x3b, 0x90, 0x7c, 0xd4, 0x1b, 0xb4, 0x9f, 0xfa, + 0x16, 0x6a, 0xb0, 0x57, 0x61, 0x07, 0x77, 0xa1, 0x54, 0x3c, 0x28, 0xc2, 0x81, 0x59, 0x0f, 0x07, + 0x47, 0x7d, 0x9b, 0x0d, 0x3c, 0x82, 0x75, 0x1f, 0x77, 0x19, 0xb1, 0x12, 0x0e, 0x54, 0x84, 0x8c, + 0xde, 0x6e, 0x1b, 0x96, 0xa5, 0x1d, 0x0e, 0x3a, 0x8e, 0x3b, 0x6e, 0x85, 0x0b, 0x28, 0x92, 0x8e, + 0xfb, 0x83, 0x8e, 0xa1, 0x82, 0xee, 0xfe, 0x16, 0xb2, 0x90, 0xf1, 0x8c, 0x4a, 0xa8, 0x40, 0xc6, + 0xa3, 0x09, 0xad, 0x42, 0xea, 0xb1, 0xa5, 0xd9, 0x27, 0x43, 0x27, 0x2e, 0x2c, 0x3e, 0xb6, 0x9a, + 0x27, 0x43, 0x03, 0x6d, 0x42, 0x86, 0x0c, 0x41, 0x7b, 0xdc, 0xd3, 0x0f, 0xac, 0x7c, 0x6c, 0x2b, + 0x7e, 0x2b, 0xad, 0x02, 0x21, 0xed, 0x62, 0x8a, 0xf0, 0x19, 0x07, 0x30, 0x52, 0x89, 0xee, 0x40, + 0x82, 0x0c, 0x11, 0x4b, 0xb9, 0xb8, 0x7d, 0x73, 0xda, 0x10, 0x0b, 0x64, 0x9c, 0x84, 0x45, 0xfc, + 0x05, 0x07, 0x09, 0x22, 0x23, 0x03, 0xa9, 0x96, 0x72, 0x5f, 0xa9, 0xbd, 0xad, 0xf0, 0x0b, 0xe8, + 0x0a, 0xa0, 0x86, 0xac, 0x54, 0xaa, 0x92, 0xa6, 0xd4, 0xca, 0x92, 0xf6, 0xb6, 0x2a, 0x37, 0x25, + 0x95, 0xe7, 0xd0, 0x3a, 0xac, 0x7a, 0xe9, 0xaa, 0x54, 0x2c, 0x4b, 0xaa, 0x56, 0x53, 0xaa, 0x0f, + 0xf9, 0x18, 0x12, 0xe0, 0xca, 0x7e, 0xab, 0xda, 0x94, 0xc7, 0xdb, 0xe2, 0x68, 0x03, 0xf2, 0x9e, + 0x36, 0x26, 0x83, 0x89, 0x4d, 0x60, 0xb1, 0x9e, 0x56, 0xfa, 0x93, 0x35, 0x26, 0x77, 0xb2, 0xae, + 0x19, 0x30, 0x52, 0xe2, 0xdb, 0x90, 0xf5, 0x05, 0x03, 0x1c, 0x46, 0x4d, 0xe3, 0xbd, 0xa3, 0xae, + 0x69, 0x74, 0xb4, 0x47, 0x27, 0xb6, 0x61, 0x11, 0x18, 0x12, 0x6a, 0xd6, 0xa1, 0xee, 0x60, 0x22, + 0xc6, 0xb4, 0xd7, 0x3d, 0xec, 0xda, 0xac, 0x4f, 0x8c, 0xf4, 0x01, 0x42, 0x22, 0x1d, 0xc4, 0x12, + 0xc0, 0xc8, 0x39, 0xb1, 0x54, 0x37, 0x1c, 0xf9, 0xa4, 0x3a, 0x54, 0x2a, 0xf5, 0x22, 0xc4, 0xba, + 0x1d, 0xb6, 0x06, 0x63, 0xdd, 0x8e, 0x78, 0x0c, 0x19, 0xcf, 0x52, 0x46, 0x05, 0x48, 0x74, 0x74, + 0x5b, 0x67, 0x19, 0x54, 0x08, 0xae, 0xfd, 0x42, 0x59, 0xb7, 0x75, 0x1a, 0x3d, 0x48, 0x3f, 0xe1, + 0x36, 0xa4, 0x5d, 0xd2, 0xa9, 0x16, 0xfd, 0x07, 0x1c, 0x2c, 0x97, 0x8d, 0x9e, 0x71, 0xd6, 0x88, + 0xbc, 0x0e, 0x69, 0x67, 0xc5, 0x3a, 0xd3, 0x59, 0x62, 0xcb, 0xb3, 0x13, 0x1a, 0xcd, 0xe2, 0x33, + 0x46, 0x33, 0xf1, 0x7b, 0x1c, 0x5c, 0xf6, 0x8f, 0x6c, 0x62, 0x38, 0x0a, 0xeb, 0x7a, 0xb6, 0x70, + 0xb4, 0xe4, 0x84, 0xa3, 0x51, 0x70, 0xf9, 0x30, 0x06, 0xd7, 0x4a, 0x83, 0xbe, 0x6d, 0x0e, 0x7a, + 0x3d, 0xc3, 0xac, 0x1f, 0x3d, 0xea, 0x75, 0xad, 0x27, 0xcf, 0x00, 0xb0, 0x55, 0x48, 0xf5, 0x07, + 0x1d, 0xd2, 0x14, 0xa7, 0x0b, 0x1b, 0x7f, 0xca, 0x1d, 0xb4, 0x03, 0xb9, 0x60, 0xa6, 0x3a, 0xc9, + 0x27, 0x88, 0x9e, 0x88, 0x3c, 0xc5, 0x1f, 0x07, 0x83, 0xa1, 0x00, 0x4b, 0xa6, 0xa1, 0x77, 0x06, + 0xfd, 0xde, 0x49, 0x3e, 0xb9, 0xc5, 0xdd, 0x5a, 0x52, 0xdd, 0xef, 0xb9, 0xf2, 0x8e, 0xf8, 0x2f, + 0x0e, 0x36, 0x23, 0xd1, 0x61, 0x46, 0x93, 0x02, 0x46, 0x7b, 0x89, 0x8a, 0x9d, 0xcc, 0x75, 0x36, + 0xfb, 0xd5, 0xdd, 0x74, 0xb2, 0x0b, 0xcb, 0x43, 0x2a, 0x57, 0x1b, 0x4f, 0x2b, 0x57, 0x08, 0xaf, + 0x4f, 0x2f, 0xc9, 0x2e, 0xb9, 0x61, 0x90, 0x34, 0xf2, 0x83, 0xef, 0x73, 0x90, 0x1b, 0xe3, 0xc0, + 0x0e, 0x49, 0x16, 0x94, 0x53, 0xf0, 0x8a, 0xe1, 0x92, 0x0b, 0x0f, 0x48, 0x27, 0xba, 0x6c, 0x19, + 0x87, 0x70, 0x07, 0x32, 0x1e, 0xf2, 0xa9, 0x96, 0xee, 0x27, 0x1c, 0x6c, 0x8d, 0x00, 0x6c, 0xf5, + 0x87, 0xff, 0x7f, 0xb7, 0x0c, 0x73, 0x9b, 0xc4, 0xac, 0x6e, 0xf3, 0x11, 0x07, 0xd7, 0x27, 0x8c, + 0x9f, 0x39, 0x4e, 0x25, 0xe0, 0x38, 0x2f, 0x07, 0x1c, 0x27, 0x82, 0xef, 0xdc, 0x96, 0xfe, 0xaf, + 0x39, 0xb8, 0xfe, 0x40, 0xef, 0x75, 0x3b, 0x6e, 0xb1, 0xe3, 0x2d, 0xfd, 0xce, 0x15, 0xe6, 0x88, + 0x72, 0x34, 0x7e, 0xca, 0x72, 0x54, 0xfc, 0x3b, 0x07, 0xe2, 0xa4, 0x21, 0x33, 0x64, 0xf7, 0x02, + 0xc8, 0x16, 0xa8, 0x86, 0xa9, 0x8c, 0x67, 0x83, 0xf6, 0x4d, 0x77, 0x55, 0x6e, 0x40, 0xda, 0xdd, + 0x03, 0x12, 0xd5, 0x4b, 0xea, 0x88, 0x80, 0xf2, 0x90, 0x3a, 0x34, 0x2c, 0x4b, 0x3f, 0x70, 0x3c, + 0xde, 0xf9, 0x1c, 0x99, 0xe4, 0x3b, 0x1c, 0xa0, 0x6a, 0xd7, 0x62, 0xd5, 0xd0, 0xa9, 0x6d, 0x80, + 0x8b, 0x24, 0xfd, 0x7d, 0xcd, 0xe8, 0xdb, 0x66, 0x97, 0x25, 0xf4, 0xac, 0x0a, 0x87, 0xfa, 0xfb, + 0x12, 0xa5, 0xe0, 0x14, 0x6e, 0xd9, 0xba, 0x69, 0x77, 0xfb, 0x07, 0x9a, 0x3d, 0x78, 0x6a, 0xf4, + 0x99, 0xd7, 0x67, 0x1d, 0x6a, 0x13, 0x13, 0xc5, 0x8f, 0x62, 0xb0, 0xec, 0x1b, 0x06, 0xc3, 0xf5, + 0x4e, 0x00, 0xd7, 0x4d, 0x32, 0x8c, 0x90, 0x9e, 0x67, 0x03, 0xf2, 0xa3, 0xd1, 0xe6, 0xf0, 0x0d, + 0x48, 0x39, 0xb3, 0xa0, 0x91, 0xe7, 0xe6, 0x14, 0x55, 0x05, 0x1a, 0x7c, 0x1c, 0x2e, 0x74, 0x15, + 0xa0, 0x6f, 0xbc, 0x6f, 0xb3, 0x59, 0x52, 0xbc, 0xd3, 0x98, 0x42, 0x66, 0x28, 0xdc, 0x81, 0x24, + 0x0d, 0x4b, 0x73, 0xd4, 0xe5, 0x3f, 0x88, 0x01, 0xaa, 0x18, 0xb6, 0x5b, 0x7a, 0x9d, 0xd2, 0x58, + 0x11, 0x6b, 0x22, 0x76, 0xda, 0x2d, 0x5a, 0xc5, 0xb7, 0x45, 0xa3, 0x4b, 0xea, 0x05, 0x67, 0x3b, + 0x1c, 0x18, 0xdc, 0xa4, 0x1d, 0xda, 0xbc, 0x9b, 0xac, 0xdf, 0x71, 0xb0, 0xec, 0xd3, 0x38, 0xd1, + 0x69, 0x42, 0x7a, 0x9e, 0xcd, 0x69, 0x6e, 0xbb, 0x3e, 0xf3, 0x32, 0x20, 0xfd, 0x58, 0xef, 0xf6, + 0xf4, 0x47, 0x3d, 0x8a, 0x29, 0x16, 0xce, 0x6a, 0xd4, 0x9c, 0xdb, 0xe2, 0x68, 0x1d, 0xd9, 0xf1, + 0x6b, 0xde, 0x64, 0xc3, 0xc6, 0x75, 0xc6, 0x28, 0x28, 0x7e, 0xe6, 0x8b, 0xfc, 0x63, 0xc2, 0x66, + 0x8c, 0xfc, 0x11, 0x7c, 0x67, 0x03, 0x48, 0x71, 0x01, 0x2a, 0xc3, 0x85, 0x10, 0x57, 0xdb, 0x0a, + 0x28, 0x6f, 0x18, 0xe6, 0x71, 0xb7, 0xed, 0xf5, 0x3a, 0x1f, 0xd7, 0x08, 0xb7, 0x0f, 0x62, 0xb0, + 0x3e, 0x81, 0x0d, 0xbd, 0x02, 0x71, 0x73, 0xd8, 0x66, 0x53, 0x7c, 0x6e, 0x9a, 0x96, 0x82, 0x5a, + 0x2f, 0xed, 0x2d, 0xa8, 0x98, 0x45, 0xf8, 0x2d, 0x07, 0x71, 0xb5, 0x5e, 0x42, 0xaf, 0x41, 0xc2, + 0xdd, 0x0a, 0x5e, 0xdc, 0x7e, 0x71, 0x16, 0x11, 0x05, 0xbc, 0x5b, 0x54, 0x09, 0x9b, 0x38, 0x80, + 0x04, 0xd9, 0x3b, 0xfa, 0xf6, 0x71, 0x79, 0xb8, 0x5c, 0x52, 0xa5, 0x62, 0x53, 0xd2, 0xca, 0x52, + 0x55, 0x6a, 0x4a, 0xda, 0x83, 0x5a, 0xb5, 0xb5, 0x2f, 0xf1, 0x1c, 0xde, 0x90, 0xd5, 0x5b, 0x3b, + 0x55, 0xb9, 0xb1, 0xa7, 0xb5, 0x14, 0xe7, 0x17, 0x6b, 0x8d, 0x21, 0x1e, 0x2e, 0x54, 0xe5, 0x46, + 0x93, 0x11, 0x1a, 0x7c, 0x1c, 0x53, 0x2a, 0x52, 0x53, 0x2b, 0x15, 0xeb, 0xc5, 0x92, 0xdc, 0x7c, + 0xc8, 0x27, 0x76, 0x16, 0xe9, 0x78, 0xc5, 0x7f, 0xc6, 0x20, 0xaf, 0x0c, 0x3a, 0xc6, 0xb3, 0x2b, + 0xa7, 0x23, 0xea, 0xbf, 0xf8, 0x29, 0xeb, 0x3f, 0x9c, 0x31, 0x6c, 0xdd, 0x3c, 0x30, 0x6c, 0x6d, + 0xa8, 0xdb, 0x4f, 0x48, 0x85, 0x93, 0x56, 0x81, 0x92, 0xea, 0xba, 0xfd, 0x24, 0xbc, 0x3c, 0x4f, + 0x9e, 0xbd, 0x3c, 0x5f, 0x9c, 0xa1, 0x3c, 0x4f, 0xcd, 0x5a, 0x67, 0xfd, 0x84, 0x83, 0xb5, 0x10, + 0x9c, 0xd9, 0x2a, 0x7b, 0x23, 0xb0, 0xca, 0x68, 0x0a, 0x89, 0xec, 0x7f, 0x6e, 0x75, 0xd5, 0x1f, + 0x39, 0x10, 0xb0, 0x96, 0x67, 0x59, 0xb7, 0x06, 0xec, 0x16, 0x1f, 0xb3, 0xdb, 0x5c, 0xf5, 0xeb, + 0x07, 0x1c, 0xac, 0x87, 0xce, 0x80, 0x21, 0x5b, 0x0c, 0x20, 0xfb, 0x82, 0x8b, 0xec, 0xb3, 0xae, + 0x59, 0xef, 0x02, 0x5f, 0x31, 0x6c, 0xac, 0x49, 0x2e, 0x9f, 0x36, 0x36, 0xff, 0x8c, 0x83, 0x9c, + 0x87, 0x99, 0xcd, 0xe5, 0x76, 0x60, 0x2e, 0x57, 0x9d, 0xf4, 0xe4, 0xef, 0x77, 0xb6, 0x19, 0x5c, + 0x77, 0x63, 0xaf, 0x67, 0xa3, 0xc1, 0x79, 0x37, 0x1a, 0xbe, 0xa9, 0xd5, 0xcd, 0xc1, 0x23, 0x03, + 0xeb, 0x3d, 0xed, 0xd4, 0xbe, 0x8d, 0x77, 0x6f, 0x23, 0xe6, 0x89, 0x53, 0x1b, 0xeb, 0x77, 0x6e, + 0xc6, 0x29, 0x53, 0xbf, 0x9f, 0x33, 0x85, 0x7e, 0xca, 0x9c, 0x2f, 0x2a, 0x79, 0x46, 0x3b, 0xdf, + 0xb9, 0xa6, 0xcd, 0x3d, 0xd7, 0x74, 0xaf, 0x87, 0xa6, 0x4d, 0xc1, 0x55, 0x3b, 0x73, 0xc2, 0xfc, + 0x98, 0x83, 0x95, 0x50, 0x06, 0xb4, 0xed, 0x4d, 0x95, 0xd7, 0xa2, 0x25, 0x7b, 0x93, 0x64, 0x83, + 0xe6, 0xc8, 0xdb, 0xbe, 0x1c, 0x79, 0x63, 0x32, 0xaf, 0x37, 0x3b, 0x2e, 0x87, 0x64, 0x47, 0x37, + 0x83, 0x7d, 0x78, 0x03, 0x92, 0x04, 0x10, 0xf4, 0x3a, 0x64, 0x0f, 0x8c, 0xbe, 0x61, 0xea, 0x3d, + 0x8d, 0x62, 0x46, 0x07, 0xb9, 0x3a, 0xc2, 0xac, 0x50, 0xa1, 0xed, 0x0e, 0x80, 0x17, 0x0e, 0x3c, + 0xdf, 0x48, 0x81, 0xe5, 0x36, 0x39, 0x4f, 0x77, 0x12, 0x95, 0x17, 0xf9, 0x0d, 0x8f, 0x14, 0xef, + 0xa9, 0xbb, 0x23, 0x2a, 0xd7, 0x0e, 0x12, 0xb1, 0xbc, 0x0e, 0x39, 0x10, 0xf3, 0xcb, 0x8b, 0x8f, + 0xc9, 0xf3, 0x1e, 0x9b, 0xb9, 0xf2, 0x3a, 0x41, 0x22, 0x1a, 0xc2, 0x66, 0xdb, 0x2d, 0x29, 0xb4, + 0x40, 0x52, 0xa5, 0xb2, 0x13, 0x1e, 0x3f, 0x63, 0x63, 0x0d, 0x3f, 0xdd, 0x71, 0xd4, 0x6c, 0xb4, + 0x27, 0xb4, 0xa3, 0x63, 0xb8, 0xee, 0xd1, 0x78, 0xd4, 0x0f, 0xd5, 0x49, 0x53, 0xec, 0x8b, 0xa1, + 0x3a, 0x03, 0x41, 0xd6, 0xd1, 0x7a, 0xad, 0x3d, 0xb1, 0x07, 0x3a, 0x01, 0xf1, 0x98, 0x6d, 0x81, + 0xb5, 0x90, 0x9d, 0x07, 0x53, 0x4c, 0xcf, 0xc6, 0xbe, 0xe0, 0x51, 0x1c, 0xbd, 0x6f, 0x76, 0x34, + 0x6f, 0x1e, 0x4f, 0xee, 0x82, 0xde, 0x85, 0x35, 0x12, 0xfd, 0x42, 0xa7, 0x9a, 0xf2, 0x5c, 0x43, + 0x50, 0x8d, 0x63, 0x39, 0xda, 0x51, 0x74, 0xa5, 0x1f, 0xda, 0x82, 0x3a, 0xb0, 0x4e, 0xe4, 0x47, + 0x80, 0xb9, 0x44, 0x34, 0xdc, 0x08, 0x68, 0x88, 0x80, 0x31, 0xdf, 0x8f, 0x68, 0x43, 0x12, 0xf0, + 0x43, 0x1c, 0x3c, 0x35, 0xa2, 0x8b, 0x8a, 0x4e, 0x13, 0xd1, 0x6b, 0x1e, 0xd1, 0x6e, 0x7c, 0x75, + 0x04, 0x5e, 0x1c, 0xfa, 0x28, 0x68, 0x17, 0x72, 0x38, 0x71, 0xb3, 0x74, 0xc0, 0xe4, 0xc0, 0x98, + 0x1c, 0x37, 0x05, 0xb9, 0x72, 0x0e, 0x18, 0xa5, 0x43, 0x28, 0xc2, 0x2f, 0x63, 0x70, 0xc1, 0xbb, + 0xf4, 0xf0, 0x4e, 0x90, 0x08, 0xd3, 0xda, 0xa3, 0x9b, 0x8f, 0x5b, 0x11, 0xeb, 0xd4, 0xf7, 0x51, + 0xc2, 0xd9, 0x20, 0x6d, 0x38, 0x3f, 0xd1, 0x57, 0x60, 0xa5, 0xad, 0x13, 0xef, 0x3c, 0x3c, 0xb2, + 0xf0, 0x48, 0x6d, 0xcd, 0x34, 0x6c, 0xf3, 0x84, 0xac, 0xda, 0x25, 0x15, 0xd1, 0xc6, 0xfd, 0x23, + 0xcb, 0x56, 0x06, 0xb6, 0x8a, 0x5b, 0xd0, 0x4b, 0x90, 0xa3, 0xba, 0x3b, 0x86, 0xd5, 0x36, 0xbb, + 0x43, 0x1b, 0xc7, 0x79, 0x5a, 0x96, 0xf0, 0xa4, 0xa1, 0x3c, 0xa2, 0x8b, 0x4f, 0x71, 0x16, 0xf7, + 0xab, 0xf7, 0x17, 0xe9, 0x59, 0x48, 0xb7, 0x94, 0xb2, 0xb4, 0x2b, 0x2b, 0x52, 0x99, 0xe7, 0xd0, + 0x26, 0xac, 0xb7, 0x94, 0x46, 0xab, 0x5e, 0xaf, 0xa9, 0x4d, 0xa9, 0xac, 0xa9, 0xd2, 0x5b, 0x2d, + 0x09, 0x97, 0xe2, 0x92, 0xda, 0x90, 0x6b, 0x0a, 0xbb, 0x67, 0x91, 0x1b, 0x0d, 0x59, 0xa9, 0x90, + 0x46, 0x59, 0x95, 0xca, 0xda, 0xae, 0x2c, 0x55, 0xcb, 0x7c, 0x5c, 0xf8, 0x6e, 0x1c, 0x72, 0x63, + 0xb1, 0x05, 0xbd, 0x15, 0x82, 0xd5, 0xf6, 0xa4, 0x68, 0x34, 0x4e, 0x09, 0xa2, 0x16, 0x0a, 0x41, + 0x2c, 0x02, 0x82, 0xff, 0x70, 0xb0, 0x12, 0x2a, 0x71, 0x7c, 0xb7, 0x52, 0xac, 0x56, 0x35, 0xa5, + 0xd6, 0xd4, 0xe4, 0xfd, 0x7a, 0x55, 0xda, 0x97, 0x94, 0x26, 0xc1, 0x64, 0x0b, 0x36, 0x6a, 0x75, + 0x49, 0x2d, 0x36, 0xe5, 0x9a, 0xa2, 0xd5, 0x25, 0xa5, 0x8c, 0x27, 0xbf, 0x5b, 0x53, 0x47, 0x3b, + 0x96, 0x55, 0x58, 0x96, 0x95, 0x07, 0xc5, 0xaa, 0x5c, 0x66, 0x34, 0x4d, 0x29, 0xee, 0x4b, 0x7c, + 0x1c, 0x5d, 0x03, 0xc1, 0x0b, 0xa7, 0xb3, 0x81, 0xd1, 0xd4, 0xa2, 0x52, 0x91, 0xf8, 0x04, 0x5a, + 0x83, 0x15, 0xc6, 0x50, 0xac, 0xaa, 0x52, 0xb1, 0xfc, 0x50, 0x93, 0xde, 0x91, 0x1b, 0xcd, 0x06, + 0x9f, 0x44, 0x57, 0x61, 0xcd, 0xcb, 0x5a, 0x2f, 0xaa, 0xc5, 0x7d, 0xa9, 0x29, 0xa9, 0xda, 0x7d, + 0xe9, 0x21, 0xbf, 0x88, 0xd6, 0x61, 0xd5, 0x51, 0x39, 0x6a, 0x7a, 0x50, 0xac, 0xb6, 0x24, 0x3e, + 0x25, 0x7c, 0x1c, 0x83, 0xdc, 0x58, 0x50, 0x9e, 0x6a, 0x88, 0x31, 0x8e, 0x71, 0xca, 0x5c, 0x86, + 0xf8, 0x31, 0x07, 0x2b, 0xa1, 0x12, 0xcf, 0xcf, 0x10, 0x2b, 0x90, 0x0b, 0x18, 0x42, 0x2e, 0xf3, + 0x71, 0x0f, 0xcc, 0xe5, 0x9a, 0xd4, 0x20, 0x92, 0x09, 0xce, 0x7c, 0x42, 0xf8, 0x55, 0x02, 0x36, + 0x26, 0xe5, 0x18, 0x74, 0x10, 0x82, 0xda, 0xde, 0x8c, 0x09, 0x6a, 0x62, 0xe3, 0x3c, 0x58, 0xa2, + 0x35, 0x58, 0x62, 0x51, 0x8d, 0x1e, 0x44, 0xa5, 0xd5, 0x14, 0xad, 0x72, 0x2d, 0xf1, 0xaf, 0x31, + 0xef, 0x29, 0x4b, 0xb8, 0xde, 0xcf, 0x11, 0x71, 0xbc, 0xf9, 0x0f, 0xf8, 0x3c, 0x3b, 0x01, 0x90, + 0xca, 0x7c, 0x12, 0x2f, 0x25, 0x72, 0x0f, 0x1b, 0x60, 0x5b, 0x44, 0x57, 0x00, 0xed, 0x17, 0xdf, + 0xd1, 0x8a, 0xcd, 0x66, 0xb1, 0xb4, 0x27, 0x95, 0xc9, 0x6d, 0x6d, 0x83, 0x4f, 0xe1, 0x85, 0xe0, + 0x5d, 0x27, 0xfb, 0xb5, 0x96, 0xd2, 0xd4, 0x76, 0xab, 0xc5, 0x4a, 0x83, 0x4f, 0x07, 0x1b, 0x99, + 0xde, 0xe6, 0xc3, 0xba, 0xc4, 0x03, 0x56, 0xe5, 0x6d, 0xdc, 0x6d, 0xd0, 0x86, 0x0c, 0x5a, 0x86, + 0x4b, 0xce, 0x9c, 0xc8, 0x58, 0xe4, 0x32, 0xbf, 0x24, 0xfc, 0x29, 0xee, 0xbd, 0xbe, 0x0b, 0xcd, + 0x5a, 0x4f, 0x43, 0x5c, 0xa5, 0x3a, 0x73, 0x5d, 0x31, 0xa5, 0x79, 0xae, 0xa5, 0xf7, 0xc3, 0x18, + 0x88, 0xd3, 0xc5, 0x7f, 0x9e, 0x5e, 0x11, 0x61, 0xf7, 0x64, 0x98, 0x31, 0x16, 0xd1, 0x8b, 0x70, + 0xd3, 0x09, 0xb4, 0xb5, 0xe6, 0xc8, 0x27, 0x9a, 0x35, 0xad, 0x51, 0x97, 0x4a, 0xf2, 0xae, 0xcc, + 0x1c, 0x84, 0x4f, 0xa1, 0xcb, 0xc0, 0x33, 0x3e, 0x37, 0x61, 0xf1, 0x4b, 0xc2, 0x7f, 0x63, 0xb0, + 0x39, 0xa5, 0xda, 0x42, 0x87, 0x21, 0xe6, 0x54, 0x66, 0xaf, 0xd6, 0xa6, 0xb5, 0xcf, 0x65, 0xd0, + 0xdf, 0x73, 0x70, 0x63, 0x06, 0xf9, 0x7e, 0x8b, 0x46, 0xc2, 0xcf, 0x4d, 0x5a, 0x45, 0xb1, 0x49, + 0xab, 0x28, 0x1e, 0xb5, 0x8a, 0x12, 0x21, 0x49, 0x51, 0x56, 0x76, 0x6b, 0x7c, 0x12, 0x97, 0x09, + 0x57, 0xc2, 0xeb, 0x4e, 0xf4, 0x8d, 0x10, 0xc8, 0x5f, 0x9d, 0x5a, 0xae, 0x46, 0x90, 0xe7, 0x02, + 0xf8, 0x1f, 0xec, 0x68, 0x69, 0x96, 0xf8, 0x39, 0x6d, 0x3d, 0x70, 0xd1, 0xc8, 0xc7, 0x26, 0x21, + 0x1f, 0x9f, 0x84, 0x7c, 0x22, 0x0a, 0xf9, 0x24, 0xba, 0x04, 0x19, 0x2a, 0x46, 0x52, 0xd5, 0x9a, + 0xca, 0x2f, 0x86, 0x2f, 0xc7, 0x94, 0xf0, 0x09, 0x3b, 0x3c, 0x0d, 0x0d, 0x66, 0x5a, 0x88, 0x29, + 0xde, 0x9c, 0xa1, 0xae, 0x8f, 0x6c, 0x98, 0xb7, 0x76, 0xd8, 0x98, 0x24, 0xf8, 0x1c, 0x0d, 0x92, + 0x83, 0x6c, 0x4b, 0xf1, 0xe2, 0x17, 0x0f, 0xc7, 0x2f, 0x21, 0xfc, 0x9b, 0x83, 0x8b, 0xfe, 0x3d, + 0x08, 0xba, 0x1f, 0x82, 0xda, 0x17, 0x23, 0xb7, 0x2c, 0x81, 0xcf, 0xb9, 0x10, 0x7a, 0x17, 0xd0, + 0xb8, 0x34, 0x3f, 0x2c, 0x2b, 0x90, 0xdb, 0x29, 0x96, 0xb5, 0x7a, 0xb5, 0x55, 0x91, 0x15, 0xad, + 0x54, 0x53, 0x76, 0xe5, 0x0a, 0xcf, 0xa1, 0xe7, 0x60, 0x6b, 0xac, 0xa4, 0xdf, 0xab, 0x35, 0x9a, + 0x5a, 0x59, 0xc2, 0xd8, 0x49, 0x4a, 0xe9, 0x21, 0x1f, 0x23, 0x93, 0xf5, 0x6f, 0x94, 0xa6, 0x4e, + 0xd6, 0xdf, 0x3d, 0xf0, 0x39, 0xef, 0x64, 0xc7, 0xa5, 0x9d, 0xdf, 0x64, 0x77, 0x52, 0xec, 0xee, + 0x6d, 0xfb, 0x37, 0x1c, 0x2c, 0xc9, 0xe4, 0xb4, 0xd6, 0x3e, 0x41, 0xdf, 0x24, 0xaf, 0x81, 0xc7, + 0xde, 0x3f, 0xa3, 0xad, 0x09, 0x4f, 0xa3, 0xc9, 0x89, 0x9c, 0x70, 0x7d, 0xea, 0xe3, 0x69, 0x71, + 0x01, 0xed, 0x41, 0xd6, 0xf7, 0xac, 0x16, 0xad, 0x85, 0x3d, 0xb5, 0xa5, 0x02, 0x85, 0xe8, 0x57, + 0xb8, 0xe2, 0xc2, 0xf6, 0xa7, 0x49, 0x80, 0x51, 0xba, 0x47, 0x12, 0x5c, 0xf0, 0x6e, 0x80, 0x50, + 0x3e, 0xea, 0x59, 0xa9, 0xb0, 0x16, 0xf9, 0x2a, 0x53, 0x5c, 0xc0, 0x62, 0xbc, 0xe5, 0x3b, 0x13, + 0x13, 0xf2, 0xf0, 0x8b, 0x89, 0x09, 0x7b, 0x4d, 0x25, 0x2e, 0xa0, 0xc7, 0xb0, 0x1a, 0x51, 0x9e, + 0xa2, 0x1b, 0x93, 0x1f, 0xf4, 0x50, 0xe1, 0xcf, 0xcd, 0xf2, 0xea, 0x47, 0x5c, 0x40, 0x3d, 0x58, + 0x8b, 0x2c, 0x79, 0xd0, 0xcd, 0x69, 0x2f, 0x40, 0xa8, 0xae, 0xe7, 0x67, 0x7b, 0x28, 0x22, 0x2e, + 0xa0, 0x01, 0x08, 0xd1, 0xf9, 0x18, 0x3d, 0x3f, 0xf5, 0x59, 0x04, 0xd5, 0xf7, 0xc2, 0x8c, 0xcf, + 0x27, 0xc4, 0x05, 0xb4, 0x03, 0x19, 0xcf, 0x1d, 0x3d, 0x5a, 0x1d, 0xbf, 0xb5, 0xa7, 0x22, 0xf3, + 0x51, 0xd7, 0xf9, 0x54, 0x86, 0xe7, 0x76, 0x98, 0xc9, 0x18, 0xbf, 0xcb, 0x66, 0x32, 0x42, 0x2e, + 0x92, 0x83, 0x30, 0x07, 0xce, 0x85, 0xc7, 0x60, 0x0e, 0x3f, 0xb0, 0x1e, 0x83, 0x39, 0xe2, 0x78, + 0x59, 0x5c, 0xd8, 0xfe, 0x51, 0x1c, 0x12, 0x78, 0xd9, 0xa3, 0x26, 0xe4, 0xc6, 0xd2, 0x33, 0xba, + 0x1a, 0x75, 0xef, 0x44, 0xd5, 0x5c, 0x9b, 0x7c, 0x2d, 0x25, 0x2e, 0xa0, 0xaf, 0xc3, 0x72, 0x48, + 0x96, 0x41, 0x9b, 0xd1, 0xb7, 0x2e, 0x54, 0xf2, 0xd6, 0xb4, 0x6b, 0x19, 0x71, 0x01, 0xbd, 0x0a, + 0x69, 0x37, 0x66, 0xa1, 0x95, 0xe0, 0xdd, 0x07, 0x95, 0x73, 0x25, 0xfc, 0x4a, 0x84, 0x72, 0xbb, + 0xe1, 0x9d, 0x71, 0x07, 0xef, 0x30, 0x18, 0xf7, 0xd8, 0xad, 0xc3, 0x68, 0x5e, 0x41, 0xf3, 0x6c, + 0x46, 0x1f, 0xe8, 0x07, 0xe7, 0x15, 0x69, 0x92, 0x47, 0x8b, 0xe4, 0x4f, 0x27, 0x5f, 0xfd, 0x5f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x62, 0x30, 0x57, 0xfc, 0x81, 0x32, 0x00, 0x00, } diff --git a/spec.md b/spec.md index e830c093..f165b087 100644 --- a/spec.md +++ b/spec.md @@ -26,7 +26,7 @@ An implementation is compliant if it satisfies all the MUST, REQUIRED, and SHALL | CO | Container Orchestration system, communicates with Plugins using CSI service RPCs. | | SP | Storage Provider, the vendor of a CSI plugin implementation. | | RPC | [Remote Procedure Call](https://en.wikipedia.org/wiki/Remote_procedure_call). | -| Node | A host where the user workload will be running, uniquely identifiable from the perspective of a Plugin by a `NodeID`. | +| Node | A host where the user workload will be running, uniquely identifiable from the perspective of a Plugin by a node ID. | | Plugin | Aka “plugin implementation”, a gRPC endpoint that implements the CSI Services. | | Plugin Supervisor | Process that governs the lifecycle of a Plugin, MAY be the CO. | | Workload | The atomic unit of "work" scheduled by a CO. This may be a container or a collection of containers. | @@ -540,31 +540,9 @@ message VolumeInfo { // Contains identity information for the created volume. This field is // REQUIRED. The identity information will be used by the CO in - // subsequent calls to refer to the provisioned volume. - VolumeHandle handle = 2; -} - -// VolumeHandle objects are generated by Plugin implementations to -// serve two purposes: first, to efficiently identify a volume known -// to the Plugin implementation; second, to capture additional, opaque, -// possibly sensitive information associated with a volume. It SHALL -// NOT change over the lifetime of the volume and MAY be safely cached -// by the CO. -// Since this object will be passed around by the CO, it is RECOMMENDED -// that each Plugin keeps the information herein as small as possible. -// The total bytes of a serialized VolumeHandle must be less than 1 MiB. -message VolumeHandle { - // ID is the identity of the provisioned volume specified by the - // Plugin. This field is REQUIRED. - // This information SHALL NOT be considered sensitive such that, for - // example, the CO MAY generate log messages that include this data. - string id = 1; - - // Metadata captures additional, possibly sensitive, information about - // a volume in the form of key-value pairs. This field is OPTIONAL. - // Since this field MAY contain sensitive information, the CO MUST NOT - // leak this information to untrusted entities. - map metadata = 2; + // subsequent calls to refer to the provisioned volume. This field + // should not exceed 1MiB. + string id = 2; } // A standard way to encode credential data. The total bytes of the @@ -597,9 +575,9 @@ message DeleteVolumeRequest { // The API version assumed by the CO. This field is REQUIRED. Version version = 1; - // The handle of the volume to be deprovisioned. + // The ID of the volume to be deprovisioned. // This field is REQUIRED. - VolumeHandle volume_handle = 2; + string volume_id = 2; // End user credentials used to authenticate/authorize volume deletion // request. @@ -635,15 +613,15 @@ message ControllerPublishVolumeRequest { // The API version assumed by the CO. This field is REQUIRED. Version version = 1; - // The handle of the volume to be used on a node. + // The ID of the volume to be used on a node. // This field is REQUIRED. - VolumeHandle volume_handle = 2; + string volume_id = 2; // The ID of the node. This field is OPTIONAL. The CO SHALL set (or - // clear) this field to match the `NodeID` returned by `GetNodeID`. - // `GetNodeID` is allowed to omit `NodeID` from a successful `Result`; + // clear) this field to match the node ID returned by `GetNodeID`. + // `GetNodeID` is allowed to omit node ID from a successful `Result`; // in such cases the CO SHALL NOT specify this field. - NodeID node_id = 3; + string node_id = 3; // The capability of the volume the CO expects the volume to have. // This is a REQUIRED field. @@ -674,14 +652,6 @@ message ControllerPublishVolumeResponse { } } -message NodeID { - // Information about a node in the form of key-value pairs. This - // information is opaque to the CO. Given this information will be - // passed around by the CO, it is RECOMMENDED that each Plugin keeps - // this information as small as possible. This field is REQUIRED. - map values = 1; -} - message PublishVolumeInfo { // Information returned by the Plugin in `ControllerPublishVolume` // call. It is in the form of key-value pairs, and is opaque to the @@ -710,19 +680,19 @@ message ControllerUnpublishVolumeRequest { // The API version assumed by the CO. This field is REQUIRED. Version version = 1; - // The handle of the volume. This field is REQUIRED. - VolumeHandle volume_handle = 2; + // The ID of the volume. This field is REQUIRED. + string volume_id = 2; // The ID of the node. This field is OPTIONAL. The CO SHALL set (or - // clear) this field to match the `NodeID` returned by `GetNodeID`. - // `GetNodeID` is allowed to omit `NodeID` from a successful `Result`; + // clear) this field to match the node ID returned by `GetNodeID`. + // `GetNodeID` is allowed to omit node ID from a successful `Result`; // in such cases the CO SHALL NOT specify this field. // - // If `GetNodeID` does not omit `NodeID` from a successful `Result`, + // If `GetNodeID` does not omit node ID from a successful `Result`, // the CO MAY omit this field as well, indicating that it does not // know which node the volume was previously used. The Plugin SHOULD // return an Error if this is not supported. - NodeID node_id = 3; + string node_id = 3; // End user credentials used to authenticate/authorize controller // unpublish request. @@ -753,9 +723,8 @@ message ValidateVolumeCapabilitiesRequest { // The API version assumed by the CO. This is a REQUIRED field. Version version = 1; - // The information about the volume to check. This is a REQUIRED - // field. - VolumeInfo volume_info = 2; + // The ID of the volume to check. This field is REQUIRED. + string volume_id = 2; // The capabilities that the CO wants to check for the volume. This // call SHALL return "supported" only if all the volume capabilities @@ -935,8 +904,8 @@ message NodePublishVolumeRequest { // The API version assumed by the CO. This is a REQUIRED field. Version version = 1; - // The handle of the volume to publish. This field is REQUIRED. - VolumeHandle volume_handle = 2; + // The ID of the volume to publish. This field is REQUIRED. + string volume_id = 2; // The CO SHALL set this field to the value returned by // `ControllerPublishVolume` if the corresponding Controller Plugin @@ -994,8 +963,8 @@ message NodeUnpublishVolumeRequest { // The API version assumed by the CO. This is a REQUIRED field. Version version = 1; - // The handle of the volume. This field is REQUIRED. - VolumeHandle volume_handle = 2; + // The ID of the volume. This field is REQUIRED. + string volume_id = 2; // The path at which the volume was published. It MUST be an absolute // path in the root filesystem of the process serving this request. @@ -1037,7 +1006,7 @@ message GetNodeIDResponse { // `ControllerPublishVolume`. This is an OPTIONAL field. If unset, // the CO SHALL leave the `node_id` field unset in // `ControllerPublishVolume`. - NodeID node_id = 1; + string node_id = 1; } // One of the following fields MUST be specified. @@ -1300,16 +1269,16 @@ message Error { // exponential back off. OPERATION_PENDING_FOR_VOLUME = 2; - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - INVALID_VOLUME_HANDLE = 3; + INVALID_VOLUME_ID = 3; // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // // Recovery behavior: Caller SHOULD assume the `DeleteVolume` call // succeeded. @@ -1360,24 +1329,24 @@ message Error { // exponential back off. OPERATION_PENDING_FOR_VOLUME = 2; - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - INVALID_VOLUME_HANDLE = 3; + INVALID_VOLUME_ID = 3; // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. VOLUME_DOES_NOT_EXIST = 4; // Indicates that a volume corresponding to the specified - // `VolumeHandle` is already attached to another node and does not + // volume ID is already attached to another node and does not // support multi-node attach. If this error code is returned, the // Plugin MUST also specify the `node_id` of the node the volume // is already attached to. @@ -1388,20 +1357,20 @@ message Error { // node before retrying with exponential back off. VOLUME_ALREADY_PUBLISHED = 5; - // Indicates that a node corresponding to the specified `NodeID` + // Indicates that a node corresponding to the specified node ID // does not exist. // - // Recovery behavior: Caller SHOULD verify that the `NodeID` is + // Recovery behavior: Caller SHOULD verify that the node ID is // correct and that the node is available and has not been // terminated or deleted before retrying with exponential backoff. NODE_DOES_NOT_EXIST = 6; // Indicates that a volume corresponding to the specified - // `VolumeHandle` is already attached to the maximum supported + // volume ID is already attached to the maximum supported // number of nodes and therefore this operation can not be // completed until the volume is detached from at least one of the // existing nodes. When this error code is returned, the Plugin - // MUST also specify the `NodeId` of all the nodes the volume is + // MUST also specify the node ID of all the nodes the volume is // attached to. // // Recovery behavior: Caller MAY use the provided `node_ids` @@ -1413,12 +1382,12 @@ message Error { UNSUPPORTED_VOLUME_TYPE = 10; UNSUPPORTED_FS_TYPE = 11; - // Indicates that the specified `NodeID` is not allowed or + // Indicates that the specified node ID is not allowed or // understood by the Plugin, or the Plugin does not support the - // operation without a `NodeID`. More human-readable information + // operation without a node ID. More human-readable information // MAY be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `NodeID` before + // Recovery behavior: Caller MUST fix the node ID before // retrying. INVALID_NODE_ID = 8; } @@ -1433,7 +1402,7 @@ message Error { // On `VOLUME_ALREADY_ATTACHED` and `MAX_ATTACHED_NODES` errors, // this field contains the node(s) that the specified volume is // already attached to. - repeated NodeID node_ids = 3; + repeated string node_ids = 3; } // `ControllerUnpublishVolume` specific error. @@ -1472,44 +1441,44 @@ message Error { // exponential back off. OPERATION_PENDING_FOR_VOLUME = 2; - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - INVALID_VOLUME_HANDLE = 3; + INVALID_VOLUME_ID = 3; // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. VOLUME_DOES_NOT_EXIST = 4; - // Indicates that a node corresponding to the specified `NodeID` + // Indicates that a node corresponding to the specified node ID // does not exist. // - // Recovery behavior: Caller SHOULD verify that the `NodeID` is + // Recovery behavior: Caller SHOULD verify that the node ID is // correct and that the node is available and has not been // terminated or deleted before retrying. NODE_DOES_NOT_EXIST = 5; - // Indicates that the specified `NodeID` is not allowed or + // Indicates that the specified node ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `NodeID` before + // Recovery behavior: Caller MUST fix the node ID before // retrying. INVALID_NODE_ID = 6; VOLUME_NOT_ATTACHED_TO_SPECIFIED_NODE = 7; // Indicates that the Plugin does not support the operation - // without a `NodeID`. + // without a node ID. // - // Recovery behavior: Caller MUST specify the `NodeID` before + // Recovery behavior: Caller MUST specify the node ID before // retrying. NODE_ID_REQUIRED = 8; } @@ -1585,9 +1554,9 @@ message Error { OPERATION_PENDING_FOR_VOLUME = 1; // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. VOLUME_DOES_NOT_EXIST = 2; @@ -1597,13 +1566,13 @@ message Error { UNSUPPORTED_FS_TYPE = 5; MOUNT_ERROR = 6; - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - INVALID_VOLUME_HANDLE = 7; + INVALID_VOLUME_ID = 7; } NodePublishVolumeErrorCode error_code = 1; @@ -1639,22 +1608,22 @@ message Error { OPERATION_PENDING_FOR_VOLUME = 1; // Indicates that a volume corresponding to the specified - // `VolumeHandle` does not exist. + // volume ID does not exist. // - // Recovery behavior: Caller SHOULD verify that the `VolumeHandle` + // Recovery behavior: Caller SHOULD verify that the volume ID // is correct and that the volume is accessible and has not been // deleted before retrying with exponential back off. VOLUME_DOES_NOT_EXIST = 2; UNMOUNT_ERROR = 3; - // Indicates that the specified `VolumeHandle` is not allowed or + // Indicates that the specified volume ID is not allowed or // understood by the Plugin. More human-readable information MAY // be provided in the `error_description` field. // - // Recovery behavior: Caller MUST fix the `VolumeHandle` before + // Recovery behavior: Caller MUST fix the volume ID before // retrying. - INVALID_VOLUME_HANDLE = 4; + INVALID_VOLUME_ID = 4; } NodeUnpublishVolumeErrorCode error_code = 1; @@ -1819,7 +1788,7 @@ Supervised plugins MAY be isolated and/or resource-bounded. * Logging configuration flags and/or variables, including working sample configurations. * Default log destination(s) (where do the logs go if no configuration is specified?) * Log lifecycle management ownership and related guidance (size limits, rate limits, rolling, archiving, expunging, etc.) applicable to the logging mechanism embedded within the Plugin. -* Plugins SHOULD NOT write potentially sensitive data to logs (e.g. `Credentials`, `VolumeHandle.Metadata`). +* Plugins SHOULD NOT write potentially sensitive data to logs (e.g. `Credentials`). ##### Available Services