From: laili Date: Thu, 23 Aug 2018 12:44:01 +0000 (+0800) Subject: Ns descriptor related stuffs. X-Git-Tag: 1.2.0~74 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F01%2F62101%2F4;p=vfc%2Fnfvo%2Fcatalog.git Ns descriptor related stuffs. Implement nsd content process. Change-Id: I6a5909690f701259edfbd8b829dfc16db1122aaf Issue-ID: VFC-1037 Signed-off-by: laili --- diff --git a/catalog/packages/biz/ns_descriptor.py b/catalog/packages/biz/ns_descriptor.py index 97244ad6..6eaa118e 100644 --- a/catalog/packages/biz/ns_descriptor.py +++ b/catalog/packages/biz/ns_descriptor.py @@ -22,6 +22,7 @@ from catalog.pub.utils import fileutil from catalog.pub.utils.values import ignore_case_get from catalog.pub.database.models import NSPackageModel, VnfPackageModel from catalog.pub.exceptions import CatalogException +from catalog.pub.utils import toscaparser logger = logging.getLogger(__name__) @@ -155,6 +156,36 @@ def upload(remote_file, nsd_info_id): local_file.write(data) +def process(nsd_info_id, local_file_name): + nsd_json = toscaparser.parse_nsd(local_file_name) + nsd = json.JSONDecoder().decode(nsd_json) + + nsd_id = nsd["metadata"]["id"] + if nsd_id and NSPackageModel.objects.filter(nsdId=nsd_id): # nsd_id may not exist + raise CatalogException("NS Descriptor (%s) already exists." % nsd_id) + + for vnf in nsd["vnfs"]: + vnfd_id = vnf["properties"]["id"] + pkg = VnfPackageModel.objects.filter(vnfdId=vnfd_id) + if not pkg: + vnfd_name = vnf.get("vnf_id", "undefined") + logger.error("[%s] is not distributed.", vnfd_name) + raise CatalogException("VNF package(%s) is not distributed." % vnfd_id) + + NSPackageModel( + nsPackageId=nsd_info_id, + nsdId=nsd_id, + nsdName=nsd["metadata"].get("name", nsd_id), + nsdDesginer=nsd["metadata"].get("vendor", "undefined"), + nsdDescription=nsd["metadata"].get("description", ""), + nsdVersion=nsd["metadata"].get("version", "undefined"), + nsPackageUri=local_file_name, # TODO + sdcCsarId=nsd_info_id, + localFilePath=local_file_name, + nsdModel=nsd_json + ).save() + + def download(nsd_info_id): ns_pkgs = NSPackageModel.objects.filter(nsPackageId=nsd_info_id) if not ns_pkgs.exists():