@@ -126,7 +126,45 @@ func (c *customPluginMonitor) generateStatus(result cpmtypes.Result) *types.Stat
126
126
condition := & c .conditions [i ]
127
127
if condition .Type == result .Rule .Condition {
128
128
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
130
168
condition .Transition = timestamp
131
169
condition .Message = result .Message
132
170
events = append (events , util .GenerateConditionChangeEvent (
@@ -135,9 +173,21 @@ func (c *customPluginMonitor) generateStatus(result cpmtypes.Result) *types.Stat
135
173
result .Rule .Reason ,
136
174
timestamp ,
137
175
))
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
+ ))
138
189
}
139
- condition .Status = status
140
- condition .Reason = result .Rule .Reason
190
+
141
191
break
142
192
}
143
193
}
0 commit comments