Skip to content

Commit

Permalink
Merge "change in alarm type in alarm sandesh"
Browse files Browse the repository at this point in the history
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Dec 8, 2016
2 parents 72402bf + 0ff0ddf commit d36cb74
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 20 deletions.
17 changes: 8 additions & 9 deletions src/opserver/alarmgen.py
Expand Up @@ -204,23 +204,22 @@ def __init__(self, logger):
def process_alarms(self, alarm_fqname, alarm, uv, local_uve):
if not alarm.is_enabled():
return
alarm_name = alarm_fqname.rsplit(':', 1)[1]
sev = alarm.severity()
if not uv in self.ActiveTimer:
self.ActiveTimer[uv] = {}
self.ActiveTimer[uv][alarm_name] = alarm.ActiveTimer()
self.ActiveTimer[uv][alarm_fqname] = alarm.ActiveTimer()
if not uv in self.IdleTimer:
self.IdleTimer[uv] = {}
self.IdleTimer[uv][alarm_name] = alarm.IdleTimer()
self.IdleTimer[uv][alarm_fqname] = alarm.IdleTimer()
if not uv in self.FreqExceededCheck:
self.FreqExceededCheck[uv] = {}
self.FreqExceededCheck[uv][alarm_name] = alarm.FreqExceededCheck()
self.FreqExceededCheck[uv][alarm_fqname] = alarm.FreqExceededCheck()
if not uv in self.FreqCheck_Times:
self.FreqCheck_Times[uv] = {}
self.FreqCheck_Times[uv][alarm_name] = alarm.FreqCheck_Times()
self.FreqCheck_Times[uv][alarm_fqname] = alarm.FreqCheck_Times()
if not uv in self.FreqCheck_Seconds:
self.FreqCheck_Seconds[uv] = {}
self.FreqCheck_Seconds[uv][alarm_name] = alarm.FreqCheck_Seconds()
self.FreqCheck_Seconds[uv][alarm_fqname] = alarm.FreqCheck_Seconds()

try:
# __call__ method overrides the generic alarm processing code.
Expand All @@ -230,9 +229,9 @@ def process_alarms(self, alarm_fqname, alarm, uv, local_uve):
or_list = self._evaluate_uve_for_alarms(
alarm.config(), uv, local_uve)
self._logger.debug("Alarm[%s] %s: %s" %
(uv, alarm_name, str(or_list)))
(uv, alarm_fqname, str(or_list)))
if or_list:
self.uve_alarms[alarm_name] = UVEAlarmInfo(type=alarm_name,
self.uve_alarms[alarm_fqname] = UVEAlarmInfo(type=alarm_fqname,
severity=sev, timestamp=0, token="",
alarm_rules=AlarmRules(or_list),
description=alarm.description(), ack=False)
Expand All @@ -241,7 +240,7 @@ def process_alarms(self, alarm_fqname, alarm, uv, local_uve):
messag = template.format(type(ex).__name__, ex.args)
self._logger.error("%s : traceback %s" % \
(messag, traceback.format_exc()))
self.uve_alarms[alarm_name] = UVEAlarmInfo(type=alarm_name,
self.uve_alarms[alarm_fqname] = UVEAlarmInfo(type=alarm_fqname,
severity=sev, timestamp=0, token="",
alarm_rules=AlarmRules(None),
description=alarm.description(), ack=False)
Expand Down
36 changes: 25 additions & 11 deletions src/opserver/test/test_analytics_uve.py
Expand Up @@ -164,13 +164,15 @@ def test_03_redis_uve_restart(self):
# check for PartialSysinfo alarm
alarm_gen1.send_vrouterinfo("myvrouter1")
assert(vizd_obj.verify_uvetable_alarm("ObjectVRouter",
"ObjectVRouter:myvrouter1", "partial-sysinfo-compute"))
"ObjectVRouter:myvrouter1",
"default-global-system-config:partial-sysinfo-compute"))

self.verify_uve_resync(vizd_obj)

# Alarm should return after redis restart
assert(vizd_obj.verify_uvetable_alarm("ObjectVRouter",
"ObjectVRouter:myvrouter1", "partial-sysinfo-compute"))
"ObjectVRouter:myvrouter1",
"default-global-system-config:partial-sysinfo-compute"))

# should there be a return True here?
# end test_03_redis_uve_restart
Expand Down Expand Up @@ -352,7 +354,8 @@ def test_06_alarmgen_basic(self):
assert vizd_obj.verify_on_setup()

