diff --git a/internal/controllers/machine/machine_controller.go b/internal/controllers/machine/machine_controller.go index 7ffe710dff5c..a4997bb0bcb3 100644 --- a/internal/controllers/machine/machine_controller.go +++ b/internal/controllers/machine/machine_controller.go @@ -242,6 +242,7 @@ func patchMachine(ctx context.Context, patchHelper *patch.Helper, machine *clust // MHC reported condition should take precedence over the remediation progress clusterv1.MachineHealthCheckSucceededCondition, clusterv1.MachineOwnerRemediatedCondition, + clusterv1.DrainingSucceededCondition, ), conditions.WithStepCounterIf(machine.ObjectMeta.DeletionTimestamp.IsZero() && machine.Spec.ProviderID == nil), conditions.WithStepCounterIfOnly( diff --git a/internal/controllers/machine/machine_controller_test.go b/internal/controllers/machine/machine_controller_test.go index 630350dfc3e1..9afd8c1640f0 100644 --- a/internal/controllers/machine/machine_controller_test.go +++ b/internal/controllers/machine/machine_controller_test.go @@ -951,6 +951,17 @@ func TestMachineConditions(t *testing.T) { conditions.FalseCondition(clusterv1.ReadyCondition, clusterv1.NodeNotFoundReason, clusterv1.ConditionSeverityWarning, ""), }, }, + { + name: "ready condition summary consumes reason from the draining succeeded condition", + infraReady: true, + bootstrapReady: true, + beforeFunc: func(bootstrap, infra *unstructured.Unstructured, m *clusterv1.Machine) { + conditions.MarkFalse(m, clusterv1.DrainingSucceededCondition, clusterv1.DrainingFailedReason, clusterv1.ConditionSeverityWarning, "") + }, + conditionsToAssert: []*clusterv1.Condition{ + conditions.FalseCondition(clusterv1.ReadyCondition, clusterv1.DrainingFailedReason, clusterv1.ConditionSeverityWarning, ""), + }, + }, } for _, tt := range testcases {