X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Falarming%2Fservice.py;h=dbc375e426ca09ec69839fc369afec0057d29d89;hb=be42d54170ca40d8d52e2c9fc8d888621585d6cf;hp=0e355d886beb3aae596d3866f0eeca431eda3ffa;hpb=3cab75bfb39b4f03509ccb90dc26404bceec557a;p=osm%2FPOL.git diff --git a/osm_policy_module/alarming/service.py b/osm_policy_module/alarming/service.py index 0e355d8..dbc375e 100644 --- a/osm_policy_module/alarming/service.py +++ b/osm_policy_module/alarming/service.py @@ -111,10 +111,17 @@ class AlarmingService: ) alarm_action = dict() for action_type in ["ok", "insufficient-data", "alarm"]: - if "actions" in alarm_descriptor and action_type in alarm_descriptor["actions"]: - for url in alarm_descriptor["actions"][action_type]: + if ( + "actions" in alarm_descriptor + and action_type in alarm_descriptor["actions"] + ): + for url in alarm_descriptor["actions"][ + action_type + ]: if "webhook" in alarm_action: - alarm_action["webhook"].append(url["url"]) + alarm_action["webhook"].append( + url["url"] + ) else: alarm_action["webhook"] = [url["url"]] alarm_uuid = await self.mon_client.create_alarm( @@ -132,10 +139,10 @@ class AlarmingService: nsr_id=nsr_id, vnf_member_index=vnfr["member-vnf-index-ref"], vdu_name=vdur["name"], - last_action='insufficient-data', + last_action="insufficient-data", id_suffix=0, ok_ack=False, - alarm_ack=False + alarm_ack=False, ) for action_type in ["ok", "insufficient-data", "alarm"]: if ( @@ -211,8 +218,10 @@ class AlarmingService: if vnf_member_index is None: alarm_conditions = VnfAlarm.nsr_id == nsr_id else: - query_list = [VnfAlarm.nsr_id == nsr_id, - VnfAlarm.vnf_member_index == vnf_member_index] + query_list = [ + VnfAlarm.nsr_id == nsr_id, + VnfAlarm.vnf_member_index == vnf_member_index, + ] alarm_conditions = functools.reduce(operator.and_, query_list) for alarm in VnfAlarmRepository.list(alarm_conditions): log.debug("Deleting vnf alarm %s", alarm.alarm_uuid) @@ -236,7 +245,7 @@ class AlarmingService: database.db.close() async def handle_alarm(self, alarm_uuid: str, status: str, payload: dict): - alert_timeout = int(self.conf.get('alert', 'timeout')) + alert_timeout = int(self.conf.get("alert", "timeout")) database.db.connect() try: with database.db.atomic(): @@ -251,14 +260,19 @@ class AlarmingService: If both the status are 'ok', it avoid sending repetitive ok notification. """ if action.type == status: - if bool(self.conf.get('alert', 'enhanced_alarms')): - if ((status != "ok" or (status == "ok" and alarm.ok_ack is False)) and - (status != "alarm" or (status == "alarm" and alarm.alarm_ack is False))): + if bool(self.conf.get("alert", "enhanced_alarms")): + if ( + status != "ok" + or (status == "ok" and alarm.ok_ack is False) + ) and ( + status != "alarm" + or (status == "alarm" and alarm.alarm_ack is False) + ): log.info( "Executing request to url %s for vnf alarm %s with status %s", action.url, alarm.alarm_id, - status + status, ) try: if status == "alarm" and alarm.last_action == "ok": @@ -271,11 +285,18 @@ class AlarmingService: except Exception as e: log.exception(e) - payload["notify_details"]["alarm_number"] = alarm.id_suffix + payload["notify_details"][ + "alarm_number" + ] = alarm.id_suffix headers = {"content-type": "application/json"} try: - resp = requests.post(url=action.url, data=json.dumps(payload), - headers=headers, verify=False, timeout=alert_timeout) + resp = requests.post( + url=action.url, + data=json.dumps(payload), + headers=headers, + verify=False, + timeout=alert_timeout, + ) log.info("Response %s", resp) if resp.status_code == 200: if status == "ok": @@ -288,26 +309,38 @@ class AlarmingService: alarm.alarm_ack = False alarm.ok_ack = False alarm.save() + except ConnectionError: + log.exception( + "Error connecting to url %s", action.url + ) except RequestException as e: - log.info("Error: RequestException while connecting to url %s", action.url) + log.info( + "Error: RequestException while connecting to url %s", + action.url, + ) log.debug("RequestException %s", e) - except ConnectionError: - log.exception("Error connecting to url %s", action.url) else: log.info( "Executing request to url %s for vnf alarm %s with status %s", action.url, alarm.alarm_id, - status + status, ) try: - requests.post(url=action.url, json=json.dumps(payload), timeout=alert_timeout) - except RequestException as e: - log.info("Error: RequestException while connecting to url %s", action.url) - log.debug("RequestException %s", e) + requests.post( + url=action.url, + json=json.dumps(payload), + timeout=alert_timeout, + ) except ConnectionError: log.exception("Error connecting to url %s", action.url) + except RequestException as e: + log.info( + "Error: RequestException while connecting to url %s", + action.url, + ) + log.debug("RequestException %s", e) except VnfAlarm.DoesNotExist: log.debug(