assert(vizd_obj.verify_uvetable_alarm("ObjectCollectorInfo",
"ObjectCollectorInfo:" + socket.gethostname(), "process-status"))
"ObjectCollectorInfo:" + socket.gethostname(),
"default-global-system-config:process-status"))
# setup generator for sending Vrouter build_info
collector = vizd_obj.collectors[0].get_addr()
alarm_gen1 = self.useFixture(
Expand All @@ -364,7 +367,8 @@ def test_06_alarmgen_basic(self):
# check for PartialSysinfo alarm
alarm_gen1.send_vrouterinfo("myvrouter1")
assert(vizd_obj.verify_uvetable_alarm("ObjectVRouter",
"ObjectVRouter:myvrouter1", "partial-sysinfo-compute",
"ObjectVRouter:myvrouter1",
"default-global-system-config:partial-sysinfo-compute",
rules=[{"and_list": [{
"condition": {
"operation": "==",
Expand All @@ -380,19 +384,24 @@ def test_06_alarmgen_basic(self):
# Now try to clear the alarm by sending build_info
alarm_gen1.send_vrouterinfo("myvrouter1", b_info = True)
assert(vizd_obj.verify_uvetable_alarm("ObjectVRouter",
"ObjectVRouter:myvrouter1", "partial-sysinfo-compute", is_set = False))
"ObjectVRouter:myvrouter1",
"default-global-system-config:partial-sysinfo-compute",
is_set=False))

# send vrouter UVE without build_info !!!
# check for PartialSysinfo alarm
alarm_gen1.send_vrouterinfo("myvrouter1", deleted = True)
alarm_gen1.send_vrouterinfo("myvrouter1")
assert(vizd_obj.verify_uvetable_alarm("ObjectVRouter",
"ObjectVRouter:myvrouter1", "partial-sysinfo-compute"))
"ObjectVRouter:myvrouter1",
"default-global-system-config:partial-sysinfo-compute"))

# Now try to clear the alarm by deleting the UVE
alarm_gen1.send_vrouterinfo("myvrouter1", deleted = True)
assert(vizd_obj.verify_uvetable_alarm("ObjectVRouter",
"ObjectVRouter:myvrouter1", "partial-sysinfo-compute", is_set = False))
"ObjectVRouter:myvrouter1",
"default-global-system-config:partial-sysinfo-compute",
is_set=False))

alarm_gen2 = self.useFixture(
GeneratorFixture('vrouter-agent', [collector], logging,
Expand All @@ -403,19 +412,23 @@ def test_06_alarmgen_basic(self):
# check for PartialSysinfo alarm
alarm_gen2.send_vrouterinfo("myvrouter2")
assert(vizd_obj.verify_uvetable_alarm("ObjectVRouter",
"ObjectVRouter:myvrouter2", "partial-sysinfo-compute"))
"ObjectVRouter:myvrouter2",
"default-global-system-config:partial-sysinfo-compute"))

# Now try to clear the alarm by disconnecting the generator
alarm_gen2._sandesh_instance._client._connection.set_admin_state(\
down=True)
assert(vizd_obj.verify_uvetable_alarm("ObjectVRouter",
"ObjectVRouter:myvrouter2", "partial-sysinfo-compute", is_set = False))
"ObjectVRouter:myvrouter2",
"default-global-system-config:partial-sysinfo-compute",
is_set=False))

# send vrouter UVE of myvrouter without build_info again !!!
# check for PartialSysinfo alarm
alarm_gen1.send_vrouterinfo("myvrouter1")
assert(vizd_obj.verify_uvetable_alarm("ObjectVRouter",
"ObjectVRouter:myvrouter1", "partial-sysinfo-compute"))
"ObjectVRouter:myvrouter1",
"default-global-system-config:partial-sysinfo-compute"))

# Verify that we can give up partition ownership
assert(vizd_obj.set_alarmgen_partition(0,0) == 'true')
Expand All @@ -439,7 +452,8 @@ def test_06_alarmgen_basic(self):

# The PartialSysinfo alarm on myvrouter should return
assert(vizd_obj.verify_uvetable_alarm("ObjectVRouter",
"ObjectVRouter:myvrouter1", "partial-sysinfo-compute"))
"ObjectVRouter:myvrouter1",
"default-global-system-config:partial-sysinfo-compute"))

return True
# end test_06_alarmgen_basic
Expand Down

0 comments on commit d36cb74

Please sign in to comment.