X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog%2Fpackages%2Fbiz%2Fns_descriptor.py;h=ca1b6849bd4bf9ac7812a7deb6cf6039135d1812;hb=2ae44b787c0795e60276c35aeb13e104ca17bfa7;hp=f0e05723e108a9b4b55b3aed45ff77eefa42f9b6;hpb=f96008008bcbefd4142611c9ecca45899c5bb7d6;p=modeling%2Fetsicatalog.git diff --git a/catalog/packages/biz/ns_descriptor.py b/catalog/packages/biz/ns_descriptor.py index f0e0572..ca1b684 100644 --- a/catalog/packages/biz/ns_descriptor.py +++ b/catalog/packages/biz/ns_descriptor.py @@ -19,12 +19,13 @@ import os import uuid from catalog.packages.biz.common import parse_file_range, read, save -from catalog.packages.const import PKG_STATUS from catalog.pub.config.config import CATALOG_ROOT_PATH from catalog.pub.database.models import NSPackageModel, PnfPackageModel, VnfPackageModel from catalog.pub.exceptions import CatalogException, ResourceNotFoundException from catalog.pub.utils import fileutil, toscaparser from catalog.pub.utils.values import ignore_case_get +from catalog.packages.biz.notificationsutil import prepare_nsd_notification, NotificationsUtil +from catalog.packages import const logger = logging.getLogger(__name__) @@ -41,9 +42,9 @@ class NsDescriptor(object): user_defined_data = ignore_case_get(data, 'userDefinedData', {}) data = { 'id': id if id else str(uuid.uuid4()), - 'nsdOnboardingState': PKG_STATUS.CREATED, - 'nsdOperationalState': PKG_STATUS.DISABLED, - 'nsdUsageState': PKG_STATUS.NOT_IN_USE, + 'nsdOnboardingState': const.PKG_STATUS.CREATED, + 'nsdOperationalState': const.PKG_STATUS.DISABLED, + 'nsdUsageState': const.PKG_STATUS.NOT_IN_USE, 'userDefinedData': user_defined_data, '_links': None # TODO } @@ -92,6 +93,7 @@ class NsDescriptor(object): ns_pkgs.delete() ns_pkg_path = os.path.join(CATALOG_ROOT_PATH, nsd_info_id) fileutil.delete_dirs(ns_pkg_path) + send_notification(const.NSD_NOTIFICATION_TYPE.NSD_DELETION, nsd_info_id) logger.info('NSD(%s) has been deleted.' % nsd_info_id) def upload(self, nsd_info_id, remote_file): @@ -100,7 +102,7 @@ class NsDescriptor(object): if not ns_pkgs.exists(): logger.error('NSD(%s) does not exist.' % nsd_info_id) raise CatalogException('NSD(%s) does not exist.' % nsd_info_id) - ns_pkgs.update(onboardingState=PKG_STATUS.UPLOADING) + ns_pkgs.update(onboardingState=const.PKG_STATUS.UPLOADING) local_file_name = save(remote_file, nsd_info_id) logger.info('NSD(%s) content has been uploaded.' % nsd_info_id) @@ -112,7 +114,7 @@ class NsDescriptor(object): if not ns_pkgs.exists(): logger.error('NSD(%s) does not exist.' % nsd_info_id) raise ResourceNotFoundException('NSD(%s) does not exist.' % nsd_info_id) - if ns_pkgs[0].onboardingState != PKG_STATUS.ONBOARDED: + if ns_pkgs[0].onboardingState != const.PKG_STATUS.ONBOARDED: logger.error('NSD(%s) is not ONBOARDED.' % nsd_info_id) raise CatalogException('NSD(%s) is not ONBOARDED.' % nsd_info_id) @@ -124,7 +126,7 @@ class NsDescriptor(object): def parse_nsd_and_save(self, nsd_info_id, local_file_name): logger.info('Start to process NSD(%s)...' % nsd_info_id) ns_pkgs = NSPackageModel.objects.filter(nsPackageId=nsd_info_id) - ns_pkgs.update(onboardingState=PKG_STATUS.PROCESSING) + ns_pkgs.update(onboardingState=const.PKG_STATUS.PROCESSING) nsd_json = toscaparser.parse_nsd(local_file_name) logger.debug("%s", nsd_json) @@ -140,6 +142,7 @@ class NsDescriptor(object): other_nspkg = NSPackageModel.objects.filter(nsdId=nsd_id) if other_nspkg and other_nspkg[0].nsPackageId != nsd_info_id: logger.warn("NSD(%s,%s) already exists.", nsd_id, other_nspkg[0].nsPackageId) + send_notification(const.NSD_NOTIFICATION_TYPE.NSD_ONBOARDING_FAILURE, nsd_info_id, nsd_id) raise CatalogException("NSD(%s) already exists." % nsd_id) for vnf in nsd["vnfs"]: @@ -173,14 +176,15 @@ class NsDescriptor(object): nsdDescription=nsd.get("description", ""), nsdVersion=nsd_version, invariantId=invariant_id, - onboardingState=PKG_STATUS.ONBOARDED, - operationalState=PKG_STATUS.ENABLED, - usageState=PKG_STATUS.NOT_IN_USE, + onboardingState=const.PKG_STATUS.ONBOARDED, + operationalState=const.PKG_STATUS.ENABLED, + usageState=const.PKG_STATUS.NOT_IN_USE, nsPackageUri=local_file_name, sdcCsarId=nsd_info_id, localFilePath=local_file_name, nsdModel=nsd_json ) + send_notification(const.NSD_NOTIFICATION_TYPE.NSD_ONBOARDING, nsd_info_id, nsd_id) logger.info('NSD(%s) has been processed.' % nsd_info_id) def fill_resp_data(self, ns_pkg): @@ -236,4 +240,19 @@ class NsDescriptor(object): def handle_upload_failed(self, nsd_info_id): ns_pkg = NSPackageModel.objects.filter(nsPackageId=nsd_info_id) - ns_pkg.update(onboardingState=PKG_STATUS.CREATED) + ns_pkg.update(onboardingState=const.PKG_STATUS.CREATED) + + +def send_notification(type, nsd_info_id, nsd_id=None, failure_details=None, operational_state=None): + data = prepare_nsd_notification(nsd_info_id=nsd_info_id, + nsd_id=nsd_id, + notification_type=type, + failure_details=failure_details, + operational_state=operational_state) + filters = { + 'nsdInfoId': 'nsdInfoId', + 'nsdId': 'nsdId', + } + logger.debug('Notify request data = %s' % data) + logger.debug('Notify request filters = %s' % filters) + NotificationsUtil().send_notification(data, filters, False)