@@ -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
105110service 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
854877message 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+
9771031message 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