- # TODO: Multiple VIMs networks: datacenters
- nets = []
- for netslice_vld in nsir_vlds:
- RO_ns_params = {}
- RO_ns_params["name"] = db_nsir["name"]
- if netslice_vld.get("vim-network-name"):
- if not isinstance(netslice_vld["vim-network-name"], str):
- name = netslice_vld["vim-network-name"][netslice_vld["vimAccountId"]]
- nets.append({"name": name, "external": False, "type": "bridge"})
- else:
- nets.append({"name": netslice_vld["vim-network-name"], "external": False, "type": "bridge"})
- else:
- nets.append({"name": "default", "external": False, "type": "bridge"})
- RO_ns_params["scenario"] = {"nets": nets}
- RO_ns_params["datacenter"] = vim_account_2_RO(netslice_vld["vimAccountId"])
-
- # set state to INSTANTIATED. When instantiated NBI will not delete directly
- db_nsir_update["_admin.nsState"] = "INSTANTIATED"
- self.update_db_2("nsis", nsir_id, db_nsir_update)
+ # TODO: Check Multiple VIMs networks: datacenters
+
+ # Creating netslice VLDs networking before NS instantiation
+ for netslice_subnet in get_iterable(nsir_admin, "netslice-subnet"):
+ db_nsd = self.db.get_one("nsds", {"_id": netslice_subnet["nsdId"]})
+
+ # Fist operate with VLDs inside netslice_subnet
+ for vld_item in get_iterable(netslice_subnet, "vld"):
+ RO_ns_params = {}
+ RO_ns_params["name"] = vld_item["name"]
+ RO_ns_params["datacenter"] = vim_account_2_RO(db_nsir["datacenter"])
+
+ # TODO: Enable in the ns fake scenario the ip-profile
+ # if "ip-profile" in netslice-subnet:
+ # populate_dict(RO_ns_params, ("networks", vld_params["name"], "ip-profile"),
+ # ip_profile_2_RO(vld_params["ip-profile"]))
+ # TODO: Check VDU type in all descriptors finding SRIOV / PT
+ # Updating network names and datacenters from instantiation parameters for each VLD
+ mgmt_network = False
+ for nsd_vld in get_iterable(db_nsd, "vld"):
+ if nsd_vld["name"] == vld_item["name"]:
+ if nsd_vld.get("mgmt-network"):
+ mgmt_network = True
+ break
+
+ # Creating scenario if vim-network-name / vim-network-id are present as instantiation parameter
+ # Use vim-network-id instantiation parameter
+ vim_network_option = None
+ if vld_item.get("vim-network-id"):
+ vim_network_option = "vim-network-id"
+ elif vld_item.get("vim-network-name"):
+ vim_network_option = "vim-network-name"
+
+ if vim_network_option:
+ RO_vld_sites = []
+ if vld_item.get(vim_network_option):
+ if isinstance(vld_item[vim_network_option], dict):
+ for vim_account, vim_net in vld_item[vim_network_option].items():
+ RO_vld_sites.append({
+ "netmap-use": vim_net,
+ "datacenter": vim_account_2_RO(vim_account)
+ })
+ else:
+ RO_vld_sites.append({"netmap-use": vld_item[vim_network_option],
+ "datacenter": vim_account_2_RO(netslice_subnet["vimAccountId"])})
+ if RO_vld_sites:
+ populate_dict(RO_ns_params, ("networks", vld_item["name"], "sites"), RO_vld_sites)
+
+ if mgmt_network:
+ RO_ns_params["scenario"] = {"nets": [{"name": vld_item["name"],
+ "external": True, "type": "bridge"}]}
+ else:
+ RO_ns_params["scenario"] = {"nets": [{"name": vld_item["name"],
+ "external": False, "type": "bridge"}]}