Skip to content

Commit

Permalink
Enabling alarm soaking feature by default
Browse files Browse the repository at this point in the history
Alarm soaking feature was added earlier but it was disabled by default. This
change will enable the feature by default for ProcessStatus Alarm
Closes-Bug: 1580514

Change-Id: I742cf9129880ade2b47ee87bd305df378cc7db38
  • Loading branch information
bansalnikhil committed May 22, 2016
1 parent 2246cc4 commit 7398551
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 23 deletions.
26 changes: 12 additions & 14 deletions src/opserver/alarmgen.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,8 +265,7 @@ def get_uas(self):
return self.uas

def set_uai(self, uai):
if self.uai == None:
self.uai = uai
self.uai = uai

def is_new_alarm_same(self, new_uai):
uai2 = copy.deepcopy(self.uai)
Expand All @@ -279,6 +278,12 @@ def is_new_alarm_same(self, new_uai):
return True
return False

def _remove_timer_from_list(self, index):
AlarmStateMachine.tab_alarms_timer[index].discard((self.tab,\
self.uv, self.nm))
if len(AlarmStateMachine.tab_alarms_timer[index]) == 0:
del AlarmStateMachine.tab_alarms_timer[index]

def set_alarms(self):
"""
This function runs the state machine code for setting an alarm
Expand All @@ -289,8 +294,7 @@ def set_alarms(self):
curr_time = int(time.time())
if self.uas.state == UVEAlarmState.Soak_Idle:
self.uas.state = UVEAlarmState.Active
AlarmStateMachine.tab_alarms_timer[self.idleTimeout].discard\
((self.tab, self.uv, self.nm))
self._remove_timer_from_list(self.idleTimeout)
elif self.uas.state == UVEAlarmState.Idle:
if self.uac.FreqExceededCheck:
# log the timestamp
Expand Down Expand Up @@ -345,11 +349,10 @@ def clear_alarms(self):
if self.uas.state == UVEAlarmState.Soak_Active:
# stop the active timer and start idle timer
self.uas.state = UVEAlarmState.Idle
self._remove_timer_from_list(self.activeTimeout)
if self.uac.FreqCheck_Seconds:
self.deleteTimeout = cur_time + self.uac.FreqCheck_Seconds
to_value = self.deleteTimeout
AlarmStateMachine.tab_alarms_timer[self.activeTimeout].discard\
((self.tab, self.uv, self.nm))
if not to_value in AlarmStateMachine.tab_alarms_timer:
AlarmStateMachine.tab_alarms_timer[to_value] = set()
AlarmStateMachine.tab_alarms_timer[to_value].add\
Expand All @@ -364,8 +367,6 @@ def clear_alarms(self):
if self.uac.FreqCheck_Seconds:
self.deleteTimeout = cur_time + self.uac.FreqCheck_Seconds
to_value = self.deleteTimeout
AlarmStateMachine.tab_alarms_timer[self.activeTimeout]\
.discard((self.tab, self.uv, self.nm))
if not to_value in AlarmStateMachine.tab_alarms_timer:
AlarmStateMachine.tab_alarms_timer[to_value] = set()
AlarmStateMachine.tab_alarms_timer[to_value].add\
Expand Down Expand Up @@ -468,16 +469,13 @@ def run_uve_soaking_timer(self, curr_time):
def delete_timers(self):
if self.uas.state == UVEAlarmState.Idle:
if self.deleteTimeout and self.deleteTimeout > 0:
AlarmStateMachine.tab_alarms_timer[self.deleteTimeout].\
discard((self.tab, self.uv, self.nm))
self._remove_timer_from_list(self.deleteTimeout)
elif self.uas.state == UVEAlarmState.Soak_Active:
if self.activeTimeout and self.activeTimeout > 0:
AlarmStateMachine.tab_alarms_timer[self.activeTimeout].\
discard((self.tab, self.uv, self.nm))
self._remove_timer_from_list(self.activeTimeout)
elif self.uas.state == UVEAlarmState.Soak_Idle:
if self.idleTimeout and self.idleTimeout > 0:
AlarmStateMachine.tab_alarms_timer[self.idleTimeout].\
discard((self.tab, self.uv, self.nm))
self._remove_timer_from_list(self.idleTimeout)

@staticmethod
def run_timers(curr_time, tab_alarms):
Expand Down
3 changes: 2 additions & 1 deletion src/opserver/plugins/alarm_process_status/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ class ProcessStatus(AlarmBase):
NodeMgr reports abnormal status for process(es) in NodeStatus.process_info"""

def __init__(self):
AlarmBase.__init__(self, AlarmBase.SYS_ERR)
AlarmBase.__init__(self, AlarmBase.SYS_ERR, at=10, it=10, fec=True,
fcs=300, fct=4)

def __call__(self, uve_key, uve_data):
or_list = []
Expand Down
20 changes: 12 additions & 8 deletions src/opserver/test/utils/analytics_fixture.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
from generator_introspect_utils import VerificationGenerator
from opserver.sandesh.viz.constants import COLLECTOR_GLOBAL_TABLE, SOURCE, MODULE
from opserver.opserver_util import OpServerUtils
from opserver.sandesh.alarmgen_ctrl.ttypes import UVEAlarmState
from sandesh_common.vns.constants import NodeTypeNames, ModuleNames
from sandesh_common.vns.ttypes import NodeType, Module
from pysandesh.util import UTCTimestampUsec
Expand Down Expand Up @@ -768,16 +769,17 @@ def verify_uvetable_alarm(self, table, name, type, is_set=True, rules=None):
return True
if not len(uves):
return True
else:
self.logger.info("Did not expect UVEs for %s" % table)
return False
if not ret['uves']:
ret['uves'] = []
if not uves:
uves = []
alarms = {}
for uves in ret['uves']:
elem = uves['uai']['UVEAlarms']
if elem['name'] != name:
for uve in uves:
elem = uve['uai']['UVEAlarms']
if name and elem['name'] != name:
continue
#alarms in Idle state should not be counted
alarm_state = int(uve['uas']['UVEAlarmOperState']['state'])
if (alarm_state == UVEAlarmState.Idle):
continue
for alm in elem['alarms']:
if len(alm['rules']):
alarms[alm['type']] = alm['rules']
Expand All @@ -795,6 +797,8 @@ def verify_uvetable_alarm(self, table, name, type, is_set=True, rules=None):
return False
return is_set
else:
if not name:
return True
return not is_set

@retry(delay=2, tries=10)
Expand Down

0 comments on commit 7398551

Please sign in to comment.