Skip to content

Commit d444891

Browse files
danilrwxuniversal-itengineer
authored andcommitted
feat(vi-vd): get newest default StorageClass (#499)
Signed-off-by: Daniil Antoshin <[email protected]> feat(vi-vd): get newest default StorageClass in e2e tests Signed-off-by: Daniil Antoshin <[email protected]> feat(vi-vd): fix ling errors Signed-off-by: Daniil Antoshin <[email protected]> feat(vi-vd): fix lint error Signed-off-by: Daniil Antoshin <[email protected]>
1 parent 3f6c227 commit d444891

File tree

2 files changed

+38
-9
lines changed

2 files changed

+38
-9
lines changed

images/virtualization-artifact/pkg/controller/service/disk_service.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"errors"
2323
"fmt"
2424
"slices"
25+
"sort"
2526
"strconv"
2627
"strings"
2728

@@ -509,13 +510,27 @@ func (s DiskService) getDefaultStorageClass(ctx context.Context) (*storev1.Stora
509510
return nil, err
510511
}
511512

512-
for _, sc := range scs.Items {
513-
if sc.Annotations[common.AnnDefaultStorageClass] == "true" {
514-
return &sc, nil
513+
var defaultClasses []*storev1.StorageClass
514+
for idx := range scs.Items {
515+
if scs.Items[idx].Annotations[common.AnnDefaultStorageClass] == "true" {
516+
defaultClasses = append(defaultClasses, &scs.Items[idx])
515517
}
516518
}
517519

518-
return nil, ErrDefaultStorageClassNotFound
520+
if len(defaultClasses) == 0 {
521+
return nil, ErrDefaultStorageClassNotFound
522+
}
523+
524+
// Primary sort by creation timestamp, newest first
525+
// Secondary sort by class name, ascending order
526+
sort.Slice(defaultClasses, func(i, j int) bool {
527+
if defaultClasses[i].CreationTimestamp.UnixNano() == defaultClasses[j].CreationTimestamp.UnixNano() {
528+
return defaultClasses[i].Name < defaultClasses[j].Name
529+
}
530+
return defaultClasses[i].CreationTimestamp.UnixNano() > defaultClasses[j].CreationTimestamp.UnixNano()
531+
})
532+
533+
return defaultClasses[0], nil
519534
}
520535

521536
func (s DiskService) getStorageClass(ctx context.Context, storageClassName string) (*storev1.StorageClass, error) {

tests/e2e/util_test.go

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"net"
2424
"net/netip"
2525
"os"
26+
"sort"
2627
"strings"
2728
"time"
2829

@@ -251,14 +252,27 @@ func GetDefaultStorageClass() (*storagev1.StorageClass, error) {
251252
return nil, err
252253
}
253254

254-
for _, sc := range scList.Items {
255-
isDefault, ok := sc.Annotations["storageclass.kubernetes.io/is-default-class"]
256-
if ok && isDefault == "true" {
257-
return &sc, nil
255+
var defaultClasses []*storagev1.StorageClass
256+
for idx := range scList.Items {
257+
if scList.Items[idx].Annotations["storageclass.kubernetes.io/is-default-class"] == "true" {
258+
defaultClasses = append(defaultClasses, &scList.Items[idx])
258259
}
259260
}
260261

261-
return nil, fmt.Errorf("Default StorageClass not found in the cluster: please set a default StorageClass.")
262+
if len(defaultClasses) == 0 {
263+
return nil, fmt.Errorf("Default StorageClass not found in the cluster: please set a default StorageClass.")
264+
}
265+
266+
// Primary sort by creation timestamp, newest first
267+
// Secondary sort by class name, ascending order
268+
sort.Slice(defaultClasses, func(i, j int) bool {
269+
if defaultClasses[i].CreationTimestamp.UnixNano() == defaultClasses[j].CreationTimestamp.UnixNano() {
270+
return defaultClasses[i].Name < defaultClasses[j].Name
271+
}
272+
return defaultClasses[i].CreationTimestamp.UnixNano() > defaultClasses[j].CreationTimestamp.UnixNano()
273+
})
274+
275+
return defaultClasses[0], nil
262276
}
263277

264278
func toIPNet(prefix netip.Prefix) *net.IPNet {

0 commit comments

Comments
 (0)