Allow skipping condition during customplugin initialization

This commit is contained in:
Taylor Chaparro
2022-02-13 11:50:19 -08:00
parent 51508603fe
commit 9344c938bb
4 changed files with 39 additions and 2 deletions

View File

@@ -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()

View File

@@ -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)

View File

@@ -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 {