From: ying.yunlong Date: Thu, 14 Sep 2017 03:19:37 +0000 (+0800) Subject: Refactor vfc lcm delete ns instance logic X-Git-Tag: v1.0.0~64 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=71b431c40322fcbd8ec31c32a13c66ee18abc1e7;p=vfc%2Fnfvo%2Flcm.git Refactor vfc lcm delete ns instance logic Change-Id: I57f75a45bd92fb00b12481eddeb36bacc210ea21 Issue-ID: VFC-356 Signed-off-by: ying.yunlong --- diff --git a/lcm/ns/ns_create.py b/lcm/ns/ns_create.py index 9017a09e..a80bf8d5 100644 --- a/lcm/ns/ns_create.py +++ b/lcm/ns/ns_create.py @@ -63,27 +63,27 @@ class CreateNSService(object): logger.debug("CreateNSService::create_ns_in_aai::report ns instance[%s] to aai." % self.ns_inst_id) global_customer_id = "global-customer-id-" + self.ns_inst_id data = { - "global-customer-id": "global-customer-id-" + self.ns_inst_id, - "subscriber-name": "subscriber-name-" + self.ns_inst_id, - "subscriber-type": "subscriber-type-" + self.ns_inst_id, - "service-subscriptions": { - "service-subscription": [ - { - "service-type": "service-type-" + self.ns_inst_id, - "service-instances": { - "service-instance": [ - { - "service-instance-id": self.ns_inst_id, - "service-instance-name": self.ns_name, - "service-type": "service-type-" + self.ns_inst_id, - "service-role": "service-role-" + self.ns_inst_id - } - ] - } + "global-customer-id": "global-customer-id-" + self.ns_inst_id, + "subscriber-name": "subscriber-name-" + self.ns_inst_id, + "subscriber-type": "subscriber-type-" + self.ns_inst_id, + "service-subscriptions": { + "service-subscription": [ + { + "service-type": "service-type-" + self.ns_inst_id, + "service-instances": { + "service-instance": [ + { + "service-instance-id": self.ns_inst_id, + "service-instance-name": self.ns_name, + "service-type": "service-type-" + self.ns_inst_id, + "service-role": "service-role-" + self.ns_inst_id + } + ] } - ] - } + } + ] } + } resp_data, resp_status = create_customer_aai(global_customer_id, data) if resp_data: logger.debug("Fail to create ns instance[%s] to aai, resp_status: [%s]." % (self.ns_inst_id, resp_status) ) diff --git a/lcm/ns/ns_delete.py b/lcm/ns/ns_delete.py new file mode 100644 index 00000000..7d51df46 --- /dev/null +++ b/lcm/ns/ns_delete.py @@ -0,0 +1,65 @@ +# Copyright 2016 ZTE Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import logging +import traceback + +from lcm.pub.database.models import DefPkgMappingModel, InputParamMappingModel, ServiceBaseInfoModel +from lcm.pub.database.models import NSInstModel +from lcm.pub.msapi.aai import get_customer_aai, delete_customer_aai + + +logger = logging.getLogger(__name__) + + +class DeleteNsService(object): + def __init__(self, ns_inst_id): + self.ns_inst_id = ns_inst_id + + def do_biz(self): + try: + self.delete_ns() + self.delete_ns_in_aai() + except: + logger.error(traceback.format_exc()) + + def delete_ns(self): + logger.debug("delele NSInstModel(%s)", self.ns_inst_id) + NSInstModel.objects.filter(id=self.ns_inst_id).delete() + + logger.debug("delele InputParamMappingModel(%s)", self.ns_inst_id) + InputParamMappingModel.objects.filter(service_id=self.ns_inst_id).delete() + + logger.debug("delele DefPkgMappingModel(%s)", self.ns_inst_id) + DefPkgMappingModel.objects.filter(service_id=self.ns_inst_id).delete() + + logger.debug("delele ServiceBaseInfoModel(%s)", self.ns_inst_id) + ServiceBaseInfoModel.objects.filter(service_id=self.ns_inst_id).delete() + + def delete_ns_in_aai(self): + logger.debug("DeleteNsService::delete_ns_in_aai::delete ns instance[%s] in aai." % self.ns_inst_id) + global_customer_id = "global-customer-id-" + self.ns_inst_id + + # query ns instance in aai, get resource_version + customer_info = get_customer_aai(global_customer_id) + resource_version = customer_info["resource-version"] + + # delete ns instance from aai + resp_data, resp_status = delete_customer_aai(global_customer_id, resource_version) + if resp_data: + logger.debug("Fail to delete ns instance[%s] from aai, resp_status: [%s]." % (self.ns_inst_id, resp_status)) + else: + logger.debug( + "Success to delete ns instance[%s] from aai, resp_status: [%s]." % (self.ns_inst_id, resp_status)) diff --git a/lcm/ns/ns_terminate.py b/lcm/ns/ns_terminate.py index c86ee9de..dd8a267a 100644 --- a/lcm/ns/ns_terminate.py +++ b/lcm/ns/ns_terminate.py @@ -254,44 +254,3 @@ class TerminateNsService(threading.Thread): floor_progress = int(math.floor(float(target_range[1] - target_range[0]) / 100 * progress)) target_range = floor_progress + target_range[0] return target_range - - -class DeleteNsService(object): - def __init__(self, ns_inst_id): - self.ns_inst_id = ns_inst_id - - def do_biz(self): - try: - self.delete_ns() - self.delete_ns_in_aai() - except: - logger.error(traceback.format_exc()) - - def delete_ns(self): - logger.debug("delele NSInstModel(%s)", self.ns_inst_id) - NSInstModel.objects.filter(id=self.ns_inst_id).delete() - - logger.debug("delele InputParamMappingModel(%s)", self.ns_inst_id) - InputParamMappingModel.objects.filter(service_id=self.ns_inst_id).delete() - - logger.debug("delele DefPkgMappingModel(%s)", self.ns_inst_id) - DefPkgMappingModel.objects.filter(service_id=self.ns_inst_id).delete() - - logger.debug("delele ServiceBaseInfoModel(%s)", self.ns_inst_id) - ServiceBaseInfoModel.objects.filter(service_id=self.ns_inst_id).delete() - - def delete_ns_in_aai(self): - logger.debug("DeleteNsService::delete_ns_in_aai::delete ns instance[%s] in aai." % self.ns_inst_id) - global_customer_id = "global-customer-id-" + self.ns_inst_id - - # query ns instance in aai, get resource_version - customer_info = get_customer_aai(global_customer_id) - resource_version = customer_info["resource-version"] - - # delete ns instance from aai - resp_data, resp_status = delete_customer_aai(global_customer_id, resource_version) - if resp_data: - logger.debug("Fail to delete ns instance[%s] from aai, resp_status: [%s]." % (self.ns_inst_id, resp_status)) - else: - logger.debug( - "Success to delete ns instance[%s] from aai, resp_status: [%s]." % (self.ns_inst_id, resp_status)) diff --git a/lcm/ns/views.py b/lcm/ns/views.py index 9a25027e..84bcd014 100644 --- a/lcm/ns/views.py +++ b/lcm/ns/views.py @@ -11,6 +11,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + + import json import logging import os @@ -21,16 +23,16 @@ from rest_framework.response import Response from rest_framework.views import APIView from lcm.ns.ns_create import CreateNSService +from lcm.ns.ns_delete import DeleteNsService from lcm.ns.ns_get import GetNSInfoService +from lcm.ns.ns_heal import NSHealService from lcm.ns.ns_instant import InstantNSService from lcm.ns.ns_manual_scale import NSManualScaleService -from lcm.ns.ns_heal import NSHealService -from lcm.ns.ns_terminate import TerminateNsService, DeleteNsService +from lcm.ns.ns_terminate import TerminateNsService from lcm.pub.database.models import NSInstModel, ServiceBaseInfoModel from lcm.pub.utils.jobutil import JobUtil, JOB_TYPE -from lcm.pub.utils.values import ignore_case_get from lcm.pub.utils.restcall import req_by_msb -from lcm.pub.exceptions import NSLCMException +from lcm.pub.utils.values import ignore_case_get logger = logging.getLogger(__name__)