feat(sol006): LCM migration to SOL006
[osm/LCM.git] / osm_lcm / lcm.py
index 73bd7b4..6c8be98 100644 (file)
@@ -37,14 +37,17 @@ from time import time
 from osm_lcm.lcm_utils import versiontuple, LcmException, TaskRegistry, LcmExceptionExit
 from osm_lcm import version as lcm_version, version_date as lcm_version_date
 
-from osm_common import dbmemory, dbmongo, fslocal, fsmongo, msglocal, msgkafka
+from osm_common import msglocal, msgkafka
 from osm_common import version as common_version
 from osm_common.dbbase import DbException
 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 os import environ, path
 from random import choice as random_choice
 from n2vc import version as n2vc_version
+import traceback
 
 if os.getenv('OSMLCM_PDB_DEBUG', None) is not None:
     pdb.set_trace()
@@ -147,26 +150,9 @@ class Lcm:
                 common_version, min_common_version))
 
         try:
-            # TODO check database version
-            if config["database"]["driver"] == "mongo":
-                self.db = dbmongo.DbMongo()
-                self.db.db_connect(config["database"])
-            elif config["database"]["driver"] == "memory":
-                self.db = dbmemory.DbMemory()
-                self.db.db_connect(config["database"])
-            else:
-                raise LcmException("Invalid configuration param '{}' at '[database]':'driver'".format(
-                    config["database"]["driver"]))
-
-            if config["storage"]["driver"] == "local":
-                self.fs = fslocal.FsLocal()
-                self.fs.fs_connect(config["storage"])
-            elif config["storage"]["driver"] == "mongo":
-                self.fs = fsmongo.FsMongo()
-                self.fs.fs_connect(config["storage"])
-            else:
-                raise LcmException("Invalid configuration param '{}' at '[storage]':'driver'".format(
-                    config["storage"]["driver"]))
+            self.db = Database(config).instance.db
+
+            self.fs = Filesystem(config).instance.fs
 
             # copy message configuration in order to remove 'group_id' for msg_admin
             config_message = config["message"].copy()
@@ -191,11 +177,11 @@ class Lcm:
             raise LcmException(str(e))
 
         # contains created tasks/futures to be able to cancel
-        self.lcm_tasks = TaskRegistry(self.worker_id, self.db, self.logger)
+        self.lcm_tasks = TaskRegistry(self.worker_id, self.logger)
 
         if self.config.get("tsdb") and self.config["tsdb"].get("driver"):
             if self.config["tsdb"]["driver"] == "prometheus":
-                self.prometheus = prometheus.Prometheus(self.config["tsdb"], self.worker_id, self.db, self.loop)
+                self.prometheus = prometheus.Prometheus(self.config["tsdb"], self.worker_id, self.loop)
             else:
                 raise LcmException("Invalid configuration param '{}' at '[tsdb]':'driver'".format(
                     config["tsdb"]["driver"]))
@@ -228,6 +214,7 @@ class Lcm:
             except (ROClientException, NgRoException) as e:
                 self.config["ro_config"]["uri"] = ro_uri
                 tries -= 1
+                traceback.print_tb(e.__traceback__)
                 error_text = "Error while connecting to RO on {}: {}".format(self.config["ro_config"]["uri"], e)
                 if tries <= 0:
                     self.logger.critical(error_text)
@@ -521,14 +508,14 @@ class Lcm:
         # check RO version
         self.loop.run_until_complete(self.check_RO_version())
 
-        self.ns = ns.NsLcm(self.db, self.msg, self.fs, self.lcm_tasks, self.config, self.loop, self.prometheus)
-        self.netslice = netslice.NetsliceLcm(self.db, self.msg, self.fs, self.lcm_tasks, self.config, self.loop,
+        self.ns = ns.NsLcm(self.msg, self.lcm_tasks, self.config, self.loop, self.prometheus)
+        self.netslice = netslice.NetsliceLcm(self.msg, self.lcm_tasks, self.config, self.loop,
                                              self.ns)
-        self.vim = vim_sdn.VimLcm(self.db, self.msg, self.fs, self.lcm_tasks, self.config, self.loop)
-        self.wim = vim_sdn.WimLcm(self.db, self.msg, self.fs, self.lcm_tasks, self.config, self.loop)
-        self.sdn = vim_sdn.SdnLcm(self.db, self.msg, self.fs, self.lcm_tasks, self.config, self.loop)
-        self.k8scluster = vim_sdn.K8sClusterLcm(self.db, self.msg, self.fs, self.lcm_tasks, self.config, self.loop)
-        self.k8srepo = vim_sdn.K8sRepoLcm(self.db, self.msg, self.fs, self.lcm_tasks, self.config, self.loop)
+        self.vim = vim_sdn.VimLcm(self.msg, self.lcm_tasks, self.config, self.loop)
+        self.wim = vim_sdn.WimLcm(self.msg, self.lcm_tasks, self.config, self.loop)
+        self.sdn = vim_sdn.SdnLcm(self.msg, self.lcm_tasks, self.config, self.loop)
+        self.k8scluster = vim_sdn.K8sClusterLcm(self.msg, self.lcm_tasks, self.config, self.loop)
+        self.k8srepo = vim_sdn.K8sRepoLcm(self.msg, self.lcm_tasks, self.config, self.loop)
 
         # configure tsdb prometheus
         if self.prometheus: