Adds collection of VM status metric in OpenStack infra plugin
[osm/MON.git] / osm_mon / core / common_db.py
index beaac3d..33eff02 100644 (file)
 # For those usages not covered by the Apache License, Version 2.0 please
 # contact: bdiaz@whitestack.com or glavado@whitestack.com
 ##
-from osm_common import dbmongo
+from osm_common import dbmongo, dbmemory
 
-from osm_mon.core.settings import Config
+from osm_mon.core.config import Config
 
 
 class CommonDbClient:
-    def __init__(self):
-        cfg = Config.instance()
-        self.common_db = dbmongo.DbMongo()
-        self.common_db.db_connect({'uri': cfg.MONGO_URI,
-                                   'name': 'osm',
-                                   'commonkey': cfg.OSMMON_DATABASE_COMMONKEY})
+    def __init__(self, config: Config):
+        if config.get('database', 'driver') == "mongo":
+            self.common_db = dbmongo.DbMongo()
+        elif config.get('database', 'driver') == "memory":
+            self.common_db = dbmemory.DbMemory()
+        else:
+            raise Exception("Unknown database driver {}".format(config.get('section', 'driver')))
+        self.common_db.db_connect(config.get("database"))
 
     def get_vnfr(self, nsr_id: str, member_index: int):
         vnfr = self.common_db.get_one("vnfrs",
                                       {"nsr-id-ref": nsr_id, "member-vnf-index-ref": str(member_index)})
         return vnfr
 
-    def get_vnfrs(self, nsr_id: str = None):
+    def get_vnfrs(self, nsr_id: str = None, vim_account_id: str = None):
+        if nsr_id and vim_account_id:
+            raise NotImplementedError("Only one filter is currently supported")
         if nsr_id:
-            return [self.get_vnfr(nsr_id, member['member-vnf-index']) for member in
-                    self.get_nsr(nsr_id)['nsd']['constituent-vnfd']]
+            vnfrs = [self.get_vnfr(nsr_id, member['member-vnf-index']) for member in
+                     self.get_nsr(nsr_id)['nsd']['constituent-vnfd']]
+        elif vim_account_id:
+            vnfrs = self.common_db.get_list("vnfrs",
+                                            {"vim-account-id": vim_account_id})
         else:
-            return self.common_db.get_list('vnfrs')
+            vnfrs = self.common_db.get_list('vnfrs')
+        return vnfrs
 
     def get_vnfd(self, vnfd_id: str):
         vnfr = self.common_db.get_one("vnfds",
@@ -75,3 +83,6 @@ class CommonDbClient:
     def get_vim_account_id(self, nsr_id: str, vnf_member_index: int) -> str:
         vnfr = self.get_vnfr(nsr_id, vnf_member_index)
         return vnfr['vim-account-id']
+
+    def get_vim_accounts(self):
+        return self.common_db.get_list('vim_accounts')