Skip to content

Commit a8c4018

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 15e834f commit a8c4018

File tree

4 files changed

+160
-0
lines changed

4 files changed

+160
-0
lines changed

internal/mbsc/helper.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=helper.go -package=mbsc -destination=mock_helper.go
9+
10+
type Helper interface {
11+
SetModuleImageSpec(mbscObj *kmmv1beta1.ModuleBuildSignConfig, imageSpec *kmmv1beta1.ModuleImageSpec, repoSecret *v1.LocalObjectReference)
12+
}
13+
14+
type helper struct {
15+
}
16+
17+
func NewHelper() Helper {
18+
return &helper{}
19+
}
20+
21+
func (h *helper) 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/helper_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+
mbscHelper Helper
13+
)
14+
15+
BeforeEach(func() {
16+
mbscHelper = NewHelper()
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+
mbscHelper.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+
mbscHelper.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+
mbscHelper.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_helper.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)