Skip to content

Commit 02f6640

Browse files
Adding mbsc internal package
This package is going to handle the manipulations on the MBSC objects The current PR introduces just one function, which will be used by the MIC controller and unit-test.
1 parent eeb1b9d commit 02f6640

File tree

4 files changed

+160
-0
lines changed

4 files changed

+160
-0
lines changed

internal/mbsc/mbsc.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package mbsc
2+
3+
import (
4+
kmmv1beta1 "github.com/kubernetes-sigs/kernel-module-management/api/v1beta1"
5+
v1 "k8s.io/api/core/v1"
6+
)
7+
8+
//go:generate mockgen -source=mbsc.go -package=mbsc -destination=mock_mbsc.go
9+
10+
type MBSC interface {
11+
SetModuleImageSpec(mbscObj *kmmv1beta1.ModuleBuildSignConfig, imageSpec *kmmv1beta1.ModuleImageSpec, repoSecret *v1.LocalObjectReference)
12+
}
13+
14+
type mbsc struct {
15+
}
16+
17+
func NewMBSC() MBSC {
18+
return &mbsc{}
19+
}
20+
21+
func (m *mbsc) SetModuleImageSpec(mbscObj *kmmv1beta1.ModuleBuildSignConfig, micImageSpec *kmmv1beta1.ModuleImageSpec, repoSecret *v1.LocalObjectReference) {
22+
mbscObj.Spec.ImageRepoSecret = repoSecret
23+
for i, imageSpec := range mbscObj.Spec.Images {
24+
if imageSpec.Image == micImageSpec.Image {
25+
mbscObj.Spec.Images[i] = *micImageSpec
26+
return
27+
}
28+
}
29+
mbscObj.Spec.Images = append(mbscObj.Spec.Images, *micImageSpec)
30+
}

internal/mbsc/mbsc_test.go

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package mbsc
2+
3+
import (
4+
kmmv1beta1 "github.com/kubernetes-sigs/kernel-module-management/api/v1beta1"
5+
. "github.com/onsi/ginkgo/v2"
6+
. "github.com/onsi/gomega"
7+
v1 "k8s.io/api/core/v1"
8+
)
9+
10+
var _ = Describe("SetModuleImageSpec", func() {
11+
var (
12+
mbsc MBSC
13+
)
14+
15+
BeforeEach(func() {
16+
mbsc = NewMBSC()
17+
})
18+
19+
It("MBSC does not have any images in spec", func() {
20+
mbscObj := kmmv1beta1.ModuleBuildSignConfig{
21+
Spec: kmmv1beta1.ModuleImagesConfigSpec{},
22+
}
23+
imageSpec := kmmv1beta1.ModuleImageSpec{Image: "some image"}
24+
25+
mbsc.SetModuleImageSpec(&mbscObj, &imageSpec, &v1.LocalObjectReference{})
26+
27+
Expect(len(mbscObj.Spec.Images)).To(Equal(1))
28+
Expect(mbscObj.Spec.ImageRepoSecret).ToNot(BeNil())
29+
})
30+
31+
It("MBSC has different images in spec", func() {
32+
mbscObj := kmmv1beta1.ModuleBuildSignConfig{
33+
Spec: kmmv1beta1.ModuleImagesConfigSpec{
34+
Images: []kmmv1beta1.ModuleImageSpec{
35+
kmmv1beta1.ModuleImageSpec{Image: "image 1"},
36+
kmmv1beta1.ModuleImageSpec{Image: "image 2"},
37+
},
38+
},
39+
}
40+
imageSpec := kmmv1beta1.ModuleImageSpec{Image: "some image"}
41+
42+
mbsc.SetModuleImageSpec(&mbscObj, &imageSpec, &v1.LocalObjectReference{})
43+
44+
Expect(len(mbscObj.Spec.Images)).To(Equal(3))
45+
Expect(mbscObj.Spec.ImageRepoSecret).ToNot(BeNil())
46+
})
47+
48+
It("MBSC has the image already in spec", func() {
49+
mbscObj := kmmv1beta1.ModuleBuildSignConfig{
50+
Spec: kmmv1beta1.ModuleImagesConfigSpec{
51+
Images: []kmmv1beta1.ModuleImageSpec{
52+
kmmv1beta1.ModuleImageSpec{Image: "image 1"},
53+
kmmv1beta1.ModuleImageSpec{Image: "image 2", Generation: "generation 2"},
54+
},
55+
},
56+
}
57+
imageSpec := kmmv1beta1.ModuleImageSpec{Image: "image 2", Generation: "some generation"}
58+
59+
mbsc.SetModuleImageSpec(&mbscObj, &imageSpec, &v1.LocalObjectReference{})
60+
61+
Expect(len(mbscObj.Spec.Images)).To(Equal(2))
62+
Expect(mbscObj.Spec.Images[1].Generation).To(Equal("some generation"))
63+
Expect(mbscObj.Spec.ImageRepoSecret).ToNot(BeNil())
64+
})
65+
})

internal/mbsc/mock_mbsc.go

Lines changed: 52 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/mbsc/suite_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package mbsc
2+
3+
import (
4+
"testing"
5+
6+
. "github.com/onsi/ginkgo/v2"
7+
. "github.com/onsi/gomega"
8+
)
9+
10+
func TestSuite(t *testing.T) {
11+
RegisterFailHandler(Fail)
12+
RunSpecs(t, "MBSC Suite")
13+
}

0 commit comments

Comments
 (0)