From 6c8c10f5e0f0d43f6878fa30b1816a8ecd166349 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E7=8E=AE=E6=96=87?= Date: Sat, 19 Jul 2025 11:30:21 +0800 Subject: [PATCH] always overwrite TargetVolumeAttributesClassName when setting Status So it will be clear which VAC the status is describing. Specifically, we now set target for Pending status to indicate which VAC we are waiting for. --- pkg/modifycontroller/modify_status.go | 9 +++++---- pkg/modifycontroller/modify_volume_test.go | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pkg/modifycontroller/modify_status.go b/pkg/modifycontroller/modify_status.go index 4a12d034a..eb7c70320 100644 --- a/pkg/modifycontroller/modify_status.go +++ b/pkg/modifycontroller/modify_status.go @@ -18,10 +18,12 @@ package modifycontroller import ( "fmt" + "github.com/kubernetes-csi/external-resizer/pkg/util" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/cache" + "k8s.io/utils/ptr" ) // markControllerModifyVolumeStatus will mark ModifyVolumeStatus other than completed in the PVC @@ -31,10 +33,10 @@ func (ctrl *modifyController) markControllerModifyVolumeStatus( err error) (*v1.PersistentVolumeClaim, error) { newPVC := pvc.DeepCopy() - if newPVC.Status.ModifyVolumeStatus == nil { - newPVC.Status.ModifyVolumeStatus = &v1.ModifyVolumeStatus{} + newPVC.Status.ModifyVolumeStatus = &v1.ModifyVolumeStatus{ + Status: modifyVolumeStatus, + TargetVolumeAttributesClassName: ptr.Deref(pvc.Spec.VolumeAttributesClassName, ""), } - newPVC.Status.ModifyVolumeStatus.Status = modifyVolumeStatus // Update PVC's Condition to indicate modification pvcCondition := v1.PersistentVolumeClaimCondition{ Type: v1.PersistentVolumeClaimVolumeModifyingVolume, @@ -45,7 +47,6 @@ func (ctrl *modifyController) markControllerModifyVolumeStatus( switch modifyVolumeStatus { case v1.PersistentVolumeClaimModifyVolumeInProgress: conditionMessage = "ModifyVolume operation in progress." - newPVC.Status.ModifyVolumeStatus.TargetVolumeAttributesClassName = *pvc.Spec.VolumeAttributesClassName case v1.PersistentVolumeClaimModifyVolumeInfeasible: conditionMessage = "ModifyVolume failed with error" + err.Error() + ". Waiting for retry." } diff --git a/pkg/modifycontroller/modify_volume_test.go b/pkg/modifycontroller/modify_volume_test.go index 25a8abbe8..f652c8fb0 100644 --- a/pkg/modifycontroller/modify_volume_test.go +++ b/pkg/modifycontroller/modify_volume_test.go @@ -61,11 +61,11 @@ func TestModify(t *testing.T) { }, { name: "vac does not exist, no modification and set ModifyVolumeStatus to pending", - pvc: createTestPVC(pvcName, targetVac /*vacName*/, testVac /*curVacName*/, testVac /*targetVacName*/), + pvc: createTestPVC(pvcName, targetVac /*vacName*/, testVac /*curVacName*/, "" /*targetVacName*/), pv: basePV, expectModifyCall: false, expectedModifyVolumeStatus: &v1.ModifyVolumeStatus{ - TargetVolumeAttributesClassName: testVac, + TargetVolumeAttributesClassName: targetVac, Status: v1.PersistentVolumeClaimModifyVolumePending, }, expectedCurrentVolumeAttributesClassName: &testVac,