X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=osm_policy_module%2Fcommon%2Fcommon_db_client.py;h=57311558e97f1f0ca7b585972b77b9c830ceff1e;hb=a14cf16181c8b39f12c872c486e0b292c0068944;hp=41ce97566263ac80f2387c5cad8150b823666c5a;hpb=312c16596975a42d6294a1a2ca7af98b0ff2ffb5;p=osm%2FPOL.git diff --git a/osm_policy_module/common/common_db_client.py b/osm_policy_module/common/common_db_client.py index 41ce975..5731155 100644 --- a/osm_policy_module/common/common_db_client.py +++ b/osm_policy_module/common/common_db_client.py @@ -21,17 +21,21 @@ # 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_policy_module.core.config import Config +from osm_policy_module.core.exceptions import VdurNotFound class CommonDbClient: - def __init__(self): - cfg = Config.instance() - self.common_db = dbmongo.DbMongo() - self.common_db.db_connect({'uri': cfg.OSMPOL_DATABASE_URI, - 'name': 'osm'}) + 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", @@ -56,3 +60,14 @@ class CommonDbClient: nslcmop = self.common_db.get_one("nslcmops", {"_id": nslcmop_id}) return nslcmop + + def get_vdur(self, nsr_id, member_index, vdur_name): + vnfr = self.get_vnfr(nsr_id, member_index) + for vdur in vnfr['vdur']: + if vdur['name'] == vdur_name: + return vdur + raise VdurNotFound('vdur not found for nsr-id %s, member_index %s and vdur_name %s', nsr_id, member_index, + vdur_name) + + def create_nslcmop(self, nslcmop): + self.common_db.create("nslcmops", nslcmop)