From aeca98c2754734e817ee47973e9fc9b22468a5c2 Mon Sep 17 00:00:00 2001 From: Hemant Kumar Date: Sun, 22 Jul 2018 23:55:45 -0400 Subject: [PATCH] Write a design proposal for volume capacity Use repeated usage for representing volume stats --- csi.proto | 45 +++ lib/go/csi/v0/csi.pb.go | 755 ++++++++++++++++++++++++++-------------- spec.md | 69 ++++ 3 files changed, 611 insertions(+), 258 deletions(-) diff --git a/csi.proto b/csi.proto index 22cff40c..2b11288c 100644 --- a/csi.proto +++ b/csi.proto @@ -64,6 +64,9 @@ service Node { rpc NodeUnpublishVolume (NodeUnpublishVolumeRequest) returns (NodeUnpublishVolumeResponse) {} + rpc NodeGetVolumeStats (NodeGetVolumeStatsRequest) + returns (NodeGetVolumeStatsResponse) {} + // NodeGetId is being deprecated in favor of NodeGetInfo and will be // removed in CSI 1.0. Existing drivers, however, may depend on this // RPC call and hence this RPC call MUST be implemented by the CSI @@ -1020,6 +1023,44 @@ message NodeUnpublishVolumeRequest { message NodeUnpublishVolumeResponse { // Intentionally empty. } +message NodeGetVolumeStatsRequest { + // The ID of the volume. This field is REQUIRED. + string volume_id = 1; + + // It can be any valid path where volume was previously + // staged or published. + // It MUST be an absolute path in the root filesystem of + // the process serving this request. + // This is a REQUIRED field. + string volume_path = 2; +} + +message NodeGetVolumeStatsResponse { + // This field is OPTIONAL. + repeated VolumeUsage usage = 1; +} + +message VolumeUsage { + enum Unit { + UNKNOWN = 0; + BYTES = 1; + INODES = 2; + } + // The available capacity in specified Unit. This field is OPTIONAL. + // The value of this field MUST NOT be negative. + int64 available = 1; + + // The total capacity in specified Unit. This field is REQUIRED. + // The value of this field MUST NOT be negative. + int64 total = 2; + + // The used capacity in specified Unit. This field is OPTIONAL. + // The value of this field MUST NOT be negative. + int64 used = 3; + + // Units by which values are measured. This field is REQUIRED. + Unit unit = 4; +} message NodeGetIdRequest { // Intentionally empty. } @@ -1046,6 +1087,10 @@ message NodeServiceCapability { enum Type { UNKNOWN = 0; STAGE_UNSTAGE_VOLUME = 1; + // If Plugin implements GET_VOLUME_STATS capability + // then it MUST implement NodeGetVolumeStats RPC + // call for fetching volume statistics. + GET_VOLUME_STATS = 2; } Type type = 1; diff --git a/lib/go/csi/v0/csi.pb.go b/lib/go/csi/v0/csi.pb.go index c7c8592b..ead54d58 100644 --- a/lib/go/csi/v0/csi.pb.go +++ b/lib/go/csi/v0/csi.pb.go @@ -61,7 +61,7 @@ func (x PluginCapability_Service_Type) String() string { return proto.EnumName(PluginCapability_Service_Type_name, int32(x)) } func (PluginCapability_Service_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{4, 0, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{4, 0, 0} } type VolumeCapability_AccessMode_Mode int32 @@ -105,7 +105,7 @@ func (x VolumeCapability_AccessMode_Mode) String() string { return proto.EnumName(VolumeCapability_AccessMode_Mode_name, int32(x)) } func (VolumeCapability_AccessMode_Mode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{10, 2, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{10, 2, 0} } type ControllerServiceCapability_RPC_Type int32 @@ -151,7 +151,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 fileDescriptor_csi_88c20d68ea45d9ad, []int{29, 0, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{29, 0, 0} } type SnapshotStatus_Type int32 @@ -193,7 +193,33 @@ func (x SnapshotStatus_Type) String() string { return proto.EnumName(SnapshotStatus_Type_name, int32(x)) } func (SnapshotStatus_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{33, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{33, 0} +} + +type VolumeUsage_Unit int32 + +const ( + VolumeUsage_UNKNOWN VolumeUsage_Unit = 0 + VolumeUsage_BYTES VolumeUsage_Unit = 1 + VolumeUsage_INODES VolumeUsage_Unit = 2 +) + +var VolumeUsage_Unit_name = map[int32]string{ + 0: "UNKNOWN", + 1: "BYTES", + 2: "INODES", +} +var VolumeUsage_Unit_value = map[string]int32{ + "UNKNOWN": 0, + "BYTES": 1, + "INODES": 2, +} + +func (x VolumeUsage_Unit) String() string { + return proto.EnumName(VolumeUsage_Unit_name, int32(x)) +} +func (VolumeUsage_Unit) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_csi_d2a705310653d01b, []int{48, 0} } type NodeServiceCapability_RPC_Type int32 @@ -201,22 +227,28 @@ type NodeServiceCapability_RPC_Type int32 const ( NodeServiceCapability_RPC_UNKNOWN NodeServiceCapability_RPC_Type = 0 NodeServiceCapability_RPC_STAGE_UNSTAGE_VOLUME NodeServiceCapability_RPC_Type = 1 + // If Plugin implements GET_VOLUME_STATS capability + // then it MUST implement NodeGetVolumeStats RPC + // call for fetching volume statistics. + NodeServiceCapability_RPC_GET_VOLUME_STATS NodeServiceCapability_RPC_Type = 2 ) var NodeServiceCapability_RPC_Type_name = map[int32]string{ 0: "UNKNOWN", 1: "STAGE_UNSTAGE_VOLUME", + 2: "GET_VOLUME_STATS", } var NodeServiceCapability_RPC_Type_value = map[string]int32{ "UNKNOWN": 0, "STAGE_UNSTAGE_VOLUME": 1, + "GET_VOLUME_STATS": 2, } func (x NodeServiceCapability_RPC_Type) String() string { return proto.EnumName(NodeServiceCapability_RPC_Type_name, int32(x)) } func (NodeServiceCapability_RPC_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{50, 0, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{53, 0, 0} } type GetPluginInfoRequest struct { @@ -229,7 +261,7 @@ func (m *GetPluginInfoRequest) Reset() { *m = GetPluginInfoRequest{} } func (m *GetPluginInfoRequest) String() string { return proto.CompactTextString(m) } func (*GetPluginInfoRequest) ProtoMessage() {} func (*GetPluginInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{0} + return fileDescriptor_csi_d2a705310653d01b, []int{0} } func (m *GetPluginInfoRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetPluginInfoRequest.Unmarshal(m, b) @@ -271,7 +303,7 @@ func (m *GetPluginInfoResponse) Reset() { *m = GetPluginInfoResponse{} } func (m *GetPluginInfoResponse) String() string { return proto.CompactTextString(m) } func (*GetPluginInfoResponse) ProtoMessage() {} func (*GetPluginInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{1} + return fileDescriptor_csi_d2a705310653d01b, []int{1} } func (m *GetPluginInfoResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetPluginInfoResponse.Unmarshal(m, b) @@ -322,7 +354,7 @@ func (m *GetPluginCapabilitiesRequest) Reset() { *m = GetPluginCapabilit func (m *GetPluginCapabilitiesRequest) String() string { return proto.CompactTextString(m) } func (*GetPluginCapabilitiesRequest) ProtoMessage() {} func (*GetPluginCapabilitiesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{2} + return fileDescriptor_csi_d2a705310653d01b, []int{2} } func (m *GetPluginCapabilitiesRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetPluginCapabilitiesRequest.Unmarshal(m, b) @@ -355,7 +387,7 @@ func (m *GetPluginCapabilitiesResponse) Reset() { *m = GetPluginCapabili func (m *GetPluginCapabilitiesResponse) String() string { return proto.CompactTextString(m) } func (*GetPluginCapabilitiesResponse) ProtoMessage() {} func (*GetPluginCapabilitiesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{3} + return fileDescriptor_csi_d2a705310653d01b, []int{3} } func (m *GetPluginCapabilitiesResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetPluginCapabilitiesResponse.Unmarshal(m, b) @@ -396,7 +428,7 @@ func (m *PluginCapability) Reset() { *m = PluginCapability{} } func (m *PluginCapability) String() string { return proto.CompactTextString(m) } func (*PluginCapability) ProtoMessage() {} func (*PluginCapability) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{4} + return fileDescriptor_csi_d2a705310653d01b, []int{4} } func (m *PluginCapability) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PluginCapability.Unmarshal(m, b) @@ -506,7 +538,7 @@ func (m *PluginCapability_Service) Reset() { *m = PluginCapability_Servi func (m *PluginCapability_Service) String() string { return proto.CompactTextString(m) } func (*PluginCapability_Service) ProtoMessage() {} func (*PluginCapability_Service) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{4, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{4, 0} } func (m *PluginCapability_Service) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PluginCapability_Service.Unmarshal(m, b) @@ -543,7 +575,7 @@ func (m *ProbeRequest) Reset() { *m = ProbeRequest{} } func (m *ProbeRequest) String() string { return proto.CompactTextString(m) } func (*ProbeRequest) ProtoMessage() {} func (*ProbeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{5} + return fileDescriptor_csi_d2a705310653d01b, []int{5} } func (m *ProbeRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProbeRequest.Unmarshal(m, b) @@ -594,7 +626,7 @@ func (m *ProbeResponse) Reset() { *m = ProbeResponse{} } func (m *ProbeResponse) String() string { return proto.CompactTextString(m) } func (*ProbeResponse) ProtoMessage() {} func (*ProbeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{6} + return fileDescriptor_csi_d2a705310653d01b, []int{6} } func (m *ProbeResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ProbeResponse.Unmarshal(m, b) @@ -680,7 +712,7 @@ func (m *CreateVolumeRequest) Reset() { *m = CreateVolumeRequest{} } func (m *CreateVolumeRequest) String() string { return proto.CompactTextString(m) } func (*CreateVolumeRequest) ProtoMessage() {} func (*CreateVolumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{7} + return fileDescriptor_csi_d2a705310653d01b, []int{7} } func (m *CreateVolumeRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateVolumeRequest.Unmarshal(m, b) @@ -764,7 +796,7 @@ func (m *VolumeContentSource) Reset() { *m = VolumeContentSource{} } func (m *VolumeContentSource) String() string { return proto.CompactTextString(m) } func (*VolumeContentSource) ProtoMessage() {} func (*VolumeContentSource) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{8} + return fileDescriptor_csi_d2a705310653d01b, []int{8} } func (m *VolumeContentSource) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_VolumeContentSource.Unmarshal(m, b) @@ -878,7 +910,7 @@ func (m *VolumeContentSource_SnapshotSource) Reset() { *m = VolumeConten func (m *VolumeContentSource_SnapshotSource) String() string { return proto.CompactTextString(m) } func (*VolumeContentSource_SnapshotSource) ProtoMessage() {} func (*VolumeContentSource_SnapshotSource) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{8, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{8, 0} } func (m *VolumeContentSource_SnapshotSource) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_VolumeContentSource_SnapshotSource.Unmarshal(m, b) @@ -919,7 +951,7 @@ func (m *CreateVolumeResponse) Reset() { *m = CreateVolumeResponse{} } func (m *CreateVolumeResponse) String() string { return proto.CompactTextString(m) } func (*CreateVolumeResponse) ProtoMessage() {} func (*CreateVolumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{9} + return fileDescriptor_csi_d2a705310653d01b, []int{9} } func (m *CreateVolumeResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateVolumeResponse.Unmarshal(m, b) @@ -966,7 +998,7 @@ func (m *VolumeCapability) Reset() { *m = VolumeCapability{} } func (m *VolumeCapability) String() string { return proto.CompactTextString(m) } func (*VolumeCapability) ProtoMessage() {} func (*VolumeCapability) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{10} + return fileDescriptor_csi_d2a705310653d01b, []int{10} } func (m *VolumeCapability) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_VolumeCapability.Unmarshal(m, b) @@ -1113,7 +1145,7 @@ func (m *VolumeCapability_BlockVolume) Reset() { *m = VolumeCapability_B func (m *VolumeCapability_BlockVolume) String() string { return proto.CompactTextString(m) } func (*VolumeCapability_BlockVolume) ProtoMessage() {} func (*VolumeCapability_BlockVolume) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{10, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{10, 0} } func (m *VolumeCapability_BlockVolume) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_VolumeCapability_BlockVolume.Unmarshal(m, b) @@ -1153,7 +1185,7 @@ func (m *VolumeCapability_MountVolume) Reset() { *m = VolumeCapability_M func (m *VolumeCapability_MountVolume) String() string { return proto.CompactTextString(m) } func (*VolumeCapability_MountVolume) ProtoMessage() {} func (*VolumeCapability_MountVolume) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{10, 1} + return fileDescriptor_csi_d2a705310653d01b, []int{10, 1} } func (m *VolumeCapability_MountVolume) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_VolumeCapability_MountVolume.Unmarshal(m, b) @@ -1200,7 +1232,7 @@ func (m *VolumeCapability_AccessMode) Reset() { *m = VolumeCapability_Ac func (m *VolumeCapability_AccessMode) String() string { return proto.CompactTextString(m) } func (*VolumeCapability_AccessMode) ProtoMessage() {} func (*VolumeCapability_AccessMode) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{10, 2} + return fileDescriptor_csi_d2a705310653d01b, []int{10, 2} } func (m *VolumeCapability_AccessMode) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_VolumeCapability_AccessMode.Unmarshal(m, b) @@ -1248,7 +1280,7 @@ func (m *CapacityRange) Reset() { *m = CapacityRange{} } func (m *CapacityRange) String() string { return proto.CompactTextString(m) } func (*CapacityRange) ProtoMessage() {} func (*CapacityRange) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{11} + return fileDescriptor_csi_d2a705310653d01b, []int{11} } func (m *CapacityRange) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CapacityRange.Unmarshal(m, b) @@ -1341,7 +1373,7 @@ func (m *Volume) Reset() { *m = Volume{} } func (m *Volume) String() string { return proto.CompactTextString(m) } func (*Volume) ProtoMessage() {} func (*Volume) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{12} + return fileDescriptor_csi_d2a705310653d01b, []int{12} } func (m *Volume) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Volume.Unmarshal(m, b) @@ -1533,7 +1565,7 @@ func (m *TopologyRequirement) Reset() { *m = TopologyRequirement{} } func (m *TopologyRequirement) String() string { return proto.CompactTextString(m) } func (*TopologyRequirement) ProtoMessage() {} func (*TopologyRequirement) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{13} + return fileDescriptor_csi_d2a705310653d01b, []int{13} } func (m *TopologyRequirement) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TopologyRequirement.Unmarshal(m, b) @@ -1604,7 +1636,7 @@ func (m *Topology) Reset() { *m = Topology{} } func (m *Topology) String() string { return proto.CompactTextString(m) } func (*Topology) ProtoMessage() {} func (*Topology) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{14} + return fileDescriptor_csi_d2a705310653d01b, []int{14} } func (m *Topology) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Topology.Unmarshal(m, b) @@ -1648,7 +1680,7 @@ func (m *DeleteVolumeRequest) Reset() { *m = DeleteVolumeRequest{} } func (m *DeleteVolumeRequest) String() string { return proto.CompactTextString(m) } func (*DeleteVolumeRequest) ProtoMessage() {} func (*DeleteVolumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{15} + return fileDescriptor_csi_d2a705310653d01b, []int{15} } func (m *DeleteVolumeRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteVolumeRequest.Unmarshal(m, b) @@ -1692,7 +1724,7 @@ func (m *DeleteVolumeResponse) Reset() { *m = DeleteVolumeResponse{} } func (m *DeleteVolumeResponse) String() string { return proto.CompactTextString(m) } func (*DeleteVolumeResponse) ProtoMessage() {} func (*DeleteVolumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{16} + return fileDescriptor_csi_d2a705310653d01b, []int{16} } func (m *DeleteVolumeResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteVolumeResponse.Unmarshal(m, b) @@ -1742,7 +1774,7 @@ func (m *ControllerPublishVolumeRequest) Reset() { *m = ControllerPublis func (m *ControllerPublishVolumeRequest) String() string { return proto.CompactTextString(m) } func (*ControllerPublishVolumeRequest) ProtoMessage() {} func (*ControllerPublishVolumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{17} + return fileDescriptor_csi_d2a705310653d01b, []int{17} } func (m *ControllerPublishVolumeRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ControllerPublishVolumeRequest.Unmarshal(m, b) @@ -1819,7 +1851,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 fileDescriptor_csi_88c20d68ea45d9ad, []int{18} + return fileDescriptor_csi_d2a705310653d01b, []int{18} } func (m *ControllerPublishVolumeResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ControllerPublishVolumeResponse.Unmarshal(m, b) @@ -1870,7 +1902,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 fileDescriptor_csi_88c20d68ea45d9ad, []int{19} + return fileDescriptor_csi_d2a705310653d01b, []int{19} } func (m *ControllerUnpublishVolumeRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ControllerUnpublishVolumeRequest.Unmarshal(m, b) @@ -1921,7 +1953,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 fileDescriptor_csi_88c20d68ea45d9ad, []int{20} + return fileDescriptor_csi_d2a705310653d01b, []int{20} } func (m *ControllerUnpublishVolumeResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ControllerUnpublishVolumeResponse.Unmarshal(m, b) @@ -1967,7 +1999,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 fileDescriptor_csi_88c20d68ea45d9ad, []int{21} + return fileDescriptor_csi_d2a705310653d01b, []int{21} } func (m *ValidateVolumeCapabilitiesRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ValidateVolumeCapabilitiesRequest.Unmarshal(m, b) @@ -2032,7 +2064,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 fileDescriptor_csi_88c20d68ea45d9ad, []int{22} + return fileDescriptor_csi_d2a705310653d01b, []int{22} } func (m *ValidateVolumeCapabilitiesResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ValidateVolumeCapabilitiesResponse.Unmarshal(m, b) @@ -2090,7 +2122,7 @@ func (m *ListVolumesRequest) Reset() { *m = ListVolumesRequest{} } func (m *ListVolumesRequest) String() string { return proto.CompactTextString(m) } func (*ListVolumesRequest) ProtoMessage() {} func (*ListVolumesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{23} + return fileDescriptor_csi_d2a705310653d01b, []int{23} } func (m *ListVolumesRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListVolumesRequest.Unmarshal(m, b) @@ -2142,7 +2174,7 @@ func (m *ListVolumesResponse) Reset() { *m = ListVolumesResponse{} } func (m *ListVolumesResponse) String() string { return proto.CompactTextString(m) } func (*ListVolumesResponse) ProtoMessage() {} func (*ListVolumesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{24} + return fileDescriptor_csi_d2a705310653d01b, []int{24} } func (m *ListVolumesResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListVolumesResponse.Unmarshal(m, b) @@ -2187,7 +2219,7 @@ func (m *ListVolumesResponse_Entry) Reset() { *m = ListVolumesResponse_E func (m *ListVolumesResponse_Entry) String() string { return proto.CompactTextString(m) } func (*ListVolumesResponse_Entry) ProtoMessage() {} func (*ListVolumesResponse_Entry) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{24, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{24, 0} } func (m *ListVolumesResponse_Entry) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListVolumesResponse_Entry.Unmarshal(m, b) @@ -2242,7 +2274,7 @@ func (m *GetCapacityRequest) Reset() { *m = GetCapacityRequest{} } func (m *GetCapacityRequest) String() string { return proto.CompactTextString(m) } func (*GetCapacityRequest) ProtoMessage() {} func (*GetCapacityRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{25} + return fileDescriptor_csi_d2a705310653d01b, []int{25} } func (m *GetCapacityRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetCapacityRequest.Unmarshal(m, b) @@ -2300,7 +2332,7 @@ func (m *GetCapacityResponse) Reset() { *m = GetCapacityResponse{} } func (m *GetCapacityResponse) String() string { return proto.CompactTextString(m) } func (*GetCapacityResponse) ProtoMessage() {} func (*GetCapacityResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{26} + return fileDescriptor_csi_d2a705310653d01b, []int{26} } func (m *GetCapacityResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetCapacityResponse.Unmarshal(m, b) @@ -2337,7 +2369,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 fileDescriptor_csi_88c20d68ea45d9ad, []int{27} + return fileDescriptor_csi_d2a705310653d01b, []int{27} } func (m *ControllerGetCapabilitiesRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ControllerGetCapabilitiesRequest.Unmarshal(m, b) @@ -2370,7 +2402,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 fileDescriptor_csi_88c20d68ea45d9ad, []int{28} + return fileDescriptor_csi_d2a705310653d01b, []int{28} } func (m *ControllerGetCapabilitiesResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ControllerGetCapabilitiesResponse.Unmarshal(m, b) @@ -2411,7 +2443,7 @@ func (m *ControllerServiceCapability) Reset() { *m = ControllerServiceCa func (m *ControllerServiceCapability) String() string { return proto.CompactTextString(m) } func (*ControllerServiceCapability) ProtoMessage() {} func (*ControllerServiceCapability) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{29} + return fileDescriptor_csi_d2a705310653d01b, []int{29} } func (m *ControllerServiceCapability) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ControllerServiceCapability.Unmarshal(m, b) @@ -2521,7 +2553,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 fileDescriptor_csi_88c20d68ea45d9ad, []int{29, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{29, 0} } func (m *ControllerServiceCapability_RPC) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ControllerServiceCapability_RPC.Unmarshal(m, b) @@ -2579,7 +2611,7 @@ func (m *CreateSnapshotRequest) Reset() { *m = CreateSnapshotRequest{} } func (m *CreateSnapshotRequest) String() string { return proto.CompactTextString(m) } func (*CreateSnapshotRequest) ProtoMessage() {} func (*CreateSnapshotRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{30} + return fileDescriptor_csi_d2a705310653d01b, []int{30} } func (m *CreateSnapshotRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateSnapshotRequest.Unmarshal(m, b) @@ -2641,7 +2673,7 @@ func (m *CreateSnapshotResponse) Reset() { *m = CreateSnapshotResponse{} func (m *CreateSnapshotResponse) String() string { return proto.CompactTextString(m) } func (*CreateSnapshotResponse) ProtoMessage() {} func (*CreateSnapshotResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{31} + return fileDescriptor_csi_d2a705310653d01b, []int{31} } func (m *CreateSnapshotResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CreateSnapshotResponse.Unmarshal(m, b) @@ -2704,7 +2736,7 @@ func (m *Snapshot) Reset() { *m = Snapshot{} } func (m *Snapshot) String() string { return proto.CompactTextString(m) } func (*Snapshot) ProtoMessage() {} func (*Snapshot) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{32} + return fileDescriptor_csi_d2a705310653d01b, []int{32} } func (m *Snapshot) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Snapshot.Unmarshal(m, b) @@ -2775,7 +2807,7 @@ func (m *SnapshotStatus) Reset() { *m = SnapshotStatus{} } func (m *SnapshotStatus) String() string { return proto.CompactTextString(m) } func (*SnapshotStatus) ProtoMessage() {} func (*SnapshotStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{33} + return fileDescriptor_csi_d2a705310653d01b, []int{33} } func (m *SnapshotStatus) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SnapshotStatus.Unmarshal(m, b) @@ -2826,7 +2858,7 @@ func (m *DeleteSnapshotRequest) Reset() { *m = DeleteSnapshotRequest{} } func (m *DeleteSnapshotRequest) String() string { return proto.CompactTextString(m) } func (*DeleteSnapshotRequest) ProtoMessage() {} func (*DeleteSnapshotRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{34} + return fileDescriptor_csi_d2a705310653d01b, []int{34} } func (m *DeleteSnapshotRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteSnapshotRequest.Unmarshal(m, b) @@ -2870,7 +2902,7 @@ func (m *DeleteSnapshotResponse) Reset() { *m = DeleteSnapshotResponse{} func (m *DeleteSnapshotResponse) String() string { return proto.CompactTextString(m) } func (*DeleteSnapshotResponse) ProtoMessage() {} func (*DeleteSnapshotResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{35} + return fileDescriptor_csi_d2a705310653d01b, []int{35} } func (m *DeleteSnapshotResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeleteSnapshotResponse.Unmarshal(m, b) @@ -2924,7 +2956,7 @@ func (m *ListSnapshotsRequest) Reset() { *m = ListSnapshotsRequest{} } func (m *ListSnapshotsRequest) String() string { return proto.CompactTextString(m) } func (*ListSnapshotsRequest) ProtoMessage() {} func (*ListSnapshotsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{36} + return fileDescriptor_csi_d2a705310653d01b, []int{36} } func (m *ListSnapshotsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListSnapshotsRequest.Unmarshal(m, b) @@ -2990,7 +3022,7 @@ func (m *ListSnapshotsResponse) Reset() { *m = ListSnapshotsResponse{} } func (m *ListSnapshotsResponse) String() string { return proto.CompactTextString(m) } func (*ListSnapshotsResponse) ProtoMessage() {} func (*ListSnapshotsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{37} + return fileDescriptor_csi_d2a705310653d01b, []int{37} } func (m *ListSnapshotsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListSnapshotsResponse.Unmarshal(m, b) @@ -3035,7 +3067,7 @@ func (m *ListSnapshotsResponse_Entry) Reset() { *m = ListSnapshotsRespon func (m *ListSnapshotsResponse_Entry) String() string { return proto.CompactTextString(m) } func (*ListSnapshotsResponse_Entry) ProtoMessage() {} func (*ListSnapshotsResponse_Entry) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{37, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{37, 0} } func (m *ListSnapshotsResponse_Entry) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ListSnapshotsResponse_Entry.Unmarshal(m, b) @@ -3097,7 +3129,7 @@ func (m *NodeStageVolumeRequest) Reset() { *m = NodeStageVolumeRequest{} func (m *NodeStageVolumeRequest) String() string { return proto.CompactTextString(m) } func (*NodeStageVolumeRequest) ProtoMessage() {} func (*NodeStageVolumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{38} + return fileDescriptor_csi_d2a705310653d01b, []int{38} } func (m *NodeStageVolumeRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeStageVolumeRequest.Unmarshal(m, b) @@ -3169,7 +3201,7 @@ func (m *NodeStageVolumeResponse) Reset() { *m = NodeStageVolumeResponse func (m *NodeStageVolumeResponse) String() string { return proto.CompactTextString(m) } func (*NodeStageVolumeResponse) ProtoMessage() {} func (*NodeStageVolumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{39} + return fileDescriptor_csi_d2a705310653d01b, []int{39} } func (m *NodeStageVolumeResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeStageVolumeResponse.Unmarshal(m, b) @@ -3205,7 +3237,7 @@ func (m *NodeUnstageVolumeRequest) Reset() { *m = NodeUnstageVolumeReque func (m *NodeUnstageVolumeRequest) String() string { return proto.CompactTextString(m) } func (*NodeUnstageVolumeRequest) ProtoMessage() {} func (*NodeUnstageVolumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{40} + return fileDescriptor_csi_d2a705310653d01b, []int{40} } func (m *NodeUnstageVolumeRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeUnstageVolumeRequest.Unmarshal(m, b) @@ -3249,7 +3281,7 @@ func (m *NodeUnstageVolumeResponse) Reset() { *m = NodeUnstageVolumeResp func (m *NodeUnstageVolumeResponse) String() string { return proto.CompactTextString(m) } func (*NodeUnstageVolumeResponse) ProtoMessage() {} func (*NodeUnstageVolumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{41} + return fileDescriptor_csi_d2a705310653d01b, []int{41} } func (m *NodeUnstageVolumeResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeUnstageVolumeResponse.Unmarshal(m, b) @@ -3315,7 +3347,7 @@ func (m *NodePublishVolumeRequest) Reset() { *m = NodePublishVolumeReque func (m *NodePublishVolumeRequest) String() string { return proto.CompactTextString(m) } func (*NodePublishVolumeRequest) ProtoMessage() {} func (*NodePublishVolumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{42} + return fileDescriptor_csi_d2a705310653d01b, []int{42} } func (m *NodePublishVolumeRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodePublishVolumeRequest.Unmarshal(m, b) @@ -3401,7 +3433,7 @@ func (m *NodePublishVolumeResponse) Reset() { *m = NodePublishVolumeResp func (m *NodePublishVolumeResponse) String() string { return proto.CompactTextString(m) } func (*NodePublishVolumeResponse) ProtoMessage() {} func (*NodePublishVolumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{43} + return fileDescriptor_csi_d2a705310653d01b, []int{43} } func (m *NodePublishVolumeResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodePublishVolumeResponse.Unmarshal(m, b) @@ -3437,7 +3469,7 @@ func (m *NodeUnpublishVolumeRequest) Reset() { *m = NodeUnpublishVolumeR func (m *NodeUnpublishVolumeRequest) String() string { return proto.CompactTextString(m) } func (*NodeUnpublishVolumeRequest) ProtoMessage() {} func (*NodeUnpublishVolumeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{44} + return fileDescriptor_csi_d2a705310653d01b, []int{44} } func (m *NodeUnpublishVolumeRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeUnpublishVolumeRequest.Unmarshal(m, b) @@ -3481,7 +3513,7 @@ func (m *NodeUnpublishVolumeResponse) Reset() { *m = NodeUnpublishVolume func (m *NodeUnpublishVolumeResponse) String() string { return proto.CompactTextString(m) } func (*NodeUnpublishVolumeResponse) ProtoMessage() {} func (*NodeUnpublishVolumeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{45} + return fileDescriptor_csi_d2a705310653d01b, []int{45} } func (m *NodeUnpublishVolumeResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeUnpublishVolumeResponse.Unmarshal(m, b) @@ -3501,6 +3533,166 @@ func (m *NodeUnpublishVolumeResponse) XXX_DiscardUnknown() { var xxx_messageInfo_NodeUnpublishVolumeResponse proto.InternalMessageInfo +type NodeGetVolumeStatsRequest struct { + // The ID of the volume. This field is REQUIRED. + VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"` + // It can be any valid path where volume was previously + // staged or published. + // It MUST be an absolute path in the root filesystem of + // the process serving this request. + // This is a REQUIRED field. + VolumePath string `protobuf:"bytes,2,opt,name=volume_path,json=volumePath" json:"volume_path,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *NodeGetVolumeStatsRequest) Reset() { *m = NodeGetVolumeStatsRequest{} } +func (m *NodeGetVolumeStatsRequest) String() string { return proto.CompactTextString(m) } +func (*NodeGetVolumeStatsRequest) ProtoMessage() {} +func (*NodeGetVolumeStatsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_csi_d2a705310653d01b, []int{46} +} +func (m *NodeGetVolumeStatsRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NodeGetVolumeStatsRequest.Unmarshal(m, b) +} +func (m *NodeGetVolumeStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NodeGetVolumeStatsRequest.Marshal(b, m, deterministic) +} +func (dst *NodeGetVolumeStatsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_NodeGetVolumeStatsRequest.Merge(dst, src) +} +func (m *NodeGetVolumeStatsRequest) XXX_Size() int { + return xxx_messageInfo_NodeGetVolumeStatsRequest.Size(m) +} +func (m *NodeGetVolumeStatsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_NodeGetVolumeStatsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_NodeGetVolumeStatsRequest proto.InternalMessageInfo + +func (m *NodeGetVolumeStatsRequest) GetVolumeId() string { + if m != nil { + return m.VolumeId + } + return "" +} + +func (m *NodeGetVolumeStatsRequest) GetVolumePath() string { + if m != nil { + return m.VolumePath + } + return "" +} + +type NodeGetVolumeStatsResponse struct { + // This field is OPTIONAL. + Usage []*VolumeUsage `protobuf:"bytes,1,rep,name=usage" json:"usage,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *NodeGetVolumeStatsResponse) Reset() { *m = NodeGetVolumeStatsResponse{} } +func (m *NodeGetVolumeStatsResponse) String() string { return proto.CompactTextString(m) } +func (*NodeGetVolumeStatsResponse) ProtoMessage() {} +func (*NodeGetVolumeStatsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_csi_d2a705310653d01b, []int{47} +} +func (m *NodeGetVolumeStatsResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NodeGetVolumeStatsResponse.Unmarshal(m, b) +} +func (m *NodeGetVolumeStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NodeGetVolumeStatsResponse.Marshal(b, m, deterministic) +} +func (dst *NodeGetVolumeStatsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_NodeGetVolumeStatsResponse.Merge(dst, src) +} +func (m *NodeGetVolumeStatsResponse) XXX_Size() int { + return xxx_messageInfo_NodeGetVolumeStatsResponse.Size(m) +} +func (m *NodeGetVolumeStatsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_NodeGetVolumeStatsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_NodeGetVolumeStatsResponse proto.InternalMessageInfo + +func (m *NodeGetVolumeStatsResponse) GetUsage() []*VolumeUsage { + if m != nil { + return m.Usage + } + return nil +} + +type VolumeUsage struct { + // The available capacity in specified Unit. This field is OPTIONAL. + // The value of this field MUST NOT be negative. + Available int64 `protobuf:"varint,1,opt,name=available" json:"available,omitempty"` + // The total capacity in specified Unit. This field is REQUIRED. + // The value of this field MUST NOT be negative. + Total int64 `protobuf:"varint,2,opt,name=total" json:"total,omitempty"` + // The used capacity in specified Unit. This field is OPTIONAL. + // The value of this field MUST NOT be negative. + Used int64 `protobuf:"varint,3,opt,name=used" json:"used,omitempty"` + // Units by which values are measured. This field is REQUIRED. + Unit VolumeUsage_Unit `protobuf:"varint,4,opt,name=unit,enum=csi.v0.VolumeUsage_Unit" json:"unit,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *VolumeUsage) Reset() { *m = VolumeUsage{} } +func (m *VolumeUsage) String() string { return proto.CompactTextString(m) } +func (*VolumeUsage) ProtoMessage() {} +func (*VolumeUsage) Descriptor() ([]byte, []int) { + return fileDescriptor_csi_d2a705310653d01b, []int{48} +} +func (m *VolumeUsage) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_VolumeUsage.Unmarshal(m, b) +} +func (m *VolumeUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_VolumeUsage.Marshal(b, m, deterministic) +} +func (dst *VolumeUsage) XXX_Merge(src proto.Message) { + xxx_messageInfo_VolumeUsage.Merge(dst, src) +} +func (m *VolumeUsage) XXX_Size() int { + return xxx_messageInfo_VolumeUsage.Size(m) +} +func (m *VolumeUsage) XXX_DiscardUnknown() { + xxx_messageInfo_VolumeUsage.DiscardUnknown(m) +} + +var xxx_messageInfo_VolumeUsage proto.InternalMessageInfo + +func (m *VolumeUsage) GetAvailable() int64 { + if m != nil { + return m.Available + } + return 0 +} + +func (m *VolumeUsage) GetTotal() int64 { + if m != nil { + return m.Total + } + return 0 +} + +func (m *VolumeUsage) GetUsed() int64 { + if m != nil { + return m.Used + } + return 0 +} + +func (m *VolumeUsage) GetUnit() VolumeUsage_Unit { + if m != nil { + return m.Unit + } + return VolumeUsage_UNKNOWN +} + type NodeGetIdRequest struct { XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -3511,7 +3703,7 @@ func (m *NodeGetIdRequest) Reset() { *m = NodeGetIdRequest{} } func (m *NodeGetIdRequest) String() string { return proto.CompactTextString(m) } func (*NodeGetIdRequest) ProtoMessage() {} func (*NodeGetIdRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{46} + return fileDescriptor_csi_d2a705310653d01b, []int{49} } func (m *NodeGetIdRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeGetIdRequest.Unmarshal(m, b) @@ -3545,7 +3737,7 @@ func (m *NodeGetIdResponse) Reset() { *m = NodeGetIdResponse{} } func (m *NodeGetIdResponse) String() string { return proto.CompactTextString(m) } func (*NodeGetIdResponse) ProtoMessage() {} func (*NodeGetIdResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{47} + return fileDescriptor_csi_d2a705310653d01b, []int{50} } func (m *NodeGetIdResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeGetIdResponse.Unmarshal(m, b) @@ -3582,7 +3774,7 @@ func (m *NodeGetCapabilitiesRequest) Reset() { *m = NodeGetCapabilitiesR func (m *NodeGetCapabilitiesRequest) String() string { return proto.CompactTextString(m) } func (*NodeGetCapabilitiesRequest) ProtoMessage() {} func (*NodeGetCapabilitiesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{48} + return fileDescriptor_csi_d2a705310653d01b, []int{51} } func (m *NodeGetCapabilitiesRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeGetCapabilitiesRequest.Unmarshal(m, b) @@ -3615,7 +3807,7 @@ func (m *NodeGetCapabilitiesResponse) Reset() { *m = NodeGetCapabilities func (m *NodeGetCapabilitiesResponse) String() string { return proto.CompactTextString(m) } func (*NodeGetCapabilitiesResponse) ProtoMessage() {} func (*NodeGetCapabilitiesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{49} + return fileDescriptor_csi_d2a705310653d01b, []int{52} } func (m *NodeGetCapabilitiesResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeGetCapabilitiesResponse.Unmarshal(m, b) @@ -3656,7 +3848,7 @@ func (m *NodeServiceCapability) Reset() { *m = NodeServiceCapability{} } func (m *NodeServiceCapability) String() string { return proto.CompactTextString(m) } func (*NodeServiceCapability) ProtoMessage() {} func (*NodeServiceCapability) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{50} + return fileDescriptor_csi_d2a705310653d01b, []int{53} } func (m *NodeServiceCapability) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeServiceCapability.Unmarshal(m, b) @@ -3766,7 +3958,7 @@ func (m *NodeServiceCapability_RPC) Reset() { *m = NodeServiceCapability func (m *NodeServiceCapability_RPC) String() string { return proto.CompactTextString(m) } func (*NodeServiceCapability_RPC) ProtoMessage() {} func (*NodeServiceCapability_RPC) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{50, 0} + return fileDescriptor_csi_d2a705310653d01b, []int{53, 0} } func (m *NodeServiceCapability_RPC) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeServiceCapability_RPC.Unmarshal(m, b) @@ -3803,7 +3995,7 @@ func (m *NodeGetInfoRequest) Reset() { *m = NodeGetInfoRequest{} } func (m *NodeGetInfoRequest) String() string { return proto.CompactTextString(m) } func (*NodeGetInfoRequest) ProtoMessage() {} func (*NodeGetInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{51} + return fileDescriptor_csi_d2a705310653d01b, []int{54} } func (m *NodeGetInfoRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeGetInfoRequest.Unmarshal(m, b) @@ -3861,7 +4053,7 @@ func (m *NodeGetInfoResponse) Reset() { *m = NodeGetInfoResponse{} } func (m *NodeGetInfoResponse) String() string { return proto.CompactTextString(m) } func (*NodeGetInfoResponse) ProtoMessage() {} func (*NodeGetInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_csi_88c20d68ea45d9ad, []int{52} + return fileDescriptor_csi_d2a705310653d01b, []int{55} } func (m *NodeGetInfoResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NodeGetInfoResponse.Unmarshal(m, b) @@ -3978,6 +4170,9 @@ func init() { proto.RegisterType((*NodePublishVolumeResponse)(nil), "csi.v0.NodePublishVolumeResponse") proto.RegisterType((*NodeUnpublishVolumeRequest)(nil), "csi.v0.NodeUnpublishVolumeRequest") proto.RegisterType((*NodeUnpublishVolumeResponse)(nil), "csi.v0.NodeUnpublishVolumeResponse") + proto.RegisterType((*NodeGetVolumeStatsRequest)(nil), "csi.v0.NodeGetVolumeStatsRequest") + proto.RegisterType((*NodeGetVolumeStatsResponse)(nil), "csi.v0.NodeGetVolumeStatsResponse") + proto.RegisterType((*VolumeUsage)(nil), "csi.v0.VolumeUsage") proto.RegisterType((*NodeGetIdRequest)(nil), "csi.v0.NodeGetIdRequest") proto.RegisterType((*NodeGetIdResponse)(nil), "csi.v0.NodeGetIdResponse") proto.RegisterType((*NodeGetCapabilitiesRequest)(nil), "csi.v0.NodeGetCapabilitiesRequest") @@ -3990,6 +4185,7 @@ func init() { proto.RegisterEnum("csi.v0.VolumeCapability_AccessMode_Mode", VolumeCapability_AccessMode_Mode_name, VolumeCapability_AccessMode_Mode_value) proto.RegisterEnum("csi.v0.ControllerServiceCapability_RPC_Type", ControllerServiceCapability_RPC_Type_name, ControllerServiceCapability_RPC_Type_value) proto.RegisterEnum("csi.v0.SnapshotStatus_Type", SnapshotStatus_Type_name, SnapshotStatus_Type_value) + proto.RegisterEnum("csi.v0.VolumeUsage_Unit", VolumeUsage_Unit_name, VolumeUsage_Unit_value) proto.RegisterEnum("csi.v0.NodeServiceCapability_RPC_Type", NodeServiceCapability_RPC_Type_name, NodeServiceCapability_RPC_Type_value) } @@ -4532,6 +4728,7 @@ type NodeClient interface { NodeUnstageVolume(ctx context.Context, in *NodeUnstageVolumeRequest, opts ...grpc.CallOption) (*NodeUnstageVolumeResponse, error) NodePublishVolume(ctx context.Context, in *NodePublishVolumeRequest, opts ...grpc.CallOption) (*NodePublishVolumeResponse, error) NodeUnpublishVolume(ctx context.Context, in *NodeUnpublishVolumeRequest, opts ...grpc.CallOption) (*NodeUnpublishVolumeResponse, error) + NodeGetVolumeStats(ctx context.Context, in *NodeGetVolumeStatsRequest, opts ...grpc.CallOption) (*NodeGetVolumeStatsResponse, error) // NodeGetId is being deprecated in favor of NodeGetInfo and will be // removed in CSI 1.0. Existing drivers, however, may depend on this // RPC call and hence this RPC call MUST be implemented by the CSI @@ -4587,6 +4784,15 @@ func (c *nodeClient) NodeUnpublishVolume(ctx context.Context, in *NodeUnpublishV return out, nil } +func (c *nodeClient) NodeGetVolumeStats(ctx context.Context, in *NodeGetVolumeStatsRequest, opts ...grpc.CallOption) (*NodeGetVolumeStatsResponse, error) { + out := new(NodeGetVolumeStatsResponse) + err := grpc.Invoke(ctx, "/csi.v0.Node/NodeGetVolumeStats", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Deprecated: Do not use. func (c *nodeClient) NodeGetId(ctx context.Context, in *NodeGetIdRequest, opts ...grpc.CallOption) (*NodeGetIdResponse, error) { out := new(NodeGetIdResponse) @@ -4622,6 +4828,7 @@ type NodeServer interface { NodeUnstageVolume(context.Context, *NodeUnstageVolumeRequest) (*NodeUnstageVolumeResponse, error) NodePublishVolume(context.Context, *NodePublishVolumeRequest) (*NodePublishVolumeResponse, error) NodeUnpublishVolume(context.Context, *NodeUnpublishVolumeRequest) (*NodeUnpublishVolumeResponse, error) + NodeGetVolumeStats(context.Context, *NodeGetVolumeStatsRequest) (*NodeGetVolumeStatsResponse, error) // NodeGetId is being deprecated in favor of NodeGetInfo and will be // removed in CSI 1.0. Existing drivers, however, may depend on this // RPC call and hence this RPC call MUST be implemented by the CSI @@ -4709,6 +4916,24 @@ func _Node_NodeUnpublishVolume_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Node_NodeGetVolumeStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(NodeGetVolumeStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).NodeGetVolumeStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/csi.v0.Node/NodeGetVolumeStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).NodeGetVolumeStats(ctx, req.(*NodeGetVolumeStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Node_NodeGetId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(NodeGetIdRequest) if err := dec(in); err != nil { @@ -4783,6 +5008,10 @@ var _Node_serviceDesc = grpc.ServiceDesc{ MethodName: "NodeUnpublishVolume", Handler: _Node_NodeUnpublishVolume_Handler, }, + { + MethodName: "NodeGetVolumeStats", + Handler: _Node_NodeGetVolumeStats_Handler, + }, { MethodName: "NodeGetId", Handler: _Node_NodeGetId_Handler, @@ -4801,195 +5030,205 @@ var _Node_serviceDesc = grpc.ServiceDesc{ } func init() { - proto.RegisterFile("github.com/container-storage-interface/spec/csi.proto", fileDescriptor_csi_88c20d68ea45d9ad) -} - -var fileDescriptor_csi_88c20d68ea45d9ad = []byte{ - // 2967 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x1a, 0x4d, 0x73, 0x23, 0x47, - 0xd5, 0xa3, 0x0f, 0x7f, 0x3c, 0xaf, 0x1d, 0x6d, 0xfb, 0x4b, 0x1e, 0xdb, 0xbb, 0xde, 0xd9, 0x6c, - 0xb2, 0x09, 0x59, 0x39, 0x18, 0x92, 0x0a, 0x89, 0x13, 0x90, 0x65, 0xc5, 0x56, 0xd6, 0x96, 0xcd, - 0x48, 0x76, 0x6a, 0x97, 0x50, 0x93, 0xb1, 0xd4, 0xd6, 0x0e, 0x91, 0x67, 0x94, 0x99, 0x91, 0x59, - 0x73, 0x03, 0x2e, 0xc0, 0x09, 0x7e, 0x41, 0xaa, 0x72, 0x83, 0x22, 0x17, 0x8a, 0x1b, 0x55, 0xdc, - 0xa8, 0xe2, 0xc4, 0x99, 0x13, 0xf7, 0x14, 0x1c, 0x39, 0x51, 0x45, 0x15, 0xd5, 0xd3, 0x3d, 0xa3, - 0xe9, 0x56, 0x8f, 0x3e, 0xb2, 0x5b, 0x29, 0x4e, 0xd2, 0xbc, 0xaf, 0x7e, 0xfd, 0xfa, 0xbd, 0xd7, - 0xef, 0xbd, 0x19, 0x78, 0xa3, 0x65, 0xf9, 0x4f, 0xba, 0xe7, 0x85, 0x86, 0x73, 0xb9, 0xd5, 0x70, - 0x6c, 0xdf, 0xb4, 0x6c, 0xec, 0x3e, 0xf0, 0x7c, 0xc7, 0x35, 0x5b, 0xf8, 0x81, 0x65, 0xfb, 0xd8, - 0xbd, 0x30, 0x1b, 0x78, 0xcb, 0xeb, 0xe0, 0xc6, 0x56, 0xc3, 0xb3, 0x0a, 0x1d, 0xd7, 0xf1, 0x1d, - 0x34, 0x49, 0xfe, 0x5e, 0xbd, 0xae, 0xde, 0x6a, 0x39, 0x4e, 0xab, 0x8d, 0xb7, 0x02, 0xe8, 0x79, - 0xf7, 0x62, 0xeb, 0xc7, 0xae, 0xd9, 0xe9, 0x60, 0xd7, 0xa3, 0x74, 0xda, 0x32, 0x2c, 0xee, 0x63, - 0xff, 0xa4, 0xdd, 0x6d, 0x59, 0x76, 0xc5, 0xbe, 0x70, 0x74, 0xfc, 0x69, 0x17, 0x7b, 0xbe, 0xf6, - 0x77, 0x05, 0x96, 0x04, 0x84, 0xd7, 0x71, 0x6c, 0x0f, 0x23, 0x04, 0x19, 0xdb, 0xbc, 0xc4, 0x79, - 0x65, 0x53, 0xb9, 0x3f, 0xa3, 0x07, 0xff, 0xd1, 0x3d, 0x98, 0xbf, 0xc2, 0x76, 0xd3, 0x71, 0x8d, - 0x2b, 0xec, 0x7a, 0x96, 0x63, 0xe7, 0x53, 0x01, 0x76, 0x8e, 0x42, 0xcf, 0x28, 0x10, 0xed, 0xc3, - 0xf4, 0xa5, 0x69, 0x5b, 0x17, 0xd8, 0xf3, 0xf3, 0xe9, 0xcd, 0xf4, 0xfd, 0xd9, 0xed, 0x6f, 0x14, - 0xa8, 0x9e, 0x05, 0xe9, 0x5a, 0x85, 0x23, 0x46, 0x5d, 0xb6, 0x7d, 0xf7, 0x5a, 0x8f, 0x98, 0xd5, - 0x77, 0x60, 0x8e, 0x43, 0xa1, 0x1c, 0xa4, 0x3f, 0xc1, 0xd7, 0x4c, 0x27, 0xf2, 0x17, 0x2d, 0x42, - 0xf6, 0xca, 0x6c, 0x77, 0x31, 0xd3, 0x84, 0x3e, 0xbc, 0x9d, 0x7a, 0x4b, 0xd1, 0x6e, 0xc1, 0x7a, - 0xb4, 0x5a, 0xc9, 0xec, 0x98, 0xe7, 0x56, 0xdb, 0xf2, 0x2d, 0xec, 0x85, 0x5b, 0xff, 0x21, 0x6c, - 0x24, 0xe0, 0x99, 0x05, 0x76, 0xe0, 0x46, 0x23, 0x06, 0xcf, 0xa7, 0x82, 0xad, 0xe4, 0xc3, 0xad, - 0x08, 0x9c, 0xd7, 0x3a, 0x47, 0xad, 0xfd, 0x53, 0x81, 0x9c, 0x48, 0x82, 0x76, 0x60, 0xca, 0xc3, - 0xee, 0x95, 0xd5, 0xa0, 0x76, 0x9d, 0xdd, 0xde, 0x4c, 0x92, 0x56, 0xa8, 0x51, 0xba, 0x83, 0x09, - 0x3d, 0x64, 0x51, 0x7f, 0xad, 0xc0, 0x14, 0x03, 0xa3, 0xef, 0x40, 0xc6, 0xbf, 0xee, 0x50, 0x31, - 0xf3, 0xdb, 0xf7, 0x86, 0x89, 0x29, 0xd4, 0xaf, 0x3b, 0x58, 0x0f, 0x58, 0xb4, 0x0f, 0x20, 0x43, - 0x9e, 0xd0, 0x2c, 0x4c, 0x9d, 0x56, 0x1f, 0x56, 0x8f, 0x3f, 0xac, 0xe6, 0x26, 0xd0, 0x32, 0xa0, - 0xd2, 0x71, 0xb5, 0xae, 0x1f, 0x1f, 0x1e, 0x96, 0x75, 0xa3, 0x56, 0xd6, 0xcf, 0x2a, 0xa5, 0x72, - 0x4e, 0x41, 0x1b, 0xb0, 0x5a, 0x2c, 0x95, 0xca, 0xb5, 0x5a, 0x65, 0xb7, 0x72, 0x58, 0xa9, 0x3f, - 0x32, 0x4a, 0xc7, 0xd5, 0x5a, 0x5d, 0x2f, 0x56, 0xaa, 0xf5, 0x5a, 0x2e, 0xb5, 0x3b, 0x49, 0xd5, - 0xd0, 0xe6, 0xe1, 0xc6, 0x89, 0xeb, 0x9c, 0xe3, 0xd0, 0xb8, 0x45, 0x98, 0x63, 0xcf, 0xcc, 0x98, - 0xaf, 0x43, 0xd6, 0xc5, 0x66, 0xf3, 0x9a, 0xed, 0x5b, 0x2d, 0x50, 0x87, 0x2d, 0x84, 0x0e, 0x5b, - 0xd8, 0x75, 0x9c, 0xf6, 0x19, 0x39, 0x3c, 0x9d, 0x12, 0x6a, 0x5f, 0x64, 0x61, 0xa1, 0xe4, 0x62, - 0xd3, 0xc7, 0x67, 0x4e, 0xbb, 0x7b, 0x19, 0x8a, 0x96, 0x3a, 0xe6, 0x0e, 0xcc, 0x13, 0xe3, 0x37, - 0x2c, 0xff, 0xda, 0x70, 0x4d, 0xbb, 0x45, 0xdd, 0x61, 0x76, 0x7b, 0x29, 0xb4, 0x4b, 0x89, 0x61, - 0x75, 0x82, 0xd4, 0xe7, 0x1a, 0xf1, 0x47, 0x54, 0x81, 0x85, 0xab, 0x60, 0x09, 0x83, 0x3b, 0xef, - 0x34, 0x7f, 0xde, 0x54, 0x8b, 0xd8, 0x79, 0xa3, 0x2b, 0x1e, 0x62, 0x61, 0x0f, 0x3d, 0x04, 0xe8, - 0x98, 0xae, 0x79, 0x89, 0x7d, 0xec, 0x7a, 0xf9, 0x0c, 0xef, 0xfc, 0x92, 0xdd, 0x14, 0x4e, 0x22, - 0x6a, 0xea, 0xfc, 0x31, 0x76, 0xe4, 0xc3, 0x2a, 0x49, 0x05, 0xae, 0xd3, 0x6e, 0x63, 0xd7, 0x68, - 0x04, 0xdc, 0x86, 0x87, 0x1b, 0x2e, 0xf6, 0xbd, 0x7c, 0x36, 0x90, 0xfd, 0xd6, 0x20, 0xd9, 0xa5, - 0x88, 0x99, 0x62, 0x6b, 0x94, 0x95, 0x2e, 0xb4, 0xd2, 0x90, 0x63, 0xd1, 0x31, 0x2c, 0x85, 0xd6, - 0x70, 0x6c, 0x1f, 0xdb, 0xbe, 0xe1, 0x39, 0x5d, 0xb7, 0x81, 0xf3, 0x93, 0x81, 0x49, 0xd7, 0x04, - 0x7b, 0x50, 0x9a, 0x5a, 0x40, 0xa2, 0x33, 0x3b, 0x72, 0x40, 0xf4, 0x18, 0x54, 0xb3, 0xd1, 0xc0, - 0x9e, 0x67, 0x51, 0xc3, 0x19, 0x2e, 0xfe, 0xb4, 0x6b, 0xb9, 0xf8, 0x12, 0xdb, 0xbe, 0x97, 0x9f, - 0xe2, 0xa5, 0xd6, 0x9d, 0x8e, 0xd3, 0x76, 0x5a, 0xd7, 0x7a, 0x8f, 0x46, 0x5f, 0xe5, 0xd8, 0x63, - 0x18, 0x4f, 0x7d, 0x17, 0x5e, 0x10, 0x2c, 0x38, 0x4e, 0x8e, 0x50, 0x3f, 0x80, 0xf5, 0x41, 0x46, - 0x1a, 0x2b, 0xdf, 0xfc, 0x52, 0x81, 0x05, 0x89, 0x4d, 0xd0, 0x01, 0x4c, 0x7b, 0xb6, 0xd9, 0xf1, - 0x9e, 0x38, 0x3e, 0x73, 0xfe, 0x57, 0x07, 0x98, 0xb0, 0x50, 0x63, 0xb4, 0xf4, 0xf1, 0x60, 0x42, - 0x8f, 0xb8, 0xd5, 0x4d, 0x98, 0xe7, 0xb1, 0x68, 0x1e, 0x52, 0x56, 0x93, 0xa9, 0x97, 0xb2, 0x9a, - 0x51, 0x38, 0xbe, 0x07, 0x8b, 0xbc, 0x43, 0xb0, 0x28, 0x7c, 0x09, 0x26, 0xe9, 0x09, 0x31, 0x4d, - 0xe6, 0x79, 0x4d, 0x74, 0x86, 0xd5, 0x7e, 0x97, 0x81, 0x9c, 0xe8, 0xef, 0x68, 0x07, 0xb2, 0xe7, - 0x6d, 0xa7, 0xf1, 0x09, 0xe3, 0x7d, 0x31, 0x29, 0x30, 0x0a, 0xbb, 0x84, 0x8a, 0x42, 0x0f, 0x26, - 0x74, 0xca, 0x44, 0xb8, 0x2f, 0x9d, 0xae, 0xed, 0xb3, 0xc8, 0x4c, 0xe6, 0x3e, 0x22, 0x54, 0x3d, - 0xee, 0x80, 0x09, 0xed, 0xc1, 0x2c, 0x75, 0x02, 0xe3, 0xd2, 0x69, 0xe2, 0x7c, 0x3a, 0x90, 0x71, - 0x37, 0x51, 0x46, 0x31, 0xa0, 0x3d, 0x72, 0x9a, 0x58, 0x07, 0x33, 0xfa, 0xaf, 0xce, 0xc1, 0x6c, - 0x4c, 0x37, 0x75, 0x1f, 0x66, 0x63, 0x8b, 0xa1, 0x15, 0x98, 0xba, 0xf0, 0x8c, 0x28, 0xab, 0xce, - 0xe8, 0x93, 0x17, 0x5e, 0x90, 0x28, 0x6f, 0xc3, 0x6c, 0xa0, 0x85, 0x71, 0xd1, 0x36, 0x5b, 0xf4, - 0x1e, 0x98, 0xd1, 0x21, 0x00, 0xbd, 0x4f, 0x20, 0xea, 0xbf, 0x14, 0x80, 0xde, 0x92, 0x68, 0x07, - 0x32, 0x81, 0x96, 0x34, 0x37, 0xdf, 0x1f, 0x41, 0xcb, 0x42, 0xa0, 0x6a, 0xc0, 0xa5, 0x7d, 0xa6, - 0x40, 0x26, 0x10, 0x23, 0xe6, 0xe7, 0x5a, 0xa5, 0xba, 0x7f, 0x58, 0x36, 0xaa, 0xc7, 0x7b, 0x65, - 0xe3, 0x43, 0xbd, 0x52, 0x2f, 0xeb, 0x39, 0x05, 0xad, 0xc1, 0x4a, 0x1c, 0xae, 0x97, 0x8b, 0x7b, - 0x65, 0xdd, 0x38, 0xae, 0x1e, 0x3e, 0xca, 0xa5, 0x90, 0x0a, 0xcb, 0x47, 0xa7, 0x87, 0xf5, 0x4a, - 0x3f, 0x2e, 0x8d, 0xd6, 0x21, 0x1f, 0xc3, 0x31, 0x19, 0x4c, 0x6c, 0x86, 0x88, 0x8d, 0x61, 0xe9, - 0x5f, 0x86, 0xcc, 0xee, 0xce, 0x45, 0x87, 0x11, 0x38, 0xdb, 0x87, 0x30, 0xc7, 0xa5, 0x57, 0x52, - 0x26, 0xb0, 0x10, 0x6f, 0x1a, 0xe7, 0xd7, 0x3e, 0xf6, 0x02, 0x4b, 0xa4, 0xf5, 0xb9, 0x10, 0xba, - 0x4b, 0x80, 0xc4, 0xac, 0x6d, 0xeb, 0xd2, 0xf2, 0x19, 0x4d, 0x2a, 0xa0, 0x81, 0x00, 0x14, 0x10, - 0x68, 0x7f, 0x49, 0xc1, 0x24, 0x3b, 0x9b, 0x7b, 0xb1, 0x04, 0xcf, 0x89, 0x0c, 0xa1, 0x54, 0x24, - 0x8d, 0x87, 0x54, 0x18, 0x0f, 0xe8, 0x3d, 0x00, 0xd3, 0xf7, 0x5d, 0xeb, 0xbc, 0xeb, 0x47, 0x09, - 0xfd, 0x16, 0x7f, 0x1e, 0x85, 0x62, 0x44, 0xc0, 0x32, 0x70, 0x8f, 0x03, 0xed, 0xc2, 0xbc, 0x90, - 0x04, 0x33, 0xc3, 0x93, 0xe0, 0x5c, 0x83, 0x8b, 0xff, 0x22, 0x2c, 0x84, 0xf9, 0xab, 0x8d, 0x0d, - 0x9f, 0xe5, 0x37, 0x96, 0xbf, 0x73, 0x7d, 0x79, 0x0f, 0xf5, 0x88, 0x43, 0x18, 0xc9, 0x72, 0x82, - 0x96, 0x63, 0x65, 0xa6, 0x2e, 0x2c, 0x48, 0xd2, 0x2a, 0x2a, 0xc0, 0x4c, 0x70, 0x20, 0x9e, 0xe5, - 0x13, 0x5f, 0x95, 0xab, 0xd3, 0x23, 0x21, 0xf4, 0x1d, 0x17, 0x5f, 0x60, 0xd7, 0xc5, 0x4d, 0x56, - 0x0c, 0x49, 0xe8, 0x23, 0x12, 0xed, 0xe7, 0x0a, 0x4c, 0x87, 0x70, 0xf4, 0x36, 0x4c, 0x7b, 0xb8, - 0x45, 0x53, 0xbe, 0xc2, 0x9f, 0x43, 0x48, 0x53, 0xa8, 0x31, 0x02, 0x56, 0x06, 0x86, 0xf4, 0xa4, - 0x0c, 0xe4, 0x50, 0x63, 0x6d, 0xfe, 0xdf, 0x0a, 0x2c, 0xec, 0xe1, 0x36, 0x16, 0xcb, 0x88, 0x35, - 0x98, 0x61, 0xd7, 0x5c, 0x94, 0x41, 0xa7, 0x29, 0xa0, 0xd2, 0x14, 0x6e, 0xde, 0x66, 0xc0, 0x1e, - 0xdd, 0xbc, 0x29, 0xfe, 0xe6, 0x95, 0x08, 0x8f, 0xdd, 0xbc, 0x14, 0x9b, 0x74, 0xf3, 0x72, 0x58, - 0xfe, 0x36, 0xea, 0x67, 0x1c, 0x6b, 0xdb, 0xcb, 0xb0, 0xc8, 0x2b, 0x46, 0x6f, 0x00, 0xed, 0x4f, - 0x19, 0xb8, 0xd5, 0x5b, 0xe4, 0xa4, 0x7b, 0xde, 0xb6, 0xbc, 0x27, 0x63, 0x58, 0x66, 0x05, 0xa6, - 0x6c, 0xa7, 0x19, 0xa0, 0xe8, 0x9a, 0x93, 0xe4, 0xb1, 0xd2, 0x44, 0x65, 0xb8, 0x29, 0x16, 0x51, - 0xd7, 0x2c, 0x4f, 0x27, 0x97, 0x50, 0xb9, 0x2b, 0xf1, 0x92, 0x51, 0x61, 0x9a, 0x94, 0x7f, 0x8e, - 0xdd, 0xbe, 0x0e, 0x62, 0x6d, 0x5a, 0x8f, 0x9e, 0xd1, 0xcf, 0x14, 0x50, 0x63, 0xc7, 0xd2, 0xa1, - 0xca, 0x0b, 0x15, 0xd1, 0x5e, 0x54, 0x11, 0x0d, 0xdc, 0x65, 0x3f, 0x9a, 0x3b, 0xa3, 0x7c, 0x23, - 0x01, 0x8d, 0xac, 0x68, 0x9f, 0xb1, 0xcc, 0x32, 0x19, 0x2c, 0xbd, 0x33, 0xe2, 0xd2, 0xf4, 0x49, - 0xcc, 0x3b, 0xcc, 0x16, 0x3d, 0xb0, 0xfa, 0x10, 0x36, 0x06, 0x6a, 0x39, 0x56, 0xa9, 0x53, 0x82, - 0x25, 0xe9, 0xba, 0x63, 0x79, 0xd5, 0x9f, 0x15, 0xb8, 0x9d, 0xb8, 0x39, 0x56, 0x63, 0xfc, 0x00, - 0x6e, 0x84, 0x27, 0x63, 0xd9, 0x17, 0x0e, 0x8b, 0xf6, 0xb7, 0x86, 0xda, 0x86, 0xf5, 0x82, 0x0c, - 0x4a, 0xfa, 0x43, 0x6a, 0x97, 0xd9, 0x4e, 0x0f, 0xa2, 0xbe, 0x07, 0x39, 0x91, 0x60, 0xac, 0x0d, - 0xfc, 0x31, 0x05, 0x9b, 0x3d, 0x0d, 0x4e, 0xed, 0xce, 0xf3, 0x0b, 0x80, 0x5f, 0x29, 0xb0, 0x1e, - 0xf3, 0xce, 0xae, 0x2d, 0xfa, 0x27, 0xbd, 0x7e, 0x0e, 0xfa, 0x0d, 0x21, 0x57, 0x43, 0x46, 0xc0, - 0xf9, 0x68, 0x2c, 0x16, 0x44, 0x02, 0xf5, 0x28, 0x7e, 0x4e, 0x52, 0xf6, 0xb1, 0xcc, 0x76, 0x17, - 0xee, 0x0c, 0x50, 0x97, 0xa5, 0x96, 0x9f, 0xa6, 0xe1, 0xce, 0x99, 0xd9, 0xb6, 0x9a, 0x51, 0xdd, - 0x29, 0x69, 0xbb, 0x07, 0x1b, 0x37, 0xa1, 0x13, 0x4b, 0x7d, 0x85, 0x4e, 0xac, 0x2d, 0x8b, 0x53, - 0x7a, 0x04, 0xdf, 0x8d, 0x04, 0x0d, 0xd3, 0x76, 0xd4, 0x50, 0x4d, 0xba, 0xe4, 0x33, 0x63, 0x5c, - 0xf2, 0xcf, 0x25, 0x40, 0x3f, 0x02, 0x6d, 0xd0, 0xa6, 0x58, 0x88, 0xae, 0xc3, 0x8c, 0xd7, 0xed, - 0x74, 0x1c, 0xd7, 0xc7, 0xf4, 0x0c, 0xa6, 0xf5, 0x1e, 0x00, 0xe5, 0x61, 0xea, 0x12, 0x7b, 0x9e, - 0xd9, 0x0a, 0xe5, 0x87, 0x8f, 0xda, 0x47, 0x80, 0x0e, 0x2d, 0x8f, 0xd5, 0xcb, 0xd1, 0x89, 0x92, - 0xf2, 0xd8, 0x7c, 0x6a, 0x60, 0xdb, 0x77, 0x2d, 0x56, 0x98, 0x65, 0x75, 0xb8, 0x34, 0x9f, 0x96, - 0x29, 0x84, 0x14, 0x6f, 0x9e, 0x6f, 0xba, 0xbe, 0x65, 0xb7, 0x0c, 0xdf, 0xf9, 0x04, 0x47, 0x63, - 0xa3, 0x10, 0x5a, 0x27, 0x40, 0xed, 0x73, 0x05, 0x16, 0x38, 0xf1, 0x4c, 0xdb, 0x77, 0x60, 0xaa, - 0x27, 0x9b, 0xd8, 0xf3, 0x4e, 0x68, 0x4f, 0x09, 0x75, 0x81, 0x9e, 0x50, 0xc8, 0x81, 0x36, 0x00, - 0x6c, 0xfc, 0xd4, 0xe7, 0xd6, 0x9d, 0x21, 0x90, 0x60, 0x4d, 0x75, 0x0b, 0xb2, 0xd4, 0xc8, 0xa3, - 0x76, 0x46, 0x5f, 0xa4, 0x00, 0xed, 0x63, 0x3f, 0x2a, 0x78, 0x99, 0x0d, 0x12, 0x1c, 0x57, 0xf9, - 0x0a, 0x8e, 0xfb, 0x01, 0x37, 0x42, 0xa0, 0xae, 0xff, 0x6a, 0x6c, 0x7e, 0x26, 0x2c, 0x3d, 0x70, - 0x82, 0x90, 0xe0, 0x96, 0xf4, 0x5a, 0x1e, 0xb9, 0xf6, 0x7c, 0x86, 0x0e, 0x5b, 0xdb, 0x83, 0x05, - 0x4e, 0x67, 0x76, 0xa6, 0x0f, 0x00, 0x99, 0x57, 0xa6, 0xd5, 0x36, 0x89, 0x5e, 0x61, 0x0d, 0xcf, - 0x6a, 0xfa, 0x9b, 0x11, 0x26, 0x64, 0xd3, 0xb4, 0x78, 0xd6, 0x66, 0xf2, 0xc4, 0x79, 0x5e, 0x3b, - 0x9e, 0xa3, 0xfa, 0x68, 0xd8, 0xba, 0xfb, 0xd2, 0x99, 0xde, 0xdd, 0xfe, 0x9c, 0xcc, 0xe6, 0x66, - 0x89, 0xe3, 0xbd, 0xbf, 0xa5, 0x60, 0x6d, 0x00, 0x35, 0x7a, 0x07, 0xd2, 0x6e, 0xa7, 0xc1, 0x9c, - 0xe9, 0xe5, 0x11, 0xe4, 0x17, 0xf4, 0x93, 0xd2, 0xc1, 0x84, 0x4e, 0xb8, 0xd4, 0x2f, 0x15, 0x48, - 0xeb, 0x27, 0x25, 0xf4, 0x3d, 0x6e, 0xc8, 0xf7, 0xda, 0x88, 0x52, 0xe2, 0xb3, 0x3e, 0xd2, 0x4c, - 0xf6, 0x0f, 0xfb, 0xf2, 0xb0, 0x58, 0xd2, 0xcb, 0xc5, 0x7a, 0xd9, 0xd8, 0x2b, 0x1f, 0x96, 0xeb, - 0x65, 0xe3, 0xec, 0xf8, 0xf0, 0xf4, 0xa8, 0x9c, 0x53, 0x48, 0x57, 0x78, 0x72, 0xba, 0x7b, 0x58, - 0xa9, 0x1d, 0x18, 0xa7, 0xd5, 0xf0, 0x1f, 0xc3, 0xa6, 0x50, 0x0e, 0x6e, 0x1c, 0x56, 0x6a, 0x75, - 0x06, 0xa8, 0xe5, 0xd2, 0x04, 0xb2, 0x5f, 0xae, 0x1b, 0xa5, 0xe2, 0x49, 0xb1, 0x54, 0xa9, 0x3f, - 0xca, 0x65, 0x48, 0xcf, 0xc9, 0xcb, 0xae, 0x55, 0x8b, 0x27, 0xb5, 0x83, 0xe3, 0x7a, 0x2e, 0x8b, - 0x10, 0xcc, 0x07, 0xfc, 0x21, 0xa8, 0x96, 0x9b, 0x8c, 0x46, 0x16, 0x9f, 0xa5, 0x61, 0x89, 0x4d, - 0x60, 0xd8, 0x8c, 0x23, 0x8c, 0xad, 0xfb, 0x90, 0xa3, 0xcd, 0x97, 0x21, 0x5e, 0x1c, 0xf3, 0x14, - 0x7e, 0x16, 0x5e, 0x1f, 0xe1, 0x68, 0x30, 0x15, 0x1b, 0x0d, 0x76, 0x60, 0x25, 0x9c, 0x9c, 0x31, - 0xb9, 0xc2, 0x85, 0x2c, 0x8c, 0xd0, 0x84, 0xd5, 0x05, 0x28, 0x77, 0x01, 0x2f, 0x35, 0x64, 0x38, - 0x74, 0x24, 0x99, 0x01, 0x3e, 0x18, 0xbc, 0xc8, 0x80, 0x18, 0x56, 0x0f, 0x40, 0x4d, 0xd6, 0x61, - 0xac, 0x12, 0xf0, 0x19, 0x43, 0xf9, 0x7d, 0x58, 0x16, 0xb5, 0x67, 0x51, 0xf5, 0x5a, 0xdf, 0x88, - 0x2b, 0xca, 0x2d, 0x11, 0x6d, 0x44, 0xa1, 0xfd, 0x41, 0x81, 0xe9, 0x10, 0x4c, 0xf2, 0xb3, 0x67, - 0xfd, 0x04, 0x73, 0x4d, 0xfd, 0x0c, 0x81, 0xc8, 0x1b, 0x7a, 0x99, 0x2f, 0xa4, 0xa5, 0xbe, 0xb0, - 0x01, 0x40, 0x8f, 0xa7, 0x69, 0x98, 0x7e, 0xd0, 0x4a, 0xa4, 0xf5, 0x19, 0x06, 0x29, 0x92, 0xe6, - 0x77, 0xd2, 0xf3, 0x4d, 0xbf, 0x4b, 0xda, 0x06, 0xa2, 0xf0, 0xb2, 0xa8, 0x70, 0x2d, 0xc0, 0xea, - 0x8c, 0x8a, 0x04, 0xd2, 0x3c, 0x8f, 0x42, 0x5b, 0x5c, 0x74, 0xae, 0xc9, 0x05, 0xc4, 0x82, 0x91, - 0x5c, 0xac, 0x4d, 0xec, 0x9b, 0x56, 0xdb, 0x0b, 0x2f, 0x56, 0xf6, 0xa8, 0xed, 0xca, 0xa2, 0x74, - 0x06, 0xb2, 0x7a, 0xb9, 0xb8, 0xf7, 0x28, 0xa7, 0xa0, 0x39, 0x98, 0x39, 0x3d, 0x39, 0x3c, 0x2e, - 0xee, 0x55, 0xaa, 0xfb, 0xb9, 0x14, 0x5a, 0x80, 0x17, 0xca, 0xba, 0x7e, 0xac, 0x1b, 0x3d, 0x60, - 0x9a, 0x34, 0xba, 0x4b, 0xac, 0x69, 0x14, 0x02, 0xe8, 0x36, 0xcc, 0x46, 0xbe, 0x1f, 0xc5, 0x0e, - 0x84, 0xa0, 0x4a, 0x93, 0xc4, 0x48, 0xd8, 0xe3, 0x8a, 0x31, 0x22, 0x6d, 0x76, 0x45, 0xf7, 0xe5, - 0xa1, 0x7c, 0x8c, 0x34, 0x65, 0x38, 0xe2, 0xd4, 0xc9, 0x4c, 0x63, 0x79, 0x65, 0x1e, 0x96, 0x45, - 0xa5, 0x58, 0x3d, 0xfa, 0x5b, 0x05, 0x16, 0x49, 0x85, 0x10, 0x22, 0x9e, 0x77, 0xc1, 0x32, 0x86, - 0x33, 0x0a, 0x27, 0x90, 0x11, 0x4f, 0x40, 0xfb, 0xbd, 0x02, 0x4b, 0x82, 0xae, 0x2c, 0xb6, 0xde, - 0x15, 0xab, 0x9f, 0xbb, 0xf1, 0xea, 0xa7, 0x8f, 0x7e, 0xcc, 0xfa, 0xe7, 0x8d, 0xb0, 0xfe, 0x19, - 0x2f, 0x84, 0x7f, 0x93, 0x85, 0xe5, 0xaa, 0xd3, 0xc4, 0x35, 0xdf, 0x6c, 0x8d, 0x33, 0x57, 0xd1, - 0x85, 0xde, 0x90, 0x7a, 0xd7, 0x56, 0xb8, 0x92, 0x5c, 0xe4, 0xe0, 0x96, 0x10, 0x15, 0x60, 0xc1, - 0xf3, 0xcd, 0x56, 0x70, 0x56, 0xa6, 0xdb, 0xc2, 0xbe, 0xd1, 0x31, 0xfd, 0x27, 0xec, 0x20, 0x6e, - 0x32, 0x54, 0x3d, 0xc0, 0x9c, 0x98, 0xfe, 0x13, 0xf9, 0xa0, 0x22, 0x33, 0xf6, 0xa0, 0xe2, 0x1c, - 0x50, 0xd0, 0x07, 0x92, 0x05, 0xc4, 0xb7, 0x32, 0xdf, 0x1e, 0xb2, 0xa1, 0x08, 0xcc, 0x85, 0x4a, - 0xce, 0x16, 0xc0, 0xc8, 0x4c, 0x9e, 0x35, 0x0c, 0x5b, 0x62, 0xd4, 0x19, 0xc3, 0x33, 0x36, 0xd4, - 0xa4, 0x6b, 0x91, 0xee, 0xe6, 0xeb, 0x9f, 0x4d, 0xac, 0xc2, 0x4a, 0x9f, 0x2d, 0x58, 0x26, 0x68, - 0x41, 0x9e, 0xa0, 0x4e, 0x6d, 0x6f, 0x4c, 0x7f, 0x4d, 0xf0, 0xad, 0x54, 0x82, 0x6f, 0x69, 0x6b, - 0xb0, 0x2a, 0x59, 0x88, 0x69, 0xf1, 0x8f, 0x2c, 0x55, 0x63, 0xfc, 0xa1, 0x5b, 0x5d, 0x1a, 0x36, - 0xdf, 0x8c, 0xbb, 0x80, 0x74, 0xd0, 0xf4, 0x7c, 0x03, 0xe7, 0x36, 0xcc, 0xc6, 0xe9, 0x58, 0x12, - 0xf3, 0x87, 0x44, 0x56, 0xf6, 0x99, 0x46, 0x80, 0x93, 0xc2, 0x08, 0xf0, 0x47, 0xb0, 0x18, 0x44, - 0x9d, 0x38, 0x5b, 0x99, 0xe2, 0xaf, 0xa9, 0x44, 0x8b, 0xc4, 0x10, 0x5c, 0xec, 0x05, 0xb1, 0x2c, - 0x4c, 0xfa, 0x1a, 0xb2, 0xe8, 0x9b, 0x0e, 0x16, 0x7a, 0x73, 0xe8, 0x42, 0x5f, 0x57, 0xfc, 0x95, - 0xa9, 0xd7, 0xff, 0x5f, 0x4c, 0x07, 0x99, 0xf7, 0x4b, 0xe7, 0x7a, 0xda, 0x63, 0x50, 0x69, 0x68, - 0x8c, 0x3f, 0x72, 0x13, 0x1c, 0x2f, 0x25, 0x3a, 0x9e, 0xb6, 0x01, 0x6b, 0x52, 0xd9, 0x6c, 0x69, - 0x04, 0x39, 0x82, 0xde, 0xc7, 0x7e, 0xa5, 0x19, 0x76, 0x8b, 0xaf, 0xc1, 0xcd, 0x18, 0x8c, 0xdd, - 0xb5, 0xb1, 0xd9, 0x9e, 0x12, 0x9f, 0xed, 0x69, 0xeb, 0x54, 0xf9, 0x84, 0xce, 0xf3, 0x63, 0xba, - 0x7c, 0x52, 0xcf, 0x59, 0x14, 0x7a, 0x4e, 0x7a, 0x8d, 0x6f, 0x70, 0x09, 0x7c, 0x48, 0xb7, 0xf9, - 0x57, 0x85, 0xa5, 0xd9, 0xbe, 0x3e, 0xf3, 0x8d, 0x78, 0x9f, 0x79, 0x67, 0xa0, 0xcc, 0x78, 0x87, - 0xd9, 0xa1, 0x0d, 0xe6, 0xdb, 0x5c, 0x09, 0xfb, 0xd2, 0x50, 0xf6, 0x78, 0x6b, 0xf9, 0x20, 0xa1, - 0xb3, 0xac, 0xd5, 0x8b, 0xfb, 0x65, 0xe3, 0xb4, 0x4a, 0x7f, 0xc3, 0xce, 0x32, 0xea, 0xf3, 0x16, - 0x01, 0x85, 0x86, 0x8f, 0x7d, 0x87, 0xf4, 0xb9, 0x02, 0x0b, 0x1c, 0x78, 0xc8, 0x89, 0xa0, 0x2d, - 0x58, 0x24, 0x35, 0x1c, 0xf5, 0x11, 0xcf, 0xe8, 0x60, 0xd7, 0x20, 0x18, 0xf6, 0x16, 0xf1, 0xe6, - 0xa5, 0xf9, 0x94, 0x0d, 0x86, 0x4e, 0xb0, 0x4b, 0x04, 0x3f, 0x87, 0x51, 0xc8, 0xf6, 0x7f, 0x14, - 0x98, 0xae, 0x34, 0xb1, 0xed, 0x13, 0xc3, 0x57, 0x61, 0x8e, 0xfb, 0x98, 0x09, 0xad, 0x27, 0x7c, - 0xe3, 0x14, 0x6c, 0x50, 0xdd, 0x18, 0xf8, 0x05, 0x94, 0x36, 0x81, 0x2e, 0x62, 0x1f, 0x62, 0x71, - 0xf3, 0xa0, 0x17, 0xfb, 0x38, 0x25, 0x3e, 0xa8, 0xde, 0x1b, 0x42, 0x15, 0xad, 0xf3, 0x26, 0x64, - 0x83, 0x2f, 0x73, 0xd0, 0x62, 0xf4, 0xcd, 0x50, 0xec, 0xc3, 0x1d, 0x75, 0x49, 0x80, 0x86, 0x7c, - 0xdb, 0xff, 0x9d, 0x02, 0xe8, 0x0d, 0x1e, 0xd0, 0x43, 0xb8, 0x11, 0xff, 0xc2, 0x00, 0xad, 0x0d, - 0xf8, 0x10, 0x45, 0x5d, 0x97, 0x23, 0x23, 0x9d, 0x1e, 0xc2, 0x8d, 0xf8, 0xcb, 0xaa, 0x9e, 0x30, - 0xc9, 0xbb, 0xb5, 0x9e, 0x30, 0xe9, 0xfb, 0xad, 0x09, 0xd4, 0x86, 0x95, 0x84, 0x77, 0x0c, 0xe8, - 0xa5, 0xd1, 0x5e, 0xd0, 0xa8, 0x2f, 0x8f, 0xf8, 0xb2, 0x42, 0x9b, 0x40, 0x2e, 0xac, 0x26, 0x4e, - 0xc6, 0xd1, 0xfd, 0x51, 0x67, 0xfd, 0xea, 0x2b, 0x23, 0x50, 0x46, 0x6b, 0x76, 0x41, 0x4d, 0x1e, - 0xf2, 0xa2, 0x57, 0x46, 0x9e, 0x6e, 0xab, 0xaf, 0x8e, 0x42, 0x1a, 0x2d, 0x7b, 0x00, 0xb3, 0xb1, - 0x81, 0x2b, 0x52, 0xa5, 0x53, 0x58, 0x2a, 0x78, 0x6d, 0xc0, 0x84, 0x96, 0x4a, 0x8a, 0x0d, 0x05, - 0x7b, 0x92, 0xfa, 0xa7, 0x9b, 0x3d, 0x49, 0x92, 0x29, 0xa2, 0x68, 0x7e, 0x21, 0x01, 0xcb, 0xcc, - 0x2f, 0xcf, 0xe0, 0x32, 0xf3, 0x27, 0x64, 0x73, 0x6d, 0x02, 0x7d, 0x1f, 0xe6, 0xf9, 0x39, 0x08, - 0xda, 0x18, 0x38, 0xdd, 0x51, 0x6f, 0x25, 0xa1, 0xe3, 0x22, 0xf9, 0x26, 0xb6, 0x27, 0x52, 0xda, - 0x71, 0xf7, 0x44, 0x26, 0xf4, 0xbe, 0x13, 0x24, 0x3f, 0x71, 0x0d, 0x62, 0x2f, 0x3f, 0xc9, 0x7a, - 0xe2, 0x5e, 0x7e, 0x92, 0x76, 0x95, 0xda, 0xc4, 0xf6, 0x97, 0x19, 0xc8, 0x04, 0x89, 0xb4, 0x0e, - 0x2f, 0x08, 0x75, 0x36, 0xba, 0x35, 0xb8, 0x19, 0x51, 0x6f, 0x27, 0xe2, 0x23, 0x75, 0x1f, 0xd3, - 0xfb, 0x98, 0xab, 0x9c, 0xd1, 0x66, 0x9c, 0x4f, 0x56, 0xbd, 0xab, 0x77, 0x06, 0x50, 0x88, 0xb2, - 0xf9, 0x5c, 0xb0, 0x39, 0xac, 0x84, 0xe3, 0x65, 0x27, 0xc5, 0xff, 0xc7, 0xf4, 0xde, 0x12, 0x23, - 0x5f, 0xe3, 0xf5, 0x92, 0xc6, 0xfc, 0xdd, 0x81, 0x34, 0xd1, 0x0a, 0x65, 0x98, 0x89, 0x2a, 0x15, - 0x94, 0x8f, 0xf3, 0xc4, 0x0b, 0x1a, 0x75, 0x55, 0x82, 0x61, 0x32, 0xd2, 0xbf, 0x48, 0x29, 0xa1, - 0xa2, 0x62, 0x8c, 0x68, 0x02, 0x9b, 0x2c, 0x3a, 0xee, 0x0e, 0xa4, 0x89, 0x47, 0x75, 0xec, 0x0a, - 0xef, 0x45, 0x75, 0xff, 0x75, 0xdf, 0x8b, 0x6a, 0xc9, 0x9d, 0xaf, 0x4d, 0xec, 0x66, 0x1f, 0xa7, - 0x1b, 0x9e, 0x75, 0x3e, 0x19, 0x7c, 0x1c, 0xfa, 0xad, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xb2, - 0x24, 0x7a, 0xd2, 0x1c, 0x2d, 0x00, 0x00, + proto.RegisterFile("github.com/container-storage-interface/spec/csi.proto", fileDescriptor_csi_d2a705310653d01b) +} + +var fileDescriptor_csi_d2a705310653d01b = []byte{ + // 3125 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3a, 0x4d, 0x6f, 0x23, 0xc7, + 0xb1, 0x1a, 0x7e, 0xe8, 0xa3, 0xb4, 0x92, 0xb9, 0xad, 0x2f, 0x6a, 0x24, 0xed, 0x6a, 0x67, 0xbd, + 0xf6, 0x7a, 0xdf, 0x2e, 0xe5, 0xa7, 0xf7, 0x6c, 0xf8, 0xd9, 0x6b, 0xbf, 0x50, 0x14, 0x2d, 0xd1, + 0x2b, 0x51, 0xca, 0x90, 0x92, 0xb1, 0x1b, 0x1b, 0xe3, 0x11, 0xd9, 0xe2, 0x4e, 0x4c, 0xcd, 0xd0, + 0x33, 0x43, 0x65, 0x95, 0x5b, 0x12, 0x20, 0x48, 0x72, 0x4a, 0x7e, 0x81, 0x01, 0xdf, 0x12, 0xc4, + 0x08, 0x10, 0xe4, 0x16, 0x20, 0xb7, 0x00, 0x39, 0xe5, 0x9c, 0x53, 0x72, 0x0e, 0x92, 0x63, 0x4e, + 0x01, 0x02, 0x04, 0x3d, 0xdd, 0x33, 0x9c, 0x6e, 0xf6, 0xf0, 0xc3, 0xbb, 0x30, 0x72, 0x22, 0xa7, + 0xaa, 0xba, 0xaa, 0xba, 0xba, 0xaa, 0xba, 0xaa, 0x66, 0xe0, 0x8d, 0x96, 0xe5, 0x3f, 0xed, 0x9e, + 0x15, 0x1a, 0xce, 0xc5, 0x56, 0xc3, 0xb1, 0x7d, 0xd3, 0xb2, 0xb1, 0xfb, 0xc0, 0xf3, 0x1d, 0xd7, + 0x6c, 0xe1, 0x07, 0x96, 0xed, 0x63, 0xf7, 0xdc, 0x6c, 0xe0, 0x2d, 0xaf, 0x83, 0x1b, 0x5b, 0x0d, + 0xcf, 0x2a, 0x74, 0x5c, 0xc7, 0x77, 0xd0, 0x24, 0xf9, 0x7b, 0xf9, 0xba, 0x7a, 0xa3, 0xe5, 0x38, + 0xad, 0x36, 0xde, 0x0a, 0xa0, 0x67, 0xdd, 0xf3, 0xad, 0xef, 0xb8, 0x66, 0xa7, 0x83, 0x5d, 0x8f, + 0xd2, 0x69, 0xcb, 0xb0, 0xb8, 0x87, 0xfd, 0xe3, 0x76, 0xb7, 0x65, 0xd9, 0x15, 0xfb, 0xdc, 0xd1, + 0xf1, 0x67, 0x5d, 0xec, 0xf9, 0xda, 0x9f, 0x14, 0x58, 0x12, 0x10, 0x5e, 0xc7, 0xb1, 0x3d, 0x8c, + 0x10, 0x64, 0x6c, 0xf3, 0x02, 0xe7, 0x95, 0x4d, 0xe5, 0xee, 0x8c, 0x1e, 0xfc, 0x47, 0x77, 0x60, + 0xfe, 0x12, 0xdb, 0x4d, 0xc7, 0x35, 0x2e, 0xb1, 0xeb, 0x59, 0x8e, 0x9d, 0x4f, 0x05, 0xd8, 0x39, + 0x0a, 0x3d, 0xa5, 0x40, 0xb4, 0x07, 0xd3, 0x17, 0xa6, 0x6d, 0x9d, 0x63, 0xcf, 0xcf, 0xa7, 0x37, + 0xd3, 0x77, 0x67, 0xb7, 0xff, 0xab, 0x40, 0xf5, 0x2c, 0x48, 0x65, 0x15, 0x0e, 0x19, 0x75, 0xd9, + 0xf6, 0xdd, 0x2b, 0x3d, 0x5a, 0xac, 0xbe, 0x03, 0x73, 0x1c, 0x0a, 0xe5, 0x20, 0xfd, 0x29, 0xbe, + 0x62, 0x3a, 0x91, 0xbf, 0x68, 0x11, 0xb2, 0x97, 0x66, 0xbb, 0x8b, 0x99, 0x26, 0xf4, 0xe1, 0xed, + 0xd4, 0x5b, 0x8a, 0x76, 0x03, 0xd6, 0x23, 0x69, 0x25, 0xb3, 0x63, 0x9e, 0x59, 0x6d, 0xcb, 0xb7, + 0xb0, 0x17, 0x6e, 0xfd, 0x63, 0xd8, 0x48, 0xc0, 0x33, 0x0b, 0x3c, 0x84, 0x6b, 0x8d, 0x18, 0x3c, + 0x9f, 0x0a, 0xb6, 0x92, 0x0f, 0xb7, 0x22, 0xac, 0xbc, 0xd2, 0x39, 0x6a, 0xed, 0x6f, 0x0a, 0xe4, + 0x44, 0x12, 0xf4, 0x10, 0xa6, 0x3c, 0xec, 0x5e, 0x5a, 0x0d, 0x6a, 0xd7, 0xd9, 0xed, 0xcd, 0x24, + 0x6e, 0x85, 0x1a, 0xa5, 0xdb, 0x9f, 0xd0, 0xc3, 0x25, 0xea, 0x4f, 0x15, 0x98, 0x62, 0x60, 0xf4, + 0x7f, 0x90, 0xf1, 0xaf, 0x3a, 0x94, 0xcd, 0xfc, 0xf6, 0x9d, 0x61, 0x6c, 0x0a, 0xf5, 0xab, 0x0e, + 0xd6, 0x83, 0x25, 0xda, 0x07, 0x90, 0x21, 0x4f, 0x68, 0x16, 0xa6, 0x4e, 0xaa, 0x8f, 0xaa, 0x47, + 0x1f, 0x56, 0x73, 0x13, 0x68, 0x19, 0x50, 0xe9, 0xa8, 0x5a, 0xd7, 0x8f, 0x0e, 0x0e, 0xca, 0xba, + 0x51, 0x2b, 0xeb, 0xa7, 0x95, 0x52, 0x39, 0xa7, 0xa0, 0x0d, 0x58, 0x2d, 0x96, 0x4a, 0xe5, 0x5a, + 0xad, 0xb2, 0x53, 0x39, 0xa8, 0xd4, 0x1f, 0x1b, 0xa5, 0xa3, 0x6a, 0xad, 0xae, 0x17, 0x2b, 0xd5, + 0x7a, 0x2d, 0x97, 0xda, 0x99, 0xa4, 0x6a, 0x68, 0xf3, 0x70, 0xed, 0xd8, 0x75, 0xce, 0x70, 0x68, + 0xdc, 0x22, 0xcc, 0xb1, 0x67, 0x66, 0xcc, 0xd7, 0x21, 0xeb, 0x62, 0xb3, 0x79, 0xc5, 0xf6, 0xad, + 0x16, 0xa8, 0xc3, 0x16, 0x42, 0x87, 0x2d, 0xec, 0x38, 0x4e, 0xfb, 0x94, 0x1c, 0x9e, 0x4e, 0x09, + 0xb5, 0x2f, 0xb3, 0xb0, 0x50, 0x72, 0xb1, 0xe9, 0xe3, 0x53, 0xa7, 0xdd, 0xbd, 0x08, 0x59, 0x4b, + 0x1d, 0xf3, 0x21, 0xcc, 0x13, 0xe3, 0x37, 0x2c, 0xff, 0xca, 0x70, 0x4d, 0xbb, 0x45, 0xdd, 0x61, + 0x76, 0x7b, 0x29, 0xb4, 0x4b, 0x89, 0x61, 0x75, 0x82, 0xd4, 0xe7, 0x1a, 0xf1, 0x47, 0x54, 0x81, + 0x85, 0xcb, 0x40, 0x84, 0xc1, 0x9d, 0x77, 0x9a, 0x3f, 0x6f, 0xaa, 0x45, 0xec, 0xbc, 0xd1, 0x25, + 0x0f, 0xb1, 0xb0, 0x87, 0x1e, 0x01, 0x74, 0x4c, 0xd7, 0xbc, 0xc0, 0x3e, 0x76, 0xbd, 0x7c, 0x86, + 0x77, 0x7e, 0xc9, 0x6e, 0x0a, 0xc7, 0x11, 0x35, 0x75, 0xfe, 0xd8, 0x72, 0xe4, 0xc3, 0x2a, 0x49, + 0x05, 0xae, 0xd3, 0x6e, 0x63, 0xd7, 0x68, 0x04, 0xab, 0x0d, 0x0f, 0x37, 0x5c, 0xec, 0x7b, 0xf9, + 0x6c, 0xc0, 0xfb, 0xad, 0x41, 0xbc, 0x4b, 0xd1, 0x62, 0x8a, 0xad, 0xd1, 0xa5, 0x54, 0xd0, 0x4a, + 0x43, 0x8e, 0x45, 0x47, 0xb0, 0x14, 0x5a, 0xc3, 0xb1, 0x7d, 0x6c, 0xfb, 0x86, 0xe7, 0x74, 0xdd, + 0x06, 0xce, 0x4f, 0x06, 0x26, 0x5d, 0x13, 0xec, 0x41, 0x69, 0x6a, 0x01, 0x89, 0xce, 0xec, 0xc8, + 0x01, 0xd1, 0x13, 0x50, 0xcd, 0x46, 0x03, 0x7b, 0x9e, 0x45, 0x0d, 0x67, 0xb8, 0xf8, 0xb3, 0xae, + 0xe5, 0xe2, 0x0b, 0x6c, 0xfb, 0x5e, 0x7e, 0x8a, 0xe7, 0x5a, 0x77, 0x3a, 0x4e, 0xdb, 0x69, 0x5d, + 0xe9, 0x3d, 0x1a, 0x7d, 0x95, 0x5b, 0x1e, 0xc3, 0x78, 0xea, 0xbb, 0xf0, 0x92, 0x60, 0xc1, 0x71, + 0x72, 0x84, 0xfa, 0x01, 0xac, 0x0f, 0x32, 0xd2, 0x58, 0xf9, 0xe6, 0xc7, 0x0a, 0x2c, 0x48, 0x6c, + 0x82, 0xf6, 0x61, 0xda, 0xb3, 0xcd, 0x8e, 0xf7, 0xd4, 0xf1, 0x99, 0xf3, 0xdf, 0x1b, 0x60, 0xc2, + 0x42, 0x8d, 0xd1, 0xd2, 0xc7, 0xfd, 0x09, 0x3d, 0x5a, 0xad, 0x6e, 0xc2, 0x3c, 0x8f, 0x45, 0xf3, + 0x90, 0xb2, 0x9a, 0x4c, 0xbd, 0x94, 0xd5, 0x8c, 0xc2, 0xf1, 0x3d, 0x58, 0xe4, 0x1d, 0x82, 0x45, + 0xe1, 0x2b, 0x30, 0x49, 0x4f, 0x88, 0x69, 0x32, 0xcf, 0x6b, 0xa2, 0x33, 0xac, 0xf6, 0x8b, 0x0c, + 0xe4, 0x44, 0x7f, 0x47, 0x0f, 0x21, 0x7b, 0xd6, 0x76, 0x1a, 0x9f, 0xb2, 0xb5, 0x2f, 0x27, 0x05, + 0x46, 0x61, 0x87, 0x50, 0x51, 0xe8, 0xfe, 0x84, 0x4e, 0x17, 0x91, 0xd5, 0x17, 0x4e, 0xd7, 0xf6, + 0x59, 0x64, 0x26, 0xaf, 0x3e, 0x24, 0x54, 0xbd, 0xd5, 0xc1, 0x22, 0xb4, 0x0b, 0xb3, 0xd4, 0x09, + 0x8c, 0x0b, 0xa7, 0x89, 0xf3, 0xe9, 0x80, 0xc7, 0xed, 0x44, 0x1e, 0xc5, 0x80, 0xf6, 0xd0, 0x69, + 0x62, 0x1d, 0xcc, 0xe8, 0xbf, 0x3a, 0x07, 0xb3, 0x31, 0xdd, 0xd4, 0x3d, 0x98, 0x8d, 0x09, 0x43, + 0x2b, 0x30, 0x75, 0xee, 0x19, 0x51, 0x56, 0x9d, 0xd1, 0x27, 0xcf, 0xbd, 0x20, 0x51, 0xde, 0x84, + 0xd9, 0x40, 0x0b, 0xe3, 0xbc, 0x6d, 0xb6, 0xe8, 0x3d, 0x30, 0xa3, 0x43, 0x00, 0x7a, 0x9f, 0x40, + 0xd4, 0xbf, 0x2b, 0x00, 0x3d, 0x91, 0xe8, 0x21, 0x64, 0x02, 0x2d, 0x69, 0x6e, 0xbe, 0x3b, 0x82, + 0x96, 0x85, 0x40, 0xd5, 0x60, 0x95, 0xf6, 0xb9, 0x02, 0x99, 0x80, 0x8d, 0x98, 0x9f, 0x6b, 0x95, + 0xea, 0xde, 0x41, 0xd9, 0xa8, 0x1e, 0xed, 0x96, 0x8d, 0x0f, 0xf5, 0x4a, 0xbd, 0xac, 0xe7, 0x14, + 0xb4, 0x06, 0x2b, 0x71, 0xb8, 0x5e, 0x2e, 0xee, 0x96, 0x75, 0xe3, 0xa8, 0x7a, 0xf0, 0x38, 0x97, + 0x42, 0x2a, 0x2c, 0x1f, 0x9e, 0x1c, 0xd4, 0x2b, 0xfd, 0xb8, 0x34, 0x5a, 0x87, 0x7c, 0x0c, 0xc7, + 0x78, 0x30, 0xb6, 0x19, 0xc2, 0x36, 0x86, 0xa5, 0x7f, 0x19, 0x32, 0xbb, 0x33, 0x17, 0x1d, 0x46, + 0xe0, 0x6c, 0x1f, 0xc2, 0x1c, 0x97, 0x5e, 0x49, 0x99, 0xc0, 0x42, 0xbc, 0x69, 0x9c, 0x5d, 0xf9, + 0xd8, 0x0b, 0x2c, 0x91, 0xd6, 0xe7, 0x42, 0xe8, 0x0e, 0x01, 0x12, 0xb3, 0xb6, 0xad, 0x0b, 0xcb, + 0x67, 0x34, 0xa9, 0x80, 0x06, 0x02, 0x50, 0x40, 0xa0, 0xfd, 0x3e, 0x05, 0x93, 0xec, 0x6c, 0xee, + 0xc4, 0x12, 0x3c, 0xc7, 0x32, 0x84, 0x52, 0x96, 0x34, 0x1e, 0x52, 0x61, 0x3c, 0xa0, 0xf7, 0x00, + 0x4c, 0xdf, 0x77, 0xad, 0xb3, 0xae, 0x1f, 0x25, 0xf4, 0x1b, 0xfc, 0x79, 0x14, 0x8a, 0x11, 0x01, + 0xcb, 0xc0, 0xbd, 0x15, 0x68, 0x07, 0xe6, 0x85, 0x24, 0x98, 0x19, 0x9e, 0x04, 0xe7, 0x1a, 0x5c, + 0xfc, 0x17, 0x61, 0x21, 0xcc, 0x5f, 0x6d, 0x6c, 0xf8, 0x2c, 0xbf, 0xb1, 0xfc, 0x9d, 0xeb, 0xcb, + 0x7b, 0xa8, 0x47, 0x1c, 0xc2, 0x48, 0x96, 0x13, 0xb4, 0x1c, 0x2b, 0x33, 0x75, 0x61, 0x41, 0x92, + 0x56, 0x51, 0x01, 0x66, 0x82, 0x03, 0xf1, 0x2c, 0x9f, 0xf8, 0xaa, 0x5c, 0x9d, 0x1e, 0x09, 0xa1, + 0xef, 0xb8, 0xf8, 0x1c, 0xbb, 0x2e, 0x6e, 0xb2, 0x62, 0x48, 0x42, 0x1f, 0x91, 0x68, 0x3f, 0x50, + 0x60, 0x3a, 0x84, 0xa3, 0xb7, 0x61, 0xda, 0xc3, 0x2d, 0x9a, 0xf2, 0x15, 0xfe, 0x1c, 0x42, 0x9a, + 0x42, 0x8d, 0x11, 0xb0, 0x32, 0x30, 0xa4, 0x27, 0x65, 0x20, 0x87, 0x1a, 0x6b, 0xf3, 0xff, 0x50, + 0x60, 0x61, 0x17, 0xb7, 0xb1, 0x58, 0x46, 0xac, 0xc1, 0x0c, 0xbb, 0xe6, 0xa2, 0x0c, 0x3a, 0x4d, + 0x01, 0x95, 0xa6, 0x70, 0xf3, 0x36, 0x83, 0xe5, 0xd1, 0xcd, 0x9b, 0xe2, 0x6f, 0x5e, 0x09, 0xf3, + 0xd8, 0xcd, 0x4b, 0xb1, 0x49, 0x37, 0x2f, 0x87, 0xe5, 0x6f, 0xa3, 0xfe, 0x85, 0x63, 0x6d, 0x7b, + 0x19, 0x16, 0x79, 0xc5, 0xe8, 0x0d, 0xa0, 0xfd, 0x36, 0x03, 0x37, 0x7a, 0x42, 0x8e, 0xbb, 0x67, + 0x6d, 0xcb, 0x7b, 0x3a, 0x86, 0x65, 0x56, 0x60, 0xca, 0x76, 0x9a, 0x01, 0x8a, 0xca, 0x9c, 0x24, + 0x8f, 0x95, 0x26, 0x2a, 0xc3, 0x75, 0xb1, 0x88, 0xba, 0x62, 0x79, 0x3a, 0xb9, 0x84, 0xca, 0x5d, + 0x8a, 0x97, 0x8c, 0x0a, 0xd3, 0xa4, 0xfc, 0x73, 0xec, 0xf6, 0x55, 0x10, 0x6b, 0xd3, 0x7a, 0xf4, + 0x8c, 0xbe, 0xaf, 0x80, 0x1a, 0x3b, 0x96, 0x0e, 0x55, 0x5e, 0xa8, 0x88, 0x76, 0xa3, 0x8a, 0x68, + 0xe0, 0x2e, 0xfb, 0xd1, 0xdc, 0x19, 0xe5, 0x1b, 0x09, 0x68, 0x64, 0x45, 0xfb, 0x8c, 0x65, 0x96, + 0xc9, 0x40, 0xf4, 0xc3, 0x11, 0x45, 0xd3, 0x27, 0x31, 0xef, 0x30, 0x5b, 0xf4, 0xc0, 0xea, 0x23, + 0xd8, 0x18, 0xa8, 0xe5, 0x58, 0xa5, 0x4e, 0x09, 0x96, 0xa4, 0x72, 0xc7, 0xf2, 0xaa, 0xdf, 0x29, + 0x70, 0x33, 0x71, 0x73, 0xac, 0xc6, 0xf8, 0x16, 0x5c, 0x0b, 0x4f, 0xc6, 0xb2, 0xcf, 0x1d, 0x16, + 0xed, 0x6f, 0x0d, 0xb5, 0x0d, 0xeb, 0x05, 0x19, 0x94, 0xf4, 0x87, 0xd4, 0x2e, 0xb3, 0x9d, 0x1e, + 0x44, 0x7d, 0x0f, 0x72, 0x22, 0xc1, 0x58, 0x1b, 0xf8, 0x4d, 0x0a, 0x36, 0x7b, 0x1a, 0x9c, 0xd8, + 0x9d, 0x17, 0x17, 0x00, 0x3f, 0x51, 0x60, 0x3d, 0xe6, 0x9d, 0x5d, 0x5b, 0xf4, 0x4f, 0x7a, 0xfd, + 0xec, 0xf7, 0x1b, 0x42, 0xae, 0x86, 0x8c, 0x80, 0xf3, 0xd1, 0x58, 0x2c, 0x88, 0x04, 0xea, 0x61, + 0xfc, 0x9c, 0xa4, 0xcb, 0xc7, 0x32, 0xdb, 0x6d, 0xb8, 0x35, 0x40, 0x5d, 0x96, 0x5a, 0xbe, 0x97, + 0x86, 0x5b, 0xa7, 0x66, 0xdb, 0x6a, 0x46, 0x75, 0xa7, 0xa4, 0xed, 0x1e, 0x6c, 0xdc, 0x84, 0x4e, + 0x2c, 0xf5, 0x15, 0x3a, 0xb1, 0xb6, 0x2c, 0x4e, 0xe9, 0x11, 0xfc, 0x7f, 0xc4, 0x68, 0x98, 0xb6, + 0xa3, 0x86, 0x6a, 0xd2, 0x25, 0x9f, 0x19, 0xe3, 0x92, 0x7f, 0x21, 0x01, 0xfa, 0x11, 0x68, 0x83, + 0x36, 0xc5, 0x42, 0x74, 0x1d, 0x66, 0xbc, 0x6e, 0xa7, 0xe3, 0xb8, 0x3e, 0xa6, 0x67, 0x30, 0xad, + 0xf7, 0x00, 0x28, 0x0f, 0x53, 0x17, 0xd8, 0xf3, 0xcc, 0x56, 0xc8, 0x3f, 0x7c, 0xd4, 0x3e, 0x02, + 0x74, 0x60, 0x79, 0xac, 0x5e, 0x8e, 0x4e, 0x94, 0x94, 0xc7, 0xe6, 0x33, 0x03, 0xdb, 0xbe, 0x6b, + 0xb1, 0xc2, 0x2c, 0xab, 0xc3, 0x85, 0xf9, 0xac, 0x4c, 0x21, 0xa4, 0x78, 0xf3, 0x7c, 0xd3, 0xf5, + 0x2d, 0xbb, 0x65, 0xf8, 0xce, 0xa7, 0x38, 0x1a, 0x1b, 0x85, 0xd0, 0x3a, 0x01, 0x6a, 0x5f, 0x28, + 0xb0, 0xc0, 0xb1, 0x67, 0xda, 0xbe, 0x03, 0x53, 0x3d, 0xde, 0xc4, 0x9e, 0xb7, 0x42, 0x7b, 0x4a, + 0xa8, 0x0b, 0xf4, 0x84, 0xc2, 0x15, 0x68, 0x03, 0xc0, 0xc6, 0xcf, 0x7c, 0x4e, 0xee, 0x0c, 0x81, + 0x04, 0x32, 0xd5, 0x2d, 0xc8, 0x52, 0x23, 0x8f, 0xda, 0x19, 0x7d, 0x99, 0x02, 0xb4, 0x87, 0xfd, + 0xa8, 0xe0, 0x65, 0x36, 0x48, 0x70, 0x5c, 0xe5, 0x2b, 0x38, 0xee, 0x07, 0xdc, 0x08, 0x81, 0xba, + 0xfe, 0xbd, 0xd8, 0xfc, 0x4c, 0x10, 0x3d, 0x70, 0x82, 0x90, 0xe0, 0x96, 0xf4, 0x5a, 0x1e, 0xb9, + 0xf6, 0x7c, 0x8e, 0x0e, 0x5b, 0xdb, 0x85, 0x05, 0x4e, 0x67, 0x76, 0xa6, 0x0f, 0x00, 0x99, 0x97, + 0xa6, 0xd5, 0x36, 0x89, 0x5e, 0x61, 0x0d, 0xcf, 0x6a, 0xfa, 0xeb, 0x11, 0x26, 0x5c, 0xa6, 0x69, + 0xf1, 0xac, 0xcd, 0xf8, 0x89, 0xf3, 0xbc, 0x76, 0x3c, 0x47, 0xf5, 0xd1, 0x30, 0xb9, 0x7b, 0xd2, + 0x99, 0xde, 0xed, 0xfe, 0x9c, 0xcc, 0xe6, 0x66, 0x89, 0xe3, 0xbd, 0x3f, 0xa6, 0x60, 0x6d, 0x00, + 0x35, 0x7a, 0x07, 0xd2, 0x6e, 0xa7, 0xc1, 0x9c, 0xe9, 0xd5, 0x11, 0xf8, 0x17, 0xf4, 0xe3, 0xd2, + 0xfe, 0x84, 0x4e, 0x56, 0xa9, 0x7f, 0x55, 0x20, 0xad, 0x1f, 0x97, 0xd0, 0x37, 0xb8, 0x21, 0xdf, + 0xfd, 0x11, 0xb9, 0xc4, 0x67, 0x7d, 0xa4, 0x99, 0xec, 0x1f, 0xf6, 0xe5, 0x61, 0xb1, 0xa4, 0x97, + 0x8b, 0xf5, 0xb2, 0xb1, 0x5b, 0x3e, 0x28, 0xd7, 0xcb, 0xc6, 0xe9, 0xd1, 0xc1, 0xc9, 0x61, 0x39, + 0xa7, 0x90, 0xae, 0xf0, 0xf8, 0x64, 0xe7, 0xa0, 0x52, 0xdb, 0x37, 0x4e, 0xaa, 0xe1, 0x3f, 0x86, + 0x4d, 0xa1, 0x1c, 0x5c, 0x3b, 0xa8, 0xd4, 0xea, 0x0c, 0x50, 0xcb, 0xa5, 0x09, 0x64, 0xaf, 0x5c, + 0x37, 0x4a, 0xc5, 0xe3, 0x62, 0xa9, 0x52, 0x7f, 0x9c, 0xcb, 0x90, 0x9e, 0x93, 0xe7, 0x5d, 0xab, + 0x16, 0x8f, 0x6b, 0xfb, 0x47, 0xf5, 0x5c, 0x16, 0x21, 0x98, 0x0f, 0xd6, 0x87, 0xa0, 0x5a, 0x6e, + 0x32, 0x1a, 0x59, 0x7c, 0x9e, 0x86, 0x25, 0x36, 0x81, 0x61, 0x33, 0x8e, 0x30, 0xb6, 0xee, 0x42, + 0x8e, 0x36, 0x5f, 0x86, 0x78, 0x71, 0xcc, 0x53, 0xf8, 0x69, 0x78, 0x7d, 0x84, 0xa3, 0xc1, 0x54, + 0x6c, 0x34, 0xd8, 0x81, 0x95, 0x70, 0x72, 0xc6, 0xf8, 0x0a, 0x17, 0xb2, 0x30, 0x42, 0x13, 0xa4, + 0x0b, 0x50, 0xee, 0x02, 0x5e, 0x6a, 0xc8, 0x70, 0xe8, 0x50, 0x32, 0x03, 0x7c, 0x30, 0x58, 0xc8, + 0x80, 0x18, 0x56, 0xf7, 0x41, 0x4d, 0xd6, 0x61, 0xac, 0x12, 0xf0, 0x39, 0x43, 0xf9, 0x7d, 0x58, + 0x16, 0xb5, 0x67, 0x51, 0x75, 0xbf, 0x6f, 0xc4, 0x15, 0xe5, 0x96, 0x88, 0x36, 0xa2, 0xd0, 0x7e, + 0xad, 0xc0, 0x74, 0x08, 0x26, 0xf9, 0xd9, 0xb3, 0xbe, 0x8b, 0xb9, 0xa6, 0x7e, 0x86, 0x40, 0xe4, + 0x0d, 0xbd, 0xcc, 0x17, 0xd2, 0x52, 0x5f, 0xd8, 0x00, 0xa0, 0xc7, 0xd3, 0x34, 0x4c, 0x3f, 0x68, + 0x25, 0xd2, 0xfa, 0x0c, 0x83, 0x14, 0x49, 0xf3, 0x3b, 0xe9, 0xf9, 0xa6, 0xdf, 0x25, 0x6d, 0x03, + 0x51, 0x78, 0x59, 0x54, 0xb8, 0x16, 0x60, 0x75, 0x46, 0x45, 0x02, 0x69, 0x9e, 0x47, 0xa1, 0x2d, + 0x2e, 0x3a, 0xd7, 0xe4, 0x0c, 0x62, 0xc1, 0x48, 0x2e, 0xd6, 0x26, 0xf6, 0x4d, 0xab, 0xed, 0x85, + 0x17, 0x2b, 0x7b, 0xd4, 0x76, 0x64, 0x51, 0x3a, 0x03, 0x59, 0xbd, 0x5c, 0xdc, 0x7d, 0x9c, 0x53, + 0xd0, 0x1c, 0xcc, 0x9c, 0x1c, 0x1f, 0x1c, 0x15, 0x77, 0x2b, 0xd5, 0xbd, 0x5c, 0x0a, 0x2d, 0xc0, + 0x4b, 0x65, 0x5d, 0x3f, 0xd2, 0x8d, 0x1e, 0x30, 0x4d, 0x1a, 0xdd, 0x25, 0xd6, 0x34, 0x0a, 0x01, + 0x74, 0x13, 0x66, 0x23, 0xdf, 0x8f, 0x62, 0x07, 0x42, 0x50, 0xa5, 0x49, 0x62, 0x24, 0xec, 0x71, + 0xc5, 0x18, 0x91, 0x36, 0xbb, 0xa2, 0xfb, 0xf2, 0x50, 0x3e, 0x46, 0x9a, 0x32, 0x1c, 0x71, 0xea, + 0xe4, 0x45, 0x63, 0x79, 0x65, 0x1e, 0x96, 0x45, 0xa5, 0x58, 0x3d, 0xfa, 0x73, 0x05, 0x16, 0x49, + 0x85, 0x10, 0x22, 0x5e, 0x74, 0xc1, 0x32, 0x86, 0x33, 0x0a, 0x27, 0x90, 0x11, 0x4f, 0x40, 0xfb, + 0xa5, 0x02, 0x4b, 0x82, 0xae, 0x2c, 0xb6, 0xde, 0x15, 0xab, 0x9f, 0xdb, 0xf1, 0xea, 0xa7, 0x8f, + 0x7e, 0xcc, 0xfa, 0xe7, 0x8d, 0xb0, 0xfe, 0x19, 0x2f, 0x84, 0x7f, 0x96, 0x85, 0xe5, 0xaa, 0xd3, + 0xc4, 0x35, 0xdf, 0x6c, 0x8d, 0x33, 0x57, 0xd1, 0x85, 0xde, 0x90, 0x7a, 0xd7, 0x56, 0x28, 0x49, + 0xce, 0x72, 0x70, 0x4b, 0x88, 0x0a, 0xb0, 0xe0, 0xf9, 0x66, 0x2b, 0x38, 0x2b, 0xd3, 0x6d, 0x61, + 0xdf, 0xe8, 0x98, 0xfe, 0x53, 0x76, 0x10, 0xd7, 0x19, 0xaa, 0x1e, 0x60, 0x8e, 0x4d, 0xff, 0xa9, + 0x7c, 0x50, 0x91, 0x19, 0x7b, 0x50, 0x71, 0x06, 0x28, 0xe8, 0x03, 0x89, 0x00, 0xf1, 0xad, 0xcc, + 0xff, 0x0e, 0xd9, 0x50, 0x04, 0xe6, 0x42, 0x25, 0x67, 0x0b, 0x60, 0x64, 0x26, 0xcf, 0x1a, 0x86, + 0x89, 0x18, 0x75, 0xc6, 0xf0, 0x9c, 0x0d, 0x35, 0xe9, 0x5a, 0xa4, 0xbb, 0xf9, 0xfa, 0x67, 0x13, + 0xab, 0xb0, 0xd2, 0x67, 0x0b, 0x96, 0x09, 0x5a, 0x90, 0x27, 0xa8, 0x13, 0xdb, 0x1b, 0xd3, 0x5f, + 0x13, 0x7c, 0x2b, 0x95, 0xe0, 0x5b, 0xda, 0x1a, 0xac, 0x4a, 0x04, 0x31, 0x2d, 0xfe, 0x9c, 0xa5, + 0x6a, 0x8c, 0x3f, 0x74, 0xab, 0x4b, 0xc3, 0xe6, 0xbf, 0xe3, 0x2e, 0x20, 0x1d, 0x34, 0xbd, 0xd8, + 0xc0, 0xb9, 0x09, 0xb3, 0x71, 0x3a, 0x96, 0xc4, 0xfc, 0x21, 0x91, 0x95, 0x7d, 0xae, 0x11, 0xe0, + 0xa4, 0x30, 0x02, 0xfc, 0x36, 0x2c, 0x06, 0x51, 0x27, 0xce, 0x56, 0xa6, 0xf8, 0x6b, 0x2a, 0xd1, + 0x22, 0x31, 0x04, 0x17, 0x7b, 0x41, 0x2c, 0x0b, 0x93, 0xbe, 0x86, 0x2c, 0xfa, 0xa6, 0x03, 0x41, + 0x6f, 0x0e, 0x15, 0xf4, 0x75, 0xc5, 0x5f, 0x99, 0x7a, 0xfd, 0x7f, 0xc4, 0x74, 0x90, 0x79, 0xbf, + 0x74, 0xae, 0xa7, 0x3d, 0x01, 0x95, 0x86, 0xc6, 0xf8, 0x23, 0x37, 0xc1, 0xf1, 0x52, 0xa2, 0xe3, + 0x69, 0x1b, 0xb0, 0x26, 0xe5, 0xcd, 0x44, 0x3f, 0xa6, 0x7a, 0xed, 0x61, 0x36, 0x2c, 0x20, 0x95, + 0x99, 0x37, 0xaa, 0x64, 0x86, 0x8c, 0x4b, 0xa6, 0xa0, 0x40, 0xf2, 0x1e, 0xdd, 0x95, 0xc8, 0x9a, + 0xdd, 0xdd, 0xaf, 0x41, 0xb6, 0x1b, 0xcc, 0x51, 0xe8, 0xcd, 0xbd, 0xc0, 0x07, 0xc1, 0x09, 0x41, + 0xe9, 0x94, 0x42, 0xfb, 0x95, 0x02, 0xb3, 0x31, 0x30, 0x5a, 0x87, 0x99, 0xa8, 0x0d, 0x0e, 0xcb, + 0xe2, 0x08, 0x40, 0xce, 0xc0, 0x77, 0x7c, 0xb3, 0xcd, 0x5e, 0x9a, 0xd1, 0x07, 0xd2, 0xfe, 0x74, + 0x3d, 0x4c, 0x6b, 0x90, 0xb4, 0x1e, 0xfc, 0x47, 0xf7, 0x21, 0xd3, 0xb5, 0x2d, 0x5a, 0x00, 0xcf, + 0x8b, 0x61, 0x18, 0x88, 0x2a, 0x9c, 0xd8, 0x96, 0xaf, 0x07, 0x54, 0xda, 0x3d, 0xc8, 0x90, 0xa7, + 0xbe, 0x3a, 0x74, 0xe7, 0x71, 0xbd, 0x5c, 0xcb, 0x29, 0x08, 0x60, 0xb2, 0x52, 0x3d, 0xda, 0x2d, + 0xd7, 0x72, 0x29, 0x0d, 0x41, 0x8e, 0x6d, 0xbd, 0xd2, 0x0c, 0x7b, 0xf0, 0xfb, 0x70, 0x3d, 0x06, + 0x63, 0x56, 0x88, 0x4d, 0x4c, 0x95, 0xf8, 0xc4, 0x54, 0x5b, 0x8f, 0x8c, 0x27, 0xeb, 0xe7, 0x3f, + 0xa1, 0x87, 0x9a, 0xd4, 0xc9, 0x17, 0x85, 0x4e, 0x9e, 0x9a, 0x78, 0x83, 0xbb, 0x16, 0x87, 0xf4, + 0xf0, 0x7f, 0x51, 0xd8, 0xe5, 0xd5, 0xd7, 0xbd, 0xbf, 0x11, 0xef, 0xde, 0x6f, 0x0d, 0xe4, 0x19, + 0xef, 0xdb, 0x7f, 0xc8, 0xfa, 0xf6, 0xb7, 0xb9, 0xce, 0xe0, 0x95, 0xa1, 0xeb, 0xe3, 0x1d, 0x7b, + 0x29, 0xa1, 0x61, 0xaf, 0xd5, 0x8b, 0x7b, 0x65, 0xe3, 0xa4, 0x4a, 0x7f, 0xa3, 0x86, 0x7d, 0x11, + 0x72, 0xa4, 0x01, 0xa7, 0xcf, 0x46, 0xad, 0x5e, 0xe4, 0x3e, 0xcb, 0x59, 0x04, 0x14, 0x9e, 0x47, + 0xec, 0xa3, 0xaf, 0x2f, 0x14, 0x58, 0xe0, 0xc0, 0x43, 0x0e, 0x0a, 0x6d, 0xc1, 0x22, 0x29, 0x98, + 0xa9, 0xdf, 0x7b, 0x46, 0x07, 0xbb, 0x06, 0xc1, 0x30, 0xef, 0xbb, 0x7e, 0x61, 0x3e, 0x63, 0x53, + 0xb8, 0x63, 0xec, 0x12, 0xc6, 0x2f, 0x60, 0xee, 0xb4, 0xfd, 0x4f, 0x05, 0xa6, 0x2b, 0x4d, 0x6c, + 0xfb, 0xe4, 0x3c, 0xaa, 0x30, 0xc7, 0x7d, 0x39, 0x86, 0xd6, 0x13, 0x3e, 0x28, 0x0b, 0x36, 0xa8, + 0x6e, 0x0c, 0xfc, 0xdc, 0x4c, 0x9b, 0x40, 0xe7, 0xb1, 0xaf, 0xde, 0xb8, 0xe1, 0xdb, 0xcb, 0x7d, + 0x2b, 0x25, 0xae, 0xa9, 0xde, 0x19, 0x42, 0x15, 0xc9, 0x79, 0x13, 0xb2, 0xc1, 0x67, 0x50, 0x68, + 0x31, 0xfa, 0x40, 0x2b, 0xf6, 0x95, 0x94, 0xba, 0x24, 0x40, 0xc3, 0x75, 0xdb, 0xff, 0x9a, 0x02, + 0xe8, 0x4d, 0x79, 0xd0, 0x23, 0xb8, 0x16, 0xff, 0x9c, 0x03, 0xad, 0x0d, 0xf8, 0xea, 0x47, 0x5d, + 0x97, 0x23, 0x23, 0x9d, 0x1e, 0xc1, 0xb5, 0xf8, 0x9b, 0xc1, 0x1e, 0x33, 0xc9, 0x8b, 0xcc, 0x1e, + 0x33, 0xe9, 0xcb, 0xc4, 0x09, 0xd4, 0x86, 0x95, 0x84, 0x17, 0x3a, 0xe8, 0x95, 0xd1, 0xde, 0x86, + 0xa9, 0xaf, 0x8e, 0xf8, 0x66, 0x48, 0x9b, 0x40, 0x2e, 0xac, 0x26, 0xbe, 0x86, 0x40, 0x77, 0x47, + 0x7d, 0xb1, 0xa2, 0xbe, 0x36, 0x02, 0x65, 0x24, 0xb3, 0x0b, 0x6a, 0xf2, 0x44, 0x1d, 0xbd, 0x36, + 0xf2, 0xab, 0x04, 0xf5, 0xde, 0x28, 0xa4, 0x91, 0xd8, 0x7d, 0x98, 0x8d, 0x4d, 0xb7, 0x91, 0x2a, + 0x1d, 0x79, 0x53, 0xc6, 0x6b, 0x03, 0xc6, 0xe1, 0x94, 0x53, 0x6c, 0x02, 0xdb, 0xe3, 0xd4, 0x3f, + 0x4a, 0xee, 0x71, 0x92, 0x8c, 0x6c, 0x45, 0xf3, 0x0b, 0x79, 0x59, 0x66, 0x7e, 0x79, 0x62, 0x97, + 0x99, 0x3f, 0x21, 0xc9, 0x6b, 0x13, 0xe8, 0x9b, 0x30, 0xcf, 0x0f, 0x9d, 0xd0, 0xc6, 0xc0, 0x51, + 0x9a, 0x7a, 0x23, 0x09, 0x1d, 0x67, 0xc9, 0x4f, 0x0c, 0x7a, 0x2c, 0xa5, 0xe3, 0x8d, 0x1e, 0xcb, + 0x84, 0x41, 0xc3, 0x04, 0xc9, 0x4f, 0x5c, 0x37, 0xde, 0xcb, 0x4f, 0xb2, 0x01, 0x44, 0x2f, 0x3f, + 0x49, 0x5b, 0x78, 0x6d, 0x62, 0xfb, 0x0f, 0x59, 0xc8, 0x04, 0x89, 0xb4, 0x0e, 0x2f, 0x09, 0x4d, + 0x0d, 0xba, 0x31, 0xb8, 0xf3, 0x53, 0x6f, 0x26, 0xe2, 0x23, 0x75, 0x9f, 0xd0, 0x6b, 0x9a, 0x6b, + 0x53, 0xd0, 0x66, 0x7c, 0x9d, 0xac, 0x55, 0x52, 0x6f, 0x0d, 0xa0, 0x10, 0x79, 0xf3, 0xb9, 0x60, + 0x73, 0x58, 0xbd, 0xcc, 0xf3, 0x4e, 0x8a, 0xff, 0x4f, 0xe8, 0xbd, 0x25, 0x46, 0xbe, 0xc6, 0xeb, + 0x25, 0x8d, 0xf9, 0xdb, 0x03, 0x69, 0x22, 0x09, 0x1f, 0x47, 0x17, 0x66, 0xac, 0x9e, 0x43, 0x9c, + 0x72, 0xd2, 0x32, 0x52, 0xd5, 0x06, 0x91, 0x44, 0xec, 0xcb, 0x30, 0x13, 0xd5, 0x47, 0x28, 0x2f, + 0x2c, 0x89, 0xca, 0x28, 0x75, 0x55, 0x82, 0x61, 0x3c, 0xd2, 0x3f, 0x4a, 0x29, 0xa1, 0x1d, 0xc4, + 0x10, 0x14, 0x75, 0x90, 0x05, 0xdf, 0xed, 0x81, 0x34, 0xf1, 0xa4, 0x11, 0xab, 0x10, 0x7a, 0x49, + 0xa3, 0xbf, 0x9a, 0xe8, 0x25, 0x0d, 0x49, 0x49, 0xa1, 0x4d, 0xec, 0x64, 0x9f, 0xa4, 0x1b, 0x9e, + 0x75, 0x36, 0x19, 0x7c, 0xe8, 0xfb, 0x3f, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xc4, 0x16, 0x0e, + 0x54, 0xe8, 0x2e, 0x00, 0x00, } diff --git a/spec.md b/spec.md index f35e9878..90be3934 100644 --- a/spec.md +++ b/spec.md @@ -345,6 +345,9 @@ service Node { rpc NodeUnpublishVolume (NodeUnpublishVolumeRequest) returns (NodeUnpublishVolumeResponse) {} + rpc NodeGetVolumeStats (NodeGetVolumeStatsRequest) + returns (NodeGetVolumeStatsResponse) {} + // NodeGetId is being deprecated in favor of NodeGetInfo and will be // removed in CSI 1.0. Existing drivers, however, may depend on this // RPC call and hence this RPC call MUST be implemented by the CSI @@ -1913,6 +1916,68 @@ The CO MUST implement the specified error recovery behavior when it encounters t | Operation pending for volume | 10 ABORTED | Indicates that there is a already an operation pending for the specified volume. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per volume at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified volume, and then retry with exponential back off. | +#### `NodeGetVolumeStats` + +A Node plugin MUST implement this RPC call if it has GET_VOLUME_STATS node capability. +`NodeGetVolumeStats` RPC call returns the volume capacity statistics available for the volume. + +If the volume is being used in `BlockVolume` mode then `used` and `available` MAY be omitted from `usage` field of `NodeGetVolumeStatsResponse`. +Similarly, inode information may be omitted from `NodeGetVolumeStatsResponse` when unavailable. + + +```protobuf +message NodeGetVolumeStatsRequest { + // The ID of the volume. This field is REQUIRED. + string volume_id = 1; + + // It can be any valid path where volume was previously + // staged or published. + // It MUST be an absolute path in the root filesystem of + // the process serving this request. + // This is a REQUIRED field. + string volume_path = 2; +} + +message NodeGetVolumeStatsResponse { + // This field is OPTIONAL. + repeated VolumeUsage usage = 1; +} + +message VolumeUsage { + enum Unit { + UNKNOWN = 0; + BYTES = 1; + INODES = 2; + } + // The available capacity in specified Unit. This field is OPTIONAL. + // The value of this field MUST NOT be negative. + int64 available = 1; + + // The total capacity in specified Unit. This field is REQUIRED. + // The value of this field MUST NOT be negative. + int64 total = 2; + + // The used capacity in specified Unit. This field is OPTIONAL. + // The value of this field MUST NOT be negative. + int64 used = 3; + + // Units by which values are measured. This field is REQUIRED. + Unit unit = 4; +} +``` + +##### NodeGetVolumeStats Errors + +If the plugin is unable to complete the `NodeGetVolumeStats` call successfully, it MUST return a non-ok gRPC code in the gRPC status. +If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. +The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. + + +| Condition | gRPC Code | Description | Recovery Behavior | +|-----------|-----------|-------------|-------------------| +| Volume does not exist | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist on specified `volume_path`. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible on specified `volume_path` and has not been deleted before retrying with exponential back off. | +| Call not implemented | 12 UNIMPLEMENTED | NodeGetVolumeStats call is not implemented by the plugin or disabled in the Plugin's current mode of operation. | Caller MUST NOT retry. | + #### `NodeGetId` `NodeGetId` RPC call is deprecated. @@ -1968,6 +2033,10 @@ message NodeServiceCapability { enum Type { UNKNOWN = 0; STAGE_UNSTAGE_VOLUME = 1; + // If Plugin implements GET_VOLUME_STATS capability + // then it MUST implement NodeGetVolumeStats RPC + // call for fetching volume statistics. + GET_VOLUME_STATS = 2; } Type type = 1;