-# Copyright 2016 ZTE Corporation.
+# Copyright 2016-2018 ZTE Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
import traceback
from lcm.pub.config.config import REPORT_TO_AAI
-from lcm.pub.database.models import NfInstModel, VmInstModel
+from lcm.pub.database.models import NfInstModel, VmInstModel, OOFDataModel, PortInstModel
from lcm.pub.exceptions import NSLCMException
from lcm.pub.msapi import resmgr
from lcm.pub.msapi.aai import query_vnf_aai, delete_vnf_aai, query_vserver_aai, delete_vserver_aai
from lcm.pub.msapi.extsys import split_vim_to_owner_region, get_vim_by_id
from lcm.pub.msapi.vnfmdriver import send_nf_terminate_request
-from lcm.pub.utils.jobutil import JOB_MODEL_STATUS, JobUtil
+from lcm.pub.utils.jobutil import JobUtil
+from lcm.jobs.enum import JOB_MODEL_STATUS
from lcm.pub.utils.values import ignore_case_get
-from lcm.ns_vnfs.const import VNF_STATUS, NFVO_VNF_INST_TIMEOUT_SECOND, INST_TYPE
+from lcm.ns_vnfs.const import NFVO_VNF_INST_TIMEOUT_SECOND
+from lcm.ns_vnfs.enum import VNF_STATUS, INST_TYPE
from lcm.ns_vnfs.biz.wait_job import wait_job_finish
+from lcm.ns_vnfs.biz.subscribe import SubscriptionDeletion
logger = logging.getLogger(__name__)
self.vnfm_job_id = ''
self.terminationType = data['terminationType']
self.gracefulTerminationTimeout = data['gracefulTerminationTimeout']
+ if not self.gracefulTerminationTimeout:
+ self.gracefulTerminationTimeout = 120
+ else:
+ self.gracefulTerminationTimeout = int(self.gracefulTerminationTimeout)
+
self.initdata()
def run(self):
self.check_nf_valid()
self.send_nf_terminate_to_vnfmDriver()
self.wait_vnfm_job_finish()
- self.send_terminate_vnf_to_resMgr()
+ # self.send_terminate_vnf_to_resMgr()
if REPORT_TO_AAI:
self.delete_vserver_in_aai()
self.delete_vnf_in_aai()
+ self.delete_subscription()
self.delete_data_from_db()
except NSLCMException as e:
- self.set_job_err(e.message)
+ self.set_job_err(e.args[0])
except Exception as ex:
logger.error(traceback.format_exc())
- self.set_job_err(ex.message)
+ self.set_job_err(ex.args[0])
def set_vnf_status(self, vnf_inst_info):
vnf_status = vnf_inst_info.status
vnf_inst_info = self.get_vnf_inst()
if not vnf_inst_info:
self.add_progress(100, "TERM_VNF_NOT_EXIST_SUCCESS", "finished")
+ return None
self.add_progress(2, "GET_VNF_INST_SUCCESS")
self.vnfm_inst_id = vnf_inst_info.vnfm_inst_id
self.vnf_uuid = vnf_inst_info.mnfinstid
logger.error('VNF terminate failed on VNFM side.')
raise NSLCMException('VNF terminate failed on VNFM side.')
+ def delete_subscription(self):
+ try:
+ SubscriptionDeletion(self.vnfm_inst_id, self.vnf_uuid).do_biz()
+ except Exception as e:
+ logger.error("delete_subscription failed: %s", e.args[0])
+
def delete_data_from_db(self):
+ PortInstModel.objects.filter(instid=self.vnf_inst_id).delete()
NfInstModel.objects.filter(nfinstid=self.vnf_inst_id).delete()
+ VmInstModel.objects.filter(instid=self.vnf_inst_id).delete()
+ OOFDataModel.objects.filter(service_resource_id=self.vnf_inst_id).delete()
JobUtil.add_job_status(self.job_id, 100, 'vnf terminate success', 0)
def delete_vnf_in_aai(self):
logger.debug(
"Success to delete vnf[%s] from aai, resp_status: [%s]." % (self.vnf_inst_id, resp_status))
except NSLCMException as e:
- logger.debug("Fail to delete vnf from aai[%s], detail message: %s" % (self.vnf_inst_id, e.message))
+ logger.debug("Fail to delete vnf from aai[%s], detail message: %s" % (self.vnf_inst_id, e.args[0]))
except:
logger.error(traceback.format_exc())
vim_id = vm_inst_info.vimid
cloud_owner, cloud_region_id = split_vim_to_owner_region(vim_id)
# query vim_info from aai, get tenant
- vim_info = get_vim_by_id(vim_id)
+ vim_info = get_vim_by_id({"cloud_owner": cloud_owner, 'cloud_regionid': cloud_region_id})
tenant_id = vim_info["tenantId"]
# query vserver instance in aai, get resource_version
(vserver_id, resp_status))
logger.debug("delete_vserver_in_aai end!")
except NSLCMException as e:
- logger.debug("Fail to delete vserver from aai, detail message: %s" % e.message)
+ logger.debug("Fail to delete vserver from aai, detail message: %s" % e.args[0])
except:
logger.error(traceback.format_exc())