Rename ReizeFailed conditions to ResizeInfeasible

This commit is contained in:
Hemant Kumar 2024-07-10 12:02:54 -04:00
parent cb1fa3fd73
commit 49e82fd120
8 changed files with 26 additions and 24 deletions

View File

@ -572,18 +572,19 @@ const (
// State set when resize controller starts resizing the volume in control-plane // State set when resize controller starts resizing the volume in control-plane
PersistentVolumeClaimControllerResizeInProgress ClaimResourceStatus = "ControllerResizeInProgress" PersistentVolumeClaimControllerResizeInProgress ClaimResourceStatus = "ControllerResizeInProgress"
// State set when resize has failed in resize controller with a terminal error. // State set when resize has failed in resize controller with a terminal unrecoverable error.
// Transient errors such as timeout should not set this status and should leave allocatedResourceStatus // Transient errors such as timeout should not set this status and should leave allocatedResourceStatus
// unmodified, so as resize controller can resume the volume expansion. // unmodified, so as resize controller can resume the volume expansion.
PersistentVolumeClaimControllerResizeFailed ClaimResourceStatus = "ControllerResizeFailed" PersistentVolumeClaimControllerResizeInfeasible ClaimResourceStatus = "ControllerResizeInfeasible"
// State set when resize controller has finished resizing the volume but further resizing of volume // State set when resize controller has finished resizing the volume but further resizing of volume
// is needed on the node. // is needed on the node.
PersistentVolumeClaimNodeResizePending ClaimResourceStatus = "NodeResizePending" PersistentVolumeClaimNodeResizePending ClaimResourceStatus = "NodeResizePending"
// State set when kubelet starts resizing the volume. // State set when kubelet starts resizing the volume.
PersistentVolumeClaimNodeResizeInProgress ClaimResourceStatus = "NodeResizeInProgress" PersistentVolumeClaimNodeResizeInProgress ClaimResourceStatus = "NodeResizeInProgress"
// State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed // State set when resizing has failed in kubelet with a terminal unrecoverable error. Transient errors
PersistentVolumeClaimNodeResizeFailed ClaimResourceStatus = "NodeResizeFailed" // shouldn't set this status
PersistentVolumeClaimNodeResizeInfeasible ClaimResourceStatus = "NodeResizeInfeasible"
) )
// +enum // +enum

View File

