X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Falarming%2Fservice.py;h=0e355d886beb3aae596d3866f0eeca431eda3ffa;hb=refs%2Ftags%2Fv12.0.0rc1;hp=d1d1ea567a335b2c6644437423f737f78c7167a0;hpb=3fbf2fbf60e3aed3ec7ca0134839f19bc0d733d4;p=osm%2FPOL.git diff --git a/osm_policy_module/alarming/service.py b/osm_policy_module/alarming/service.py index d1d1ea5..0e355d8 100644 --- a/osm_policy_module/alarming/service.py +++ b/osm_policy_module/alarming/service.py @@ -25,6 +25,8 @@ import asyncio import json import logging +import operator +import functools import requests from requests.exceptions import ConnectionError, RequestException @@ -54,13 +56,19 @@ class AlarmingService: self.mon_client = MonClient(config, loop=self.loop) self.lcm_client = LcmClient(config, loop=self.loop) - async def configure_vnf_alarms(self, nsr_id: str): + async def configure_vnf_alarms(self, nsr_id: str, vnf_member_index=None): log.info("Configuring vnf alarms for network service %s", nsr_id) alarms_created = [] database.db.connect() try: with database.db.atomic(): - vnfrs = self.db_client.get_vnfrs(nsr_id) + if vnf_member_index is None: + vnfrs = self.db_client.get_vnfrs(nsr_id) + else: + vnfrs = [] + vnfr = self.db_client.get_vnfr(nsr_id, vnf_member_index) + vnfrs.append(vnfr) + # vnfrs = self.db_client.get_vnfrs(nsr_id) for vnfr in vnfrs: log.debug("Processing vnfr: %s", vnfr) vnfd = self.db_client.get_vnfd(vnfr["vnfd-id"]) @@ -195,12 +203,18 @@ class AlarmingService: finally: database.db.close() - async def delete_vnf_alarms(self, nsr_id): + async def delete_vnf_alarms(self, nsr_id, vnf_member_index=None): log.info("Deleting vnf alarms for network service %s", nsr_id) database.db.connect() try: with database.db.atomic(): - for alarm in VnfAlarmRepository.list(VnfAlarm.nsr_id == nsr_id): + 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] + alarm_conditions = functools.reduce(operator.and_, query_list) + for alarm in VnfAlarmRepository.list(alarm_conditions): log.debug("Deleting vnf alarm %s", alarm.alarm_uuid) try: await self.mon_client.delete_alarm(