From 9787cdc6f0d1d977c6788c3c4f384e6ce659587e Mon Sep 17 00:00:00 2001 From: Andrew Halaney Date: Mon, 20 Apr 2026 15:19:07 -0500 Subject: [PATCH] custom-plugin-monitor: Honor default condition status Users can define a default status, but that's being stomped on currently. Let's honor what's defined, if defined correctly... otherwise continue to default to False and log a warning. --- .../custom_plugin_monitor.go | 10 ++++++++- .../custom_plugin_monitor_test.go | 21 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/pkg/custompluginmonitor/custom_plugin_monitor.go b/pkg/custompluginmonitor/custom_plugin_monitor.go index ea383d7c9..893bf1895 100644 --- a/pkg/custompluginmonitor/custom_plugin_monitor.go +++ b/pkg/custompluginmonitor/custom_plugin_monitor.go @@ -317,7 +317,15 @@ func initialConditions(defaults []types.Condition) []types.Condition { conditions := make([]types.Condition, len(defaults)) copy(conditions, defaults) for i := range conditions { - conditions[i].Status = types.False + switch conditions[i].Status { + case types.True, types.False, types.Unknown: + case "": + conditions[i].Status = types.False + default: + klog.Warningf("Condition %q has invalid initial status %q, defaulting to %q", + conditions[i].Type, conditions[i].Status, types.False) + conditions[i].Status = types.False + } conditions[i].Transition = time.Now() } return conditions diff --git a/pkg/custompluginmonitor/custom_plugin_monitor_test.go b/pkg/custompluginmonitor/custom_plugin_monitor_test.go index c4a562606..a4601fc8c 100644 --- a/pkg/custompluginmonitor/custom_plugin_monitor_test.go +++ b/pkg/custompluginmonitor/custom_plugin_monitor_test.go @@ -720,3 +720,24 @@ func TestNewCustomPluginMonitorOrDie(t *testing.T) { gotMetrics := append(fakeCounter.ListMetrics(), fakeGauge.ListMetrics()...) assert.ElementsMatch(t, expectedMetrics, gotMetrics) } + +func TestInitialConditions(t *testing.T) { + tests := []struct { + name string + inputStatus types.ConditionStatus + expectedStatus types.ConditionStatus + }{ + {name: "TestTrue", inputStatus: types.True, expectedStatus: types.True}, + {name: "TestFalse", inputStatus: types.False, expectedStatus: types.False}, + {name: "TestUnknown", inputStatus: types.Unknown, expectedStatus: types.Unknown}, + {name: "TestUnset", inputStatus: "", expectedStatus: types.False}, + {name: "TestInvalid", inputStatus: "garbage", expectedStatus: types.False}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + defaults := []types.Condition{{Type: "TestCondition", Status: tt.inputStatus}} + conditions := initialConditions(defaults) + assert.Equal(t, tt.expectedStatus, conditions[0].Status) + }) + } +}