@@ -763,8 +763,18 @@ message ControllerUnpublishVolumeRequest {
763
763
// This field is OPTIONAL. Refer to the `Secrets Requirements`
764
764
// section on how to use this field.
765
765
map <string , string > secrets = 3 [(csi_secret) = true ];
766
- }
767
766
767
+ // Indicates SP MUST make the volume inacessible to the node or nodes
768
+ // it is being unpublished from. Any attempt to read or write data
769
+ // to a volume from a node that has been fenced MUST NOT succeed,
770
+ // even if the volume remains staged and/or published on the node.
771
+ // CO MUST NOT set this field to true unless SP has the
772
+ // UNPUBLISH_FENCE controller capability.
773
+ // The SP MAY make the volume inaccessible even when this field is
774
+ // false.
775
+ // This is an OPTIONAL field.
776
+ bool fence = 4 ;
777
+ }
768
778
message ControllerUnpublishVolumeResponse {
769
779
// Intentionally empty.
770
780
}
@@ -1044,6 +1054,10 @@ message ControllerServiceCapability {
1044
1054
// This enables COs to, for example, fetch per volume
1045
1055
// condition after a volume is provisioned.
1046
1056
GET_VOLUME = 12 [(alpha_enum_value) = true ];
1057
+
1058
+ // Indicates the SP supports ControllerUnpublishVolume.fence
1059
+ // field.
1060
+ UNPUBLISH_FENCE = 13 ;
1047
1061
}
1048
1062
1049
1063
Type type = 1 ;
@@ -1281,6 +1295,13 @@ message NodeUnstageVolumeRequest {
1281
1295
// system/filesystem, but, at a minimum, SP MUST accept a max path
1282
1296
// length of at least 128 bytes.
1283
1297
string staging_target_path = 2 ;
1298
+
1299
+ // Indicates that the SP should prefer to successfully unstage the
1300
+ // volume, even if data loss would occur as a result.
1301
+ // CO MUST NOT set this field to true unless SP has the
1302
+ // FORCE_UNPUBLISH node capability.
1303
+ // This in an OPTIONAL field.
1304
+ bool force = 3 ;
1284
1305
}
1285
1306
1286
1307
message NodeUnstageVolumeResponse {
@@ -1365,6 +1386,13 @@ message NodeUnpublishVolumeRequest {
1365
1386
// system/filesystem, but, at a minimum, SP MUST accept a max path
1366
1387
// length of at least 128 bytes.
1367
1388
string target_path = 2 ;
1389
+
1390
+ // Indicates that the SP should prefer to successfully unpublish the
1391
+ // volume, even if data loss would occur as a result.
1392
+ // CO MUST NOT set this field to true unless SP has the
1393
+ // FORCE_UNPUBLISH node capability.
1394
+ // This in an OPTIONAL field.
1395
+ bool force = 3 ;
1368
1396
}
1369
1397
1370
1398
message NodeUnpublishVolumeResponse {
@@ -1476,6 +1504,11 @@ message NodeServiceCapability {
1476
1504
// Note that, for alpha, `VolumeCondition` is intended to be
1477
1505
// informative for humans only, not for automation.
1478
1506
VOLUME_CONDITION = 4 [(alpha_enum_value) = true ];
1507
+ // Indicates that the node supports the NodeUnpublishVolume.force
1508
+ // field. Also indicates that the node supports the
1509
+ // NodeUnstageVolume.force field if it also has the
1510
+ // STAGE_UNSTAGE_VOLUME capability.
1511
+ FORCE_UNPUBLISH = 5 ;
1479
1512
}
1480
1513
1481
1514
Type type = 1 ;
0 commit comments