From 9de9c2d50c4f6c06d5849a46e775990d60a8094e Mon Sep 17 00:00:00 2001 From: Artem Bortnikov <82099337+aobort@users.noreply.github.com> Date: Fri, 14 Jun 2024 16:23:04 +0300 Subject: [PATCH] ensure machine power status is Off before making it available (#123) Signed-off-by: Artem Bortnikov --- internal/controller/machine_controller.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/controller/machine_controller.go b/internal/controller/machine_controller.go index 7b3d3e4..e79bec5 100644 --- a/internal/controller/machine_controller.go +++ b/internal/controller/machine_controller.go @@ -390,17 +390,20 @@ func (r *MachineReconciler) evaluateAvailability( machine *metalv1alpha1.Machine, machineStatusApply *metalv1alpha1apply.MachineStatusApplyConfiguration, ) { - idx := slices.IndexFunc(machineStatusApply.Conditions, func(c v1.ConditionApplyConfiguration) bool { - return *c.Type == MachineReadyConditionType - }) - if *machineStatusApply.Conditions[idx].Status == metav1.ConditionFalse { + if !slices.ContainsFunc(machineStatusApply.Conditions, func(c v1.ConditionApplyConfiguration) bool { + return *c.Type == MachineReadyConditionType && *c.Status == metav1.ConditionTrue + }) { return } if machine.Spec.MachineClaimRef != nil && machine.Spec.MachineClaimRef.Name != "" { machineStatusApply.State = ptr.To(metalv1alpha1.MachineStateReserved) - } else { + return + } + if machine.Status.Power == metalv1alpha1.PowerOff { machineStatusApply.State = ptr.To(metalv1alpha1.MachineStateAvailable) + } else { + machineStatusApply.State = ptr.To(machine.Status.State) } }