Skip to content

Commit 93e563b

Browse files
authored
spec: document create/delete/list interaction (#154)
1 parent ec29890 commit 93e563b

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

spec.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -997,6 +997,19 @@ message ControllerServiceCapability {
997997

998998
If the plugin is unable to complete the ControllerGetCapabilities call successfully, it MUST return a non-ok gRPC code in the gRPC status.
999999

1000+
#### RPC Interactions
1001+
1002+
##### `CreateVolume`, `DeleteVolume`, `ListVolumes`
1003+
1004+
It is worth noting that the plugin-generated `volume_id` is a REQUIRED field for the `DeleteVolume` RPC, as opposed to the CO-generated volume `name` that is REQUIRED for the `CreateVolume` RPC: these fields MAY NOT contain the same value.
1005+
If a `CreateVolume` operation times out, leaving the CO without an ID with which to reference a volume, and the CO *also* decides that it no longer needs/wants the volume in question then the CO MAY choose one of the following paths:
1006+
1007+
1. Replay the `CreateVolume` RPC that timed out; upon success execute `DeleteVolume` using the known volume ID (from the response to `CreateVolume`).
1008+
2. Execute the `ListVolumes` RPC to possibly obtain a volume ID that may be used to execute a `DeleteVolume` RPC; upon success execute `DeleteVolume`.
1009+
3. The CO takes no further action regarding the timed out RPC, a volume is possibly leaked and the operator/user is expected to clean up.
1010+
1011+
It is NOT REQUIRED for a controller plugin to implement the `LIST_VOLUMES` capability if it supports the `CREATE_DELETE_VOLUME` capability: the onus is upon the CO to take into consideration the full range of plugin capabilities before deciding how to proceed in the above scenario.
1012+
10001013
### Node Service RPC
10011014

10021015
#### `NodePublishVolume`

0 commit comments

Comments
 (0)