Skip to content

Commit c86af27

Browse files
committed
GetActiveCDI() should return success if single resource in error state
Signed-off-by: Michael Henriksen <[email protected]>
1 parent f86cb11 commit c86af27

File tree

6 files changed

+84
-15
lines changed

6 files changed

+84
-15
lines changed

WORKSPACE

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -606,15 +606,15 @@ rpm(
606606
)
607607

608608
rpm(
609-
name = "crun-0__1.11.2-1.el9.aarch64",
610-
sha256 = "035153ee04d00def11428c1440eb35b9f7ff3251a18649685e8d078e6266d3b5",
611-
urls = ["http://mirror.stream.centos.org/9-stream/AppStream/aarch64/os/Packages/crun-1.11.2-1.el9.aarch64.rpm"],
609+
name = "crun-0__1.12-1.el9.aarch64",
610+
sha256 = "a2d1a41b79d5da007aa0ebcbca2d2eec8e018cdab7474954ac0168b5c53ed8af",
611+
urls = ["https://mirror.stream.centos.org/9-stream/AppStream/aarch64/os/Packages/crun-1.12-1.el9.aarch64.rpm"],
612612
)
613613

614614
rpm(
615-
name = "crun-0__1.11.2-1.el9.x86_64",
616-
sha256 = "0f6f281969df7c2aa7c8d705d4072344f15a035634e0561d15000dc5a0edb46a",
617-
urls = ["http://mirror.stream.centos.org/9-stream/AppStream/x86_64/os/Packages/crun-1.11.2-1.el9.x86_64.rpm"],
615+
name = "crun-0__1.12-1.el9.x86_64",
616+
sha256 = "08bf93254eee3c9a612f77f0fecd58af30bf096ac7589ec797b4c6fb57e64764",
617+
urls = ["https://mirror.stream.centos.org/9-stream/AppStream/x86_64/os/Packages/crun-1.12-1.el9.x86_64.rpm"],
618618
)
619619

