@@ -111,8 +111,8 @@ service Controller {
111
111
option (alpha_method) = true ;
112
112
}
113
113
114
- rpc ModifyVolumeGroup ( ModifyVolumeGroupRequest )
115
- returns (ModifyVolumeGroupResponse ) {
114
+ rpc ModifyVolumeGroupMembership ( ModifyVolumeGroupMembershipRequest )
115
+ returns (ModifyVolumeGroupMembershipResponse ) {
116
116
option (alpha_method) = true ;
117
117
}
118
118
@@ -390,9 +390,11 @@ message CreateVolumeRequest {
390
390
// choose where the provisioned volume is accessible from.
391
391
TopologyRequirement accessibility_requirements = 7 ;
392
392
393
- // The ID of the volume group where the volume will be added to.
393
+ // The IDs of the volume groups where the volume will be added to.
394
+ // Note that it is possible for a volume to be placed in one or more
395
+ // groups on the storage backend even if this field is not specified.
394
396
// This field is OPTIONAL.
395
- string volume_group_id = 8 ;
397
+ repeated string volume_group_id = 8 [ (alpha_field) = true ] ;
396
398
}
397
399
398
400
// Specifies what source the volume will be created from. One of the
@@ -594,9 +596,11 @@ message Volume {
594
596
// in the "region" "R1".
595
597
repeated Topology accessible_topology = 5 ;
596
598
597
- // The ID of the volume group where the volume belongs to.
599
+ // The IDs of the volume groups where the volume belongs to.
600
+ // Note that it is possible for a volume to be placed in one or more
601
+ // groups on the storage backend even if this field is not specified.
598
602
// This field is OPTIONAL.
599
- string volume_group_id = 6 ;
603
+ repeated string volume_group_id = 6 [ (alpha_field) = true ] ;
600
604
}
601
605
602
606
message TopologyRequirement {
@@ -1101,14 +1105,14 @@ message VolumeGroup {
1101
1105
1102
1106
// Underlying volumes in this group. The same definition in CSI
1103
1107
// Volume.
1104
- // This field is REQUIRED .
1108
+ // This field is OPTIONAL .
1105
1109
// To support the creation of an empty group, this list can be empty.
1106
1110
// However, this field is not empty in the following cases:
1107
1111
// - Response from ListVolumeGroups or ControllerGetVolumeGroup if the
1108
1112
// VolumeGroup is not empty.
1109
- // - Response from ModifyVolumeGroup if the VolumeGroup is not
1110
- // empty after modification.
1111
- repeated . csi.v1. Volume volumes = 3 ;
1113
+ // - Response from ModifyVolumeGroupMembership if the
1114
+ // VolumeGroup is not empty after modification.
1115
+ repeated Volume volumes = 3 ;
1112
1116
}
1113
1117
message DeleteVolumeGroupRequest {
1114
1118
option (alpha_message) = true ;
@@ -1117,8 +1121,8 @@ message DeleteVolumeGroupRequest {
1117
1121
// This field is REQUIRED.
1118
1122
string volume_group_id = 1 ;
1119
1123
1120
- // Secrets required by plugin to complete volume group deletion
1121
- // request.
1124
+ // Secrets required by plugin to complete volume group
1125
+ // deletion request.
1122
1126
// This field is OPTIONAL. Refer to the `Secrets Requirements`
1123
1127
// section on how to use this field.
1124
1128
map <string , string > secrets = 2 [(csi_secret) = true ];
@@ -1128,7 +1132,7 @@ message DeleteVolumeGroupResponse {
1128
1132
option (alpha_message) = true ;
1129
1133
// Intentionally empty.
1130
1134
}
1131
- message ModifyVolumeGroupRequest {
1135
+ message ModifyVolumeGroupMembershipRequest {
1132
1136
option (alpha_message) = true ;
1133
1137
1134
1138
// The ID of the volume group to be modified.
@@ -1151,7 +1155,7 @@ message ModifyVolumeGroupRequest {
1151
1155
map <string , string > secrets = 3 [(csi_secret) = true ];
1152
1156
}
1153
1157
1154
- message ModifyVolumeGroupResponse {
1158
+ message ModifyVolumeGroupMembershipResponse {
1155
1159
option (alpha_message) = true ;
1156
1160
1157
1161
// Contains all attributes of the modified volume group.
@@ -1240,14 +1244,17 @@ message CreateVolumeGroupSnapshotRequest {
1240
1244
// take a group snapshot
1241
1245
repeated string volume_ids = 3 ;
1242
1246
1243
- // secrets required for snapshot creation (pulled from
1244
- // VolumeSnapshotClass)
1245
- // This field is OPTIONAL.
1247
+ // Secrets required by plugin to complete volume group snapshot
1248
+ // creation request.
1249
+ // This field is OPTIONAL. Refer to the `Secrets Requirements`
1250
+ // section on how to use this field.
1246
1251
map <string , string > secrets = 4 [(.csi .v1.csi_secret ) = true ];
1247
1252
1248
- // params passed from VolumeSnapshotClass
1249
- // This field is OPTIONAL.
1253
+ // Plugin specific parameters passed in as opaque key-value pairs.
1254
+ // This field is OPTIONAL. The Plugin is responsible for parsing and
1255
+ // validating these parameters. COs will treat these as opaque.
1250
1256
map <string , string > parameters = 5 ;
1257
+
1251
1258
}
1252
1259
1253
1260
message CreateVolumeGroupSnapshotResponse {
@@ -1268,7 +1275,7 @@ message VolumeGroupSnapshot {
1268
1275
// A list of snapshots created. Snapshot is the same
1269
1276
// definition as Snapshot definition used in CSI.
1270
1277
// This field is OPTIONAL.
1271
- repeated . csi.v1. Snapshot snapshots = 2 ;
1278
+ repeated Snapshot snapshots = 2 ;
1272
1279
1273
1280
// Identity information for the source volume group. Currently, only
1274
1281
// support the case that source is volume group. This field is
@@ -1279,8 +1286,7 @@ message VolumeGroupSnapshot {
1279
1286
// This field is REQUIRED.
1280
1287
bool ready_to_use = 4 ;
1281
1288
1282
- // Timestamp when the point-in-time consistency group snapshot is
1283
- // taken.
1289
+ // Timestamp when the volume group snapshot is taken.
1284
1290
// This field is REQUIRED.
1285
1291
.google.protobuf.Timestamp creation_time = 5 ;
1286
1292
@@ -1458,30 +1464,35 @@ message ControllerServiceCapability {
1458
1464
// Indicates that the controller plugin supports adding an
1459
1465
// existing volume to a volume group and removing a volume from
1460
1466
// a volume group without deleting it.
1461
- VOLUME_GROUP_ADD_REMOVE_EXISTING_VOLUME = 15
1467
+ MODIFY_VOLUME_GROUP_MEMBERSHIP = 15
1468
+ [(alpha_enum_value) = true ];
1469
+
1470
+ // Indicates that the controller plugin supports creating and
1471
+ // deleting a volume group snapshot.
1472
+ CREATE_DELETE_VOLUME_GROUP_SNAPSHOT = 16
1462
1473
[(alpha_enum_value) = true ];
1463
1474
1464
1475
// Indicates whether the controller plugin supports creating a
1465
1476
// volume from an individual volume snapshot if the volume
1466
1477
// snapshot is part of a VolumeGroupSnapshot.
1467
1478
// Use cases: selective restore, advanced recovery, etc.
1468
- INDIVIDUAL_SNAPSHOT_RESTORE = 16 [(alpha_enum_value) = true ];
1479
+ INDIVIDUAL_SNAPSHOT_RESTORE = 17 [(alpha_enum_value) = true ];
1469
1480
1470
1481
// Indicates that the controller plugin supports getting details
1471
1482
// of a volume group.
1472
- GET_VOLUME_GROUP = 17 [(alpha_enum_value) = true ];
1483
+ GET_VOLUME_GROUP = 18 [(alpha_enum_value) = true ];
1473
1484
1474
1485
// Indicates that the controller plugin supports getting details
1475
1486
// of a volume group snapshot.
1476
- GET_VOLUME_GROUP_SNAPSHOT = 18 [(alpha_enum_value) = true ];
1487
+ GET_VOLUME_GROUP_SNAPSHOT = 19 [(alpha_enum_value) = true ];
1477
1488
1478
1489
// Indicates that the controller plugin supports getting details
1479
1490
// of a list of volume groups.
1480
- LIST_VOLUME_GROUPS = 19 [(alpha_enum_value) = true ];
1491
+ LIST_VOLUME_GROUPS = 20 [(alpha_enum_value) = true ];
1481
1492
1482
1493
// Indicates that the controller plugin supports getting details
1483
1494
// of a list of volume group snapshots.
1484
- LIST_VOLUME_GROUP_SNAPSHOTS = 20 [(alpha_enum_value) = true ];
1495
+ LIST_VOLUME_GROUP_SNAPSHOTS = 21 [(alpha_enum_value) = true ];
1485
1496
}
1486
1497
1487
1498
Type type = 1 ;
0 commit comments