Skip to content

Commit 35283e7

Browse files
Spec ModifyVolume for QoS kep-3751
1 parent b01039c commit 35283e7

File tree

3 files changed

+645
-329
lines changed

3 files changed

+645
-329
lines changed

csi.proto

+54-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,13 @@ 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 mutable parameters passed in as opaque key-value
387+
// pairs. This field is OPTIONAL. The Plugin is responsible for
388+
// parsing and validating these parameters. COs will treat these
389+
// as opaque. Plugins SHOULD treat these as if they take precedence
390+
// over the parameters field.
391+
map<string, string> mutable_parameters = 8 [(alpha_field) = true];
379392
}
380393

381394
// Specifies what source the volume will be created from. One of the
@@ -849,6 +862,10 @@ message ValidateVolumeCapabilitiesRequest {
849862
// This field is OPTIONAL. Refer to the `Secrets Requirements`
850863
// section on how to use this field.
851864
map<string, string> secrets = 5 [(csi_secret) = true];
865+
866+
// See CreateVolumeRequest.mutable_parameters.
867+
// This field is OPTIONAL.
868+
map<string, string> mutable_parameters = 6;
852869
}
853870

854871
message ValidateVolumeCapabilitiesResponse {
@@ -864,6 +881,10 @@ message ValidateVolumeCapabilitiesResponse {
864881
// The volume creation parameters validated by the plugin.
865882
// This field is OPTIONAL.
866883
map<string, string> parameters = 3;
884+
885+
// The volume creation mutable_parameters validated by the plugin.
886+
// This field is OPTIONAL.
887+
map<string, string> mutable_parameters = 4;
867888
}
868889

869890
// Confirmed indicates to the CO the set of capabilities that the
@@ -974,6 +995,32 @@ message ControllerGetVolumeResponse {
974995
// This field is REQUIRED.
975996
VolumeStatus status = 2;
976997
}
998+
message ControllerModifyVolumeRequest {
999+
option (alpha_message) = true;
1000+
1001+
// Contains identity information for the existing volume.
1002+
// This field is REQUIRED.
1003+
string volume_id = 1;
1004+
1005+
// Secrets required by plugin to complete modify volume request.
1006+
// This field is OPTIONAL. Refer to the `Secrets Requirements`
1007+
// section on how to use this field.
1008+
map<string, string> secrets = 2 [(csi_secret) = true];
1009+
1010+
// Plugin specific parameters to apply, passed in as opaque key-value
1011+
// pairs. This field is OPTIONAL. The Plugin is responsible for
1012+
// parsing and validating these parameters. COs will treat these
1013+
// as opaque. COs MUST specify the intended value of every mutable
1014+
// parameter. Absent keys that were previously assigned a value MUST
1015+
// be interpreted as a deletion of the key from the set of mutable
1016+
// parameters.
1017+
map<string, string> mutable_parameters = 3;
1018+
}
1019+
1020+
message ControllerModifyVolumeResponse {
1021+
option (alpha_message) = true;
1022+
}
1023+
9771024
message GetCapacityRequest {
9781025
// If specified, the Plugin SHALL report the capacity of the storage
9791026
// that can be used to provision volumes that satisfy ALL of the
@@ -1113,6 +1160,10 @@ message ControllerServiceCapability {
11131160
// SINGLE_NODE_SINGLE_WRITER and/or SINGLE_NODE_MULTI_WRITER are
11141161
// supported, in order to permit older COs to continue working.
11151162
SINGLE_NODE_MULTI_WRITER = 13 [(alpha_enum_value) = true];
1163+
1164+
// Indicates the SP supports modifying volume with mutable
1165+
// parameters. See ControllerModifyVolume for details.
1166+
MODIFY_VOLUME = 14 [(alpha_enum_value) = true];
11161167
}
11171168

11181169
Type type = 1;

0 commit comments

Comments
 (0)