Add ptp no-lock alarm support for controllers
The current PTP No-Lock alarm is not raised for controllers that assume Grandmastership. This is incorrect behavior. Every node configured for PTP needs to be locked to a remote Grandmaster. This update increases the scope of the no lock alarm to apply to all node types ; computes, storage and now controllers as well. Test Plan: PASS: Verify PTP no lock alarm for controller. Change-Id: I271c8ad235e6cb680bdb27f377149b7e1a3d14cd Closes-Bug: 1850554 Signed-off-by: Eric MacDonald <eric.macdonald@windriver.com>
This commit is contained in:
parent
5df0fd26e6
commit
d12b1a9e70
|
@ -857,40 +857,23 @@ def read_func():
|
||||||
# Handle case where this host is the Grand Master
|
# Handle case where this host is the Grand Master
|
||||||
# ... or assumes it is.
|
# ... or assumes it is.
|
||||||
if my_identity == gm_identity or port_locked is False:
|
if my_identity == gm_identity or port_locked is False:
|
||||||
|
if ctrl.nolock_alarm_object.raised is False:
|
||||||
|
if raise_alarm(ALARM_CAUSE__NO_LOCK, None, 0) is True:
|
||||||
|
ctrl.nolock_alarm_object.raised = True
|
||||||
|
|
||||||
if obj.controller is False:
|
# produce a throttled log while this host is not locked to the GM
|
||||||
|
if not (obj.log_throttle_count % obj.INIT_LOG_THROTTLE):
|
||||||
|
collectd.info("%s %s not locked to remote Grand Master "
|
||||||
|
"(%s)" % (PLUGIN, obj.hostname, gm_identity))
|
||||||
|
obj.log_throttle_count += 1
|
||||||
|
|
||||||
# Compute and storage nodes should not be the Grand Master
|
# No samples if we are not locked to a Grand Master
|
||||||
if ctrl.nolock_alarm_object.raised is False:
|
return 0
|
||||||
if raise_alarm(ALARM_CAUSE__NO_LOCK, None, 0) is True:
|
|
||||||
ctrl.nolock_alarm_object.raised = True
|
|
||||||
|
|
||||||
# produce a throttled log while this host is not locked to the GM
|
# Handle clearing nolock alarm
|
||||||
if not (obj.log_throttle_count % obj.INIT_LOG_THROTTLE):
|
elif ctrl.nolock_alarm_object.raised is True:
|
||||||
collectd.info("%s %s not locked to remote Grand Master "
|
if clear_alarm(ctrl.nolock_alarm_object.eid) is True:
|
||||||
"(%s)" % (PLUGIN, obj.hostname, gm_identity))
|
ctrl.nolock_alarm_object.raised = False
|
||||||
obj.log_throttle_count += 1
|
|
||||||
|
|
||||||
# No samples for storage and compute nodes that are not
|
|
||||||
# locked to a Grand Master
|
|
||||||
return 0
|
|
||||||
|
|
||||||
else:
|
|
||||||
# Controllers can be a Grand Master ; throttle the log
|
|
||||||
if not (obj.log_throttle_count % obj.INIT_LOG_THROTTLE):
|
|
||||||
collectd.info("%s %s is Grand Master:%s" %
|
|
||||||
(PLUGIN, obj.hostname, gm_identity))
|
|
||||||
obj.log_throttle_count += 1
|
|
||||||
|
|
||||||
# The Grand Master will always be 0 so there is no point
|
|
||||||
# creating a sample for it.
|
|
||||||
return 0
|
|
||||||
|
|
||||||
# Handle clearing nolock alarm for computes and storage nodes
|
|
||||||
elif obj.controller is False:
|
|
||||||
if ctrl.nolock_alarm_object.raised is True:
|
|
||||||
if clear_alarm(ctrl.nolock_alarm_object.eid) is True:
|
|
||||||
ctrl.nolock_alarm_object.raised = False
|
|
||||||
|
|
||||||
# Keep this FIT test code but make it commented out for security
|
# Keep this FIT test code but make it commented out for security
|
||||||
# if os.path.exists('/var/run/fit/ptp_data'):
|
# if os.path.exists('/var/run/fit/ptp_data'):
|
||||||
|
|
Loading…
Reference in New Issue