Alarm Coalescing
When an alarm flaps at a relatively low frequency (longer than
Alarm.SHORT_LIVED_ALARM_THRESHOLD), a DashboardAlarm is created every time the
alarm flaps. In order to prevent these alarm from cluttering the dashboard, we group
them together in a process called coalescing.
Two (or more) DashboardAlarms coalesce whenever they share the same root cause and
when they are no more than 24 hours apart (Alarm.COALESCE_WINDOW_HOURS). The newest
alarm becomes the parent and the older alarms become children of the newest alarm.
In case some of the older alarms had already coalesced previously, all these older
alarms become children from the new parent. In this case, it is also possible for alarms
older than 24 hours to join the alarm group, if they were already part of an earlier
coalesced alarm group.
The final step in coalescing is to take the earliest alarm start time (given by
the earliest init_time of the corresponding JuniperAlarms, CoriantAlarms
or InfineraAlarms) to recall the first time this alarm was created.
Alarm coalescing is performed when an alarm exits the PENDING phase