Fixing flake and black issues in code, enabling the same in tox
[osm/LCM.git] / osm_lcm / lcm.py
index f8b204a..273edc1 100644 (file)
@@ -44,6 +44,7 @@ from osm_common.fsbase import FsException
 from osm_common.msgbase import MsgException
 from osm_lcm.data_utils.database.database import Database
 from osm_lcm.data_utils.filesystem.filesystem import Filesystem
+from osm_lcm.lcm_hc import get_health_check_file
 from os import environ, path
 from random import choice as random_choice
 from n2vc import version as n2vc_version
@@ -58,9 +59,6 @@ min_RO_version = "6.0.2"
 min_n2vc_version = "0.0.2"
 
 min_common_version = "0.1.19"
-health_check_file = (
-    path.expanduser("~") + "/time_last_ping"
-)  # TODO find better location for this file
 
 
 class Lcm:
@@ -98,6 +96,7 @@ class Lcm:
         # load configuration
         config = self.read_config_file(config_file)
         self.config = config
+        self.health_check_file = get_health_check_file(self.config)
         self.config["ro_config"] = {
             "ng": config["RO"].get("ng", False),
             "uri": config["RO"].get("uri"),
@@ -345,12 +344,12 @@ class Lcm:
                     return
                 self.pings_not_received = 0
                 try:
-                    with open(health_check_file, "w") as f:
+                    with open(self.health_check_file, "w") as f:
                         f.write(str(time()))
                 except Exception as e:
                     self.logger.error(
                         "Cannot write into '{}' for healthcheck: {}".format(
-                            health_check_file, e
+                            self.health_check_file, e
                         )
                     )
             return
@@ -439,6 +438,14 @@ class Lcm:
                 task = asyncio.ensure_future(self.ns.action(nsr_id, nslcmop_id))
                 self.lcm_tasks.register("ns", nsr_id, nslcmop_id, "ns_action", task)
                 return
+            elif command == "update":
+                # self.logger.debug("Update NS {}".format(nsr_id))
+                nslcmop = params
+                nslcmop_id = nslcmop["_id"]
+                nsr_id = nslcmop["nsInstanceId"]
+                task = asyncio.ensure_future(self.ns.update(nsr_id, nslcmop_id))
+                self.lcm_tasks.register("ns", nsr_id, nslcmop_id, "ns_update", task)
+                return
             elif command == "scale":
                 # self.logger.debug("Update NS {}".format(nsr_id))
                 nslcmop = params
@@ -447,6 +454,36 @@ class Lcm:
                 task = asyncio.ensure_future(self.ns.scale(nsr_id, nslcmop_id))
                 self.lcm_tasks.register("ns", nsr_id, nslcmop_id, "ns_scale", task)
                 return
+            elif command == "heal":
+                # self.logger.debug("Healing NS {}".format(nsr_id))
+                nslcmop = params
+                nslcmop_id = nslcmop["_id"]
+                nsr_id = nslcmop["nsInstanceId"]
+                task = asyncio.ensure_future(self.ns.heal(nsr_id, nslcmop_id))
+                self.lcm_tasks.register("ns", nsr_id, nslcmop_id, "ns_heal", task)
+                return
+            elif command == "migrate":
+                nslcmop = params
+                nslcmop_id = nslcmop["_id"]
+                nsr_id = nslcmop["nsInstanceId"]
+                task = asyncio.ensure_future(self.ns.migrate(nsr_id, nslcmop_id))
+                self.lcm_tasks.register("ns", nsr_id, nslcmop_id, "ns_migrate", task)
+                return
+            elif command == "verticalscale":
+                nslcmop = params
+                nslcmop_id = nslcmop["_id"]
+                nsr_id = nslcmop["nsInstanceId"]
+                task = asyncio.ensure_future(self.ns.vertical_scale(nsr_id, nslcmop_id))
+                self.logger.debug(
+                    "nsr_id,nslcmop_id,task {},{},{}".format(nsr_id, nslcmop_id, task)
+                )
+                self.lcm_tasks.register(
+                    "ns", nsr_id, nslcmop_id, "ns_verticalscale", task
+                )
+                self.logger.debug(
+                    "LCM task registered {},{},{} ".format(nsr_id, nslcmop_id, task)
+                )
+                return
             elif command == "show":
                 nsr_id = params
                 try:
@@ -470,12 +507,19 @@ class Lcm:
             elif command == "deleted":
                 return  # TODO cleaning of task just in case should be done
             elif command in (
+                "vnf_terminated",
+                "policy_updated",
                 "terminated",
                 "instantiated",
                 "scaled",
+                "healed",
                 "actioned",
+                "updated",
+                "migrated",
+                "verticalscaled",
             ):  # "scaled-cooldown-time"
                 return
+
         elif topic == "nsi":  # netslice LCM processes (instantiate, terminate, etc)
             if command == "instantiate":
                 # self.logger.debug("Instantiating Network Slice {}".format(nsilcmop["netsliceInstanceId"]))
@@ -528,6 +572,7 @@ class Lcm:
                 "terminated",
                 "instantiated",
                 "scaled",
+                "healed",
                 "actioned",
             ):  # "scaled-cooldown-time"
                 return
@@ -718,7 +763,7 @@ class Lcm:
         try:
             # read file as yaml format
             with open(config_file) as f:
-                conf = yaml.load(f, Loader=yaml.Loader)
+                conf = yaml.safe_load(f)
             # Ensure all sections are not empty
             for k in (
                 "global",
@@ -836,7 +881,7 @@ if __name__ == "__main__":
             elif o == "--health-check":
                 from osm_lcm.lcm_hc import health_check
 
-                health_check(health_check_file, Lcm.ping_interval_pace)
+                health_check(config_file, Lcm.ping_interval_pace)
             # elif o == "--log-socket-port":
             #     log_socket_port = a
             # elif o == "--log-socket-host":