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
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,
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"],
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():
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)