X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog%2Fpackages%2Fbiz%2Fsdc_ns_package.py;h=72d41b195ef82db50ff6d2c4741999177cb9b14b;hb=b16b4579ea80bf82fa497e4934b2bb8728845b58;hp=4f9d4600ea5c09d2d30a4d52c3de88412edef686;hpb=5fd2ae6a4517980ce0f89247bb354220748ae67b;p=modeling%2Fetsicatalog.git diff --git a/catalog/packages/biz/sdc_ns_package.py b/catalog/packages/biz/sdc_ns_package.py index 4f9d460..72d41b1 100644 --- a/catalog/packages/biz/sdc_ns_package.py +++ b/catalog/packages/biz/sdc_ns_package.py @@ -17,14 +17,14 @@ import os import sys import traceback +from catalog.packages.biz.ns_descriptor import NsDescriptor from catalog.pub.config.config import CATALOG_ROOT_PATH, CATALOG_URL_PATH from catalog.pub.config.config import REG_TO_MSB_REG_PARAM -from catalog.pub.database.models import NSPackageModel +from catalog.pub.database.models import NSPackageModel, VnfPackageModel from catalog.pub.exceptions import CatalogException from catalog.pub.msapi import sdc -from catalog.pub.utils import toscaparser -from catalog.packages.biz.ns_descriptor import NsDescriptor from catalog.pub.utils import fileutil +from catalog.pub.utils import toscaparser logger = logging.getLogger(__name__) @@ -38,6 +38,11 @@ def fmt_ns_pkg_rsp(status, desc, error_code="500"): def ns_on_distribute(csar_id): + """ + Get NS pckage from SDC + :param csar_id: + :return: + """ ret = None try: ret = NsPackage().on_distribute(csar_id) @@ -54,6 +59,11 @@ def ns_on_distribute(csar_id): def ns_delete_csar(csar_id): + """ + Delete NS package + :param csar_id: + :return: + """ ret = None try: ret = NsPackage().delete_csar(csar_id) @@ -66,6 +76,10 @@ def ns_delete_csar(csar_id): def ns_get_csars(): + """ + Get NS packages + :return: + """ ret = None try: ret = NsPackage().get_csars() @@ -78,6 +92,11 @@ def ns_get_csars(): def ns_get_csar(csar_id): + """ + Get NS package by id + :param csar_id: + :return: + """ ret = None try: ret = NsPackage().get_csar(csar_id) @@ -91,6 +110,12 @@ def ns_get_csar(csar_id): def parse_nsd(csar_id, inputs): + """ + Parse NSD + :param csar_id: + :param inputs: + :return: + """ ret = None try: ns_pkg = NSPackageModel.objects.filter(nsPackageId=csar_id) @@ -116,13 +141,32 @@ class NsPackage(object): pass def on_distribute(self, csar_id): + """ + Fetch NS package csar from SDC + :param csar_id: + :return: + """ if NSPackageModel.objects.filter(nsPackageId=csar_id): return [1, "NS CSAR(%s) already exists." % csar_id] - artifact = sdc.get_artifact(sdc.ASSETTYPE_SERVICES, csar_id) + ns = sdc.get_asset(sdc.ASSETTYPE_SERVICES, csar_id) + # check if the related resources exist + resources = ns.get('resources', None) + if resources: + for resource in resources: + if resource['resoucreType'].upper == 'VF' and not VnfPackageModel.objects.filter( + vnfPackageId=resource['resourceUUID']): + logger.error("VF [%s] is not distributed.", resource['resourceUUID']) + raise CatalogException("VF (%s) is not distributed." % resource['resourceUUID']) + # if resource['resoucreType'] == 'PNF' and not PnfPackageModel.objects.filter( + # pnfPackageId=resource['resourceUUID']): + # logger.error("PNF [%s] is not distributed.", resource['resourceUUID']) + # raise CatalogException("PNF (%s) is not distributed." % resource['resourceUUID']) + + # download csar package local_path = os.path.join(CATALOG_ROOT_PATH, csar_id) - csar_name = "%s.csar" % artifact.get("name", csar_id) - local_file_name = sdc.download_artifacts(artifact["toscaModelURL"], local_path, csar_name) + csar_name = "%s.csar" % ns.get("name", csar_id) + local_file_name = sdc.download_artifacts(ns["toscaModelURL"], local_path, csar_name) if local_file_name.endswith(".csar") or local_file_name.endswith(".zip"): artifact_vnf_file = fileutil.unzip_file(local_file_name, local_path, "Artifacts/Deployment/OTHER/ns.csar") if os.path.exists(artifact_vnf_file): @@ -137,11 +181,20 @@ class NsPackage(object): return [0, "CSAR(%s) distributed successfully." % csar_id] def delete_csar(self, csar_id): + """ + Delete NS package by id + :param csar_id: + :return: + """ nsd = NsDescriptor() nsd.delete_single(csar_id) return [0, "Delete CSAR(%s) successfully." % csar_id] def get_csars(self): + """ + Get ns packages + :return: + """ csars = [] nss = NSPackageModel.objects.filter() for ns in nss: @@ -150,6 +203,11 @@ class NsPackage(object): return [0, csars] def get_csar(self, csar_id): + """ + Get NS package by id + :param csar_id: + :return: + """ package_info = {} csars = NSPackageModel.objects.filter(nsPackageId=csar_id) if csars: