From 499d2b23b24b4f3de7a3c326c7fa0c3896ea854e Mon Sep 17 00:00:00 2001 From: maopengzhang Date: Sat, 27 Oct 2018 16:05:58 +0800 Subject: [PATCH] support vnf properties and metadata support vnf properties and metadata Change-Id: I1d450326cde38a5d8fde84819aa7b2d95e52ed4e Issue-ID: VFC-1158 Signed-off-by: maopengzhang --- catalog/packages/biz/vnf_package.py | 45 +++++++------ catalog/packages/tests/const.py | 10 +++ .../toscaparser/testdata/vnf/vcpesriov/infra.csar | Bin 15718 -> 15432 bytes catalog/pub/utils/toscaparser/tests.py | 2 + catalog/pub/utils/toscaparser/vnfdmodel.py | 72 +++++++++++++++++---- 5 files changed, 93 insertions(+), 36 deletions(-) diff --git a/catalog/packages/biz/vnf_package.py b/catalog/packages/biz/vnf_package.py index 53f7fc0a..1d014bc3 100644 --- a/catalog/packages/biz/vnf_package.py +++ b/catalog/packages/biz/vnf_package.py @@ -194,29 +194,28 @@ 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"].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) - - vnfd_ver = vnfd["metadata"].get("vnfd_version") - if not vnfd_ver: - vnfd_ver = vnfd["metadata"].get("vnfdVersion", "undefined") - - vnf_pkg.update( - vnfPackageId=vnf_pkg_id, - vnfdId=vnfd_id, - vnfVendor=vnfd["metadata"].get("vendor", "undefined"), - vnfdVersion=vnfd_ver, - vnfSoftwareVersion=vnfd["metadata"].get("version", "undefined"), - vnfdModel=vnfd_json, - onboardingState=PKG_STATUS.ONBOARDED, - operationalState=PKG_STATUS.ENABLED, - usageState=PKG_STATUS.NOT_IN_USE, - localFilePath=vnf_pkg_path - ) + if vnfd.get("vnf", "") != "": + vnfd_id = vnfd["vnf"]["properties"].get("descriptor_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) + vnf_provider = vnfd["vnf"].get("provider", "") + vnfd_ver = vnfd["vnf"]["properties"].get("descriptor_verison", "") + vnf_software_version = vnfd["vnf"]["properties"].get("software_version", "") + vnf_pkg.update( + vnfPackageId=vnf_pkg_id, + vnfdId=vnfd_id, + vnfVendor=vnf_provider, + vnfdVersion=vnfd_ver, + vnfSoftwareVersion=vnf_software_version, + vnfdModel=vnfd_json, + onboardingState=PKG_STATUS.ONBOARDED, + operationalState=PKG_STATUS.ENABLED, + usageState=PKG_STATUS.NOT_IN_USE, + localFilePath=vnf_pkg_path + ) + else: + raise CatalogException("VNF propeties and metadata in VNF Package(id=%s) are empty." % vnf_pkg_id) logger.info('VNF package(%s) has been processed.' % vnf_pkg_id) diff --git a/catalog/packages/tests/const.py b/catalog/packages/tests/const.py index 97856f38..78f61b77 100644 --- a/catalog/packages/tests/const.py +++ b/catalog/packages/tests/const.py @@ -214,6 +214,16 @@ vnfd_data = { "vnfProductInfoDescription": "hss", "vnfdVersion": "1.0.0", "vnfProductInfoName": "hss" + }, + "vnf": { + "properties": { + "descriptor_id": "zte-hss-1.0", + "descriptor_verison": "1.0.0", + "software_version": "1.0.0", + "provider": "zte" + }, + "metadata": { + } } } diff --git a/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar b/catalog/pub/utils/toscaparser/testdata/vnf/vcpesriov/infra.csar index 4547db4678a7afcacdd2e52bee728d502c11e8d8..c91c034e45a77e710859a64190b5bb2c9efdb7b7 100644 GIT binary patch delta 7334 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