I'm making a small alarm journal and i want to calculate the alarm duration but I don't understand why the clear time changes between a clearUnack state and clearAck state. For example:
================================================================================
Event ID: f65f0df0-c0ce-4990-be71-c0837cbe4cd2
State: Active, Unacknowledged Active: 1785336273692 Clear: None Ack: None
State: Cleared, Unacknowledged Active: None Clear: 1785336274199 Ack: None
State: Cleared, Acknowledged Active: None Clear: 1785338814303 Ack: 1785338814303
================================================================================
Event ID: 796956a0-205f-4eb7-b26a-93adcf5896f8
State: Active, Unacknowledged Active: 1784923163471 Clear: None Ack: None
State: Active, Acknowledged Active: None Clear: None Ack: 1785157744275
State: Cleared, Acknowledged Active: None Clear: 1785165949909 Ack: 1785165949909
================================================================================
The Cleared, Acknowledged event has the same timestamp for the clear and ack events which doesn't make sense to me.
Here is the script I used to print this (it's not my alarm table script but it follows the same logic and gives the same result):
from collections import defaultdict
start = system.date.addDays(system.date.now(), -7)
end = system.date.now()
events = system.alarm.queryJournal(
startDate=start,
endDate=end
)
eventMap = defaultdict(list)
for event in events:
clearData = event.getClearedData()
ackData = event.getAckData()
activeData = event.getActiveData()
eventMap[str(event.getId())].append({
"state": str(event.getState()),
"active": activeData.getTimestamp() if activeData else None,
"clear": clearData.getTimestamp() if clearData else None,
"ack": ackData.getTimestamp() if ackData else None
})
for eventId, records in eventMap.items():
if len(records) > 1:
clearTimes = set(r["clear"] for r in records)
if len(clearTimes) > 1:
print "=" * 80
print "Event ID:", eventId
for r in records:
print "State: %-15s Active: %-15s Clear: %-15s Ack: %-15s" % (
r["state"],
r["active"],
r["clear"],
r["ack"]
)
Thanks