Skip to content

Commit 9ff6982

Browse files
authored
Merge pull request #544 from sunnylovestiramisu/kep-3751
Spec ModifyVolume for QoS kep-3751
2 parents 98031ee + c918b7f commit 9ff6982

File tree

3 files changed

+659
-329
lines changed

3 files changed

+659
-329
lines changed

csi.proto

+61-3
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ service Controller {
100100
returns (ControllerGetVolumeResponse) {
101101
option (alpha_method) = true;
102102
}
103+
104+
rpc ControllerModifyVolume (ControllerModifyVolumeRequest)
105+
returns (ControllerModifyVolumeResponse) {
106+
option (alpha_method) = true;
107+
}
103108
}
104109

105110
service GroupController {
@@ -350,9 +355,10 @@ message CreateVolumeRequest {
350355
// This field is REQUIRED.
351356
repeated VolumeCapability volume_capabilities = 3;
352357

353-
// Plugin specific parameters passed in as opaque key-value pairs.
354-
// This field is OPTIONAL. The Plugin is responsible for parsing and
355-
// validating these parameters. COs will treat these as opaque.
358+
// Plugin specific creation-time parameters passed in as opaque
359+
// key-value pairs. This field is OPTIONAL. The Plugin is responsible
360+
// for parsing and validating these parameters. COs will treat
361+
// these as opaque.
356362
map<string, string> parameters = 4;
357363

358364
// Secrets required by plugin to complete volume creation request.
@@ -376,6 +382,19 @@ message CreateVolumeRequest {
376382
// VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability, the SP MAY
377383
// choose where the provisioned volume is accessible from.
378384
TopologyRequirement accessibility_requirements = 7;
385+
386+
// Plugin specific creation-time parameters passed in as opaque
387+
// key-value pairs. These mutable_parameteres MAY also be
388+
// changed during the lifetime of the volume via a subsequent
389+
// `ControllerModifyVolume` RPC. This field is OPTIONAL.
390+
// The Plugin is responsible for parsing and validating these
391+
// parameters. COs will treat these as opaque.
392+
393+
// Plugins MUST treat these
394+
// as if they take precedence over the parameters field.
395+
// This field SHALL NOT be specified unless the SP has the
396+
// MODIFY_VOLUME plugin capability.
397+
map<string, string> mutable_parameters = 8 [(alpha_field) = true];
379398
}
380399

381400
// Specifies what source the volume will be created from. One of the
@@ -849,6 +868,10 @@ message ValidateVolumeCapabilitiesRequest {
849868
// This field is OPTIONAL. Refer to the `Secrets Requirements`
850869
// section on how to use this field.
851870
map<string, string> secrets = 5 [(csi_secret) = true];
871+
872+
// See CreateVolumeRequest.mutable_parameters.
873+
// This field is OPTIONAL.
874+
map<string, string> mutable_parameters = 6 [(alpha_field) = true];
852875
}
853876

854877
message ValidateVolumeCapabilitiesResponse {
@@ -864,6 +887,10 @@ message ValidateVolumeCapabilitiesResponse {
864887
// The volume creation parameters validated by the plugin.
865888
// This field is OPTIONAL.
866889
map<string, string> parameters = 3;
890+
891+
// The volume creation mutable_parameters validated by the plugin.
892+
// This field is OPTIONAL.
893+
map<string, string> mutable_parameters = 4 [(alpha_field) = true];
867894
}
868895

869896
// Confirmed indicates to the CO the set of capabilities that the
@@ -974,6 +1001,33 @@ message ControllerGetVolumeResponse {
9741001
// This field is REQUIRED.
9751002
VolumeStatus status = 2;
9761003
}
1004+
message ControllerModifyVolumeRequest {
1005+
option (alpha_message) = true;
1006+
1007+
// Contains identity information for the existing volume.
1008+
// This field is REQUIRED.
1009+
string volume_id = 1;
1010+
1011+
// Secrets required by plugin to complete modify volume request.
1012+
// This field is OPTIONAL. Refer to the `Secrets Requirements`
1013+
// section on how to use this field.
1014+
map<string, string> secrets = 2 [(csi_secret) = true];
1015+
1016+
// Plugin specific volume attributes to mutate, passed in as
1017+
// opaque key-value pairs.
1018+
// This field is REQUIRED. The Plugin is responsible for
1019+
// parsing and validating these parameters. COs will treat these
1020+
// as opaque. The CO SHOULD specify the intended values of all mutable
1021+
// parameters it intends to modify. SPs MUST NOT modify volumes based
1022+
// on the absence of keys, only keys that are specified should result
1023+
// in modifications to the volume.
1024+
map<string, string> mutable_parameters = 3;
1025+
}
1026+
1027+
message ControllerModifyVolumeResponse {
1028+
option (alpha_message) = true;
1029+
}
1030+
9771031
message GetCapacityRequest {
9781032
// If specified, the Plugin SHALL report the capacity of the storage
9791033
// that can be used to provision volumes that satisfy ALL of the
@@ -1113,6 +1167,10 @@ message ControllerServiceCapability {
11131167
// SINGLE_NODE_SINGLE_WRITER and/or SINGLE_NODE_MULTI_WRITER are
11141168
// supported, in order to permit older COs to continue working.
11151169
SINGLE_NODE_MULTI_WRITER = 13 [(alpha_enum_value) = true];
1170+
1171+
// Indicates the SP supports modifying volume with mutable
1172+
// parameters. See ControllerModifyVolume for details.
1173+
MODIFY_VOLUME = 14 [(alpha_enum_value) = true];
11161174
}
11171175

11181176
Type type = 1;

0 commit comments

Comments
 (0)