@ -2481,10 +2481,10 @@ func validatePersistentVolumeClaimResourceKey(value string, fldPath *field.Path)
} }
var resizeStatusSet = sets.New(core.PersistentVolumeClaimControllerResizeInProgress, var resizeStatusSet = sets.New(core.PersistentVolumeClaimControllerResizeInProgress,
core.PersistentVolumeClaimControllerResizeFailed, core.PersistentVolumeClaimControllerResizeInfeasible,
core.PersistentVolumeClaimNodeResizePending, core.PersistentVolumeClaimNodeResizePending,
core.PersistentVolumeClaimNodeResizeInProgress, core.PersistentVolumeClaimNodeResizeInProgress,
core.PersistentVolumeClaimNodeResizeFailed) core.PersistentVolumeClaimNodeResizeInfeasible)
// ValidatePersistentVolumeClaimStatusUpdate validates an update to status of a PersistentVolumeClaim // ValidatePersistentVolumeClaimStatusUpdate validates an update to status of a PersistentVolumeClaim
func ValidatePersistentVolumeClaimStatusUpdate(newPvc, oldPvc *core.PersistentVolumeClaim, validationOpts PersistentVolumeClaimSpecValidationOptions) field.ErrorList { func ValidatePersistentVolumeClaimStatusUpdate(newPvc, oldPvc *core.PersistentVolumeClaim, validationOpts PersistentVolumeClaimSpecValidationOptions) field.ErrorList {

View File

@ -18971,7 +18971,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) {
}, },
}, core.PersistentVolumeClaimStatus{ }, core.PersistentVolumeClaimStatus{
AllocatedResourceStatuses: map[core.ResourceName]core.ClaimResourceStatus{ AllocatedResourceStatuses: map[core.ResourceName]core.ClaimResourceStatus{
core.ResourceStorage: core.PersistentVolumeClaimControllerResizeFailed, core.ResourceStorage: core.PersistentVolumeClaimControllerResizeInfeasible,
}, },
}) })
@ -19001,7 +19001,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) {
}, },
}, core.PersistentVolumeClaimStatus{ }, core.PersistentVolumeClaimStatus{
AllocatedResourceStatuses: map[core.ResourceName]core.ClaimResourceStatus{ AllocatedResourceStatuses: map[core.ResourceName]core.ClaimResourceStatus{
core.ResourceStorage: core.PersistentVolumeClaimNodeResizeFailed, core.ResourceStorage: core.PersistentVolumeClaimNodeResizeInfeasible,
}, },
}) })
@ -19045,7 +19045,7 @@ func TestValidatePersistentVolumeClaimStatusUpdate(t *testing.T) {
validResizeKeyCustom: resource.MustParse("10Gi"), validResizeKeyCustom: resource.MustParse("10Gi"),
}, },
AllocatedResourceStatuses: map[core.ResourceName]core.ClaimResourceStatus{ AllocatedResourceStatuses: map[core.ResourceName]core.ClaimResourceStatus{
core.ResourceStorage: core.PersistentVolumeClaimControllerResizeFailed, core.ResourceStorage: core.PersistentVolumeClaimControllerResizeInfeasible,
validResizeKeyCustom: core.PersistentVolumeClaimControllerResizeInProgress, validResizeKeyCustom: core.PersistentVolumeClaimControllerResizeInProgress,
}, },
}) })

View File

