From 50e54fb89047a2ec46b9896d9e347c3bac2653d2 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Mon, 16 Dec 2024 16:33:16 +0300 Subject: [PATCH] fix Signed-off-by: Valeriy Khorunzhin --- .../pkg/controller/vm/internal/lifecycle.go | 2 +- .../pkg/controller/vm/internal/util.go | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/lifecycle.go b/images/virtualization-artifact/pkg/controller/vm/internal/lifecycle.go index bb16aab388..ff04c32a38 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/lifecycle.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/lifecycle.go @@ -203,7 +203,7 @@ func (h *LifeCycleHandler) syncPodStarted(vm *virtv2.VirtualMachine, kvvm *virtv } // Try to extract error from kvvm Synchronized condition. - if isPodStartedError(kvvm.Status.PrintableStatus) { + if isPodStartedError(kvvm) { msg := fmt.Sprintf("Failed to start pod: %s", kvvm.Status.PrintableStatus) if kvvmi != nil { msg = fmt.Sprintf("%s, %s", msg, kvvmi.Status.Phase) diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/util.go b/images/virtualization-artifact/pkg/controller/vm/internal/util.go index 0b62a0ba48..3b943e7238 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/util.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/util.go @@ -156,7 +156,16 @@ var mapReasons = map[string]vmcondition.Reason{ virtv1.GuestNotRunningReason: vmcondition.ReasonGuestNotRunningReason, } -func isPodStartedError(phase virtv1.VirtualMachinePrintableStatus) bool { +func isPodStartedError(vm *virtv1.VirtualMachine) bool { + const failedCreatePodReason = "FailedCreate" + synchronized := service.GetKVVMCondition(string(virtv1.VirtualMachineInstanceSynchronized), vm.Status.Conditions) + if synchronized != nil && + synchronized.Status == corev1.ConditionFalse && + synchronized.Reason == failedCreatePodReason { + return true + } + + phase := vm.Status.PrintableStatus return slices.Contains([]virtv1.VirtualMachinePrintableStatus{ virtv1.VirtualMachineStatusErrImagePull, virtv1.VirtualMachineStatusImagePullBackOff,