@@ -173,14 +173,21 @@ message CreateVolumeRequest {
173
173
// The suggested name for the storage space. This field is REQUIRED.
174
174
// It serves two purposes:
175
175
// 1) Idempotency - This name is generated by the CO to achieve
176
- // idempotency. If `CreateVolume` fails, the volume may or may not
177
- // be provisioned. In this case, the CO may call `CreateVolume`
178
- // again, with the same name, to ensure the volume exists. The
179
- // Plugin should ensure that multiple `CreateVolume` calls for the
180
- // same name do not result in more than one piece of storage
181
- // provisioned corresponding to that name. If a Plugin is unable to
182
- // enforce idempotency, the CO's error recovery logic could result
183
- // in multiple (unused) volumes being provisioned.
176
+ // idempotency. The Plugin should ensure that multiple
177
+ // `CreateVolume` calls for the same name do not result in more
178
+ // than one piece of storage provisioned corresponding to that
179
+ // name. If a Plugin is unable to enforce idempotency, the CO's
180
+ // error recovery logic could result in multiple (unused) volumes
181
+ // being provisioned.
182
+ // In the case of error, the CO MUST handle the gRPC error codes
183
+ // per the recovery behavior defined in the "CreateVolume Errors"
184
+ // section below.
185
+ // The CO is responsible for cleaning up volumes it provisioned
186
+ // that it no longer needs. If the CO is uncertain whether a volume
187
+ // was provisioned or not when a `CreateVolume` call fails, the CO
188
+ // MAY call `CreateVolume` again, with the same name, to ensure the
189
+ // volume exists and to retrieve the volume's `volume_id` (unless
190
+ // otherwise prohibited by "CreateVolume Errors").
184
191
// 2) Suggested name - Some storage systems allow callers to specify
185
192
// an identifier by which to refer to the newly provisioned
186
193
// storage. If a storage system supports this, it can optionally
0 commit comments