Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions internal/controllers/mic_reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,9 +140,9 @@ func (mrhi *micReconcilerHelperImpl) updateStatusByPullPods(ctx context.Context,
podsToDelete = append(podsToDelete, p)
continue
}
phase := p.Status.Phase
switch phase {
case v1.PodFailed:
podStatus := mrhi.imagePullerAPI.GetPullPodStatus(&p)
switch podStatus {
case pod.PullImageFailed:
switch {
case imageSpec.Build != nil:
logger.Info("pull pod failed, build exists, setting status to kmmv1beta1.ImageNeedsBuilding")
Expand All @@ -154,7 +154,8 @@ func (mrhi *micReconcilerHelperImpl) updateStatusByPullPods(ctx context.Context,
logger.Info(utils.WarnString("failed pod without build or sign spec, shoud not have happened"))
}
podsToDelete = append(podsToDelete, p)
case v1.PodSucceeded:

case pod.PullImageSuccess:
logger.Info("successful pod, updating image status to ImageExists")
mrhi.micHelper.SetImageStatus(micObj, image, kmmv1beta1.ImageExists)
podsToDelete = append(podsToDelete, p)
Expand All @@ -178,6 +179,7 @@ func (mrhi *micReconcilerHelperImpl) updateStatusByPullPods(ctx context.Context,
}

func (mrhi *micReconcilerHelperImpl) updateStatusByMBSC(ctx context.Context, micObj *kmmv1beta1.ModuleImagesConfig) error {
logger := ctrl.LoggerFrom(ctx).WithValues("mic name", micObj.Name)
mbsc, err := mrhi.mbscHelper.Get(ctx, micObj.Name, micObj.Namespace)
if err != nil {
return fmt.Errorf("failed to get ModuleBuildSignConfig object %s/%s: %v", micObj.Namespace, micObj.Name, err)
Expand All @@ -201,15 +203,19 @@ func (mrhi *micReconcilerHelperImpl) updateStatusByMBSC(ctx context.Context, mic
switch {
case mbscStatus == kmmv1beta1.ActionFailure:
// any failure (build or sign) - image does not exists
logger.Info("mbsc status failed, updating mic image to DoesNotExist")
mrhi.micHelper.SetImageStatus(micObj, mbscImageState.Image, kmmv1beta1.ImageDoesNotExist)
case mbscStatus == kmmv1beta1.ActionSuccess && mbscAction == kmmv1beta1.SignImage:
// sign action succeeded - image exists, nothing more to do
logger.Info("mbsc status success and action as sign, updating mic image to Exists")
mrhi.micHelper.SetImageStatus(micObj, mbscImageState.Image, kmmv1beta1.ImageExists)
case mbscStatus == kmmv1beta1.ActionSuccess && micImageSpec.Sign != nil:
// build succeeded and sign exists - image needs to be signed
logger.Info("mbsc status success and sign section exists, updating mic image to NeedsSigning")
mrhi.micHelper.SetImageStatus(micObj, mbscImageState.Image, kmmv1beta1.ImageNeedsSigning)
case mbscStatus == kmmv1beta1.ActionSuccess:
// build succeeded, no sign - image exists
logger.Info("mbsc status success and no sign section exists, updating mic image to Exists")
mrhi.micHelper.SetImageStatus(micObj, mbscImageState.Image, kmmv1beta1.ImageExists)
}
}
Expand Down
34 changes: 13 additions & 21 deletions internal/controllers/mic_reconciler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,14 +148,12 @@ var _ = Describe("updateStatusByPullPods", func() {
})

It("pod failed, build config present", func() {
pullPod := v1.Pod{
Status: v1.PodStatus{
Phase: v1.PodFailed,
},
}
pullPod := v1.Pod{}

gomock.InOrder(
mockImagePuller.EXPECT().GetPullPodImage(pullPod).Return("image 1"),
micHelper.EXPECT().GetModuleImageSpec(&testMic, "image 1").Return(&testMic.Spec.Images[0]),
mockImagePuller.EXPECT().GetPullPodStatus(&pullPod).Return(pod.PullImageFailed),
micHelper.EXPECT().SetImageStatus(&testMic, "image 1", kmmv1beta1.ImageNeedsBuilding),
clnt.EXPECT().Status().Return(statusWriter),
statusWriter.EXPECT().Patch(ctx, &testMic, gomock.Any()),
Expand All @@ -166,14 +164,12 @@ var _ = Describe("updateStatusByPullPods", func() {
})

It("pod failed, build config not present, sign config present", func() {
pullPod := v1.Pod{
Status: v1.PodStatus{
Phase: v1.PodFailed,
},
}
pullPod := v1.Pod{}

gomock.InOrder(
mockImagePuller.EXPECT().GetPullPodImage(pullPod).Return("image 2"),
micHelper.EXPECT().GetModuleImageSpec(&testMic, "image 2").Return(&testMic.Spec.Images[1]),
mockImagePuller.EXPECT().GetPullPodStatus(&pullPod).Return(pod.PullImageFailed),
micHelper.EXPECT().SetImageStatus(&testMic, "image 2", kmmv1beta1.ImageNeedsSigning),
clnt.EXPECT().Status().Return(statusWriter),
statusWriter.EXPECT().Patch(ctx, &testMic, gomock.Any()),
Expand All @@ -183,15 +179,13 @@ var _ = Describe("updateStatusByPullPods", func() {
Expect(err).To(BeNil())
})

It("pod failed, build or sign config is not present", func() {
pullPod := v1.Pod{
Status: v1.PodStatus{
Phase: v1.PodFailed,
},
}
It("pod failed, build or sign configs are not present", func() {
pullPod := v1.Pod{}

gomock.InOrder(
mockImagePuller.EXPECT().GetPullPodImage(pullPod).Return("image 3"),
micHelper.EXPECT().GetModuleImageSpec(&testMic, "image 3").Return(&testMic.Spec.Images[2]),
mockImagePuller.EXPECT().GetPullPodStatus(&pullPod).Return(pod.PullImageFailed),
clnt.EXPECT().Status().Return(statusWriter),
statusWriter.EXPECT().Patch(ctx, &testMic, gomock.Any()),
mockImagePuller.EXPECT().DeletePod(ctx, &pullPod).Return(nil),
Expand All @@ -201,14 +195,12 @@ var _ = Describe("updateStatusByPullPods", func() {
})

It("pod succeeded", func() {
pullPod := v1.Pod{
Status: v1.PodStatus{
Phase: v1.PodSucceeded,
},
}
pullPod := v1.Pod{}

gomock.InOrder(
mockImagePuller.EXPECT().GetPullPodImage(pullPod).Return("image 2"),
micHelper.EXPECT().GetModuleImageSpec(&testMic, "image 2").Return(&testMic.Spec.Images[1]),
mockImagePuller.EXPECT().GetPullPodStatus(&pullPod).Return(pod.PullImageSuccess),
micHelper.EXPECT().SetImageStatus(&testMic, "image 2", kmmv1beta1.ImageExists),
clnt.EXPECT().Status().Return(statusWriter),
statusWriter.EXPECT().Patch(ctx, &testMic, gomock.Any()),
Expand Down
Loading