support pnf check in NSD 48/71448/1
authormaopengzhang <zhang.maopeng1@zte.com.cn>
Tue, 30 Oct 2018 12:19:30 +0000 (20:19 +0800)
committermaopengzhang <zhang.maopeng1@zte.com.cn>
Tue, 30 Oct 2018 12:19:30 +0000 (20:19 +0800)
support pnf package exist check in NSD

Change-Id: I15d497e36239dc5e2b3846df34ac78ab893adeea
Issue-ID: VFC-1158
Signed-off-by: maopengzhang <zhang.maopeng1@zte.com.cn>
catalog/packages/biz/ns_descriptor.py
catalog/packages/tests/test_ns_descriptor.py
catalog/packages/tests/test_nspackage.py

index bdd56bd..13e5365 100644 (file)
@@ -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,
index 3f8d245..f26ec39 100644 (file)
@@ -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',
index 4503bac..a308a2e 100644 (file)
@@ -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)