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")