- break
- return vnfr_update
-
- @staticmethod
- def _update_indata_to_use_concrete_vim_network(
- ifaces_forcing_vim_network: list, indata: dict, member_vnf_index: str
- ) -> dict:
- """Update indata in case pdu forces to use a concrete vim-network-name
- Args:
- ifaces_forcing_vim_network (list): List of interfaces that are connected to an existing VIM network.
- indata (dict): Input data dictionary
- member_vnf_index (str): VNF index as an identifier
- Returns:
- indata (dict): Input data dictionary
- """
- for iface_info in ifaces_forcing_vim_network:
- if iface_info.get("ns-vld-id"):
- if "vld" not in indata:
- indata["vld"] = []
- indata["vld"].append(
- {
- key: iface_info[key]
- for key in ("name", "vim-network-name", "vim-network-id")
- if iface_info.get(key)
- }
- )
-
- elif iface_info.get("vnf-vld-id"):
- if "vnf" not in indata:
- indata["vnf"] = []
- indata["vnf"].append(
- {
- "member-vnf-index": member_vnf_index,
- "internal-vld": [
- {
- key: iface_info[key]
- for key in (
- "name",
- "vim-network-name",
- "vim-network-id",
- )
- if iface_info.get(key)
- }
- ],
- }
- )
- return indata
-
- def _update_vnfrs(
- self, session: dict, rollback: list, nsr: dict, indata: dict
- ) -> None:
- """Update VNF record using indata.
- Args:
- session (dict): Contains "username", "admin", "force", "public", "project_id", "set_project"
- rollback (list): List with the database modifications to rollback if needed
- nsr (dict): NS record to get the related VNF record.
- indata (dict): Input data dictionary
-
- Returns:
- None
-
- Raises:
- None
- """
- # Get vnfr
- nsr_id = nsr["_id"]
- vnfrs = self.db.get_list("vnfrs", {"nsr-id-ref": nsr_id})
-
- for vnfr in vnfrs:
- vnfr_update = {}
- vnfr_update_rollback = {}
- member_vnf_index = vnfr["member-vnf-index-ref"]
-
- # Update vim-account-id
- vim_account = indata.get("vimAccountId")
- paas_account = indata.get("paasAccountId")
- vca_id = None
- if vim_account:
- vca_id = self._get_vim_account(vim_account, session).get("vca")
-
- # Check instantiate parameters
- for vnf_inst_params in get_iterable(indata.get("vnf")):
- if vnf_inst_params["member-vnf-index"] != member_vnf_index:
- continue
- if vnf_inst_params.get("vimAccountId"):
- vim_account = vnf_inst_params["vimAccountId"]
- vca_id = self._get_vim_account(vim_account, session).get("vca")
- elif vnf_inst_params.get("paasAccountId"):
- paas_account = vnf_inst_params["paasAccountId"]
-
- # Get vnf.vdu.interface instantiation params to update vnfr.vdur.interfaces ip, mac
- vnfr_update = (
- NsLcmOpTopic._get_vdu_interfaces_from_instantiation_params(
- vnfr_update, vnf_inst_params, vnfr
- )
- )
-
- # Get vnf.internal-vld.internal-conection-point instantiation params to update vnfr.vdur.interfaces