Skip to content

Commit b35e626

Browse files
authored
Merge pull request #11494 from fabriziopandini/refine-v1beta2-nodehealthy-condition
🌱 Refine v1beta2 NodeHealthy condition
2 parents 2719ae3 + d8fd3b5 commit b35e626

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

internal/controllers/machine/machine_controller_status.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
corev1 "k8s.io/api/core/v1"
2727
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2828
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
29+
"k8s.io/apimachinery/pkg/util/sets"
2930
"k8s.io/utils/ptr"
3031
ctrl "sigs.k8s.io/controller-runtime"
3132
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -426,6 +427,8 @@ func summarizeNodeV1Beta2Conditions(_ context.Context, node *corev1.Node) (metav
426427
semanticallyFalseStatus := 0
427428
unknownStatus := 0
428429

430+
conditionCount := 0
431+
conditionMessages := sets.Set[string]{}
429432
messages := []string{}
430433
for _, conditionType := range []corev1.NodeConditionType{corev1.NodeReady, corev1.NodeMemoryPressure, corev1.NodeDiskPressure, corev1.NodePIDPressure} {
431434
var condition *corev1.NodeCondition
@@ -447,6 +450,8 @@ func summarizeNodeV1Beta2Conditions(_ context.Context, node *corev1.Node) (metav
447450
if m == "" {
448451
m = fmt.Sprintf("Condition is %s", condition.Status)
449452
}
453+
conditionCount++
454+
conditionMessages.Insert(m)
450455
messages = append(messages, fmt.Sprintf("* Node.%s: %s", condition.Type, m))
451456
if condition.Status == corev1.ConditionUnknown {
452457
unknownStatus++
@@ -461,6 +466,8 @@ func summarizeNodeV1Beta2Conditions(_ context.Context, node *corev1.Node) (metav
461466
if m == "" {
462467
m = fmt.Sprintf("Condition is %s", condition.Status)
463468
}
469+
conditionCount++
470+
conditionMessages.Insert(m)
464471
messages = append(messages, fmt.Sprintf("* Node.%s: %s", condition.Type, m))
465472
if condition.Status == corev1.ConditionUnknown {
466473
unknownStatus++
@@ -471,6 +478,9 @@ func summarizeNodeV1Beta2Conditions(_ context.Context, node *corev1.Node) (metav
471478
}
472479
}
473480

481+
if conditionCount > 1 && len(conditionMessages) == 1 {
482+
messages = []string{fmt.Sprintf("* Node.AllConditions: %s", conditionMessages.UnsortedList()[0])}
483+
}
474484
message := strings.Join(messages, "\n")
475485
if semanticallyFalseStatus > 0 {
476486
return metav1.ConditionFalse, clusterv1.MachineNodeNotHealthyV1Beta2Reason, message

internal/controllers/machine/machine_controller_status_test.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -558,12 +558,9 @@ func TestSummarizeNodeV1Beta2Conditions(t *testing.T) {
558558
{Type: corev1.NodeDiskPressure, Status: corev1.ConditionUnknown, Message: "Node is not reporting status"},
559559
{Type: corev1.NodePIDPressure, Status: corev1.ConditionUnknown, Message: "Node is not reporting status"},
560560
},
561-
expectedStatus: metav1.ConditionUnknown,
562-
expectedReason: clusterv1.MachineNodeHealthUnknownV1Beta2Reason,
563-
expectedMessage: "* Node.Ready: Node is not reporting status\n" +
564-
"* Node.MemoryPressure: Node is not reporting status\n" +
565-
"* Node.DiskPressure: Node is not reporting status\n" +
566-
"* Node.PIDPressure: Node is not reporting status",
561+
expectedStatus: metav1.ConditionUnknown,
562+
expectedReason: clusterv1.MachineNodeHealthUnknownV1Beta2Reason,
563+
expectedMessage: "* Node.AllConditions: Node is not reporting status",
567564
},
568565
{
569566
name: "multiple semantically failed condition",

0 commit comments

Comments
 (0)