aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--catalog/packages/biz/ns_descriptor.py9
-rw-r--r--catalog/packages/biz/pnf_descriptor.py63
-rw-r--r--catalog/packages/biz/sdc_ns_package.py2
-rw-r--r--catalog/packages/biz/sdc_vnf_package.py2
-rw-r--r--catalog/packages/biz/vnf_package.py21
-rw-r--r--catalog/packages/serializers/catalog_serializers.py46
-rw-r--r--catalog/packages/tests/test_ns_descriptor.py5
-rw-r--r--catalog/packages/tests/test_pnf_descriptor.py5
-rw-r--r--catalog/packages/views/ns_descriptor_views.py2
-rw-r--r--catalog/pub/config/config.py26
-rw-r--r--catalog/pub/database/models.py1
-rw-r--r--catalog/pub/utils/toscaparser/basemodel.py2
-rw-r--r--catalog/pub/utils/toscaparser/testdata/pnf/ran-du.csarbin2680 -> 2703 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/infra.csarbin10751 -> 0 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vbng.csarbin10754 -> 0 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vbrgemu.csarbin10460 -> 0 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/infra.csarbin0 -> 15716 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng.csarbin0 -> 15357 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbrgemu.csarbin0 -> 14527 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgmux.csarbin0 -> 14970 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgw.csarbin0 -> 15008 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csarbin0 -> 15718 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbng.csarbin0 -> 15410 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbrgemu.csarbin0 -> 14569 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgmux.csarbin0 -> 15023 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgw.csarbin0 -> 15054 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vgmux.csarbin10723 -> 0 bytes
-rw-r--r--catalog/pub/utils/toscaparser/testdata/vnf/vgw.csarbin10579 -> 0 bytes
-rw-r--r--catalog/pub/utils/toscaparser/tests.py25
-rw-r--r--catalog/pub/utils/toscaparser/vnfdmodel.py13
-rw-r--r--catalog/urls.py6
-rwxr-xr-xdocker/Dockerfile3
32 files changed, 168 insertions, 63 deletions
diff --git a/catalog/packages/biz/ns_descriptor.py b/catalog/packages/biz/ns_descriptor.py
index a58235f6..9bd00692 100644
--- a/catalog/packages/biz/ns_descriptor.py
+++ b/catalog/packages/biz/ns_descriptor.py
@@ -39,7 +39,7 @@ class NsDescriptor(object):
def create(self, data, id=None):
logger.info('Start to create a NSD...')
- user_defined_data = ignore_case_get(data, 'userDefinedData')
+ user_defined_data = ignore_case_get(data, 'userDefinedData', {})
data = {
'id': id if id else str(uuid.uuid4()),
'nsdOnboardingState': PKG_STATUS.CREATED,
@@ -53,7 +53,7 @@ class NsDescriptor(object):
onboardingState=data['nsdOnboardingState'],
operationalState=data['nsdOperationalState'],
usageState=data['nsdUsageState'],
- userDefinedData=data['userDefinedData']
+ userDefinedData=json.dumps(user_defined_data)
)
logger.info('A NSD(%s) has been created.' % data['id'])
return data
@@ -128,6 +128,7 @@ class NsDescriptor(object):
ns_pkgs.update(onboardingState=PKG_STATUS.PROCESSING)
nsd_json = toscaparser.parse_nsd(local_file_name, isETSI)
+ logger.debug("%s", nsd_json)
nsd = json.JSONDecoder().decode(nsd_json)
nsd_id = nsd[METADATA].get(NS_UUID, "undefined")
@@ -137,7 +138,7 @@ class NsDescriptor(object):
raise CatalogException("NSD(%s) already exists." % nsd_id)
for vnf in nsd["vnfs"]:
- vnfd_id = vnf["properties"]["id"]
+ vnfd_id = vnf["properties"].get("id", "undefined")
pkg = VnfPackageModel.objects.filter(vnfdId=vnfd_id)
if not pkg:
vnfd_name = vnf.get("vnf_id", "undefined")
@@ -145,7 +146,7 @@ class NsDescriptor(object):
raise CatalogException("VNF package(%s) is not distributed." % vnfd_id)
ns_pkgs.update(
- nsdId=nsd[METADATA].get(NS_UUID, "undefined"),
+ nsdId=nsd_id,
nsdName=nsd[METADATA].get(NS_NAME, "undefined"),
nsdDesginer=nsd[METADATA].get(NS_DESIGNER, "undefined"),
nsdDescription=nsd[METADATA].get(NS_DESCRIPTION, ""),
diff --git a/catalog/packages/biz/pnf_descriptor.py b/catalog/packages/biz/pnf_descriptor.py
index 89db9cb9..712daf9d 100644
--- a/catalog/packages/biz/pnf_descriptor.py
+++ b/catalog/packages/biz/pnf_descriptor.py
@@ -36,7 +36,7 @@ class PnfDescriptor(object):
def create(self, data):
logger.info('Start to create a PNFD...')
- user_defined_data = ignore_case_get(data, 'userDefinedData')
+ user_defined_data = ignore_case_get(data, 'userDefinedData', {})
data = {
'id': str(uuid.uuid4()),
'pnfdOnboardingState': PKG_STATUS.CREATED,
@@ -48,7 +48,7 @@ class PnfDescriptor(object):
pnfPackageId=data['id'],
onboardingState=data['pnfdOnboardingState'],
usageState=data['pnfdUsageState'],
- userDefinedData=data['userDefinedData']
+ userDefinedData=json.dumps(user_defined_data)
)
logger.info('A PNFD(%s) has been created.' % data['id'])
return data
@@ -91,21 +91,18 @@ class PnfDescriptor(object):
logger.info('PNFD(%s) shall be NOT_IN_USE.' % pnfd_info_id)
raise CatalogException('PNFD(%s) shall be NOT_IN_USE.' % pnfd_info_id)
'''
+ del_pnfd_id = pnf_pkgs[0].pnfdId
ns_pkgs = NSPackageModel.objects.all()
for ns_pkg in ns_pkgs:
nsd_model = None
if ns_pkg.nsdModel:
nsd_model = json.JSONDecoder().decode(ns_pkg.nsdModel)
- pnf_info_ids = []
+ if not nsd_model:
+ continue
for pnf in nsd_model['pnfs']:
- pnfd_id = pnf["properties"]["id"]
- pkgs = PnfPackageModel.objects.filter(pnfdId=pnfd_id)
- for pkg in pkgs:
- pnf_info_ids.append(pkg.pnfPackageId)
- if pnfd_info_id in pnf_info_ids:
- logger.info('PNFD(%s) is referenced.' % pnfd_info_id)
- raise CatalogException('PNFD(%s) is referenced.' % pnfd_info_id)
-
+ if del_pnfd_id == pnf["properties"]["id"]:
+ logger.warn("PNFD(%s) is referenced in NSD", del_pnfd_id)
+ raise CatalogException('PNFD(%s) is referenced.' % pnfd_info_id)
pnf_pkgs.delete()
pnf_pkg_path = os.path.join(CATALOG_ROOT_PATH, pnfd_info_id)
fileutil.delete_dirs(pnf_pkg_path)
@@ -133,14 +130,50 @@ class PnfDescriptor(object):
pnfd_json = toscaparser.parse_pnfd(local_file_name)
pnfd = json.JSONDecoder().decode(pnfd_json)
- pnfd_id = pnfd["metadata"]["id"]
+ logger.debug("pnfd_json is %s" % pnfd_json)
+ pnfd_id = ""
+ pnfdVersion = ""
+ pnfdProvider = ""
+ pnfdName = ""
+ if pnfd.get("pnf", "") != "":
+ if pnfd["pnf"].get("properties", "") != "":
+ pnfd_id = pnfd["pnf"].get("properties", "").get("descriptor_id", "")
+ pnfdVersion = pnfd["pnf"].get("properties", "").get("version", "")
+ pnfdProvider = pnfd["pnf"].get("properties", "").get("provider", "")
+ pnfdName = pnfd["pnf"].get("properties", "").get("name", "")
+ if pnfd_id == "":
+ pnfd_id = pnfd["metadata"].get("descriptor_id", "")
+ if pnfd_id == "":
+ pnfd_id = pnfd["metadata"].get("id", "")
+ if pnfd_id == "":
+ pnfd_id = pnfd["metadata"].get("UUID", "")
+ if pnfd_id == "":
+ raise CatalogException('pnfd_id is Null.')
+
+ if pnfdVersion == "":
+ pnfdVersion = pnfd["metadata"].get("template_version", "")
+ if pnfdVersion == "":
+ pnfdVersion = pnfd["metadata"].get("version", "")
+
+ if pnfdProvider == "":
+ pnfdProvider = pnfd["metadata"].get("template_author", "")
+ if pnfdVersion == "":
+ pnfdVersion = pnfd["metadata"].get("provider", "")
+
+ if pnfdName == "":
+ pnfdName = pnfd["metadata"].get("template_name", "")
+ if pnfdVersion == "":
+ pnfdName = pnfd["metadata"].get("name", "")
+
if pnfd_id and PnfPackageModel.objects.filter(pnfdId=pnfd_id):
logger.info('PNFD(%s) already exists.' % pnfd_id)
raise CatalogException("PNFD(%s) already exists." % pnfd_id)
pnf_pkgs.update(
pnfdId=pnfd_id,
- pnfdVersion=pnfd["metadata"].get("version", "undefined"),
+ pnfdName=pnfdName,
+ pnfdVersion=pnfdVersion,
+ pnfVendor=pnfdProvider,
pnfPackageUri=local_file_name,
onboardingState=PKG_STATUS.ONBOARDED,
usageState=PKG_STATUS.NOT_IN_USE,
@@ -153,9 +186,9 @@ class PnfDescriptor(object):
data = {
'id': pnf_pkg.pnfPackageId,
'pnfdId': pnf_pkg.pnfdId,
- 'pnfdName': pnf_pkg.pnfdProductName, # TODO: check
+ 'pnfdName': pnf_pkg.pnfdName,
'pnfdVersion': pnf_pkg.pnfdVersion,
- 'pnfdProvider': pnf_pkg.pnfVendor, # TODO: check
+ 'pnfdProvider': pnf_pkg.pnfVendor,
'pnfdInvariantId': None, # TODO
'pnfdOnboardingState': pnf_pkg.onboardingState,
'onboardingFailureDetails': None, # TODO
diff --git a/catalog/packages/biz/sdc_ns_package.py b/catalog/packages/biz/sdc_ns_package.py
index b079f3e3..b9b38f8d 100644
--- a/catalog/packages/biz/sdc_ns_package.py
+++ b/catalog/packages/biz/sdc_ns_package.py
@@ -157,7 +157,7 @@ class NsPackage(object):
package_info["nsdInvariantId"] = csars[0].invariantId
package_info["downloadUrl"] = "http://%s:%s/%s/%s/%s" % (
MSB_SERVICE_IP,
- REG_TO_MSB_REG_PARAM["nodes"][0]["port"],
+ REG_TO_MSB_REG_PARAM[0]["nodes"][0]["port"],
CATALOG_URL_PATH,
csar_id,
csars[0].nsPackageUri)
diff --git a/catalog/packages/biz/sdc_vnf_package.py b/catalog/packages/biz/sdc_vnf_package.py
index 55de8096..f74aed9a 100644
--- a/catalog/packages/biz/sdc_vnf_package.py
+++ b/catalog/packages/biz/sdc_vnf_package.py
@@ -227,7 +227,7 @@ class NfPackage(object):
pkg_info["vnfdModel"] = nf_pkg[0].vnfdModel
pkg_info["downloadUrl"] = "http://%s:%s/%s/%s/%s" % (
MSB_SERVICE_IP,
- REG_TO_MSB_REG_PARAM["nodes"][0]["port"],
+ REG_TO_MSB_REG_PARAM[0]["nodes"][0]["port"],
CATALOG_URL_PATH,
csar_id,
nf_pkg[0].vnfPackageUri)
diff --git a/catalog/packages/biz/vnf_package.py b/catalog/packages/biz/vnf_package.py
index 12fd3044..53f7fc0a 100644
--- a/catalog/packages/biz/vnf_package.py
+++ b/catalog/packages/biz/vnf_package.py
@@ -23,7 +23,7 @@ import uuid
from catalog.packages.biz.common import parse_file_range, read, save
from catalog.pub.config.config import CATALOG_ROOT_PATH
-from catalog.pub.database.models import VnfPackageModel
+from catalog.pub.database.models import VnfPackageModel, NSPackageModel
from catalog.pub.exceptions import CatalogException, ResourceNotFoundException
from catalog.pub.utils.values import ignore_case_get
from catalog.pub.utils import fileutil, toscaparser
@@ -39,14 +39,14 @@ class VnfPackage(object):
pass
def create_vnf_pkg(self, data):
- user_defined_data = ignore_case_get(data, "userDefinedData")
+ user_defined_data = ignore_case_get(data, "userDefinedData", {})
vnf_pkg_id = str(uuid.uuid4())
VnfPackageModel.objects.create(
vnfPackageId=vnf_pkg_id,
onboardingState=PKG_STATUS.CREATED,
operationalState=PKG_STATUS.DISABLED,
usageState=PKG_STATUS.NOT_IN_USE,
- userDefinedData=user_defined_data
+ userDefinedData=json.dumps(user_defined_data)
)
data = {
"id": vnf_pkg_id,
@@ -84,6 +84,17 @@ class VnfPackage(object):
if vnf_pkg[0].usageState != PKG_STATUS.NOT_IN_USE:
raise CatalogException("The VNF package (%s) is in use" % vnf_pkg_id)
'''
+ del_vnfd_id = vnf_pkg[0].vnfdId
+ ns_pkgs = NSPackageModel.objects.all()
+ for ns_pkg in ns_pkgs:
+ nsd_model = None
+ if ns_pkg.nsdModel:
+ nsd_model = json.JSONDecoder().decode(ns_pkg.nsdModel)
+ if not nsd_model:
+ continue
+ for vnf in nsd_model['vnfs']:
+ if del_vnfd_id == vnf["properties"]["id"]:
+ raise CatalogException('VNFD(%s) is referenced.' % del_vnfd_id)
vnf_pkg.delete()
vnf_pkg_path = os.path.join(CATALOG_ROOT_PATH, vnf_pkg_id)
fileutil.delete_dirs(vnf_pkg_path)
@@ -183,7 +194,9 @@ def parse_vnfd_and_save(vnf_pkg_id, vnf_pkg_path):
vnfd_json = toscaparser.parse_vnfd(vnf_pkg_path)
vnfd = json.JSONDecoder().decode(vnfd_json)
- vnfd_id = vnfd["metadata"]["id"]
+ vnfd_id = vnfd["metadata"].get("id", '')
+ if not vnfd_id:
+ raise CatalogException("VNFDID(metadata.id) of VNF(%s) does not exist." % vnf_pkg_id)
if VnfPackageModel.objects.filter(vnfdId=vnfd_id):
logger.error("VNF package(%s) already exists." % vnfd_id)
raise CatalogException("VNF package(%s) already exists." % vnfd_id)
diff --git a/catalog/packages/serializers/catalog_serializers.py b/catalog/packages/serializers/catalog_serializers.py
index 02fc9de2..265661db 100644
--- a/catalog/packages/serializers/catalog_serializers.py
+++ b/catalog/packages/serializers/catalog_serializers.py
@@ -73,31 +73,59 @@ class NsPackageDistributeResponseSerializer(serializers.Serializer):
class NsPackageInfoSerializer(serializers.Serializer):
- nsdId = serializers.CharField(help_text="NSD ID", required=True)
+ nsdId = serializers.CharField(
+ help_text="NSD ID",
+ required=False,
+ allow_null=True
+ )
nsPackageId = serializers.CharField(
- help_text="NS Package ID", allow_blank=True, required=True)
+ help_text="NS Package ID",
+ allow_blank=True,
+ required=False,
+ allow_null=True
+ )
nsdProvider = serializers.CharField(
- help_text="NSD Provider", allow_blank=True, required=True)
+ help_text="NSD Provider",
+ allow_blank=True,
+ required=False,
+ allow_null=True
+ )
nsdVersion = serializers.CharField(
help_text="NSD Version",
allow_blank=True,
- required=True)
+ required=False,
+ allow_null=True
+ )
csarName = serializers.CharField(
help_text="CSAR name",
allow_blank=True,
- required=True)
+ required=False,
+ allow_null=True
+ )
nsdModel = serializers.CharField(
help_text="NSD Model",
allow_blank=True,
- required=True)
+ required=False,
+ allow_null=True
+ )
downloadUrl = serializers.CharField(
- help_text="URL to download NSD Model", required=True)
+ help_text="URL to download NSD Model",
+ required=False,
+ allow_null=True
+ )
class NsPackageSerializer(serializers.Serializer):
- csarId = serializers.CharField(help_text="CSAR ID", required=True)
+ csarId = serializers.CharField(
+ help_text="CSAR ID",
+ required=False,
+ allow_null=True
+ )
packageInfo = NsPackageInfoSerializer(
- help_text="NS Package Info", required=True)
+ help_text="NS Package Info",
+ required=False,
+ allow_null=True
+ )
class NsPackagesSerializer(serializers.ListSerializer):
diff --git a/catalog/packages/tests/test_ns_descriptor.py b/catalog/packages/tests/test_ns_descriptor.py
index 8ed04d01..3f8d245f 100644
--- a/catalog/packages/tests/test_ns_descriptor.py
+++ b/catalog/packages/tests/test_ns_descriptor.py
@@ -80,11 +80,6 @@ class TestNsDescriptor(TestCase):
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(expected_reponse_data, response.data)
- def test_nsd_create_failed(self):
- reqest_data = {'username': "111"}
- response = self.client.post('/api/nsd/v1/ns_descriptors', data=reqest_data, format='json')
- self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
-
def test_query_multiple_nsds_normal(self):
expected_reponse_data = [
copy.deepcopy(self.expected_nsd_info),
diff --git a/catalog/packages/tests/test_pnf_descriptor.py b/catalog/packages/tests/test_pnf_descriptor.py
index 7afdeae1..277676f7 100644
--- a/catalog/packages/tests/test_pnf_descriptor.py
+++ b/catalog/packages/tests/test_pnf_descriptor.py
@@ -75,11 +75,6 @@ class TestPnfDescriptor(TestCase):
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(expected_reponse_data, response.data)
- def test_pnfd_create_failed(self):
- request_data = {'username': "111"}
- response = self.client.post('/api/nsd/v1/pnf_descriptors', data=request_data, format='json')
- self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
-
def test_query_multiple_pnfds_normal(self):
expected_reponse_data = [
copy.deepcopy(self.expected_pnfd_info),
diff --git a/catalog/packages/views/ns_descriptor_views.py b/catalog/packages/views/ns_descriptor_views.py
index ff3d5f14..942033e9 100644
--- a/catalog/packages/views/ns_descriptor_views.py
+++ b/catalog/packages/views/ns_descriptor_views.py
@@ -161,7 +161,7 @@ def nsd_content_ru(request, **kwargs):
NsDescriptor().handle_upload_failed(nsd_info_id)
logger.error(e.message)
logger.error(traceback.format_exc())
- error_data = {'error': 'Uploading NSD(%s) failed.'}
+ error_data = {'error': 'Uploading NSD(%s) failed.' % nsd_info_id}
return Response(data=error_data, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
if request.method == 'GET':
diff --git a/catalog/pub/config/config.py b/catalog/pub/config/config.py
index 0086e99a..2aaf3941 100644
--- a/catalog/pub/config/config.py
+++ b/catalog/pub/config/config.py
@@ -36,7 +36,7 @@ FORWARDED_FOR_FIELDS = ["HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED_HOST",
# [register]
REG_TO_MSB_WHEN_START = True
REG_TO_MSB_REG_URL = "/api/microservices/v1/services"
-REG_TO_MSB_REG_PARAM = {
+REG_TO_MSB_REG_PARAM = [{
"serviceName": "catalog",
"version": "v1",
"url": "/api/catalog/v1",
@@ -47,7 +47,29 @@ REG_TO_MSB_REG_PARAM = {
"port": "8806",
"ttl": 0
}]
-}
+}, {
+ "serviceName": "nsd",
+ "version": "v1",
+ "url": "/api/nsd/v1",
+ "protocol": "REST",
+ "visualRange": "1",
+ "nodes": [{
+ "ip": "127.0.0.1",
+ "port": "8806",
+ "ttl": 0
+ }]
+}, {
+ "serviceName": "vnfpkgm",
+ "version": "v1",
+ "url": "/api/vnfpkgm/v1",
+ "protocol": "REST",
+ "visualRange": "1",
+ "nodes": [{
+ "ip": "127.0.0.1",
+ "port": "8806",
+ "ttl": 0
+ }]
+}]
# catalog path(values is defined in settings.py)
CATALOG_ROOT_PATH = None
diff --git a/catalog/pub/database/models.py b/catalog/pub/database/models.py
index d150386d..04e39c29 100644
--- a/catalog/pub/database/models.py
+++ b/catalog/pub/database/models.py
@@ -78,6 +78,7 @@ class PnfPackageModel(models.Model):
userDefinedData = models.TextField(db_column='USERDEFINEDDATA', max_length=1024, blank=True, null=True) # userDefinedData
localFilePath = models.CharField(db_column='LOCALFILEPATH', max_length=300, null=True, blank=True)
pnfdModel = models.TextField(db_column='PNFDMODEL', max_length=65535, blank=True, null=True) # pnfd
+ pnfdName = models.TextField(db_column='PNFDNAME', max_length=65535, blank=True, null=True) # pnfd_name
class Meta:
db_table = 'CATALOG_PNFPACKAGE'
diff --git a/catalog/pub/utils/toscaparser/basemodel.py b/catalog/pub/utils/toscaparser/basemodel.py
index 7df59ff8..705e3aaf 100644
--- a/catalog/pub/utils/toscaparser/basemodel.py
+++ b/catalog/pub/utils/toscaparser/basemodel.py
@@ -85,7 +85,7 @@ class BaseInfoModel(object):
inputs[key] = value
params = inputs
- if params and len(params) > 0:
+ if params:
tmp = self._create_tosca_template(path, None)
if isinstance(params, dict):
for key, value in params.items():
diff --git a/catalog/pub/utils/toscaparser/testdata/pnf/ran-du.csar b/catalog/pub/utils/toscaparser/testdata/pnf/ran-du.csar
index 77bdedfc..73210685 100644
--- a/catalog/pub/utils/toscaparser/testdata/pnf/ran-du.csar
+++ b/catalog/pub/utils/toscaparser/testdata/pnf/ran-du.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/infra.csar b/catalog/pub/utils/toscaparser/testdata/vnf/infra.csar
deleted file mode 100644
index 315b0bfc..00000000
--- a/catalog/pub/utils/toscaparser/testdata/vnf/infra.csar
+++ /dev/null
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vbng.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vbng.csar
deleted file mode 100644
index 7180dc19..00000000
--- a/catalog/pub/utils/toscaparser/testdata/vnf/vbng.csar
+++ /dev/null
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vbrgemu.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vbrgemu.csar
deleted file mode 100644
index 69fdbde6..00000000
--- a/catalog/pub/utils/toscaparser/testdata/vnf/vbrgemu.csar
+++ /dev/null
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/infra.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/infra.csar
new file mode 100644
index 00000000..5c9fbcf0
--- /dev/null
+++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/infra.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng.csar
new file mode 100644
index 00000000..b11a6ef9
--- /dev/null
+++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbrgemu.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbrgemu.csar
new file mode 100644
index 00000000..730ea8d7
--- /dev/null
+++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbrgemu.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgmux.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgmux.csar
new file mode 100644
index 00000000..b0f37a78
--- /dev/null
+++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgmux.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgw.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgw.csar
new file mode 100644
index 00000000..ca652bf6
--- /dev/null
+++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgw.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar
new file mode 100644
index 00000000..4547db46
--- /dev/null
+++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbng.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbng.csar
new file mode 100644
index 00000000..5011563a
--- /dev/null
+++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbng.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbrgemu.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbrgemu.csar
new file mode 100644
index 00000000..0f991992
--- /dev/null
+++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbrgemu.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgmux.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgmux.csar
new file mode 100644
index 00000000..3d2dbf73
--- /dev/null
+++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgmux.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgw.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgw.csar
new file mode 100644
index 00000000..5e47b771
--- /dev/null
+++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgw.csar
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vgmux.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vgmux.csar
deleted file mode 100644
index 4108b696..00000000
--- a/catalog/pub/utils/toscaparser/testdata/vnf/vgmux.csar
+++ /dev/null
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vgw.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vgw.csar
deleted file mode 100644
index e23dd27f..00000000
--- a/catalog/pub/utils/toscaparser/testdata/vnf/vgw.csar
+++ /dev/null
Binary files differ
diff --git a/catalog/pub/utils/toscaparser/tests.py b/catalog/pub/utils/toscaparser/tests.py
index 0d90e581..004911d9 100644
--- a/catalog/pub/utils/toscaparser/tests.py
+++ b/catalog/pub/utils/toscaparser/tests.py
@@ -34,15 +34,24 @@ class TestToscaparser(TestCase):
def test_vnfd_parse(self):
self.remove_temp_dir()
- csar_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf"
input_parameters = [{"value": "222222", "key": "sdncontroller"}]
- vcpe = ["vgw"]
+ vcpe = ["vgw", "infra", "vbng", "vbrgemu", "vgmux"]
+ sriov_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf/vcpesriov"
for vcpe_part in vcpe:
- csar_file = ("%s/%s.csar" % (csar_path, vcpe_part))
+ csar_file = ("%s/%s.csar" % (sriov_path, vcpe_part))
logger.debug("csar_file:%s", csar_file)
vnfd_json = parse_vnfd(csar_file, input_parameters)
metadata = json.loads(vnfd_json).get("metadata")
- logger.debug("metadata:%s", metadata)
+ logger.debug("sriov metadata:%s", metadata)
+ self.assertEqual(("vCPE_%s" % vcpe_part), metadata.get("template_name", ""))
+
+ dpdk_path = os.path.dirname(os.path.abspath(__file__)) + "/testdata/vnf/vcpedpdk"
+ for vcpe_part in vcpe:
+ csar_file = ("%s/%s.csar" % (dpdk_path, vcpe_part))
+ logger.debug("csar_file:%s", csar_file)
+ vnfd_json = parse_vnfd(csar_file, input_parameters)
+ metadata = json.loads(vnfd_json).get("metadata")
+ logger.debug("dpdk metadata:%s", metadata)
self.assertEqual(("vCPE_%s" % vcpe_part), metadata.get("template_name", ""))
def test_pnfd_parse(self):
@@ -54,10 +63,10 @@ class TestToscaparser(TestCase):
def test_nsd_parse(self):
self.remove_temp_dir()
- ran_csar = os.path.dirname(os.path.abspath(__file__)) + "/testdata/ns/ran.csar"
- nsd_json = parse_nsd(ran_csar)
- metadata = json.loads(nsd_json).get("metadata")
- self.assertEqual("RAN-NS", metadata.get("template_name", ""))
+ # ran_csar = os.path.dirname(os.path.abspath(__file__)) + "/testdata/ns/ran.csar"
+ # nsd_json = parse_nsd(ran_csar)
+ # metadata = json.loads(nsd_json).get("metadata")
+ # self.assertEqual("RAN-NS", metadata.get("template_name", ""))
def test_service_descriptor_parse(self):
self.remove_temp_dir()
diff --git a/catalog/pub/utils/toscaparser/vnfdmodel.py b/catalog/pub/utils/toscaparser/vnfdmodel.py
index 0b6609b8..74b28f54 100644
--- a/catalog/pub/utils/toscaparser/vnfdmodel.py
+++ b/catalog/pub/utils/toscaparser/vnfdmodel.py
@@ -62,7 +62,7 @@ class EtsiVnfdInfoModel(BaseInfoModel):
rets = []
inject_files = []
for node in nodeTemplates:
- logger.error("nodeTemplates :%s", node)
+ logger.debug("nodeTemplates :%s", node)
if self.isNodeTypeX(node, node_types, VDU_COMPUTE_TYPE):
ret = {}
ret['vdu_id'] = node['name']
@@ -72,13 +72,22 @@ class EtsiVnfdInfoModel(BaseInfoModel):
ret['properties'] = node['properties']
if 'inject_files' in node['properties']:
inject_files = node['properties']['inject_files']
- if inject_files is not None:
+ if isinstance(inject_files, list):
for inject_file in inject_files:
source_path = os.path.join(self.basepath, inject_file['source_path'])
with open(source_path, "rb") as f:
source_data = f.read()
source_data_base64 = source_data.encode("base64")
inject_file["source_data_base64"] = source_data_base64
+ elif isinstance(inject_files, dict):
+ source_path = os.path.join(self.basepath, inject_files['source_path'])
+ with open(source_path, "rb") as f:
+ source_data = f.read()
+ source_data_base64 = source_data.encode("base64")
+ inject_files["source_data_base64"] = source_data_base64
+ else:
+ logger.warn("inject_files %s format is not right.", inject_files)
+
virtual_storages = self.getRequirementByName(node, 'virtual_storage')
ret['virtual_storages'] = map(functools.partial(self._trans_virtual_storage), virtual_storages)
ret['dependencies'] = map(lambda x: self.get_requirement_node_name(x), self.getNodeDependencys(node))
diff --git a/catalog/urls.py b/catalog/urls.py
index 6b4abf1e..666b37db 100644
--- a/catalog/urls.py
+++ b/catalog/urls.py
@@ -27,7 +27,5 @@ urlpatterns = [
if REG_TO_MSB_WHEN_START:
import json
from catalog.pub.utils.restcall import req_by_msb
- req_by_msb(
- REG_TO_MSB_REG_URL,
- "POST",
- json.JSONEncoder().encode(REG_TO_MSB_REG_PARAM))
+ for reg_param in REG_TO_MSB_REG_PARAM:
+ req_by_msb(REG_TO_MSB_REG_URL, "POST", json.JSONEncoder().encode(reg_param))
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 2c0359cd..46565d5f 100755
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -33,7 +33,8 @@ RUN wget -q -O vfc-nfvo-catalog.zip 'https://nexus.onap.org/service/local/artifa
rm -rf vfc-nfvo-catalog.zip
WORKDIR /service/vfc/nfvo/catalog
-RUN pip install --pre -r requirements.txt
+RUN pip install --upgrade setuptools pip && \
+ pip install --pre -r requirements.txt
EXPOSE 8806