From: tierno Date: Wed, 20 Mar 2019 17:17:21 +0000 (+0000) Subject: bug 650 adding WIM account instantiation parameter. X-Git-Tag: v6.0.0~18 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=refs%2Fchanges%2F40%2F7340%2F2;p=osm%2FLCM.git bug 650 adding WIM account instantiation parameter. Allow manual selection of wim or deployment without Wim Change-Id: I9473fdbc9783a4dae73e4ff0028fc3ff81a1bdc0 Signed-off-by: tierno --- diff --git a/osm_lcm/ns.py b/osm_lcm/ns.py index d7277e7f..20c8c4ce 100644 --- a/osm_lcm/ns.py +++ b/osm_lcm/ns.py @@ -242,6 +242,7 @@ class NsLcm(LcmBase): :return: The RO ns descriptor """ vim_2_RO = {} + wim_2_RO = {} # TODO feature 1417: Check that no instantiation is set over PDU # check if PDU forces a concrete vim-network-id and add it # check if PDU contains a SDN-assist info (dpid, switch, port) and pass it to RO @@ -258,6 +259,21 @@ class NsLcm(LcmBase): vim_2_RO[vim_account] = RO_vim_id return RO_vim_id + def wim_account_2_RO(wim_account): + if isinstance(wim_account, str): + if wim_account in wim_2_RO: + return wim_2_RO[wim_account] + + db_wim = self.db.get_one("wim_accounts", {"_id": wim_account}) + if db_wim["_admin"]["operationalState"] != "ENABLED": + raise LcmException("WIM={} is not available. operationalState={}".format( + wim_account, db_wim["_admin"]["operationalState"])) + RO_wim_id = db_wim["_admin"]["deployed"]["RO-account"] + wim_2_RO[wim_account] = RO_wim_id + return RO_wim_id + else: + return wim_account + def ip_profile_2_RO(ip_profile): RO_ip_profile = deepcopy((ip_profile)) if "dns-server" in RO_ip_profile: @@ -281,6 +297,7 @@ class NsLcm(LcmBase): # "name": ns_params["nsName"], # "description": ns_params.get("nsDescription"), "datacenter": vim_account_2_RO(ns_params["vimAccountId"]), + "wim_account": wim_account_2_RO(ns_params.get("wimAccountId")), # "scenario": ns_params["nsdId"], } if n2vc_key_list: @@ -402,6 +419,10 @@ class NsLcm(LcmBase): if "ip-profile" in vld_params: populate_dict(RO_ns_params, ("networks", vld_params["name"], "ip-profile"), ip_profile_2_RO(vld_params["ip-profile"])) + + if "wimAccountId" in vld_params and vld_params["wimAccountId"] is not None: + populate_dict(RO_ns_params, ("networks", vld_params["name"], "wim_account"), + wim_account_2_RO(vld_params["wimAccountId"])), if vld_params.get("vim-network-name"): RO_vld_sites = [] if isinstance(vld_params["vim-network-name"], dict):