diff --git a/pkg/volume/util/operationexecutor/node_expander_test.go b/pkg/volume/util/operationexecutor/node_expander_test.go index 40d09e15c26..2c13cdb5111 100644 --- a/pkg/volume/util/operationexecutor/node_expander_test.go +++ b/pkg/volume/util/operationexecutor/node_expander_test.go @@ -49,9 +49,10 @@ func TestNodeExpander(t *testing.T) { nodeResizePending := v1.PersistentVolumeClaimNodeResizePending var tests = []struct { - name string - pvc *v1.PersistentVolumeClaim - pv *v1.PersistentVolume + name string + pvc *v1.PersistentVolumeClaim + pv *v1.PersistentVolume + recoverVolumeExpansionFailure bool // desired size, defaults to pv.Spec.Capacity desiredSize *resource.Quantity @@ -67,9 +68,10 @@ func TestNodeExpander(t *testing.T) { expectError bool }{ { - name: "pv.spec.cap > pvc.status.cap, resizeStatus=node_expansion_failed", - pvc: getTestPVC("test-vol0", "2G", "1G", "", &nodeResizeFailed), - pv: getTestPV("test-vol0", "2G"), + name: "pv.spec.cap > pvc.status.cap, resizeStatus=node_expansion_failed", + pvc: getTestPVC("test-vol0", "2G", "1G", "", &nodeResizeFailed), + pv: getTestPV("test-vol0", "2G"), + recoverVolumeExpansionFailure: true, expectedResizeStatus: nodeResizeFailed, expectResizeCall: false, @@ -78,9 +80,11 @@ func TestNodeExpander(t *testing.T) { expectedStatusSize: resource.MustParse("1G"), }, { - name: "pv.spec.cap > pvc.status.cap, resizeStatus=node_expansion_pending", - pvc: getTestPVC("test-vol0", "2G", "1G", "2G", &nodeResizePending), - pv: getTestPV("test-vol0", "2G"), + name: "pv.spec.cap > pvc.status.cap, resizeStatus=node_expansion_pending", + pvc: getTestPVC("test-vol0", "2G", "1G", "2G", &nodeResizePending), + pv: getTestPV("test-vol0", "2G"), + recoverVolumeExpansionFailure: true, + expectedResizeStatus: "", expectResizeCall: true, assumeResizeOpAsFinished: true, @@ -88,31 +92,34 @@ func TestNodeExpander(t *testing.T) { expectedStatusSize: resource.MustParse("2G"), }, { - name: "pv.spec.cap > pvc.status.cap, resizeStatus=node_expansion_pending, reize_op=infeasible", - pvc: getTestPVC(volumetesting.InfeasibleNodeExpansion, "2G", "1G", "2G", &nodeResizePending), - pv: getTestPV(volumetesting.InfeasibleNodeExpansion, "2G"), - expectError: true, - expectedResizeStatus: nodeResizeFailed, - expectResizeCall: true, - assumeResizeOpAsFinished: true, - expectFinalErrors: true, - expectedStatusSize: resource.MustParse("1G"), + name: "pv.spec.cap > pvc.status.cap, resizeStatus=node_expansion_pending, reize_op=infeasible", + pvc: getTestPVC(volumetesting.InfeasibleNodeExpansion, "2G", "1G", "2G", &nodeResizePending), + pv: getTestPV(volumetesting.InfeasibleNodeExpansion, "2G"), + recoverVolumeExpansionFailure: false, + expectError: true, + expectedResizeStatus: nodeResizeFailed, + expectResizeCall: true, + assumeResizeOpAsFinished: true, + expectFinalErrors: true, + expectedStatusSize: resource.MustParse("1G"), }, { - name: "pv.spec.cap > pvc.status.cap, resizeStatus=node_expansion_pending, reize_op=failing", - pvc: getTestPVC(volumetesting.OtherFinalNodeExpansionError, "2G", "1G", "2G", &nodeResizePending), - pv: getTestPV(volumetesting.OtherFinalNodeExpansionError, "2G"), - expectError: true, - expectedResizeStatus: v1.PersistentVolumeClaimNodeResizeInProgress, - expectResizeCall: true, - assumeResizeOpAsFinished: true, - expectFinalErrors: true, - expectedStatusSize: resource.MustParse("1G"), + name: "pv.spec.cap > pvc.status.cap, resizeStatus=node_expansion_pending, reize_op=failing", + pvc: getTestPVC(volumetesting.OtherFinalNodeExpansionError, "2G", "1G", "2G", &nodeResizePending), + pv: getTestPV(volumetesting.OtherFinalNodeExpansionError, "2G"), + recoverVolumeExpansionFailure: true, + expectError: true, + expectedResizeStatus: v1.PersistentVolumeClaimNodeResizeInProgress, + expectResizeCall: true, + assumeResizeOpAsFinished: true, + expectFinalErrors: true, + expectedStatusSize: resource.MustParse("1G"), }, { - name: "pv.spec.cap = pvc.status.cap, resizeStatus='', desiredSize > actualSize", - pvc: getTestPVC("test-vol0", "2G", "2G", "2G", nil), - pv: getTestPV("test-vol0", "2G"), + name: "pv.spec.cap > pvc.status.cap, resizeStatus=node_expansion_pending, featuregate=disabled", + pvc: getTestPVC("test-vol0", "2G", "1G", "2G", &nodeResizePending), + pv: getTestPV("test-vol0", "2G"), + recoverVolumeExpansionFailure: false, expectedResizeStatus: "", expectResizeCall: true, @@ -125,7 +132,7 @@ func TestNodeExpander(t *testing.T) { for i := range tests { test := tests[i] t.Run(test.name, func(t *testing.T) { - featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.RecoverVolumeExpansionFailure, true) + featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.RecoverVolumeExpansionFailure, test.recoverVolumeExpansionFailure) volumePluginMgr, fakePlugin := volumetesting.GetTestKubeletVolumePluginMgr(t) pvc := test.pvc diff --git a/pkg/volume/util/resize_util.go b/pkg/volume/util/resize_util.go index 80b1845308f..599f220976e 100644 --- a/pkg/volume/util/resize_util.go +++ b/pkg/volume/util/resize_util.go @@ -244,7 +244,6 @@ func MarkNodeExpansionFinishedWithRecovery( newPVC.Status.Capacity[v1.ResourceStorage] = newSize - // if RecoverVolumeExpansionFailure is enabled, we need to reset ResizeStatus back to nil allocatedResourceStatusMap := newPVC.Status.AllocatedResourceStatuses delete(allocatedResourceStatusMap, v1.ResourceStorage) if len(allocatedResourceStatusMap) == 0 {