mirror of
https://github.com/kubernetes/node-problem-detector.git
synced 2026-03-04 02:31:28 +00:00
Allow skipping condition during customplugin initialization
This commit is contained in:
@@ -122,7 +122,9 @@ func (c *customPluginMonitor) Stop() {
|
||||
|
||||
// monitorLoop is the main loop of customPluginMonitor.
|
||||
func (c *customPluginMonitor) monitorLoop() {
|
||||
c.initializeStatus()
|
||||
if !*c.config.PluginGlobalConfig.SkipInitialStatus {
|
||||
c.initializeStatus()
|
||||
}
|
||||
|
||||
resultChan := c.plugin.GetResultChan()
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ var (
|
||||
defaultConcurrency = 3
|
||||
defaultMessageChangeBasedConditionUpdate = false
|
||||
defaultEnableMetricsReporting = true
|
||||
defaultSkipInitialStatus = false
|
||||
|
||||
customPluginName = "custom"
|
||||
)
|
||||
@@ -52,6 +53,8 @@ type pluginGlobalConfig struct {
|
||||
Concurrency *int `json:"concurrency,omitempty"`
|
||||
// EnableMessageChangeBasedConditionUpdate indicates whether NPD should enable message change based condition update.
|
||||
EnableMessageChangeBasedConditionUpdate *bool `json:"enable_message_change_based_condition_update,omitempty"`
|
||||
// SkipInitialStatus prevents the first status update with default conditions
|
||||
SkipInitialStatus *bool `json:"skip_initial_status,omitempty"`
|
||||
}
|
||||
|
||||
// Custom plugin config is the configuration of custom plugin monitor.
|
||||
@@ -105,6 +108,10 @@ func (cpc *CustomPluginConfig) ApplyConfiguration() error {
|
||||
cpc.PluginGlobalConfig.EnableMessageChangeBasedConditionUpdate = &defaultMessageChangeBasedConditionUpdate
|
||||
}
|
||||
|
||||
if cpc.PluginGlobalConfig.SkipInitialStatus == nil {
|
||||
cpc.PluginGlobalConfig.SkipInitialStatus = &defaultSkipInitialStatus
|
||||
}
|
||||
|
||||
for _, rule := range cpc.Rules {
|
||||
if rule.TimeoutString != nil {
|
||||
timeout, err := time.ParseDuration(*rule.TimeoutString)
|
||||
|
||||
@@ -33,6 +33,7 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
concurrency := 2
|
||||
messageChangeBasedConditionUpdate := true
|
||||
disableMetricsReporting := false
|
||||
disableInitialStatusUpdate := true
|
||||
|
||||
ruleTimeout := 1 * time.Second
|
||||
ruleTimeoutString := ruleTimeout.String()
|
||||
@@ -62,6 +63,7 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
SkipInitialStatus: &defaultSkipInitialStatus,
|
||||
},
|
||||
EnableMetricsReporting: &defaultEnableMetricsReporting,
|
||||
Rules: []*CustomRule{
|
||||
@@ -91,6 +93,7 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
SkipInitialStatus: &defaultSkipInitialStatus,
|
||||
},
|
||||
EnableMetricsReporting: &defaultEnableMetricsReporting,
|
||||
},
|
||||
@@ -110,6 +113,7 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
SkipInitialStatus: &defaultSkipInitialStatus,
|
||||
},
|
||||
EnableMetricsReporting: &defaultEnableMetricsReporting,
|
||||
},
|
||||
@@ -129,6 +133,7 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
MaxOutputLength: &maxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
SkipInitialStatus: &defaultSkipInitialStatus,
|
||||
},
|
||||
EnableMetricsReporting: &defaultEnableMetricsReporting,
|
||||
},
|
||||
@@ -148,6 +153,7 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &concurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
SkipInitialStatus: &defaultSkipInitialStatus,
|
||||
},
|
||||
EnableMetricsReporting: &defaultEnableMetricsReporting,
|
||||
},
|
||||
@@ -167,6 +173,7 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &messageChangeBasedConditionUpdate,
|
||||
SkipInitialStatus: &defaultSkipInitialStatus,
|
||||
},
|
||||
EnableMetricsReporting: &defaultEnableMetricsReporting,
|
||||
},
|
||||
@@ -184,10 +191,30 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
SkipInitialStatus: &defaultSkipInitialStatus,
|
||||
},
|
||||
EnableMetricsReporting: &disableMetricsReporting,
|
||||
},
|
||||
},
|
||||
"disable status update during initialization": {
|
||||
Orig: CustomPluginConfig{PluginGlobalConfig: pluginGlobalConfig{
|
||||
SkipInitialStatus: &disableInitialStatusUpdate,
|
||||
},
|
||||
},
|
||||
Wanted: CustomPluginConfig{
|
||||
PluginGlobalConfig: pluginGlobalConfig{
|
||||
InvokeIntervalString: &defaultInvokeIntervalString,
|
||||
InvokeInterval: &defaultInvokeInterval,
|
||||
TimeoutString: &defaultGlobalTimeoutString,
|
||||
Timeout: &defaultGlobalTimeout,
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
SkipInitialStatus: &disableInitialStatusUpdate,
|
||||
},
|
||||
EnableMetricsReporting: &defaultEnableMetricsReporting,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for desp, utMeta := range utMetas {
|
||||
|
||||
Reference in New Issue
Block a user