Skip to content

Commit d793330

Browse files
authored
Merge pull request #203 from andyxning/fix_custom_plugin_monitor_condition_change
fix custom plugin monitor condition change
2 parents d508cf0 + e3b3771 commit d793330

File tree

1 file changed

+53
-3
lines changed

1 file changed

+53
-3
lines changed

pkg/custompluginmonitor/custom_plugin_monitor.go

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,45 @@ func (c *customPluginMonitor) generateStatus(result cpmtypes.Result) *types.Stat
126126
condition := &c.conditions[i]
127127
if condition.Type == result.Rule.Condition {
128128
status := toConditionStatus(result.ExitStatus)
129-
if condition.Status != status || condition.Reason != result.Rule.Reason {
129+
// change 1: Condition status change from True to False/Unknown
130+
if condition.Status == types.True && status != types.True {
131+
condition.Transition = timestamp
132+
var defaultConditionReason string
133+
var defaultConditionMessage string
134+
for j := range c.config.DefaultConditions {
135+
defaultCondition := &c.config.DefaultConditions[j]
136+
if defaultCondition.Type == result.Rule.Condition {
137+
defaultConditionReason = defaultCondition.Reason
138+
defaultConditionMessage = defaultCondition.Message
139+
break
140+
}
141+
}
142+
143+
events = append(events, util.GenerateConditionChangeEvent(
144+
condition.Type,
145+
status,
146+
defaultConditionReason,
147+
timestamp,
148+
))
149+
150+
condition.Status = status
151+
condition.Message = defaultConditionMessage
152+
condition.Reason = defaultConditionReason
153+
} else if condition.Status != types.True && status == types.True {
154+
// change 2: Condition status change from False/Unknown to True
155+
condition.Transition = timestamp
156+
condition.Message = result.Message
157+
events = append(events, util.GenerateConditionChangeEvent(
158+
condition.Type,
159+
status,
160+
result.Rule.Reason,
161+
timestamp,
162+
))
163+
164+
condition.Status = status
165+
condition.Reason = result.Rule.Reason
166+
} else if condition.Status != status {
167+
// change 3: Condition status change from False to Unknown or vice versa
130168
condition.Transition = timestamp
131169
condition.Message = result.Message
132170
events = append(events, util.GenerateConditionChangeEvent(
@@ -135,9 +173,21 @@ func (c *customPluginMonitor) generateStatus(result cpmtypes.Result) *types.Stat
135173
result.Rule.Reason,
136174
timestamp,
137175
))
176+
177+
condition.Status = status
178+
condition.Reason = result.Rule.Reason
179+
} else if condition.Status == status && condition.Message != result.Message {
180+
// change 4: Condition status do not change. condition message changes.
181+
condition.Transition = timestamp
182+
condition.Message = result.Message
183+
events = append(events, util.GenerateConditionChangeEvent(
184+
condition.Type,
185+
status,
186+
condition.Reason,
187+
timestamp,
188+
))
138189
}
139-
condition.Status = status
140-
condition.Reason = result.Rule.Reason
190+
141191
break
142192
}
143193
}

0 commit comments

Comments
 (0)