Skip to content

Commit ff106f6

Browse files
yevgeny-shnaidmank8s-ci-robot
authored andcommitted
adding additional API to the mbsc package
adding a new interface API that will be used by controllers
1 parent ad7f637 commit ff106f6

File tree

3 files changed

+92
-4
lines changed

3 files changed

+92
-4
lines changed

internal/mbsc/mbsc.go

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,30 @@
11
package mbsc
22

33
import (
4+
"context"
5+
"fmt"
46
kmmv1beta1 "github.com/kubernetes-sigs/kernel-module-management/api/v1beta1"
7+
8+
k8serrors "k8s.io/apimachinery/pkg/api/errors"
9+
"k8s.io/apimachinery/pkg/types"
10+
"sigs.k8s.io/controller-runtime/pkg/client"
511
)
612

713
//go:generate mockgen -source=mbsc.go -package=mbsc -destination=mock_mbsc.go
814

915
type MBSC interface {
1016
SetModuleImageSpec(mbscObj *kmmv1beta1.ModuleBuildSignConfig, moduleImageSpec *kmmv1beta1.ModuleImageSpec)
17+
GetMBSC(ctx context.Context, name, namespace string) (*kmmv1beta1.ModuleBuildSignConfig, error)
1118
}
1219

13-
type mbsc struct{}
20+
type mbsc struct {
21+
client client.Client
22+
}
1423

15-
func NewMBSC() MBSC {
16-
return &mbsc{}
24+
func NewMBSC(client client.Client) MBSC {
25+
return &mbsc{
26+
client: client,
27+
}
1728
}
1829

1930
func (m *mbsc) SetModuleImageSpec(mbscObj *kmmv1beta1.ModuleBuildSignConfig, moduleImageSpec *kmmv1beta1.ModuleImageSpec) {
@@ -25,3 +36,15 @@ func (m *mbsc) SetModuleImageSpec(mbscObj *kmmv1beta1.ModuleBuildSignConfig, mod
2536
}
2637
mbscObj.Spec.Images = append(mbscObj.Spec.Images, *moduleImageSpec)
2738
}
39+
40+
func (m *mbsc) GetMBSC(ctx context.Context, name, namespace string) (*kmmv1beta1.ModuleBuildSignConfig, error) {
41+
mbsc := kmmv1beta1.ModuleBuildSignConfig{}
42+
err := m.client.Get(ctx, types.NamespacedName{Name: name, Namespace: namespace}, &mbsc)
43+
if err != nil {
44+
if k8serrors.IsNotFound(err) {
45+
return nil, nil
46+
}
47+
return nil, fmt.Errorf("failed to get ModuleBuildSignConfig object %s/%s: %v", namespace, name, err)
48+
}
49+
return &mbsc, nil
50+
}

internal/mbsc/mbsc_test.go

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
package mbsc
22

33
import (
4+
"context"
5+
"fmt"
6+
47
kmmv1beta1 "github.com/kubernetes-sigs/kernel-module-management/api/v1beta1"
8+
"github.com/kubernetes-sigs/kernel-module-management/internal/client"
59
. "github.com/onsi/ginkgo/v2"
610
. "github.com/onsi/gomega"
11+
gomock "go.uber.org/mock/gomock"
12+
k8serrors "k8s.io/apimachinery/pkg/api/errors"
13+
"k8s.io/apimachinery/pkg/runtime/schema"
14+
"k8s.io/apimachinery/pkg/types"
715
)
816

917
var _ = Describe("SetModuleImageSpec", func() {
@@ -12,7 +20,7 @@ var _ = Describe("SetModuleImageSpec", func() {
1220
)
1321

1422
BeforeEach(func() {
15-
mbsc = NewMBSC()
23+
mbsc = NewMBSC(nil)
1624
})
1725

1826
It("MBSC does not have any images in spec", func() {
@@ -58,3 +66,44 @@ var _ = Describe("SetModuleImageSpec", func() {
5866
Expect(len(mbscObj.Spec.Images)).To(Equal(2))
5967
})
6068
})
69+
70+
var _ = Describe("GetMBSC", func() {
71+
var (
72+
ctrl *gomock.Controller
73+
mockClient *client.MockClient
74+
mbsc MBSC
75+
)
76+
77+
BeforeEach(func() {
78+
ctrl = gomock.NewController(GinkgoT())
79+
mockClient = client.NewMockClient(ctrl)
80+
mbsc = NewMBSC(mockClient)
81+
})
82+
83+
ctx := context.Background()
84+
85+
It("mbsc object does not exists", func() {
86+
mockClient.EXPECT().Get(ctx, types.NamespacedName{Name: "some name", Namespace: "some namespace"}, gomock.Any()).Return(
87+
k8serrors.NewNotFound(schema.GroupResource{}, "owner name"))
88+
89+
res, err := mbsc.GetMBSC(ctx, "some name", "some namespace")
90+
Expect(err).To(BeNil())
91+
Expect(res).To(BeNil())
92+
})
93+
94+
It("client get returns some error", func() {
95+
mockClient.EXPECT().Get(ctx, types.NamespacedName{Name: "some name", Namespace: "some namespace"}, gomock.Any()).Return(fmt.Errorf("some error"))
96+
97+
res, err := mbsc.GetMBSC(ctx, "some name", "some namespace")
98+
Expect(err).To(HaveOccurred())
99+
Expect(res).To(BeNil())
100+
})
101+
102+
It("mbsc object exists", func() {
103+
mockClient.EXPECT().Get(ctx, types.NamespacedName{Name: "some name", Namespace: "some namespace"}, gomock.Any()).Return(nil)
104+
105+
res, err := mbsc.GetMBSC(ctx, "some name", "some namespace")
106+
Expect(err).To(BeNil())
107+
Expect(res).ToNot(BeNil())
108+
})
109+
})

internal/mbsc/mock_mbsc.go

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

0 commit comments

Comments
 (0)