aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYan Yang <yangyanyj@chinamobile.com>2018-10-30 19:05:44 +0000
committerGerrit Code Review <gerrit@onap.org>2018-10-30 19:05:44 +0000
commit07ad24d6416b44aa7083d19005e57d005f8b4b90 (patch)
treed6fe1da40149a05cf2dd26586a26fdd1f8514e79
parent6b8ed7503149cda1956e373d908751e80bddb44e (diff)
parent578fdc4b2b0d18c5a41131ef57c636351f88a151 (diff)
Merge "support pnf check in NSD"
-rw-r--r--catalog/packages/biz/ns_descriptor.py10
-rw-r--r--catalog/packages/tests/test_ns_descriptor.py8
-rw-r--r--catalog/packages/tests/test_nspackage.py3
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)