X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Fhealing%2Fservice.py;h=b36f8676de769ba895a4573bbcb29afe02fff2ad;hb=refs%2Fchanges%2F96%2F13296%2F3;hp=4376852812a2d620972387456c223063d61f2fbe;hpb=0f6b1c44ccb844079e0359c8bcda880902bae8b3;p=osm%2FPOL.git diff --git a/osm_policy_module/healing/service.py b/osm_policy_module/healing/service.py index 4376852..b36f867 100644 --- a/osm_policy_module/healing/service.py +++ b/osm_policy_module/healing/service.py @@ -24,6 +24,8 @@ ## import logging import datetime +import functools +import operator from osm_policy_module.common.common_db_client import CommonDbClient from osm_policy_module.common.lcm_client import LcmClient @@ -51,17 +53,23 @@ class HealingService: self.lcm_client = LcmClient(config) log.info("Constructor created for HealingService") - async def configure_healing_alarms(self, nsr_id: str): + async def configure_healing_alarms(self, nsr_id: str, vnf_member_index=None): """ Configuring the Healing alarms :param nsr_id: Network service record id + :param vnf_member_index: Member VNF Index of VNF """ log.info("Configuring Healing alarm for NS %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) for vnfr in vnfrs: vnfd = self.db_client.get_vnfd(vnfr["vnfd-id"]) df = vnfd.get("df", [{}])[0] @@ -178,18 +186,25 @@ class HealingService: finally: database.db.close() - async def delete_healing_alarms(self, nsr_id): + async def delete_healing_alarms(self, nsr_id, vnf_member_index=None): """ Deleting the healing alarms :param nsr_id: Network service record id + :param vnf_member_index: Member VNF Index of VNF """ log.info("Deleting healing vnf alarms for network service %s", nsr_id) database.db.connect() try: with database.db.atomic(): - for alarm in HealingActionRepository.list( - HealingAction.nsr_id == nsr_id - ): + if vnf_member_index is None: + heal_conditions = HealingAction.nsr_id == nsr_id + else: + query_list = [ + HealingAction.nsr_id == nsr_id, + HealingAction.vnf_member_index == vnf_member_index, + ] + heal_conditions = functools.reduce(operator.and_, query_list) + for alarm in HealingActionRepository.list(heal_conditions): try: await self.mon_client.delete_alarm( alarm.nsr_id,