620620
rpm(

pkg/controller/common/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ go_test(
5353
"//vendor/github.com/onsi/gomega:go_default_library",
5454
"//vendor/k8s.io/api/core/v1:go_default_library",
5555
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
56+
"//vendor/kubevirt.io/controller-lifecycle-operator-sdk/api:go_default_library",
5657
"//vendor/sigs.k8s.io/controller-runtime/pkg/log:go_default_library",
5758
"//vendor/sigs.k8s.io/controller-runtime/pkg/log/zap:go_default_library",
5859
],

pkg/controller/common/util.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -507,19 +507,23 @@ func GetActiveCDI(c client.Client) (*cdiv1.CDI, error) {
507507
return nil, err
508508
}
509509

510+
if len(crList.Items) == 0 {
511+
return nil, nil
512+
}
513+
514+
if len(crList.Items) == 1 {
515+
return &crList.Items[0], nil
516+
}
517+
510518
var activeResources []cdiv1.CDI
511519
for _, cr := range crList.Items {
512520
if cr.Status.Phase != sdkapi.PhaseError {
513521
activeResources = append(activeResources, cr)
514522
}
515523
}
516524

517-
if len(activeResources) == 0 {
518-
return nil, nil
519-
}
520-
521-
if len(activeResources) > 1 {
522-
return nil, fmt.Errorf("number of active CDI CRs > 1")
525+
if len(activeResources) != 1 {
526+
return nil, fmt.Errorf("invalid number of active CDI resources: %d", len(activeResources))
523527
}
524528

525529
return &activeResources[0], nil

pkg/controller/common/util_test.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
v1 "k8s.io/api/core/v1"
88
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
99
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
10+
sdkapi "kubevirt.io/controller-lifecycle-operator-sdk/api"
1011
)
1112

1213
var _ = Describe("GetRequestedImageSize", func() {
@@ -73,6 +74,69 @@ var _ = Describe("GetDefaultStorageClass", func() {
7374
sc, _ := GetDefaultStorageClass(client)
7475
Expect(sc).To(BeNil())
7576
})
77+
78+
Context("GetActiveCDI tests", func() {
79+
createCDI := func(name string, phase sdkapi.Phase) *cdiv1.CDI {
80+
return &cdiv1.CDI{
81+
ObjectMeta: metav1.ObjectMeta{
82+
Name: name,
83+
},
84+
Status: cdiv1.CDIStatus{
85+
Status: sdkapi.Status{
86+
Phase: phase,
87+
},
88+
},
89+
}
90+
}
91+
92+
It("Should return nil if no CDI", func() {
93+
client := CreateClient()
94+
cdi, err := GetActiveCDI(client)
95+
Expect(err).ToNot(HaveOccurred())
96+
Expect(cdi).To(BeNil())
97+
})
98+
99+
It("Should return single active", func() {
100+
client := CreateClient(
101+
createCDI("cdi1", sdkapi.PhaseDeployed),
102+
)
103+
cdi, err := GetActiveCDI(client)
104+
Expect(err).ToNot(HaveOccurred())
105+
Expect(cdi).ToNot(BeNil())
106+
})
107+
108+
It("Should return success with single active one error", func() {
109+
client := CreateClient(
110+
createCDI("cdi1", sdkapi.PhaseDeployed),
111+
createCDI("cdi2", sdkapi.PhaseError),
112+
)
113+
cdi, err := GetActiveCDI(client)
114+
Expect(err).ToNot(HaveOccurred())
115+
Expect(cdi).ToNot(BeNil())
116+
Expect(cdi.Name).To(Equal("cdi1"))
117+
})
118+
119+
It("Should return error if multiple CDIs are active", func() {
120+
client := CreateClient(
121+
createCDI("cdi1", sdkapi.PhaseDeployed),
122+
createCDI("cdi2", sdkapi.PhaseDeployed),
123+
)
124+
cdi, err := GetActiveCDI(client)
125+
Expect(err).To(HaveOccurred())
126+
Expect(cdi).To(BeNil())
127+
})
128+
129+
It("Should return error if multiple CDIs are error", func() {
130+
client := CreateClient(
131+
createCDI("cdi1", sdkapi.PhaseError),
132+
createCDI("cdi2", sdkapi.PhaseError),
133+
)
134+
cdi, err := GetActiveCDI(client)
135+
Expect(err).To(HaveOccurred())
136+
Expect(cdi).To(BeNil())
137+
})
138+
139+
})
76140
})
77141

78142
func createPvcNoSize(name, ns string, annotations, labels map[string]string) *v1.PersistentVolumeClaim {

pkg/operator/controller/cr-manager.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func (r *ReconcileCDI) GetDependantResourcesListObjects() []client.ObjectList {
7171
func (r *ReconcileCDI) IsCreating(_ client.Object) (bool, error) {
7272
configMap, err := r.getConfigMap()
7373
if err != nil {
74-
return true, nil
74+
return false, err
7575
}
7676
return configMap == nil, nil
7777
}

rpm/BUILD.bazel

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -800,7 +800,7 @@ rpmtree(
800800
"@coreutils-single-0__8.32-34.el9.aarch64//rpm",
801801
"@cracklib-0__2.9.6-27.el9.aarch64//rpm",
802802
"@cracklib-dicts-0__2.9.6-27.el9.aarch64//rpm",
803-
"@crun-0__1.11.2-1.el9.aarch64//rpm",
803+
"@crun-0__1.12-1.el9.aarch64//rpm",
804804
"@crypto-policies-0__20231113-1.gite9247c2.el9.aarch64//rpm",
805805
"@crypto-policies-scripts-0__20231113-1.gite9247c2.el9.aarch64//rpm",
806806
"@curl-0__7.76.1-28.el9.aarch64//rpm",
@@ -942,7 +942,7 @@ rpmtree(
942942
"@coreutils-single-0__8.32-34.el9.x86_64//rpm",
943943
"@cracklib-0__2.9.6-27.el9.x86_64//rpm",
944944
"@cracklib-dicts-0__2.9.6-27.el9.x86_64//rpm",
945-
"@crun-0__1.11.2-1.el9.x86_64//rpm",
945+
"@crun-0__1.12-1.el9.x86_64//rpm",
946946
"@crypto-policies-0__20231113-1.gite9247c2.el9.x86_64//rpm",
947947
"@crypto-policies-scripts-0__20231113-1.gite9247c2.el9.x86_64//rpm",
948948
"@curl-0__7.76.1-28.el9.x86_64//rpm",

0 commit comments

Comments
 (0)