diff --git a/pkg/controller/volume/persistentvolume/pv_controller_test.go b/pkg/controller/volume/persistentvolume/pv_controller_test.go index 7d11120d023..a40921a51ba 100644 --- a/pkg/controller/volume/persistentvolume/pv_controller_test.go +++ b/pkg/controller/volume/persistentvolume/pv_controller_test.go @@ -773,23 +773,6 @@ func TestRetroactiveStorageClassAssignment(t *testing.T) { }, }, }, - { - storageClasses: []*storagev1.StorageClass{ - makeDefaultStorageClass(classGold, &modeImmediate), - makeDefaultStorageClass(classSilver, &modeImmediate)}, - tests: []controllerTest{ - { - name: "15-2 - pvc storage class is not assigned retroactively if there are multiple default storage classes", - initialVolumes: novolumes, - expectedVolumes: novolumes, - initialClaims: newClaimArray("claim15-2", "uid15-2", "1Gi", "", v1.ClaimPending, nil), - expectedClaims: newClaimArray("claim15-2", "uid15-2", "1Gi", "", v1.ClaimPending, nil), - expectedEvents: noevents, - errors: noerrors, - test: testSyncClaim, - }, - }, - }, { storageClasses: []*storagev1.StorageClass{ makeDefaultStorageClass(classGold, &modeImmediate), @@ -844,6 +827,23 @@ func TestRetroactiveStorageClassAssignment(t *testing.T) { }, }, }, + { + storageClasses: []*storagev1.StorageClass{ + makeDefaultStorageClass(classGold, &modeImmediate), + makeDefaultStorageClass(classSilver, &modeImmediate)}, + tests: []controllerTest{ + { + name: "15-2 - pvc storage class is assigned retroactively if there are multiple default storage classes", + initialVolumes: novolumes, + expectedVolumes: novolumes, + initialClaims: newClaimArray("claim15-2", "uid15-2", "1Gi", "", v1.ClaimPending, nil), + expectedClaims: newClaimArray("claim15-2", "uid15-2", "1Gi", "", v1.ClaimPending, &classGold), + expectedEvents: noevents, + errors: noerrors, + test: testSyncClaim, + }, + }, + }, { storageClasses: []*storagev1.StorageClass{ makeDefaultStorageClass(classGold, &modeImmediate), diff --git a/pkg/volume/util/storageclass.go b/pkg/volume/util/storageclass.go index fd1e9c4fddf..d2098c25800 100644 --- a/pkg/volume/util/storageclass.go +++ b/pkg/volume/util/storageclass.go @@ -55,6 +55,8 @@ func GetDefaultClass(lister storagev1listers.StorageClassLister) (*storagev1.Sto return nil, nil } + // Primary sort by creation timestamp, newest first + // Secondary sort by class name, ascending order sort.Slice(defaultClasses, func(i, j int) bool { if defaultClasses[i].CreationTimestamp.UnixNano() == defaultClasses[j].CreationTimestamp.UnixNano() { return defaultClasses[i].Name < defaultClasses[j].Name diff --git a/plugin/pkg/admission/storage/storageclass/setdefault/admission.go b/plugin/pkg/admission/storage/storageclass/setdefault/admission.go index 4772996a1a7..aa4c1c14ba7 100644 --- a/plugin/pkg/admission/storage/storageclass/setdefault/admission.go +++ b/plugin/pkg/admission/storage/storageclass/setdefault/admission.go @@ -20,7 +20,6 @@ import ( "context" "fmt" "io" - "k8s.io/kubernetes/pkg/volume/util" "k8s.io/klog/v2"