Fix bug 1900 to populate WIM parameters and auto-select WIM when needed.
[osm/LCM.git] / osm_lcm / data_utils / vim.py
index 0e69572..15ca93f 100644 (file)
 # For those usages not covered by the Apache License, Version 2.0 please
 # contact: fbravo@whitestack.com
 ##
+
+from osm_lcm.data_utils.database.vim_account import VimAccountDB
+
+__author__ = (
+    "Lluis Gifre <lluis.gifre@cttc.es>, Ricard Vilalta <ricard.vilalta@cttc.es>"
+)
+
+
+def get_vims_to_connect(db_nsr, db_vnfrs, target_vld):
+    vims_to_connect = set()
+    vld = next(
+        (vld for vld in db_nsr["vld"] if vld["id"] == target_vld["id"]),
+        None,
+    )
+    if vld is None:
+        return vims_to_connect  # VLD not in NS, means it is an internal VLD within a single VIM
+    # iterate over VNFs and retrieve name of VIMs they are planned to be deployed to
+    for vld_member_vnf_index_ref in vld["vnfd-connection-point-ref"]:
+        vld_member_vnf_index_ref = vld_member_vnf_index_ref["member-vnf-index-ref"]
+        db_vim = VimAccountDB.get_vim_account_with_id(
+            db_vnfrs[vld_member_vnf_index_ref]["vim-account-id"]
+        )
+        if db_vim is None:
+            continue
+        vims_to_connect.add(db_vim["name"])
+    return vims_to_connect