@@ -126,7 +126,8 @@ 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 != status && condition .Status == types .True {
130
131
condition .Transition = timestamp
131
132
condition .Message = result .Message
132
133
events = append (events , util .GenerateConditionChangeEvent (
@@ -135,9 +136,58 @@ func (c *customPluginMonitor) generateStatus(result cpmtypes.Result) *types.Stat
135
136
result .Rule .Reason ,
136
137
timestamp ,
137
138
))
139
+
140
+ condition .Status = status
141
+ condition .Reason = result .Rule .Reason
142
+ } else if condition .Status != status && status == types .True {
143
+ // change 2: Condition status change from False/Unknown to True
144
+ condition .Transition = timestamp
145
+ var defaultConditionReason string
146
+ var defaultConditionMessage string
147
+ for j := range c .config .DefaultConditions {
148
+ defaultCondition := & c .config .DefaultConditions [j ]
149
+ if defaultCondition .Type == result .Rule .Condition {
150
+ defaultConditionReason = defaultCondition .Reason
151
+ defaultConditionMessage = defaultCondition .Message
152
+ break
153
+ }
154
+ }
155
+
156
+ events = append (events , util .GenerateConditionChangeEvent (
157
+ condition .Type ,
158
+ status ,
159
+ defaultConditionReason ,
160
+ timestamp ,
161
+ ))
162
+
163
+ condition .Status = status
164
+ condition .Message = defaultConditionMessage
165
+ condition .Reason = defaultConditionReason
166
+ } else if condition .Status != status {
167
+ // change 3: Condition status change from False to Unknown or vice versa
168
+ condition .Transition = timestamp
169
+ condition .Message = result .Message
170
+ events = append (events , util .GenerateConditionChangeEvent (
171
+ condition .Type ,
172
+ status ,
173
+ result .Rule .Reason ,
174
+ timestamp ,
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