Feature 10923: Autohealing
[osm/POL.git] / osm_policy_module / core / agent.py
index 777723b..9867c0c 100644 (file)
@@ -30,6 +30,7 @@ import peewee
 
 from osm_policy_module.alarming.service import AlarmingService
 from osm_policy_module.autoscaling.service import AutoscalingService
+from osm_policy_module.healing.service import HealingService
 from osm_policy_module.common.common_db_client import CommonDbClient
 from osm_policy_module.common.message_bus_client import MessageBusClient
 from osm_policy_module.core.config import Config
@@ -49,6 +50,7 @@ class PolicyModuleAgent:
         self.db_client = CommonDbClient(config)
         self.autoscaling_service = AutoscalingService(config, loop)
         self.alarming_service = AlarmingService(config, loop)
+        self.healing_service = HealingService(config, loop)
 
     def run(self):
         self.loop.run_until_complete(self.start())
@@ -98,6 +100,7 @@ class PolicyModuleAgent:
         status = content["notify_details"]["status"]
         await self.autoscaling_service.handle_alarm(alarm_uuid, status)
         await self.alarming_service.handle_alarm(alarm_uuid, status, content)
+        await self.healing_service.handle_alarm(alarm_uuid, status)
 
     async def _handle_instantiated(self, content):
         log.debug("_handle_instantiated: %s", content)
@@ -111,6 +114,7 @@ class PolicyModuleAgent:
             log.info("Configuring nsr_id: %s", nsr_id)
             await self.autoscaling_service.configure_scaling_groups(nsr_id)
             await self.alarming_service.configure_vnf_alarms(nsr_id)
+            await self.healing_service.configure_healing_alarms(nsr_id)
         else:
             log.info(
                 "Network_service is not in COMPLETED or PARTIALLY_COMPLETED state. "
@@ -131,6 +135,8 @@ class PolicyModuleAgent:
             await self.autoscaling_service.configure_scaling_groups(nsr_id)
             await self.autoscaling_service.delete_orphaned_alarms(nsr_id)
             await self.alarming_service.configure_vnf_alarms(nsr_id)
+            await self.healing_service.configure_healing_alarms(nsr_id)
+            await self.healing_service.delete_orphaned_healing_alarms(nsr_id)
         else:
             log.debug(
                 "Network service is not in COMPLETED or PARTIALLY_COMPLETED state. "
@@ -151,6 +157,7 @@ class PolicyModuleAgent:
             )
             await self.autoscaling_service.delete_scaling_groups(nsr_id)
             await self.alarming_service.delete_vnf_alarms(nsr_id)
+            await self.healing_service.delete_healing_alarms(nsr_id)
         else:
             log.info(
                 "Network service is not in COMPLETED or PARTIALLY_COMPLETED state. "