Skip to content

Commit bb2bfb8

Browse files
yevgeny-shnaidmank8s-ci-robot
authored andcommitted
Changing MIC controller to support new ImagePuller interface
Since adding GetPullPodStatus method to the ImagePuller interface, which returns the status of the Pod based on its Phase, container's status etc', the MIC controller has no need to look at the pod itself, but to just pass it to ImagePuller, and act based on the status returned. In addition, this PR also adds debug logs to updateStatusByMBSC function
1 parent f115047 commit bb2bfb8

File tree

2 files changed

+23
-25
lines changed

2 files changed

+23
-25
lines changed

internal/controllers/mic_reconciler.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,9 @@ func (mrhi *micReconcilerHelperImpl) updateStatusByPullPods(ctx context.Context,
140140
podsToDelete = append(podsToDelete, p)
141141
continue
142142
}
143-
phase := p.Status.Phase
144-
switch phase {
145-
case v1.PodFailed:
143+
podStatus := mrhi.imagePullerAPI.GetPullPodStatus(&p)
144+
switch podStatus {
145+
case pod.PullImageFailed:
146146
switch {
147147
case imageSpec.Build != nil:
148148
logger.Info("pull pod failed, build exists, setting status to kmmv1beta1.ImageNeedsBuilding")
@@ -154,7 +154,8 @@ func (mrhi *micReconcilerHelperImpl) updateStatusByPullPods(ctx context.Context,
154154
logger.Info(utils.WarnString("failed pod without build or sign spec, shoud not have happened"))
155155
}
156156
podsToDelete = append(podsToDelete, p)
157-
case v1.PodSucceeded:
157+
158+
case pod.PullImageSuccess:
158159
logger.Info("successful pod, updating image status to ImageExists")
159160
mrhi.micHelper.SetImageStatus(micObj, image, kmmv1beta1.ImageExists)
160161
podsToDelete = append(podsToDelete, p)
@@ -178,6 +179,7 @@ func (mrhi *micReconcilerHelperImpl) updateStatusByPullPods(ctx context.Context,
178179
}
179180

180181
func (mrhi *micReconcilerHelperImpl) updateStatusByMBSC(ctx context.Context, micObj *kmmv1beta1.ModuleImagesConfig) error {
182+
logger := ctrl.LoggerFrom(ctx).WithValues("mic name", micObj.Name)
181183
mbsc, err := mrhi.mbscHelper.Get(ctx, micObj.Name, micObj.Namespace)
182184
if err != nil {
183185
return fmt.Errorf("failed to get ModuleBuildSignConfig object %s/%s: %v", micObj.Namespace, micObj.Name, err)
@@ -201,15 +203,19 @@ func (mrhi *micReconcilerHelperImpl) updateStatusByMBSC(ctx context.Context, mic
201203
switch {
202204
case mbscStatus == kmmv1beta1.ActionFailure:
203205
// any failure (build or sign) - image does not exists
206+
logger.Info("mbsc status failed, updating mic image to DoesNotExist")
204207
mrhi.micHelper.SetImageStatus(micObj, mbscImageState.Image, kmmv1beta1.ImageDoesNotExist)
205208
case mbscStatus == kmmv1beta1.ActionSuccess && mbscAction == kmmv1beta1.SignImage:
206209
// sign action succeeded - image exists, nothing more to do
210+
logger.Info("mbsc status success and action as sign, updating mic image to Exists")
207211
mrhi.micHelper.SetImageStatus(micObj, mbscImageState.Image, kmmv1beta1.ImageExists)
208212
case mbscStatus == kmmv1beta1.ActionSuccess && micImageSpec.Sign != nil:
209213
// build succeeded and sign exists - image needs to be signed
214+
logger.Info("mbsc status success and sign section exists, updating mic image to NeedsSigning")
210215
mrhi.micHelper.SetImageStatus(micObj, mbscImageState.Image, kmmv1beta1.ImageNeedsSigning)
211216
case mbscStatus == kmmv1beta1.ActionSuccess:
212217
// build succeeded, no sign - image exists
218+
logger.Info("mbsc status success and no sign section exists, updating mic image to Exists")
213219
mrhi.micHelper.SetImageStatus(micObj, mbscImageState.Image, kmmv1beta1.ImageExists)
214220
}
215221
}

internal/controllers/mic_reconciler_test.go

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -148,14 +148,12 @@ var _ = Describe("updateStatusByPullPods", func() {
148148
})
149149

150150
It("pod failed, build config present", func() {
151-
pullPod := v1.Pod{
152-
Status: v1.PodStatus{
153-
Phase: v1.PodFailed,
154-
},
155-
}
151+
pullPod := v1.Pod{}
152+
156153
gomock.InOrder(
157154
mockImagePuller.EXPECT().GetPullPodImage(pullPod).Return("image 1"),
158155
micHelper.EXPECT().GetModuleImageSpec(&testMic, "image 1").Return(&testMic.Spec.Images[0]),
156+
mockImagePuller.EXPECT().GetPullPodStatus(&pullPod).Return(pod.PullImageFailed),
159157
micHelper.EXPECT().SetImageStatus(&testMic, "image 1", kmmv1beta1.ImageNeedsBuilding),
160158
clnt.EXPECT().Status().Return(statusWriter),
161159
statusWriter.EXPECT().Patch(ctx, &testMic, gomock.Any()),
@@ -166,14 +164,12 @@ var _ = Describe("updateStatusByPullPods", func() {
166164
})
167165

168166
It("pod failed, build config not present, sign config present", func() {
169-
pullPod := v1.Pod{
170-
Status: v1.PodStatus{
171-
Phase: v1.PodFailed,
172-
},
173-
}
167+
pullPod := v1.Pod{}
168+
174169
gomock.InOrder(
175170
mockImagePuller.EXPECT().GetPullPodImage(pullPod).Return("image 2"),
176171
micHelper.EXPECT().GetModuleImageSpec(&testMic, "image 2").Return(&testMic.Spec.Images[1]),
172+
mockImagePuller.EXPECT().GetPullPodStatus(&pullPod).Return(pod.PullImageFailed),
177173
micHelper.EXPECT().SetImageStatus(&testMic, "image 2", kmmv1beta1.ImageNeedsSigning),
178174
clnt.EXPECT().Status().Return(statusWriter),
179175
statusWriter.EXPECT().Patch(ctx, &testMic, gomock.Any()),
@@ -183,15 +179,13 @@ var _ = Describe("updateStatusByPullPods", func() {
183179
Expect(err).To(BeNil())
184180
})
185181

186-
It("pod failed, build or sign config is not present", func() {
187-
pullPod := v1.Pod{
188-
Status: v1.PodStatus{
189-
Phase: v1.PodFailed,
190-
},
191-
}
182+
It("pod failed, build or sign configs are not present", func() {
183+
pullPod := v1.Pod{}
184+
192185
gomock.InOrder(
193186
mockImagePuller.EXPECT().GetPullPodImage(pullPod).Return("image 3"),
194187
micHelper.EXPECT().GetModuleImageSpec(&testMic, "image 3").Return(&testMic.Spec.Images[2]),
188+
mockImagePuller.EXPECT().GetPullPodStatus(&pullPod).Return(pod.PullImageFailed),
195189
clnt.EXPECT().Status().Return(statusWriter),
196190
statusWriter.EXPECT().Patch(ctx, &testMic, gomock.Any()),
197191
mockImagePuller.EXPECT().DeletePod(ctx, &pullPod).Return(nil),
@@ -201,14 +195,12 @@ var _ = Describe("updateStatusByPullPods", func() {
201195
})
202196

203197
It("pod succeeded", func() {
204-
pullPod := v1.Pod{
205-
Status: v1.PodStatus{
206-
Phase: v1.PodSucceeded,
207-
},
208-
}
198+
pullPod := v1.Pod{}
199+
209200
gomock.InOrder(
210201
mockImagePuller.EXPECT().GetPullPodImage(pullPod).Return("image 2"),
211202
micHelper.EXPECT().GetModuleImageSpec(&testMic, "image 2").Return(&testMic.Spec.Images[1]),
203+
mockImagePuller.EXPECT().GetPullPodStatus(&pullPod).Return(pod.PullImageSuccess),
212204
micHelper.EXPECT().SetImageStatus(&testMic, "image 2", kmmv1beta1.ImageExists),
213205
clnt.EXPECT().Status().Return(statusWriter),
214206
statusWriter.EXPECT().Patch(ctx, &testMic, gomock.Any()),

0 commit comments

Comments
 (0)