X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Falarming%2Fservice.py;h=a938234ade34e7c4ff4d331f6469743a9560e89b;hb=3b30c530a5f4a623e042941cf031a3d16dcf1bb1;hp=37fa6a1f0bc78f957c81fc13775cbc0231bfbe4f;hpb=4584f8e86a492d67d120bfea1195eff1475c0a65;p=osm%2FPOL.git diff --git a/osm_policy_module/alarming/service.py b/osm_policy_module/alarming/service.py index 37fa6a1..a938234 100644 --- a/osm_policy_module/alarming/service.py +++ b/osm_policy_module/alarming/service.py @@ -27,7 +27,7 @@ import json import logging import requests -from requests.exceptions import ConnectionError +from requests.exceptions import ConnectionError, RequestException from osm_policy_module.common.common_db_client import CommonDbClient from osm_policy_module.common.lcm_client import LcmClient @@ -101,6 +101,14 @@ class AlarmingService: metric_name = self._get_metric_name( vnf_monitoring_param ) + 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 "webhook" in alarm_action: + alarm_action["webhook"].append(url["url"]) + else: + alarm_action["webhook"] = [url["url"]] alarm_uuid = await self.mon_client.create_alarm( metric_name=metric_name, ns_id=nsr_id, @@ -108,6 +116,7 @@ class AlarmingService: vnf_member_index=vnfr["member-vnf-index-ref"], threshold=alarm_descriptor["value"], operation=alarm_descriptor["operation"], + action=str(alarm_action), ) alarm = VnfAlarmRepository.create( alarm_id=alarm_descriptor["alarm-id"], @@ -209,6 +218,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')) database.db.connect() try: with database.db.atomic(): @@ -225,7 +235,10 @@ class AlarmingService: status, ) try: - requests.post(url=action.url, json=json.dumps(payload)) + 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) except ConnectionError: log.exception("Error connecting to url %s", action.url)