diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/lifecycle.go b/images/virtualization-artifact/pkg/controller/vm/internal/lifecycle.go index 622053d14b..1e9f4c5cd5 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/lifecycle.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/lifecycle.go @@ -229,26 +229,34 @@ func (h *LifeCycleHandler) syncRunning(vm *virtv2.VirtualMachine, kvvm *virtv1.V cb := conditions.NewConditionBuilder(vmcondition.TypeRunning).Generation(vm.GetGeneration()) - if kvvm != nil && isInternalVirtualMachineError(kvvm.Status.PrintableStatus) { - // TODO: not internal for VirtualMachineStatusUnschedulable. - msg := fmt.Sprintf("Internal virtual machine error: %s", kvvm.Status.PrintableStatus) - if kvvmi != nil { - msg = fmt.Sprintf("%s, %s", msg, kvvmi.Status.Phase) + if kvvm != nil { + podScheduled := service.GetKVVMCondition(string(corev1.PodScheduled), kvvm.Status.Conditions) + if podScheduled != nil && podScheduled.Status == corev1.ConditionFalse { + vm.Status.Phase = virtv2.MachinePending + return } - synchronized := service.GetKVVMCondition(string(virtv1.VirtualMachineInstanceSynchronized), kvvm.Status.Conditions) - if synchronized != nil && synchronized.Status == corev1.ConditionFalse && synchronized.Message != "" { - msg = fmt.Sprintf("%s; %s: %s", msg, synchronized.Reason, synchronized.Message) - } + if isInternalVirtualMachineError(kvvm.Status.PrintableStatus) { + msg := fmt.Sprintf("Internal virtual machine error: %s", kvvm.Status.PrintableStatus) + if kvvmi != nil { + msg = fmt.Sprintf("%s, %s", msg, kvvmi.Status.Phase) + } - log.Error(msg) - h.recorder.Event(vm, corev1.EventTypeWarning, vmcondition.ReasonInternalVirtualMachineError.String(), msg) + synchronized := service.GetKVVMCondition(string(virtv1.VirtualMachineInstanceSynchronized), kvvm.Status.Conditions) + if synchronized != nil && synchronized.Status == corev1.ConditionFalse && synchronized.Message != "" { + msg = fmt.Sprintf("%s; %s: %s", msg, synchronized.Reason, synchronized.Message) + } - cb.Status(metav1.ConditionFalse). - Reason(vmcondition.ReasonInternalVirtualMachineError). - Message(msg) - conditions.SetCondition(cb, &vm.Status.Conditions) - return + log.Error(msg) + h.recorder.Event(vm, corev1.EventTypeWarning, vmcondition.ReasonInternalVirtualMachineError.String(), msg) + + cb. + Status(metav1.ConditionFalse). + Reason(vmcondition.ReasonInternalVirtualMachineError). + Message(msg) + conditions.SetCondition(cb, &vm.Status.Conditions) + return + } } if kvvmi != nil { diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/util.go b/images/virtualization-artifact/pkg/controller/vm/internal/util.go index 6af2c97f20..7b7163f238 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/util.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/util.go @@ -238,7 +238,6 @@ func isInternalVirtualMachineError(phase virtv1.VirtualMachinePrintableStatus) b virtv1.VirtualMachineStatusDataVolumeError, virtv1.VirtualMachineStatusPvcNotFound, virtv1.VirtualMachineStatusCrashLoopBackOff, - virtv1.VirtualMachineStatusUnschedulable, virtv1.VirtualMachineStatusUnknown, }, phase) } diff --git a/tests/e2e/default_config.yaml b/tests/e2e/default_config.yaml index 3db4c3df8d..aa2b47c340 100644 --- a/tests/e2e/default_config.yaml +++ b/tests/e2e/default_config.yaml @@ -37,7 +37,6 @@ testData: logFilter: - "pattern to exclude" - "Server rejected event (will not retry!)" # Msg. - - "Internal virtual machine error" # Msg. - "validation failed for data source objectref" # Err. - "error patching metadata: virtualdisks" # Err. - "error patching metadata: virtualmachineclasses" # Err.