Feature 10912: NS Update Change VNF Package
[osm/POL.git] / osm_policy_module / alarming / service.py
index d1d1ea5..0e355d8 100644 (file)
@@ -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(