Skip to content

Commit d6966c8

Browse files
committed
Add force detach
Add new controller capability: * UNPUBLISH_FENCE Add new node capabilitiy: * FORCE_UNPUBLISH
1 parent da58351 commit d6966c8

File tree

3 files changed

+413
-280
lines changed

3 files changed

+413
-280
lines changed

csi.proto

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,8 +763,18 @@ message ControllerUnpublishVolumeRequest {
763763
// This field is OPTIONAL. Refer to the `Secrets Requirements`
764764
// section on how to use this field.
765765
map<string, string> secrets = 3 [(csi_secret) = true];
766-
}
767766

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+
}
768778
message ControllerUnpublishVolumeResponse {
769779
// Intentionally empty.
770780
}
@@ -1044,6 +1054,10 @@ message ControllerServiceCapability {
10441054
// This enables COs to, for example, fetch per volume
10451055
// condition after a volume is provisioned.
10461056
GET_VOLUME = 12 [(alpha_enum_value) = true];
1057+
1058+
// Indicates the SP supports ControllerUnpublishVolume.fence
1059+
// field.
1060+
UNPUBLISH_FENCE = 13;
10471061
}
10481062

10491063
Type type = 1;
@@ -1281,6 +1295,13 @@ message NodeUnstageVolumeRequest {
12811295
// system/filesystem, but, at a minimum, SP MUST accept a max path
12821296
// length of at least 128 bytes.
12831297
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;
12841305
}
12851306

12861307
message NodeUnstageVolumeResponse {
@@ -1365,6 +1386,13 @@ message NodeUnpublishVolumeRequest {
13651386
// system/filesystem, but, at a minimum, SP MUST accept a max path
13661387
// length of at least 128 bytes.
13671388
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;
13681396
}
13691397

13701398
message NodeUnpublishVolumeResponse {
@@ -1476,6 +1504,11 @@ message NodeServiceCapability {
14761504
// Note that, for alpha, `VolumeCondition` is intended to be
14771505
// informative for humans only, not for automation.
14781506
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;
14791512
}
14801513

14811514
Type type = 1;

0 commit comments

Comments
 (0)