X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Finstance_topics.py;h=8f2ac0d5d023587993a0c47e02f10ebece6d2eae;hp=aba441ff38dc780a69d08f6b3694a9d744a11ef0;hb=44603906f6eeefb0546b9fa26cd0fb4a6e346c4a;hpb=b4844abca6fd9f8a7cf45fdc168d3606d2c34c39 diff --git a/osm_nbi/instance_topics.py b/osm_nbi/instance_topics.py index aba441f..8f2ac0d 100644 --- a/osm_nbi/instance_topics.py +++ b/osm_nbi/instance_topics.py @@ -515,11 +515,13 @@ class NsLcmOpTopic(BaseTopic): # check vnf_member_index if indata.get("vnf_member_index"): indata["member_vnf_index"] = indata.pop("vnf_member_index") # for backward compatibility - if not indata.get("member_vnf_index"): - raise EngineException("Missing 'member_vnf_index' parameter") - vnfd = check_valid_vnf_member_index(indata["member_vnf_index"]) + if indata.get("member_vnf_index"): + vnfd = check_valid_vnf_member_index(indata["member_vnf_index"]) + descriptor_configuration = vnfd.get("vnf-configuration", {}).get("config-primitive") + else: # use a NSD + descriptor_configuration = nsd.get("ns-configuration", {}).get("config-primitive") # check primitive - for config_primitive in get_iterable(vnfd.get("vnf-configuration", {}).get("config-primitive")): + for config_primitive in get_iterable(descriptor_configuration): if indata["primitive"] == config_primitive["name"]: # check needed primitive_params are provided if indata.get("primitive_params"): @@ -534,11 +536,11 @@ class NsLcmOpTopic(BaseTopic): paramd["name"], indata["primitive"])) # check no extra primitive params are provided if in_primitive_params_copy: - raise EngineException("parameter/s '{}' not present at vnfd for primitive '{}'".format( + raise EngineException("parameter/s '{}' not present at vnfd /nsd for primitive '{}'".format( list(in_primitive_params_copy.keys()), indata["primitive"])) break else: - raise EngineException("Invalid primitive '{}' is not present at vnfd".format(indata["primitive"])) + raise EngineException("Invalid primitive '{}' is not present at vnfd/nsd".format(indata["primitive"])) if operation == "scale": vnfd = check_valid_vnf_member_index(indata["scaleVnfData"]["scaleByStepData"]["member-vnf-index"]) for scaling_group in get_iterable(vnfd.get("scaling-group-descriptor")): @@ -1247,12 +1249,15 @@ class NsiLcmOpTopic(BaseTopic): for index, nsr_item in enumerate(nsrs_list): nsi = None if nsr_item.get("shared"): - _filter["_admin.nsrs-detailed-list.ANYINDEX.shared"] = True, + _filter["_admin.nsrs-detailed-list.ANYINDEX.shared"] = True _filter["_admin.nsrs-detailed-list.ANYINDEX.nsrId"] = nsr_item["nsrId"] _filter["_admin.nsrs-detailed-list.ANYINDEX.nslcmop_instantiate.ne"] = None _filter["_id.ne"] = nsiInstanceId - nsi = self.db.get_one("nsis", _filter, fail_on_empty=False, fail_on_more=False) + if operation == "terminate": + _update = {"_admin.nsrs-detailed-list.{}.nslcmop_instantiate".format(index): None} + self.db.set_one("nsis", {"_id": nsir["_id"]}, _update) + # looks the first nsi fulfilling the conditions but not being the current NSIR if nsi: nsi_admin_shared = nsi["_admin"]["nsrs-detailed-list"]