@ -1718,7 +1718,7 @@ func (og *operationGenerator) expandAndRecoverFunction(resizeOpts inTreeResizeOp
case v1.PersistentVolumeClaimControllerResizeInProgress, case v1.PersistentVolumeClaimControllerResizeInProgress,
v1.PersistentVolumeClaimNodeResizePending, v1.PersistentVolumeClaimNodeResizePending,
v1.PersistentVolumeClaimNodeResizeInProgress, v1.PersistentVolumeClaimNodeResizeInProgress,
v1.PersistentVolumeClaimNodeResizeFailed: v1.PersistentVolumeClaimNodeResizeInfeasible:
if allocatedSize != nil { if allocatedSize != nil {
newSize = *allocatedSize newSize = *allocatedSize
} }
@ -1742,14 +1742,14 @@ func (og *operationGenerator) expandAndRecoverFunction(resizeOpts inTreeResizeOp
// we don't need to do any work. We could be here because of a spurious update event. // we don't need to do any work. We could be here because of a spurious update event.
// This is case #1 // This is case #1
return resizeResponse return resizeResponse
case v1.PersistentVolumeClaimNodeResizeFailed: case v1.PersistentVolumeClaimNodeResizeInfeasible:
// This is case#3 // This is case#3
pvc, err = og.markForPendingNodeExpansion(pvc, pv) pvc, err = og.markForPendingNodeExpansion(pvc, pv)
resizeResponse.pvc = pvc resizeResponse.pvc = pvc
resizeResponse.err = err resizeResponse.err = err
return resizeResponse return resizeResponse
case v1.PersistentVolumeClaimControllerResizeInProgress, case v1.PersistentVolumeClaimControllerResizeInProgress,
v1.PersistentVolumeClaimControllerResizeFailed: v1.PersistentVolumeClaimControllerResizeInfeasible:
// This is case#2 or it could also be case#4 when user manually shrunk the PVC // This is case#2 or it could also be case#4 when user manually shrunk the PVC
// after expanding it. // after expanding it.
if allocatedSize != nil { if allocatedSize != nil {

View File

@ -238,7 +238,7 @@ func MarkFSResizeFinished(
// of volumes which are in failed state. // of volumes which are in failed state.
func MarkNodeExpansionFailed(pvc *v1.PersistentVolumeClaim, kubeClient clientset.Interface) (*v1.PersistentVolumeClaim, error) { func MarkNodeExpansionFailed(pvc *v1.PersistentVolumeClaim, kubeClient clientset.Interface) (*v1.PersistentVolumeClaim, error) {
newPVC := pvc.DeepCopy() newPVC := pvc.DeepCopy()
newPVC = mergeStorageResourceStatus(newPVC, v1.PersistentVolumeClaimNodeResizeFailed) newPVC = mergeStorageResourceStatus(newPVC, v1.PersistentVolumeClaimNodeResizeInfeasible)
patchBytes, err := createPVCPatch(pvc, newPVC, false /* addResourceVersionCheck */) patchBytes, err := createPVCPatch(pvc, newPVC, false /* addResourceVersionCheck */)
if err != nil { if err != nil {

View File

@ -166,8 +166,8 @@ func TestResizeFunctions(t *testing.T) {
}, },
{ {
name: "mark fs resize, when other resource statuses are present", name: "mark fs resize, when other resource statuses are present",
pvc: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed).get(), pvc: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeInfeasible).get(),
expectedPVC: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed). expectedPVC: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeInfeasible).
withStorageResourceStatus(v1.PersistentVolumeClaimNodeResizePending).get(), withStorageResourceStatus(v1.PersistentVolumeClaimNodeResizePending).get(),
testFunc: func(pvc *v1.PersistentVolumeClaim, c clientset.Interface, _ resource.Quantity) (*v1.PersistentVolumeClaim, error) { testFunc: func(pvc *v1.PersistentVolumeClaim, c clientset.Interface, _ resource.Quantity) (*v1.PersistentVolumeClaim, error) {
return MarkForFSResize(pvc, c) return MarkForFSResize(pvc, c)
@ -183,9 +183,9 @@ func TestResizeFunctions(t *testing.T) {
}, },
{ {
name: "mark resize finished", name: "mark resize finished",
pvc: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed). pvc: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeInfeasible).
withStorageResourceStatus(v1.PersistentVolumeClaimNodeResizePending).get(), withStorageResourceStatus(v1.PersistentVolumeClaimNodeResizePending).get(),
expectedPVC: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeFailed). expectedPVC: basePVC.withResourceStatus(v1.ResourceCPU, v1.PersistentVolumeClaimControllerResizeInfeasible).
withStorageResourceStatus("").get(), withStorageResourceStatus("").get(),
testFunc: func(pvc *v1.PersistentVolumeClaim, i clientset.Interface, q resource.Quantity) (*v1.PersistentVolumeClaim, error) { testFunc: func(pvc *v1.PersistentVolumeClaim, i clientset.Interface, q resource.Quantity) (*v1.PersistentVolumeClaim, error) {
return MarkFSResizeFinished(pvc, q, i) return MarkFSResizeFinished(pvc, q, i)

View File

@ -624,18 +624,19 @@ const (
// State set when resize controller starts resizing the volume in control-plane. // State set when resize controller starts resizing the volume in control-plane.
PersistentVolumeClaimControllerResizeInProgress ClaimResourceStatus = "ControllerResizeInProgress" PersistentVolumeClaimControllerResizeInProgress ClaimResourceStatus = "ControllerResizeInProgress"
// State set when resize has failed in resize controller with a terminal error. // State set when resize has failed in resize controller with a terminal unrecoverable error.
// Transient errors such as timeout should not set this status and should leave allocatedResourceStatus // Transient errors such as timeout should not set this status and should leave allocatedResourceStatus
// unmodified, so as resize controller can resume the volume expansion. // unmodified, so as resize controller can resume the volume expansion.
PersistentVolumeClaimControllerResizeFailed ClaimResourceStatus = "ControllerResizeFailed" PersistentVolumeClaimControllerResizeInfeasible ClaimResourceStatus = "ControllerResizeInfeasible"
// State set when resize controller has finished resizing the volume but further resizing of volume // State set when resize controller has finished resizing the volume but further resizing of volume
// is needed on the node. // is needed on the node.
PersistentVolumeClaimNodeResizePending ClaimResourceStatus = "NodeResizePending" PersistentVolumeClaimNodeResizePending ClaimResourceStatus = "NodeResizePending"
// State set when kubelet starts resizing the volume. // State set when kubelet starts resizing the volume.
PersistentVolumeClaimNodeResizeInProgress ClaimResourceStatus = "NodeResizeInProgress" PersistentVolumeClaimNodeResizeInProgress ClaimResourceStatus = "NodeResizeInProgress"
// State set when resizing has failed in kubelet with a terminal error. Transient errors don't set NodeResizeFailed // State set when resizing has failed in kubelet with a terminal unrecoverable error. Transient errors
PersistentVolumeClaimNodeResizeFailed ClaimResourceStatus = "NodeResizeFailed" // shouldn't set this status
PersistentVolumeClaimNodeResizeInfeasible ClaimResourceStatus = "NodeResizeInfeasible"
) )
// +enum // +enum

View File

@ -411,7 +411,7 @@ var _ = utils.SIGDescribe("CSI Mock volume expansion", func() {
pvcRequestSize: "11Gi", // expansion to 11Gi will cause expansion to fail on controller pvcRequestSize: "11Gi", // expansion to 11Gi will cause expansion to fail on controller
allocatedResource: "11Gi", allocatedResource: "11Gi",
simulatedCSIDriverError: expansionFailedOnController, simulatedCSIDriverError: expansionFailedOnController,
expectedResizeStatus: v1.PersistentVolumeClaimControllerResizeFailed, expectedResizeStatus: v1.PersistentVolumeClaimControllerResizeInfeasible,
recoverySize: resource.MustParse("4Gi"), recoverySize: resource.MustParse("4Gi"),
}, },
{ {
@ -419,7 +419,7 @@ var _ = utils.SIGDescribe("CSI Mock volume expansion", func() {
pvcRequestSize: "9Gi", // expansion to 9Gi will cause expansion to fail on node pvcRequestSize: "9Gi", // expansion to 9Gi will cause expansion to fail on node
allocatedResource: "9Gi", allocatedResource: "9Gi",
simulatedCSIDriverError: expansionFailedOnNode, simulatedCSIDriverError: expansionFailedOnNode,
expectedResizeStatus: v1.PersistentVolumeClaimNodeResizeFailed, expectedResizeStatus: v1.PersistentVolumeClaimNodeResizeInfeasible,
recoverySize: resource.MustParse("5Gi"), recoverySize: resource.MustParse("5Gi"),
}, },
} }
@ -500,7 +500,7 @@ func validateRecoveryBehaviour(ctx context.Context, pvc *v1.PersistentVolumeClai
// if expansion succeeded on controller but failed on the node // if expansion succeeded on controller but failed on the node
if test.simulatedCSIDriverError == expansionFailedOnNode { if test.simulatedCSIDriverError == expansionFailedOnNode {
ginkgo.By("Wait for expansion to fail on node again") ginkgo.By("Wait for expansion to fail on node again")
err = waitForResizeStatus(pvc, m.cs, v1.PersistentVolumeClaimNodeResizeFailed) err = waitForResizeStatus(pvc, m.cs, v1.PersistentVolumeClaimNodeResizeInfeasible)
framework.ExpectNoError(err, "While waiting for resize status to be set to expansion-failed-on-node") framework.ExpectNoError(err, "While waiting for resize status to be set to expansion-failed-on-node")
ginkgo.By("verify allocated resources after recovery") ginkgo.By("verify allocated resources after recovery")