Added retry mechanism to clear port alarm
When the link state transitions from DOWN to UP, the current collectd process attempts to clear the alarm once and once only. If such attempt failed, no further attempts will be made, and the alarm will persist in fm alarm-list. This fix added an additional check to ensure that as long as port alarm is not cleared and the link state is UP, it will attempt to clear the port alarm. Closes-Bug: 1871453 Change-Id: Iaa65f64808272a5760e655a33c14810df51e28b1 Signed-off-by: Thomas Gao <Thomas.Gao@windriver.com>
This commit is contained in:
parent
58845f67b2
commit
f9688c62f4
|
@ -226,6 +226,7 @@ class LinkObject:
|
|||
self.severity = fm_constants.FM_ALARM_SEVERITY_CLEAR
|
||||
self.alarm_id = alarm_id
|
||||
self.state_change = True
|
||||
self.port_alarm = False
|
||||
|
||||
collectd.debug("%s LinkObject constructor: %s" %
|
||||
(PLUGIN, alarm_id))
|
||||
|
@ -928,9 +929,11 @@ def read_func():
|
|||
collectd.debug("%s %s IS Up [%s]" %
|
||||
(PLUGIN, network.link_one.name,
|
||||
network.link_one.state))
|
||||
if network.link_one.state != LINK_UP:
|
||||
if (network.link_one.state != LINK_UP
|
||||
or network.link_one.port_alarm):
|
||||
network.link_one.state_change = True
|
||||
network.link_one.clear_port_alarm(nname)
|
||||
if network.link_one.clear_port_alarm(nname):
|
||||
network.link_one.port_alarm = False
|
||||
network.link_one.state = LINK_UP
|
||||
else:
|
||||
collectd.debug("%s %s IS Down [%s]" %
|
||||
|
@ -938,7 +941,8 @@ def read_func():
|
|||
network.link_one.state))
|
||||
if network.link_one.state == LINK_UP:
|
||||
network.link_one.state_change = True
|
||||
network.link_one.raise_port_alarm(nname)
|
||||
if network.link_one.raise_port_alarm(nname):
|
||||
network.link_one.port_alarm = True
|
||||
network.link_one.state = LINK_DOWN
|
||||
|
||||
if len(links) > 1:
|
||||
|
@ -956,9 +960,11 @@ def read_func():
|
|||
collectd.debug("%s %s IS Up [%s]" %
|
||||
(PLUGIN, network.link_two.name,
|
||||
network.link_two.state))
|
||||
if network.link_two.state != LINK_UP:
|
||||
if (network.link_two.state != LINK_UP or
|
||||
network.link_two.port_alarm):
|
||||
network.link_two.state_change = True
|
||||
network.link_two.clear_port_alarm(nname)
|
||||
if network.link_two.clear_port_alarm(nname):
|
||||
network.link_two.port_alarm = False
|
||||
network.link_two.state = LINK_UP
|
||||
else:
|
||||
collectd.debug("%s %s IS Down [%s]" %
|
||||
|
@ -966,7 +972,8 @@ def read_func():
|
|||
network.link_two.state))
|
||||
if network.link_two.state == LINK_UP:
|
||||
network.link_two.state_change = True
|
||||
network.link_two.raise_port_alarm(nname)
|
||||
if network.link_two.raise_port_alarm(nname):
|
||||
network.link_two.port_alarm = True
|
||||
network.link_two.state = LINK_DOWN
|
||||
|
||||
# manage interface alarms
|
||||
|
|
Loading…
Reference in New Issue