@@ -100,6 +100,11 @@ service Controller {
100
100
returns (ControllerGetVolumeResponse ) {
101
101
option (alpha_method) = true ;
102
102
}
103
+
104
+ rpc ControllerModifyVolume (ControllerModifyVolumeRequest )
105
+ returns (ControllerModifyVolumeResponse ) {
106
+ option (alpha_method) = true ;
107
+ }
103
108
}
104
109
105
110
service GroupController {
@@ -350,9 +355,10 @@ message CreateVolumeRequest {
350
355
// This field is REQUIRED.
351
356
repeated VolumeCapability volume_capabilities = 3 ;
352
357
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.
356
362
map <string , string > parameters = 4 ;
357
363
358
364
// Secrets required by plugin to complete volume creation request.
@@ -376,6 +382,19 @@ message CreateVolumeRequest {
376
382
// VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability, the SP MAY
377
383
// choose where the provisioned volume is accessible from.
378
384
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 ];
379
398
}
380
399
381
400
// Specifies what source the volume will be created from. One of the
@@ -849,6 +868,10 @@ message ValidateVolumeCapabilitiesRequest {
849
868
// This field is OPTIONAL. Refer to the `Secrets Requirements`
850
869
// section on how to use this field.
851
870
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 ];
852
875
}
853
876
854
877
message ValidateVolumeCapabilitiesResponse {
@@ -864,6 +887,10 @@ message ValidateVolumeCapabilitiesResponse {
864
887
// The volume creation parameters validated by the plugin.
865
888
// This field is OPTIONAL.
866
889
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 ];
867
894
}
868
895
869
896
// Confirmed indicates to the CO the set of capabilities that the
@@ -974,6 +1001,33 @@ message ControllerGetVolumeResponse {
974
1001
// This field is REQUIRED.
975
1002
VolumeStatus status = 2 ;
976
1003
}
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
+
977
1031
message GetCapacityRequest {
978
1032
// If specified, the Plugin SHALL report the capacity of the storage
979
1033
// that can be used to provision volumes that satisfy ALL of the
@@ -1113,6 +1167,10 @@ message ControllerServiceCapability {
1113
1167
// SINGLE_NODE_SINGLE_WRITER and/or SINGLE_NODE_MULTI_WRITER are
1114
1168
// supported, in order to permit older COs to continue working.
1115
1169
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 ];
1116
1174
}
1117
1175
1118
1176
Type type = 1 ;
0 commit comments