diff --git a/pkg/custompluginmonitor/custom_plugin_monitor.go b/pkg/custompluginmonitor/custom_plugin_monitor.go index 8b9bf6d42..d2977d6e1 100644 --- a/pkg/custompluginmonitor/custom_plugin_monitor.go +++ b/pkg/custompluginmonitor/custom_plugin_monitor.go @@ -286,11 +286,20 @@ func toConditionStatus(s cpmtypes.Status) types.ConditionStatus { func (c *customPluginMonitor) initializeStatus() { // Initialize the default node conditions c.conditions = initialConditions(c.config.DefaultConditions) - glog.Infof("Initialize condition generated: %+v", c.conditions) + + // Initialize all conditions to their default state + initializedConditions := []types.Condition{} + for _, cond := range c.conditions { + if !cond.Uninitialized { + initializedConditions = append(initializedConditions, cond) + } + } + glog.Infof("Initialize condition generated: %+v", initializedConditions) + // Update the initial status c.statusChan <- &types.Status{ Source: c.config.Source, - Conditions: c.conditions, + Conditions: initializedConditions, } } diff --git a/pkg/types/types.go b/pkg/types/types.go index 1a36804d6..aaffa6c99 100644 --- a/pkg/types/types.go +++ b/pkg/types/types.go @@ -65,6 +65,8 @@ type Condition struct { Reason string `json:"reason"` // Message is a human readable message of why node goes into this condition. Message string `json:"message"` + // Set this to not automatically set initialStatus to False when NPD starts. + Uninitialized bool `json:"uninitialized"` } // Event is the event used internally by node problem detector.