From 578fdc4b2b0d18c5a41131ef57c636351f88a151 Mon Sep 17 00:00:00 2001 From: maopengzhang Date: Tue, 30 Oct 2018 20:19:30 +0800 Subject: support pnf check in NSD support pnf package exist check in NSD Change-Id: I15d497e36239dc5e2b3846df34ac78ab893adeea Issue-ID: VFC-1158 Signed-off-by: maopengzhang --- catalog/packages/biz/ns_descriptor.py | 10 ++++++++++ catalog/packages/tests/test_ns_descriptor.py | 8 +++++++- catalog/packages/tests/test_nspackage.py | 3 ++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/catalog/packages/biz/ns_descriptor.py b/catalog/packages/biz/ns_descriptor.py index bdd56bd1..13e53654 100644 --- a/catalog/packages/biz/ns_descriptor.py +++ b/catalog/packages/biz/ns_descriptor.py @@ -150,6 +150,16 @@ class NsDescriptor(object): logger.error("[%s] is not distributed.", vnfd_name) raise CatalogException("VNF package(%s) is not distributed." % vnfd_id) + for pnf in nsd["pnfs"]: + pnfd_id = pnf["properties"].get("descriptor_id", "undefined") + if pnfd_id == "undefined": + pnfd_id = pnf["properties"].get("id", "undefined") + pkg = PnfPackageModel.objects.filter(pnfdId=pnfd_id) + if not pkg: + pnfd_name = pnf.get("vnf_id", "undefined") + logger.error("[%s] is not distributed.", pnfd_name) + raise CatalogException("VNF package(%s) is not distributed." % pnfd_name) + ns_pkgs.update( nsdId=nsd_id, nsdName=nsd_name, diff --git a/catalog/packages/tests/test_ns_descriptor.py b/catalog/packages/tests/test_ns_descriptor.py index 3f8d245f..f26ec394 100644 --- a/catalog/packages/tests/test_ns_descriptor.py +++ b/catalog/packages/tests/test_ns_descriptor.py @@ -24,7 +24,7 @@ from catalog.packages.biz.ns_descriptor import NsDescriptor from catalog.packages.const import PKG_STATUS from catalog.packages.tests.const import nsd_data from catalog.pub.config.config import CATALOG_ROOT_PATH -from catalog.pub.database.models import NSPackageModel, VnfPackageModel +from catalog.pub.database.models import NSPackageModel, VnfPackageModel, PnfPackageModel from catalog.pub.utils import toscaparser @@ -162,6 +162,12 @@ class TestNsDescriptor(TestCase): vnfPackageId="111", vnfdId="vcpe_vfw_zte_1_0" ).save() + + PnfPackageModel( + pnfPackageId="112", + pnfdId="m6000_s" + ).save() + NSPackageModel( nsPackageId='22', operationalState='DISABLED', diff --git a/catalog/packages/tests/test_nspackage.py b/catalog/packages/tests/test_nspackage.py index 4503bace..a308a2eb 100644 --- a/catalog/packages/tests/test_nspackage.py +++ b/catalog/packages/tests/test_nspackage.py @@ -19,7 +19,7 @@ from django.test import TestCase from django.test import Client from catalog.pub.utils import restcall, toscaparser -from catalog.pub.database.models import NSPackageModel, VnfPackageModel +from catalog.pub.database.models import NSPackageModel, VnfPackageModel, PnfPackageModel from catalog.pub.msapi import sdc @@ -329,6 +329,7 @@ class TestNsPackage(TestCase): "distributionStatus": "DISTRIBUTED" }]), '200'] VnfPackageModel(vnfPackageId="1", vnfdId="vcpe_vfw_zte_1_0").save() + PnfPackageModel(pnfPackageId="1", pnfdId="m6000_s").save() resp = self.client.post( "/api/catalog/v1/nspackages", {"csarId": "1"}, format='json') self.assertEqual(resp.status_code, status.HTTP_202_ACCEPTED) -- cgit 1.2.3-korg