Enable black and pylint in tox.ini
[osm/POL.git] / osm_policy_module / healing / service.py
index 8434c66..1885d05 100644 (file)
@@ -43,7 +43,7 @@ log = logging.getLogger(__name__)
 class HealingService:
     def __init__(self, config: Config, loop=None):
         """
-          Initializing the HealingService
+        Initializing the HealingService
         """
         log.info("HealingService Initialized")
         self.conf = config
@@ -57,8 +57,8 @@ class HealingService:
 
     async def configure_healing_alarms(self, nsr_id: str):
         """
-           Configuring the Healing alarms
-           :param nsr_id: Network service record id
+        Configuring the Healing alarms
+        :param nsr_id: Network service record id
         """
         log.info("Configuring Healing alarm for NS %s", nsr_id)
         alarms_created = []
@@ -67,32 +67,38 @@ class HealingService:
             with database.db.atomic():
                 vnfrs = self.db_client.get_vnfrs(nsr_id)
                 for vnfr in vnfrs:
-                    vnfd = self.db_client.get_vnfd(vnfr['vnfd-id'])
+                    vnfd = self.db_client.get_vnfd(vnfr["vnfd-id"])
                     df = vnfd.get("df", [{}])[0]
                     if "healing-aspect" not in df:
                         log.info("No healing configuration present in vnfd")
                         continue
                     healing_aspects = df["healing-aspect"]
                     for healing_aspect in healing_aspects:
-                        for healing_policy in healing_aspect.get(
-                            "healing-policy", ()
-                        ):
-                            vdu_id = healing_policy['vdu-id']
+                        for healing_policy in healing_aspect.get("healing-policy", ()):
+                            vdu_id = healing_policy["vdu-id"]
                             for vdur in vnfr["vdur"]:
                                 if vdu_id == vdur["vdu-id-ref"]:
                                     try:
                                         HealingActionRepository.get(
-                                            HealingAction.alarm_id == healing_policy['event-name'],
-                                            HealingAction.vdur_name == vdur['name'],
+                                            HealingAction.alarm_id
+                                            == healing_policy["event-name"],
+                                            HealingAction.vdur_name == vdur["name"],
                                             HealingAction.nsr_id == nsr_id,
-                                            HealingAction.cooldown_time == healing_policy['cooldown-time'],
-                                            HealingAction.recovery_action == healing_policy['action-on-recovery'],
-                                            HealingAction.vnfinstance_id == vnfr['id'],
-                                            HealingAction.vdu_id == healing_policy['vdu-id'],
-                                            HealingAction.count_index == vdur['count-index']
+                                            HealingAction.cooldown_time
+                                            == healing_policy["cooldown-time"],
+                                            HealingAction.recovery_action
+                                            == healing_policy["action-on-recovery"],
+                                            HealingAction.vnfinstance_id == vnfr["id"],
+                                            HealingAction.vdu_id
+                                            == healing_policy["vdu-id"],
+                                            HealingAction.count_index
+                                            == vdur["count-index"],
+                                        )
+                                        log.debug(
+                                            "vdu %s already has an alarm configured with same id %s",
+                                            healing_policy["vdu-id"],
+                                            healing_policy["event-name"],
                                         )
-                                        log.debug("vdu %s already has an alarm configured with same id %s",
-                                                  healing_policy['vdu-id'], healing_policy['event-name'])
                                         continue
                                     except HealingAction.DoesNotExist:
                                         pass
@@ -101,28 +107,26 @@ class HealingService:
                                     alarm_uuid = await self.mon_client.create_alarm(
                                         metric_name=metric_name,
                                         ns_id=nsr_id,
-                                        vdu_name=vdur['name'],
-                                        vnf_member_index=vnfr[
-                                            'member-vnf-index-ref'
-                                        ],
+                                        vdu_name=vdur["name"],
+                                        vnf_member_index=vnfr["member-vnf-index-ref"],
                                         threshold=1,
                                         operation="LT",
-                                        statistic="AVERAGE"
+                                        statistic="AVERAGE",
                                     )
                                     alarm = HealingActionRepository.create(
-                                        alarm_id=healing_policy['event-name'],
+                                        alarm_id=healing_policy["event-name"],
                                         alarm_uuid=alarm_uuid,
                                         nsr_id=nsr_id,
-                                        vnf_member_index=vnfr[
-                                            'member-vnf-index-ref'
+                                        vnf_member_index=vnfr["member-vnf-index-ref"],
+                                        vdur_name=vdur["name"],
+                                        recovery_action=healing_policy[
+                                            "action-on-recovery"
                                         ],
-                                        vdur_name=vdur['name'],
-                                        recovery_action=healing_policy['action-on-recovery'],
-                                        cooldown_time=healing_policy['cooldown-time'],
-                                        day1=healing_policy['day1'],
-                                        vdu_id=healing_policy['vdu-id'],
-                                        vnfinstance_id=vnfr['id'],
-                                        count_index=vdur['count-index']
+                                        cooldown_time=healing_policy["cooldown-time"],
+                                        day1=healing_policy["day1"],
+                                        vdu_id=healing_policy["vdu-id"],
+                                        vnfinstance_id=vnfr["id"],
+                                        count_index=vdur["count-index"],
                                     )
                                     alarms_created.append(alarm)
 
@@ -131,12 +135,16 @@ class HealingService:
             if len(alarms_created) > 0:
                 for alarm in alarms_created:
                     try:
-                        await self.mon_client.delete_alarm(alarm.nsr_id,
-                                                           alarm.vnf_member_index,
-                                                           alarm.vdu_name,
-                                                           alarm.alarm_uuid)
+                        await self.mon_client.delete_alarm(
+                            alarm.nsr_id,
+                            alarm.vnf_member_index,
+                            alarm.vdu_name,
+                            alarm.alarm_uuid,
+                        )
                     except ValueError:
-                        log.exception("Error deleting alarm in MON %s", alarm.alarm_uuid)
+                        log.exception(
+                            "Error deleting alarm in MON %s", alarm.alarm_uuid
+                        )
             raise e
         finally:
             database.db.close()
@@ -151,26 +159,20 @@ class HealingService:
                 ):
                     try:
                         self.db_client.get_vdur(
-                            nsr_id,
-                            alarm.vnf_member_index,
-                            alarm.vdur_name
+                            nsr_id, alarm.vnf_member_index, alarm.vdur_name
                         )
                     except VdurNotFound:
