From d06c0995cbec9915bcbb51f4026274225bb58ff3 Mon Sep 17 00:00:00 2001 From: weizhichen Date: Mon, 27 Feb 2023 12:49:44 +0000 Subject: [PATCH 1/2] fix 116028 --- pkg/controller/volume/persistentvolume/pv_controller.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/controller/volume/persistentvolume/pv_controller.go b/pkg/controller/volume/persistentvolume/pv_controller.go index 0e747afc5da..c3514af2de7 100644 --- a/pkg/controller/volume/persistentvolume/pv_controller.go +++ b/pkg/controller/volume/persistentvolume/pv_controller.go @@ -937,7 +937,7 @@ func (ctrl *PersistentVolumeController) updateVolumePhaseWithEvent(volume *v1.Pe // Ignores claims that already have a storage class. // TODO: if resync is ever changed to a larger period, we might need to change how we set the default class on existing unbound claims func (ctrl *PersistentVolumeController) assignDefaultStorageClass(claim *v1.PersistentVolumeClaim) (bool, error) { - if claim.Spec.StorageClassName != nil { + if storagehelpers.GetPersistentVolumeClaimClass(claim) != "" { return false, nil } From 4d6be42c1afd3e238fc5d1625d0434b7794485e3 Mon Sep 17 00:00:00 2001 From: weizhichen Date: Wed, 1 Mar 2023 06:48:37 +0000 Subject: [PATCH 2/2] add unit test --- .../persistentvolume/pv_controller_test.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkg/controller/volume/persistentvolume/pv_controller_test.go b/pkg/controller/volume/persistentvolume/pv_controller_test.go index a40921a51ba..5d3716ed40b 100644 --- a/pkg/controller/volume/persistentvolume/pv_controller_test.go +++ b/pkg/controller/volume/persistentvolume/pv_controller_test.go @@ -862,6 +862,24 @@ func TestRetroactiveStorageClassAssignment(t *testing.T) { }, }, }, + { + storageClasses: []*storagev1.StorageClass{ + makeDefaultStorageClass(classGold, &modeImmediate), + makeStorageClass(classCopper, &modeImmediate), + }, + tests: []controllerTest{ + { + name: "15-7 - pvc storage class is not changed if claim is not bound but already set annotation \"volume.beta.kubernetes.io/storage-class\"", + initialVolumes: novolumes, + expectedVolumes: novolumes, + initialClaims: newClaimArray("claim15-7", "uid15-7", "1Gi", "", v1.ClaimPending, nil, v1.BetaStorageClassAnnotation), + expectedClaims: newClaimArray("claim15-7", "uid15-7", "1Gi", "", v1.ClaimPending, nil, v1.BetaStorageClassAnnotation), + expectedEvents: noevents, + errors: noerrors, + test: testSyncClaim, + }, + }, + }, } for _, test := range tests { runSyncTests(t, test.tests, test.storageClasses, nil)