diff options
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 Binary files differindex 77bdedfc..73210685 100644 --- a/catalog/pub/utils/toscaparser/testdata/pnf/ran-du.csar +++ b/catalog/pub/utils/toscaparser/testdata/pnf/ran-du.csar diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/infra.csar b/catalog/pub/utils/toscaparser/testdata/vnf/infra.csar Binary files differdeleted file mode 100644 index 315b0bfc..00000000 --- a/catalog/pub/utils/toscaparser/testdata/vnf/infra.csar +++ /dev/null diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vbng.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vbng.csar Binary files differdeleted file mode 100644 index 7180dc19..00000000 --- a/catalog/pub/utils/toscaparser/testdata/vnf/vbng.csar +++ /dev/null diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vbrgemu.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vbrgemu.csar Binary files differdeleted file mode 100644 index 69fdbde6..00000000 --- a/catalog/pub/utils/toscaparser/testdata/vnf/vbrgemu.csar +++ /dev/null diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/infra.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/infra.csar Binary files differnew file mode 100644 index 00000000..5c9fbcf0 --- /dev/null +++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/infra.csar diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng.csar Binary files differnew file mode 100644 index 00000000..b11a6ef9 --- /dev/null +++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbng.csar diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbrgemu.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbrgemu.csar Binary files differnew file mode 100644 index 00000000..730ea8d7 --- /dev/null +++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vbrgemu.csar diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgmux.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgmux.csar Binary files differnew file mode 100644 index 00000000..b0f37a78 --- /dev/null +++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgmux.csar diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgw.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgw.csar Binary files differnew file mode 100644 index 00000000..ca652bf6 --- /dev/null +++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpedpdk/vgw.csar diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar Binary files differnew file mode 100644 index 00000000..4547db46 --- /dev/null +++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbng.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbng.csar Binary files differnew file mode 100644 index 00000000..5011563a --- /dev/null +++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbng.csar diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbrgemu.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbrgemu.csar Binary files differnew file mode 100644 index 00000000..0f991992 --- /dev/null +++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vbrgemu.csar diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgmux.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgmux.csar Binary files differnew file mode 100644 index 00000000..3d2dbf73 --- /dev/null +++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgmux.csar diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgw.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgw.csar Binary files differnew file mode 100644 index 00000000..5e47b771 --- /dev/null +++ b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/vgw.csar diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vgmux.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vgmux.csar Binary files differdeleted file mode 100644 index 4108b696..00000000 --- a/catalog/pub/utils/toscaparser/testdata/vnf/vgmux.csar +++ /dev/null diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vgw.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vgw.csar Binary files differdeleted file mode 100644 index e23dd27f..00000000 --- a/catalog/pub/utils/toscaparser/testdata/vnf/vgw.csar +++ /dev/null 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 |