-                        log.info(
-                            "Deleting orphaned alarm %s",
-                            alarm.alarm_uuid
-                        )
+                        log.info("Deleting orphaned alarm %s", alarm.alarm_uuid)
                         try:
                             await self.mon_client.delete_alarm(
                                 alarm.nsr_id,
                                 alarm.vnf_member_index,
                                 alarm.vdur_name,
-                                alarm.alarm_uuid
+                                alarm.alarm_uuid,
                             )
                         except ValueError:
                             log.exception(
-                                "Error deleting alarm in MON %s",
-                                alarm.alarm_uuid
+                                "Error deleting alarm in MON %s", alarm.alarm_uuid
                             )
                         alarm.delete_instance()
 
@@ -182,8 +184,8 @@ class HealingService:
 
     async def delete_healing_alarms(self, nsr_id):
         """
-            Deleting the healing alarms
-            :param nsr_id: Network service record id
+        Deleting the healing alarms
+        :param nsr_id: Network service record id
         """
         log.info("Deleting healing vnf alarms for network service %s", nsr_id)
         database.db.connect()
@@ -197,12 +199,11 @@ class HealingService:
                             alarm.nsr_id,
                             alarm.vnf_member_index,
                             alarm.vdur_name,
-                            alarm.alarm_uuid
+                            alarm.alarm_uuid,
                         )
                     except ValueError:
                         log.exception(
-                            "Error deleting alarm in MON %s",
-                            alarm.alarm_uuid
+                            "Error deleting alarm in MON %s", alarm.alarm_uuid
                         )
                     alarm.delete_instance()
 
@@ -214,9 +215,9 @@ class HealingService:
 
     async def update_alarm_status(self, alarm_uuid: str, status: str):
         """
-          For updating the alarm status
-          :param alarm_uuid: vdu uuid
-          :param status: Status of an alarm
+        For updating the alarm status
+        :param alarm_uuid: vdu uuid
+        :param status: Status of an alarm
         """
         database.db.connect()
         try:
@@ -227,17 +228,15 @@ class HealingService:
                 alarm.last_status = status
                 alarm.save()
         except HealingAction.DoesNotExist:
-            log.debug(
-                "There is no healing action configured for alarm %s.", alarm_uuid
-            )
+            log.debug("There is no healing action configured for alarm %s.", alarm_uuid)
         finally:
             database.db.close()
 
     async def handle_alarm(self, alarm_uuid: str, status: str):
         """
-          For Handling the healing alarms
-          :param alarm_uuid: vdu uuid
-          :param status: Status of an alarm
+        For Handling the healing alarms
+        :param alarm_uuid: vdu uuid
+        :param status: Status of an alarm
         """
         await self.update_alarm_status(alarm_uuid, status)
         database.db.connect()
@@ -259,13 +258,13 @@ class HealingService:
                     vnfinstance_id = alarm.vnfinstance_id
                     alarms = HealingActionRepository.list(
                         HealingAction.vnf_member_index == vnf_member_index,
-                        HealingAction.vdur_name == vdur_name
+                        HealingAction.vdur_name == vdur_name,
                     )
                     statuses = []
 
                     for alarm in alarms:
                         statuses.append(alarm.last_status)
-                    if ((set(statuses) == {'alarm'}) or ('alarm' in statuses)):
+                    if (set(statuses) == {"alarm"}) or ("alarm" in statuses):
                         delta = datetime.datetime.now() - last_heal
                         if delta.total_seconds() > cooldown_time:
                             await self.lcm_client.heal(
@@ -276,7 +275,7 @@ class HealingService:
                                 vnf_member_index,
                                 heal_type,
                                 day1,
-                                count_index
+                                count_index,
                             )
                             last_heal = datetime.datetime.now()
                             log.info("datetime.datetime.now %s", datetime.datetime.now)
@@ -284,9 +283,6 @@ class HealingService:
                             alarm.save()
 
         except HealingAction.DoesNotExist:
-            log.info(
-                "There is no healing action configured for alarm %s.",
-                alarm_uuid
-            )
+            log.info("There is no healing action configured for alarm %s.", alarm_uuid)
         finally:
             database.db.close()