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