From: aticig Date: Fri, 11 Mar 2022 18:14:22 +0000 (+0300) Subject: Fix 1425 NG-RO unable to pin VNF with vim_account config X-Git-Tag: v11.0.3~10 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=refs%2Fchanges%2F50%2F11750%2F1;p=osm%2FLCM.git Fix 1425 NG-RO unable to pin VNF with vim_account config If vnf vim-accounts has been changed during instantiation, the binding between new vim-account information and ns vld is provided through this fix. Fixing some code format errors Change-Id: I7f40e14749cae757843ddea8caeb14325aeaf0f2 Signed-off-by: aticig --- diff --git a/osm_lcm/ns.py b/osm_lcm/ns.py index 7f5a710..17a892d 100644 --- a/osm_lcm/ns.py +++ b/osm_lcm/ns.py @@ -822,6 +822,37 @@ class NsLcm(LcmBase): if vld_params.get("common_id"): target_vld["common_id"] = vld_params.get("common_id") + # modify target["ns"]["vld"] with instantiation parameters to override vnf vim-account + def update_ns_vld_target(target, ns_params): + for vnf_params in ns_params.get("vnf", ()): + if vnf_params.get("vimAccountId"): + target_vnf = next( + ( + vnfr + for vnfr in db_vnfrs.values() + if vnf_params["member-vnf-index"] + == vnfr["member-vnf-index-ref"] + ), + None, + ) + vdur = next((vdur for vdur in target_vnf.get("vdur", ())), None) + for a_index, a_vld in enumerate(target["ns"]["vld"]): + target_vld = find_in_list( + get_iterable(vdur, "interfaces"), + lambda iface: iface.get("ns-vld-id") == a_vld["name"], + ) + if target_vld: + if vnf_params.get("vimAccountId") not in a_vld.get( + "vim_info", {} + ): + target["ns"]["vld"][a_index].get("vim_info").update( + { + "vim:{}".format(vnf_params["vimAccountId"]): { + "vim_network_name": "" + } + } + ) + nslcmop_id = db_nslcmop["_id"] target = { "name": db_nsr["name"], @@ -937,6 +968,8 @@ class NsLcm(LcmBase): vld_params.update(vld_instantiation_params) parse_vld_instantiation_params(target_vim, target_vld, vld_params, None) target["ns"]["vld"].append(target_vld) + # Update the target ns_vld if vnf vim_account is overriden by instantiation params + update_ns_vld_target(target, ns_params) for vnfr in db_vnfrs.values(): vnfd = find_in_list(