Skip to content

Commit c6f0acb

Browse files
Adding new functions to MIC interface
Adding 2 function to the interface, that will be later used by controllers, among then MIC controller
1 parent a8ff4d4 commit c6f0acb

File tree

3 files changed

+184
-0
lines changed

3 files changed

+184
-0
lines changed

internal/mic/mic.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ import (
1818
type MIC interface {
1919
ApplyMIC(ctx context.Context, name, ns string, images []kmmv1beta1.ModuleImageSpec,
2020
imageRepoSecret *v1.LocalObjectReference, owner metav1.Object) error
21+
GetModuleImageSpec(micObj *kmmv1beta1.ModuleImagesConfig, image string) *kmmv1beta1.ModuleImageSpec
22+
SetImageStatus(micObj *kmmv1beta1.ModuleImagesConfig, image string, status kmmv1beta1.ImageState)
23+
GetImageState(micObj *kmmv1beta1.ModuleImagesConfig, image string) kmmv1beta1.ImageState
2124
}
2225

2326
type micImpl struct {
@@ -61,3 +64,35 @@ func (mici *micImpl) ApplyMIC(ctx context.Context, name, ns string, images []kmm
6164

6265
return nil
6366
}
67+
68+
func (mici *micImpl) GetModuleImageSpec(micObj *kmmv1beta1.ModuleImagesConfig, image string) *kmmv1beta1.ModuleImageSpec {
69+
for i, imageSpec := range micObj.Spec.Images {
70+
if imageSpec.Image == image {
71+
return &micObj.Spec.Images[i]
72+
}
73+
}
74+
return nil
75+
}
76+
77+
func (mici *micImpl) SetImageStatus(micObj *kmmv1beta1.ModuleImagesConfig, image string, status kmmv1beta1.ImageState) {
78+
imageState := kmmv1beta1.ModuleImageState{
79+
Image: image,
80+
Status: status,
81+
}
82+
for i, imageStatus := range micObj.Status.ImagesStates {
83+
if imageStatus.Image == image {
84+
micObj.Status.ImagesStates[i] = imageState
85+
return
86+
}
87+
}
88+
micObj.Status.ImagesStates = append(micObj.Status.ImagesStates, imageState)
89+
}
90+
91+
func (mici *micImpl) GetImageState(micObj *kmmv1beta1.ModuleImagesConfig, image string) kmmv1beta1.ImageState {
92+
for _, imageState := range micObj.Status.ImagesStates {
93+
if imageState.Image == image {
94+
return imageState.Status
95+
}
96+
}
97+
return ""
98+
}

internal/mic/mic_test.go

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,3 +131,112 @@ var _ = Describe("ApplyMIC", func() {
131131
Expect(err).NotTo(HaveOccurred())
132132
})
133133
})
134+
135+
var _ = Describe("GetModuleImageSpec", func() {
136+
var (
137+
micAPI MIC
138+
)
139+
140+
BeforeEach(func() {
141+
micAPI = NewModuleImagesConfigAPI(nil, nil)
142+
})
143+
144+
testMic := kmmv1beta1.ModuleImagesConfig{
145+
Spec: kmmv1beta1.ModuleImagesConfigSpec{
146+
Images: []kmmv1beta1.ModuleImageSpec{
147+
{
148+
Image: "image 1",
149+
},
150+
{
151+
Image: "image 2",
152+
},
153+
},
154+
},
155+
}
156+
157+
It("check image present and not present scenarious", func() {
158+
159+
By("image spec is present")
160+
res := micAPI.GetModuleImageSpec(&testMic, "image 1")
161+
Expect(res).ToNot(BeNil())
162+
Expect(res.Image).To(Equal("image 1"))
163+
164+
By("image spec is not present")
165+
res = micAPI.GetModuleImageSpec(&testMic, "image 3")
166+
Expect(res).To(BeNil())
167+
})
168+
})
169+
170+
var _ = Describe("SetImageStatus", func() {
171+
var (
172+
micAPI MIC
173+
)
174+
175+
BeforeEach(func() {
176+
micAPI = NewModuleImagesConfigAPI(nil, nil)
177+
})
178+
179+
testMic := kmmv1beta1.ModuleImagesConfig{
180+
Status: kmmv1beta1.ModuleImagesConfigStatus{
181+
ImagesStates: []kmmv1beta1.ModuleImageState{
182+
{
183+
Image: "image 1",
184+
Status: kmmv1beta1.ImageDoesNotExist,
185+
},
186+
{
187+
Image: "image 2",
188+
Status: kmmv1beta1.ImageExists,
189+
},
190+
},
191+
},
192+
}
193+
194+
It("set images status for both present and not present statuses", func() {
195+
196+
By("image status is present")
197+
micAPI.SetImageStatus(&testMic, "image 1", kmmv1beta1.ImageExists)
198+
Expect(testMic.Status.ImagesStates[0].Image).To(Equal("image 1"))
199+
Expect(testMic.Status.ImagesStates[0].Status).To(Equal(kmmv1beta1.ImageExists))
200+
201+
By("image status is not present")
202+
micAPI.SetImageStatus(&testMic, "image 3", kmmv1beta1.ImageDoesNotExist)
203+
Expect(testMic.Status.ImagesStates[2].Image).To(Equal("image 3"))
204+
Expect(testMic.Status.ImagesStates[2].Status).To(Equal(kmmv1beta1.ImageDoesNotExist))
205+
})
206+
})
207+
208+
var _ = Describe("GetImageState", func() {
209+
var (
210+
micAPI MIC
211+
)
212+
213+
BeforeEach(func() {
214+
micAPI = NewModuleImagesConfigAPI(nil, nil)
215+
})
216+
217+
testMic := kmmv1beta1.ModuleImagesConfig{
218+
Status: kmmv1beta1.ModuleImagesConfigStatus{
219+
ImagesStates: []kmmv1beta1.ModuleImageState{
220+
{
221+
Image: "image 1",
222+
Status: kmmv1beta1.ImageDoesNotExist,
223+
},
224+
{
225+
Image: "image 2",
226+
Status: kmmv1beta1.ImageExists,
227+
},
228+
},
229+
},
230+
}
231+
232+
It("get images status for both present and not present statuses", func() {
233+
234+
By("image status is present")
235+
res := micAPI.GetImageState(&testMic, "image 1")
236+
Expect(res).To(Equal(kmmv1beta1.ImageDoesNotExist))
237+
238+
By("image status is not present")
239+
res = micAPI.GetImageState(&testMic, "image 3")
240+
Expect(res).To(BeEmpty())
241+
})
242+
})

internal/mic/mock_mic.go

Lines changed: 40 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)