@@ -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,15 @@ 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 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 MUST treat these as if they take precedence
390
+ // over the parameters field.
391
+ // COs SHALL NOT provide any values in mutable_parameters if the
392
+ // capability is not enabled.
393
+ map <string , string > mutable_parameters = 8 [(alpha_field) = true ];
379
394
}
380
395
381
396
// Specifies what source the volume will be created from. One of the
@@ -849,6 +864,10 @@ message ValidateVolumeCapabilitiesRequest {
849
864
// This field is OPTIONAL. Refer to the `Secrets Requirements`
850
865
// section on how to use this field.
851
866
map <string , string > secrets = 5 [(csi_secret) = true ];
867
+
868
+ // See CreateVolumeRequest.mutable_parameters.
869
+ // This field is OPTIONAL.
870
+ map <string , string > mutable_parameters = 6 [(alpha_field) = true ];
852
871
}
853
872
854
873
message ValidateVolumeCapabilitiesResponse {
@@ -864,6 +883,10 @@ message ValidateVolumeCapabilitiesResponse {
864
883
// The volume creation parameters validated by the plugin.
865
884
// This field is OPTIONAL.
866
885
map <string , string > parameters = 3 ;
886
+
887
+ // The volume creation mutable_parameters validated by the plugin.
888
+ // This field is OPTIONAL.
889
+ map <string , string > mutable_parameters = 4 [(alpha_field) = true ];
867
890
}
868
891
869
892
// Confirmed indicates to the CO the set of capabilities that the
@@ -974,6 +997,32 @@ message ControllerGetVolumeResponse {
974
997
// This field is REQUIRED.
975
998
VolumeStatus status = 2 ;
976
999
}
1000
+ message ControllerModifyVolumeRequest {
1001
+ option (alpha_message) = true ;
1002
+
1003
+ // Contains identity information for the existing volume.
1004
+ // This field is REQUIRED.
1005
+ string volume_id = 1 ;
1006
+
1007
+ // Secrets required by plugin to complete modify volume request.
1008
+ // This field is OPTIONAL. Refer to the `Secrets Requirements`
1009
+ // section on how to use this field.
1010
+ map <string , string > secrets = 2 [(csi_secret) = true ];
1011
+
1012
+ // Plugin specific parameters to apply, passed in as opaque key-value
1013
+ // pairs. This field is OPTIONAL. The Plugin is responsible for
1014
+ // parsing and validating these parameters. COs will treat these
1015
+ // as opaque. COs MUST specify the intended value of every mutable
1016
+ // parameter. Absent keys that were previously assigned a value MUST
1017
+ // be interpreted as a deletion of the key from the set of mutable
1018
+ // parameters.
1019
+ map <string , string > mutable_parameters = 3 ;
1020
+ }
1021
+
1022
+ message ControllerModifyVolumeResponse {
1023
+ option (alpha_message) = true ;
1024
+ }
1025
+
977
1026
message GetCapacityRequest {
978
1027
// If specified, the Plugin SHALL report the capacity of the storage
979
1028
// that can be used to provision volumes that satisfy ALL of the
@@ -1113,6 +1162,10 @@ message ControllerServiceCapability {
1113
1162
// SINGLE_NODE_SINGLE_WRITER and/or SINGLE_NODE_MULTI_WRITER are
1114
1163
// supported, in order to permit older COs to continue working.
1115
1164
SINGLE_NODE_MULTI_WRITER = 13 [(alpha_enum_value) = true ];
1165
+
1166
+ // Indicates the SP supports modifying volume with mutable
1167
+ // parameters. See ControllerModifyVolume for details.
1168
+ MODIFY_VOLUME = 14 [(alpha_enum_value) = true ];
1116
1169
}
1117
1170
1118
1171
Type type = 1 ;
0 commit comments