From: tierno Date: Thu, 4 Apr 2019 14:07:55 +0000 (+0200) Subject: Merge "Bug 637 NSD-level IP Profiles not working in mgmt-network fix single for loop... X-Git-Tag: v6.0.0~53 X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=commitdiff_plain;h=1f1f6e03c7f6d6c1edd708e8d0b980827c7768ab;hp=8ba4e0552fefc96856942fb524d903d286d1cb65 Merge "Bug 637 NSD-level IP Profiles not working in mgmt-network fix single for loop to check for mgmt-network and ip-profiles" --- diff --git a/osm_nbi/descriptor_topics.py b/osm_nbi/descriptor_topics.py index eef2ca4..a1c3c15 100644 --- a/osm_nbi/descriptor_topics.py +++ b/osm_nbi/descriptor_topics.py @@ -527,7 +527,17 @@ class VnfdTopic(DescriptorTopic): if not self._validate_package_folders(storage_params, 'charms'): raise EngineException("Charm defined in vnf[id={}] but not present in " "package".format(indata["id"])) + vld_names = [] # For detection of duplicated VLD names for ivld in get_iterable(indata.get("internal-vld")): + # BEGIN Detection of duplicated VLD names + ivld_name = ivld["name"] + if ivld_name in vld_names: + raise EngineException("Duplicated VLD name '{}' in vnfd[id={}]:internal-vld[id={}]" + .format(ivld["name"], indata["id"], ivld["id"]), + http_code=HTTPStatus.UNPROCESSABLE_ENTITY) + else: + vld_names.append(ivld_name) + # END Detection of duplicated VLD names for icp in get_iterable(ivld.get("internal-connection-point")): icp_mark = False for vdu in get_iterable(indata.get("vdu")): diff --git a/osm_nbi/tests/test.py b/osm_nbi/tests/test.py index 6bb04d9..5d6a487 100755 --- a/osm_nbi/tests/test.py +++ b/osm_nbi/tests/test.py @@ -1813,7 +1813,20 @@ class TestDescriptors: queries = ["mgmt-interface.cp=mgmt", "vdu.0.interface.0.external-connection-point-ref=mgmt", "vdu.0.interface.1.internal-connection-point-ref=internal", - "internal-vld.0.internal-connection-point.0.id-ref=internal"] + "internal-vld.0.internal-connection-point.0.id-ref=internal", + # Detection of duplicated VLD names in VNF Descriptors + # URL: internal-vld=[ + # {id: internal1, name: internal, type:ELAN, + # internal-connection-point: [{id-ref: mgmtVM-internal}, {id-ref: dataVM-internal}]}, + # {id: internal2, name: internal, type:ELAN, + # internal-connection-point: [{id-ref: mgmtVM-internal}, {id-ref: dataVM-internal}]} + # ] + "internal-vld=%5B%7Bid%3A%20internal1%2C%20name%3A%20internal%2C%20type%3A%20ELAN%2C%20" + "internal-connection-point%3A%20%5B%7Bid-ref%3A%20mgmtVM-internal%7D%2C%20%7Bid-ref%3A%20" + "dataVM-internal%7D%5D%7D%2C%20%7Bid%3A%20internal2%2C%20name%3A%20internal%2C%20type%3A%20" + "ELAN%2C%20internal-connection-point%3A%20%5B%7Bid-ref%3A%20mgmtVM-internal%7D%2C%20%7B" + "id-ref%3A%20dataVM-internal%7D%5D%7D%5D" + ] for query in queries: engine.test("Upload invalid VNFD ", "PUT", "/vnfpkgm/v1/vnf_packages/{}/package_content?{}".format(self.vnfd_id, query),