Update CSI proto to 1.5.0

This commit is contained in:
Mehran Kholdi 2021-07-02 18:45:10 +04:30
parent e585684502
commit 7717264801
3 changed files with 904 additions and 455 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,11 +1,12 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
import csi_pb2 as csi__pb2
class IdentityStub(object):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
def __init__(self, channel):
"""Constructor.
@ -31,22 +32,22 @@ class IdentityStub(object):
class IdentityServicer(object):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
def GetPluginInfo(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetPluginCapabilities(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def Probe(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
@ -77,7 +78,7 @@ def add_IdentityServicer_to_server(servicer, server):
# This class is part of an EXPERIMENTAL API.
class Identity(object):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
@staticmethod
def GetPluginInfo(request,
@ -85,6 +86,7 @@ class Identity(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -93,7 +95,7 @@ class Identity(object):
csi__pb2.GetPluginInfoRequest.SerializeToString,
csi__pb2.GetPluginInfoResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetPluginCapabilities(request,
@ -101,6 +103,7 @@ class Identity(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -109,7 +112,7 @@ class Identity(object):
csi__pb2.GetPluginCapabilitiesRequest.SerializeToString,
csi__pb2.GetPluginCapabilitiesResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def Probe(request,
@ -117,6 +120,7 @@ class Identity(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -125,11 +129,11 @@ class Identity(object):
csi__pb2.ProbeRequest.SerializeToString,
csi__pb2.ProbeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
class ControllerStub(object):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
def __init__(self, channel):
"""Constructor.
@ -205,82 +209,82 @@ class ControllerStub(object):
class ControllerServicer(object):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
def CreateVolume(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def DeleteVolume(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ControllerPublishVolume(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ControllerUnpublishVolume(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ValidateVolumeCapabilities(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ListVolumes(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def GetCapacity(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ControllerGetCapabilities(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def CreateSnapshot(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def DeleteSnapshot(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ListSnapshots(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ControllerExpandVolume(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def ControllerGetVolume(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
@ -361,7 +365,7 @@ def add_ControllerServicer_to_server(servicer, server):
# This class is part of an EXPERIMENTAL API.
class Controller(object):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
@staticmethod
def CreateVolume(request,
@ -369,6 +373,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -377,7 +382,7 @@ class Controller(object):
csi__pb2.CreateVolumeRequest.SerializeToString,
csi__pb2.CreateVolumeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def DeleteVolume(request,
@ -385,6 +390,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -393,7 +399,7 @@ class Controller(object):
csi__pb2.DeleteVolumeRequest.SerializeToString,
csi__pb2.DeleteVolumeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ControllerPublishVolume(request,
@ -401,6 +407,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -409,7 +416,7 @@ class Controller(object):
csi__pb2.ControllerPublishVolumeRequest.SerializeToString,
csi__pb2.ControllerPublishVolumeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ControllerUnpublishVolume(request,
@ -417,6 +424,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -425,7 +433,7 @@ class Controller(object):
csi__pb2.ControllerUnpublishVolumeRequest.SerializeToString,
csi__pb2.ControllerUnpublishVolumeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ValidateVolumeCapabilities(request,
@ -433,6 +441,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -441,7 +450,7 @@ class Controller(object):
csi__pb2.ValidateVolumeCapabilitiesRequest.SerializeToString,
csi__pb2.ValidateVolumeCapabilitiesResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ListVolumes(request,
@ -449,6 +458,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -457,7 +467,7 @@ class Controller(object):
csi__pb2.ListVolumesRequest.SerializeToString,
csi__pb2.ListVolumesResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def GetCapacity(request,
@ -465,6 +475,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -473,7 +484,7 @@ class Controller(object):
csi__pb2.GetCapacityRequest.SerializeToString,
csi__pb2.GetCapacityResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ControllerGetCapabilities(request,
@ -481,6 +492,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -489,7 +501,7 @@ class Controller(object):
csi__pb2.ControllerGetCapabilitiesRequest.SerializeToString,
csi__pb2.ControllerGetCapabilitiesResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def CreateSnapshot(request,
@ -497,6 +509,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -505,7 +518,7 @@ class Controller(object):
csi__pb2.CreateSnapshotRequest.SerializeToString,
csi__pb2.CreateSnapshotResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def DeleteSnapshot(request,
@ -513,6 +526,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -521,7 +535,7 @@ class Controller(object):
csi__pb2.DeleteSnapshotRequest.SerializeToString,
csi__pb2.DeleteSnapshotResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ListSnapshots(request,
@ -529,6 +543,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -537,7 +552,7 @@ class Controller(object):
csi__pb2.ListSnapshotsRequest.SerializeToString,
csi__pb2.ListSnapshotsResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ControllerExpandVolume(request,
@ -545,6 +560,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -553,7 +569,7 @@ class Controller(object):
csi__pb2.ControllerExpandVolumeRequest.SerializeToString,
csi__pb2.ControllerExpandVolumeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def ControllerGetVolume(request,
@ -561,6 +577,7 @@ class Controller(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -569,11 +586,11 @@ class Controller(object):
csi__pb2.ControllerGetVolumeRequest.SerializeToString,
csi__pb2.ControllerGetVolumeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
class NodeStub(object):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
def __init__(self, channel):
"""Constructor.
@ -624,52 +641,52 @@ class NodeStub(object):
class NodeServicer(object):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
def NodeStageVolume(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def NodeUnstageVolume(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def NodePublishVolume(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def NodeUnpublishVolume(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def NodeGetVolumeStats(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def NodeExpandVolume(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def NodeGetCapabilities(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def NodeGetInfo(self, request, context):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
@ -725,7 +742,7 @@ def add_NodeServicer_to_server(servicer, server):
# This class is part of an EXPERIMENTAL API.
class Node(object):
"""Missing associated documentation comment in .proto file"""
"""Missing associated documentation comment in .proto file."""
@staticmethod
def NodeStageVolume(request,
@ -733,6 +750,7 @@ class Node(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -741,7 +759,7 @@ class Node(object):
csi__pb2.NodeStageVolumeRequest.SerializeToString,
csi__pb2.NodeStageVolumeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def NodeUnstageVolume(request,
@ -749,6 +767,7 @@ class Node(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -757,7 +776,7 @@ class Node(object):
csi__pb2.NodeUnstageVolumeRequest.SerializeToString,
csi__pb2.NodeUnstageVolumeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def NodePublishVolume(request,
@ -765,6 +784,7 @@ class Node(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -773,7 +793,7 @@ class Node(object):
csi__pb2.NodePublishVolumeRequest.SerializeToString,
csi__pb2.NodePublishVolumeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def NodeUnpublishVolume(request,
@ -781,6 +801,7 @@ class Node(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -789,7 +810,7 @@ class Node(object):
csi__pb2.NodeUnpublishVolumeRequest.SerializeToString,
csi__pb2.NodeUnpublishVolumeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def NodeGetVolumeStats(request,
@ -797,6 +818,7 @@ class Node(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -805,7 +827,7 @@ class Node(object):
csi__pb2.NodeGetVolumeStatsRequest.SerializeToString,
csi__pb2.NodeGetVolumeStatsResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def NodeExpandVolume(request,
@ -813,6 +835,7 @@ class Node(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -821,7 +844,7 @@ class Node(object):
csi__pb2.NodeExpandVolumeRequest.SerializeToString,
csi__pb2.NodeExpandVolumeResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def NodeGetCapabilities(request,
@ -829,6 +852,7 @@ class Node(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -837,7 +861,7 @@ class Node(object):
csi__pb2.NodeGetCapabilitiesRequest.SerializeToString,
csi__pb2.NodeGetCapabilitiesResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def NodeGetInfo(request,
@ -845,6 +869,7 @@ class Node(object):
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
@ -853,4 +878,4 @@ class Node(object):
csi__pb2.NodeGetInfoRequest.SerializeToString,
csi__pb2.NodeGetInfoResponse.FromString,
options, channel_credentials,
call_credentials, compression, wait_for_ready, timeout, metadata)
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

View File

@ -395,6 +395,19 @@ message VolumeCapability {
// to untrusted entities. The total size of this repeated field
// SHALL NOT exceed 4 KiB.
repeated string mount_flags = 2;
// If SP has VOLUME_MOUNT_GROUP node capability and CO provides
// this field then SP MUST ensure that the volume_mount_group
// parameter is passed as the group identifier to the underlying
// operating system mount system call, with the understanding
// that the set of available mount call parameters and/or
// mount implementations may vary across operating systems.
// Additionally, new file and/or directory entries written to
// the underlying filesystem SHOULD be permission-labeled in such a
// manner, unless otherwise modified by a workload, that they are
// both readable and writable by said mount group identifier.
// This is an OPTIONAL field.
string volume_mount_group = 3 [(alpha_field) = true];
}
// Specify how a volume can be accessed.
@ -420,6 +433,18 @@ message VolumeCapability {
// Can be published as read/write at multiple nodes
// simultaneously.
MULTI_NODE_MULTI_WRITER = 5;
// Can only be published once as read/write at a single workload
// on a single node, at any given time. SHOULD be used instead of
// SINGLE_NODE_WRITER for COs using the experimental
// SINGLE_NODE_MULTI_WRITER capability.
SINGLE_NODE_SINGLE_WRITER = 6 [(alpha_enum_value) = true];
// Can be published as read/write at multiple workloads on a
// single node simultaneously. SHOULD be used instead of
// SINGLE_NODE_WRITER for COs using the experimental
// SINGLE_NODE_MULTI_WRITER capability.
SINGLE_NODE_MULTI_WRITER = 7 [(alpha_enum_value) = true];
}
// This field is REQUIRED.
@ -947,6 +972,42 @@ message GetCapacityResponse {
// storage. This field is REQUIRED.
// The value of this field MUST NOT be negative.
int64 available_capacity = 1;
// The largest size that may be used in a
// CreateVolumeRequest.capacity_range.required_bytes field
// to create a volume with the same parameters as those in
// GetCapacityRequest.
//
// If `volume_capabilities` or `parameters` is
// specified in the request, the Plugin SHALL take those into
// consideration when calculating the minimum volume size of the
// storage.
//
// This field is OPTIONAL. MUST NOT be negative.
// The Plugin SHOULD provide a value for this field if it has
// a maximum size for individual volumes and leave it unset
// otherwise. COs MAY use it to make decision about
// where to create volumes.
google.protobuf.Int64Value maximum_volume_size = 2
[(alpha_field) = true];
// The smallest size that may be used in a
// CreateVolumeRequest.capacity_range.limit_bytes field
// to create a volume with the same parameters as those in
// GetCapacityRequest.
//
// If `volume_capabilities` or `parameters` is
// specified in the request, the Plugin SHALL take those into
// consideration when calculating the maximum volume size of the
// storage.
//
// This field is OPTIONAL. MUST NOT be negative.
// The Plugin SHOULD provide a value for this field if it has
// a minimum size for individual volumes and leave it unset
// otherwise. COs MAY use it to make decision about
// where to create volumes.
google.protobuf.Int64Value minimum_volume_size = 3
[(alpha_field) = true];
}
message ControllerGetCapabilitiesRequest {
// Intentionally empty.
@ -1008,6 +1069,16 @@ message ControllerServiceCapability {
// This enables COs to, for example, fetch per volume
// condition after a volume is provisioned.
GET_VOLUME = 12 [(alpha_enum_value) = true];
// Indicates the SP supports the SINGLE_NODE_SINGLE_WRITER and/or
// SINGLE_NODE_MULTI_WRITER access modes.
// These access modes are intended to replace the
// SINGLE_NODE_WRITER access mode to clarify the number of writers
// for a volume on a single node. Plugins MUST accept and allow
// use of the SINGLE_NODE_WRITER access mode when either
// SINGLE_NODE_SINGLE_WRITER and/or SINGLE_NODE_MULTI_WRITER are
// supported, in order to permit older COs to continue working.
SINGLE_NODE_MULTI_WRITER = 13 [(alpha_enum_value) = true];
}
Type type = 1;
@ -1206,6 +1277,10 @@ message NodeStageVolumeRequest {
// CO SHALL be responsible for creating the directory if it does not
// exist.
// This is a REQUIRED field.
// This field overrides the general CSI size limit.
// SP SHOULD support the maximum path length allowed by the operating
// system/filesystem, but, at a minimum, SP MUST accept a max path
// length of at least 128 bytes.
string staging_target_path = 3;
// Volume capability describing how the CO intends to use this volume.
@ -1236,6 +1311,10 @@ message NodeUnstageVolumeRequest {
// The path at which the volume was staged. It MUST be an absolute
// path in the root filesystem of the process serving this request.
// This is a REQUIRED field.
// This field overrides the general CSI size limit.
// SP SHOULD support the maximum path length allowed by the operating
// system/filesystem, but, at a minimum, SP MUST accept a max path
// length of at least 128 bytes.
string staging_target_path = 2;
}
@ -1259,6 +1338,10 @@ message NodePublishVolumeRequest {
// It MUST be set if the Node Plugin implements the
// `STAGE_UNSTAGE_VOLUME` node capability.
// This is an OPTIONAL field.
// This field overrides the general CSI size limit.
// SP SHOULD support the maximum path length allowed by the operating
// system/filesystem, but, at a minimum, SP MUST accept a max path
// length of at least 128 bytes.
string staging_target_path = 3;
// The path to which the volume will be published. It MUST be an
@ -1273,6 +1356,10 @@ message NodePublishVolumeRequest {
// mounted directory at target_path.
// Creation of target_path is the responsibility of the SP.
// This is a REQUIRED field.
// This field overrides the general CSI size limit.
// SP SHOULD support the maximum path length allowed by the operating
// system/filesystem, but, at a minimum, SP MUST accept a max path
// length of at least 128 bytes.
string target_path = 4;
// Volume capability describing how the CO intends to use this volume.
@ -1308,6 +1395,10 @@ message NodeUnpublishVolumeRequest {
// path in the root filesystem of the process serving this request.
// The SP MUST delete the file or directory it created at this path.
// This is a REQUIRED field.
// This field overrides the general CSI size limit.
// SP SHOULD support the maximum path length allowed by the operating
// system/filesystem, but, at a minimum, SP MUST accept a max path
// length of at least 128 bytes.
string target_path = 2;
}
@ -1323,6 +1414,10 @@ message NodeGetVolumeStatsRequest {
// It MUST be an absolute path in the root filesystem of
// the process serving this request.
// This is a REQUIRED field.
// This field overrides the general CSI size limit.
// SP SHOULD support the maximum path length allowed by the operating
// system/filesystem, but, at a minimum, SP MUST accept a max path
// length of at least 128 bytes.
string volume_path = 2;
// The path where the volume is staged, if the plugin has the
@ -1330,6 +1425,10 @@ message NodeGetVolumeStatsRequest {
// If not empty, it MUST be an absolute path in the root
// filesystem of the process serving this request.
// This field is OPTIONAL.
// This field overrides the general CSI size limit.
// SP SHOULD support the maximum path length allowed by the operating
// system/filesystem, but, at a minimum, SP MUST accept a max path
// length of at least 128 bytes.
string staging_target_path = 3;
}
@ -1412,6 +1511,22 @@ message NodeServiceCapability {
// Note that, for alpha, `VolumeCondition` is intended to be
// informative for humans only, not for automation.
VOLUME_CONDITION = 4 [(alpha_enum_value) = true];
// Indicates the SP supports the SINGLE_NODE_SINGLE_WRITER and/or
// SINGLE_NODE_MULTI_WRITER access modes.
// These access modes are intended to replace the
// SINGLE_NODE_WRITER access mode to clarify the number of writers
// for a volume on a single node. Plugins MUST accept and allow
// use of the SINGLE_NODE_WRITER access mode (subject to the
// processing rules for NodePublishVolume), when either
// SINGLE_NODE_SINGLE_WRITER and/or SINGLE_NODE_MULTI_WRITER are
// supported, in order to permit older COs to continue working.
SINGLE_NODE_MULTI_WRITER = 5 [(alpha_enum_value) = true];
// Indicates that Node service supports mounting volumes
// with provided volume group identifier during node stage
// or node publish RPC calls.
VOLUME_MOUNT_GROUP = 6 [(alpha_enum_value) = true];
}
Type type = 1;
@ -1434,6 +1549,10 @@ message NodeGetInfoResponse {
// `ControllerPublishVolume`, to refer to this node.
// The SP is NOT responsible for global uniqueness of node_id across
// multiple SPs.
// This field overrides the general CSI size limit.
// The size of this field SHALL NOT exceed 256 bytes. The general
// CSI size limit, 128 byte, is RECOMMENDED for best backwards
// compatibility.
string node_id = 1;
// Maximum number of volumes that controller can publish to the node.
@ -1467,6 +1586,10 @@ message NodeExpandVolumeRequest {
string volume_id = 1;
// The path on which volume is available. This field is REQUIRED.
// This field overrides the general CSI size limit.
// SP SHOULD support the maximum path length allowed by the operating
// system/filesystem, but, at a minimum, SP MUST accept a max path
// length of at least 128 bytes.
string volume_path = 2;
// This allows CO to specify the capacity requirements of the volume
@ -1482,6 +1605,10 @@ message NodeExpandVolumeRequest {
// If not empty, it MUST be an absolute path in the root
// filesystem of the process serving this request.
// This field is OPTIONAL.
// This field overrides the general CSI size limit.
// SP SHOULD support the maximum path length allowed by the operating
// system/filesystem, but, at a minimum, SP MUST accept a max path
// length of at least 128 bytes.
string staging_target_path = 4;
// Volume capability describing how the CO intends to use this volume.
@ -1494,6 +1621,12 @@ message NodeExpandVolumeRequest {
// access_type from given volume_path for the volume and perform
// node expansion. This is an OPTIONAL field.
VolumeCapability volume_capability = 5;
// Secrets required by plugin to complete node expand volume request.
// This field is OPTIONAL. Refer to the `Secrets Requirements`
// section on how to use this field.
map<string, string> secrets = 6
[(csi_secret) = true, (alpha_field) = true];
}
message NodeExpandVolumeResponse {