From: biancunkang Date: Thu, 23 Aug 2018 07:44:54 +0000 (+0800) Subject: Deal with nfPackage X-Git-Tag: 1.2.0~81^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=9a49442693e47d773f4caf4cf568f1fb5a03cd79;p=vfc%2Fnfvo%2Fcatalog.git Deal with nfPackage add parse_vnfd_and_save for upload Change-Id: I7daf2fd740f58bf23f04a78d9b5f6bfcfd1b96e0 Issue-ID: VFC-1038 Signed-off-by: biancunkang --- diff --git a/catalog/packages/biz/vnf_package.py b/catalog/packages/biz/vnf_package.py index a98336d3..1fb1aee4 100644 --- a/catalog/packages/biz/vnf_package.py +++ b/catalog/packages/biz/vnf_package.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import json import logging import os import sys @@ -24,7 +25,8 @@ from catalog.pub.config.config import CATALOG_ROOT_PATH from catalog.pub.database.models import VnfPackageModel from catalog.pub.exceptions import CatalogException from catalog.pub.utils.values import ignore_case_get -from catalog.pub.utils import fileutil +from catalog.pub.utils import fileutil, toscaparser + logger = logging.getLogger(__name__) @@ -99,6 +101,30 @@ def delete_vnf_pkg(vnfPkgId): fileutil.delete_dirs(vnf_pkg_path) +def parse_vnfd_and_save(vnfPkgId, vnf_pkg_path): + vnfd_json = toscaparser.parse_vnfd(vnf_pkg_path) + vnfd = json.JSONDecoder().decode(vnfd_json) + + vnfd_id = vnfd["metadata"]["id"] + if VnfPackageModel.objects.filter(vnfdId=vnfd_id): + raise CatalogException("VNFD(%s) already exists." % vnfd_id) + + vnfd_ver = vnfd["metadata"].get("vnfd_version") + if not vnfd_ver: + vnfd_ver = vnfd["metadata"].get("vnfdVersion", "undefined") + VnfPackageModel( + vnfPackageId=vnfPkgId, + vnfdId=vnfd_id, + vnfVendor=vnfd["metadata"].get("vendor", "undefined"), + vnfdVersion=vnfd_ver, + vnfSoftwareVersion=vnfd["metadata"].get("version", "undefined"), + vnfdModel=vnfd_json, + onboardingState="ONBOARDED", + operationalState="ENABLED", + usageState="NOT_IN_USE" + ).save() + + class VnfpkgUploadThread(threading.Thread): def __init__(self, data, vnfPkgId): threading.Thread.__init__(self)