Skip to content

Commit 7298e36

Browse files
committed
Add new flow
1 parent f533296 commit 7298e36

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

keps/sig-storage/3751-volume-attributes-class/README.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
- [Implementation & Handling Failure](#implementation--handling-failure)
3838
- [Handling of non-final errors](#handling-of-non-final-errors)
3939
- [Handling of final errors](#handling-of-final-errors)
40+
- [Transition from VAC(A) to VAC(B)](#transition-from-vaca-to-vacb)
41+
- [Transition from nil-VAC to VAC(A)](#transition-from-nil-vac-to-vaca)
4042
- [Handling of infeasible errors](#handling-of-infeasible-errors)
4143
- [Test Plan](#test-plan)
4244
- [Prerequisite testing updates](#prerequisite-testing-updates)
@@ -712,16 +714,23 @@ In other words, `external-resizer` will keep working towards `targetVolumeAttrib
712714

713715
#### Handling of final errors
714716

715-
If volume modification to a VAC is failing with a final error, then users can try rolling forward to a new VAC. This will reset `targetVolumeAttributesClassName` once external-resizer starts processing the request. If user sets VAC to `nil` or `empty` while previous modification to a VAC failed with a final error, then external-resizer
716-
should keep working towards reconciling to previously specified VAC, now recorded in `targetVolumeAttributesClassName`.
717+
##### Transition from VAC(A) to VAC(B)
718+
719+
If volume modification to a VAC is failing with a final error and users wishes to either cancel and move to a different VAC, then they MUST first set VAC of PVC to A. Only after transition to original VAC(A) is successful, is the user allowed to move to a different VAC.
720+
721+
##### Transition from nil-VAC to VAC(A)
722+
723+
If volume modification to a VAC is failing with final but not-infeasible error, then external-resizer will keep trying to reconcile to VAC(A), regardless of any user initiated changes in `.spec.volumeAttributeClassName`. Only after transition to VAC(A) is successful, the user is allowed to move the PVC to a different VAC.
717724

718725
#### Handling of infeasible errors
719726

720727
If volume modification to a VAC is failing with infeasible error, then users can either set VAC to previously specified value in `status.currentVolumeAttributesClass` or set to `nil` if no VAC was specified. In both the cases, external-resizer will stop trying to reconcile the volume modification.
721728

722729
Please note if PVC already had a `currentVolumeAttributesClass` in its status, then setting VAC to `nil` is not allowed.
723730

724-
It is possible that if there were one or more partial volume modifications that happened before on the volume, they will not be undone when this happens because for infeasible errors no `ControllerModifyVolume` will be called when user resets the VAC. This mechanism exists only to prevent perpetual call to `ControllerModifyVolume` for volume modifications which are never going to succeed. Storage providers and users are recommended to roll forward to different VAC, if desired behaviour is resetting the VAC to some pre-specified value for all `mutable_parameters`.
731+
User can also set VAC to a different VAC if transition to a VAC fails with a infeasible error. This is allowed with the assumption that, volume was not modified when previous VAC application failed with a infeasible error.
732+
733+
![Error recovery flow](./modify-volume.png)
725734

726735

727736
### Test Plan
269 KB
Loading

0 commit comments

Comments
 (0)