mirror of
https://github.com/kubernetes/node-problem-detector.git
synced 2026-05-06 01:07:07 +00:00
enable codnition updaet when message change for custom plugin
This commit is contained in:
@@ -176,8 +176,12 @@ func (c *customPluginMonitor) generateStatus(result cpmtypes.Result) *types.Stat
|
||||
|
||||
condition.Status = status
|
||||
condition.Reason = result.Rule.Reason
|
||||
} else if condition.Status == status && condition.Reason != result.Rule.Reason {
|
||||
// change 4: Condition status do not change. condition reason changes.
|
||||
} else if condition.Status == status &&
|
||||
(condition.Reason != result.Rule.Reason ||
|
||||
(*c.config.PluginGlobalConfig.EnableMessageChangeBasedConditionUpdate && condition.Message != result.Message)) {
|
||||
// change 4: Condition status do not change.
|
||||
// condition reason changes or
|
||||
// condition message changes when message based condition update is enabled.
|
||||
condition.Transition = timestamp
|
||||
condition.Reason = result.Rule.Reason
|
||||
condition.Message = result.Message
|
||||
|
||||
@@ -25,12 +25,13 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
defaultGlobalTimeout = 5 * time.Second
|
||||
defaultGlobalTimeoutString = defaultGlobalTimeout.String()
|
||||
defaultInvokeInterval = 30 * time.Second
|
||||
defaultInvokeIntervalString = defaultInvokeInterval.String()
|
||||
defaultMaxOutputLength = 80
|
||||
defaultConcurrency = 3
|
||||
defaultGlobalTimeout = 5 * time.Second
|
||||
defaultGlobalTimeoutString = defaultGlobalTimeout.String()
|
||||
defaultInvokeInterval = 30 * time.Second
|
||||
defaultInvokeIntervalString = defaultInvokeInterval.String()
|
||||
defaultMaxOutputLength = 80
|
||||
defaultConcurrency = 3
|
||||
defaultMessageChangeBasedConditionUpdate = false
|
||||
|
||||
customPluginName = "custom"
|
||||
)
|
||||
@@ -48,6 +49,8 @@ type pluginGlobalConfig struct {
|
||||
MaxOutputLength *int `json:"max_output_length,omitempty"`
|
||||
// Concurrency is the number of concurrent running plugins.
|
||||
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"`
|
||||
}
|
||||
|
||||
// Custom plugin config is the configuration of custom plugin monitor.
|
||||
@@ -95,6 +98,9 @@ func (cpc *CustomPluginConfig) ApplyConfiguration() error {
|
||||
if cpc.PluginGlobalConfig.Concurrency == nil {
|
||||
cpc.PluginGlobalConfig.Concurrency = &defaultConcurrency
|
||||
}
|
||||
if cpc.PluginGlobalConfig.EnableMessageChangeBasedConditionUpdate == nil {
|
||||
cpc.PluginGlobalConfig.EnableMessageChangeBasedConditionUpdate = &defaultMessageChangeBasedConditionUpdate
|
||||
}
|
||||
|
||||
for _, rule := range cpc.Rules {
|
||||
if rule.TimeoutString != nil {
|
||||
|
||||
@@ -29,6 +29,7 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
invokeIntervalString := invokeInterval.String()
|
||||
maxOutputLength := 79
|
||||
concurrency := 2
|
||||
messageChangeBasedConditionUpdate := true
|
||||
|
||||
ruleTimeout := 1 * time.Second
|
||||
ruleTimeoutString := ruleTimeout.String()
|
||||
@@ -51,12 +52,13 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
},
|
||||
Wanted: CustomPluginConfig{
|
||||
PluginGlobalConfig: pluginGlobalConfig{
|
||||
InvokeIntervalString: &defaultInvokeIntervalString,
|
||||
InvokeInterval: &defaultInvokeInterval,
|
||||
TimeoutString: &defaultGlobalTimeoutString,
|
||||
Timeout: &defaultGlobalTimeout,
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
InvokeIntervalString: &defaultInvokeIntervalString,
|
||||
InvokeInterval: &defaultInvokeInterval,
|
||||
TimeoutString: &defaultGlobalTimeoutString,
|
||||
Timeout: &defaultGlobalTimeout,
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
},
|
||||
Rules: []*CustomRule{
|
||||
{
|
||||
@@ -78,12 +80,13 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
},
|
||||
Wanted: CustomPluginConfig{
|
||||
PluginGlobalConfig: pluginGlobalConfig{
|
||||
InvokeIntervalString: &invokeIntervalString,
|
||||
InvokeInterval: &invokeInterval,
|
||||
TimeoutString: &defaultGlobalTimeoutString,
|
||||
Timeout: &defaultGlobalTimeout,
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
InvokeIntervalString: &invokeIntervalString,
|
||||
InvokeInterval: &invokeInterval,
|
||||
TimeoutString: &defaultGlobalTimeoutString,
|
||||
Timeout: &defaultGlobalTimeout,
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -95,12 +98,13 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
},
|
||||
Wanted: CustomPluginConfig{
|
||||
PluginGlobalConfig: pluginGlobalConfig{
|
||||
InvokeIntervalString: &defaultInvokeIntervalString,
|
||||
InvokeInterval: &defaultInvokeInterval,
|
||||
TimeoutString: &globalTimeoutString,
|
||||
Timeout: &globalTimeout,
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
InvokeIntervalString: &defaultInvokeIntervalString,
|
||||
InvokeInterval: &defaultInvokeInterval,
|
||||
TimeoutString: &globalTimeoutString,
|
||||
Timeout: &globalTimeout,
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -112,12 +116,13 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
},
|
||||
Wanted: CustomPluginConfig{
|
||||
PluginGlobalConfig: pluginGlobalConfig{
|
||||
InvokeIntervalString: &defaultInvokeIntervalString,
|
||||
InvokeInterval: &defaultInvokeInterval,
|
||||
TimeoutString: &defaultGlobalTimeoutString,
|
||||
Timeout: &defaultGlobalTimeout,
|
||||
MaxOutputLength: &maxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
InvokeIntervalString: &defaultInvokeIntervalString,
|
||||
InvokeInterval: &defaultInvokeInterval,
|
||||
TimeoutString: &defaultGlobalTimeoutString,
|
||||
Timeout: &defaultGlobalTimeout,
|
||||
MaxOutputLength: &maxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -129,12 +134,31 @@ func TestCustomPluginConfigApplyConfiguration(t *testing.T) {
|
||||
},
|
||||
Wanted: CustomPluginConfig{
|
||||
PluginGlobalConfig: pluginGlobalConfig{
|
||||
InvokeIntervalString: &defaultInvokeIntervalString,
|
||||
InvokeInterval: &defaultInvokeInterval,
|
||||
TimeoutString: &defaultGlobalTimeoutString,
|
||||
Timeout: &defaultGlobalTimeout,
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &concurrency,
|
||||
InvokeIntervalString: &defaultInvokeIntervalString,
|
||||
InvokeInterval: &defaultInvokeInterval,
|
||||
TimeoutString: &defaultGlobalTimeoutString,
|
||||
Timeout: &defaultGlobalTimeout,
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &concurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &defaultMessageChangeBasedConditionUpdate,
|
||||
},
|
||||
},
|
||||
},
|
||||
"custom message change based condition update": {
|
||||
Orig: CustomPluginConfig{
|
||||
PluginGlobalConfig: pluginGlobalConfig{
|
||||
EnableMessageChangeBasedConditionUpdate: &messageChangeBasedConditionUpdate,
|
||||
},
|
||||
},
|
||||
Wanted: CustomPluginConfig{
|
||||
PluginGlobalConfig: pluginGlobalConfig{
|
||||
InvokeIntervalString: &defaultInvokeIntervalString,
|
||||
InvokeInterval: &defaultInvokeInterval,
|
||||
TimeoutString: &defaultGlobalTimeoutString,
|
||||
Timeout: &defaultGlobalTimeout,
|
||||
MaxOutputLength: &defaultMaxOutputLength,
|
||||
Concurrency: &defaultConcurrency,
|
||||
EnableMessageChangeBasedConditionUpdate: &messageChangeBasedConditionUpdate,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user