ns_request, member_vnf_index=None, vdu_id=None, kdu_name=None, descriptor=None
):
"""
- Get and format user additional params for NS or VNF
+ Get and format user additional params for NS or VNF.
+ The vdu_id and kdu_name params are mutually exclusive! If none of them are given, then the method will
+ exclusively search for the VNF/NS LCM additional params.
+
:param ns_request: User instantiation additional parameters
:param member_vnf_index: None for extract NS params, or member_vnf_index to extract VNF params
+ :vdu_id: VDU's ID against which we want to format the additional params
+ :kdu_name: KDU's name against which we want to format the additional params
:param descriptor: If not None it check that needed parameters of descriptor are supplied
:return: tuple with a formatted copy of additional params or None if not supplied, plus other parameters
"""
if kdu_name:
additional_params = json.dumps(additional_params)
+ # Select the VDU ID, KDU name or NS/VNF ID, depending on the method's call intent
+ selector = vdu_id if vdu_id else kdu_name if kdu_name else descriptor.get("id")
+
if descriptor:
for df in descriptor.get("df", []):
# check that enough parameters are supplied for the initial-config-primitive
for config in df["lcm-operations-configuration"][
"operate-vnf-op-config"
].get("day1-2", []):
- for primitive in get_iterable(
- config.get("initial-config-primitive")
- ):
- initial_primitives.append(primitive)
+ # Verify the target object (VNF|NS|VDU|KDU) where we need to populate
+ # the params with the additional ones given by the user
+ if config.get("id") == selector:
+ for primitive in get_iterable(
+ config.get("initial-config-primitive")
+ ):
+ initial_primitives.append(primitive)
else:
initial_primitives = deep_get(
descriptor, ("ns-configuration", "initial-config-primitive")
"<rw_mgmt_ip>",
"<VDU_SCALE_INFO>",
"<ns_config_info>",
+ "<OSM>"
):
continue
if (
# Name, mac-address and interface position is taken from VNFD
# and included into VNFR. By this way RO can process this information
# while creating the VDU.
- iface_fields = ("name", "mac-address", "position")
+ iface_fields = ("name", "mac-address", "position", "ip-address")
vdu_iface = {
x: iface[x] for x in iface_fields if iface.get(x) is not None
}
ivld.get("id"): set()
for ivld in get_iterable(vnfd.get("int-virtual-link-desc"))
}
- for vdu in get_iterable(vnfd.get("vdu")):
- for cpd in get_iterable(vnfd.get("int-cpd")):
+ for vdu in vnfd.get("vdu", {}):
+ for cpd in vdu.get("int-cpd", {}):
if cpd.get("int-virtual-link-desc"):
vnfd_ivlds_cpds[cpd.get("int-virtual-link-desc")] = cpd.get("id")