X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=lcm%2Flcm%2Fnf%2Fbiz%2Fchange_ext_conn.py;h=b423a2ec679ac5088e608ef4f52d0858d493ee54;hb=46ad7c172411214c5432ed93fda4271288077447;hp=3cde0cf77988125f3a52e80580174087aa5af35b;hpb=f35dfbcc2b40c706e4c4bfde58551394e11bd66f;p=vfc%2Fgvnfm%2Fvnflcm.git diff --git a/lcm/lcm/nf/biz/change_ext_conn.py b/lcm/lcm/nf/biz/change_ext_conn.py index 3cde0cf7..b423a2ec 100644 --- a/lcm/lcm/nf/biz/change_ext_conn.py +++ b/lcm/lcm/nf/biz/change_ext_conn.py @@ -20,12 +20,14 @@ from lcm.nf.biz.common import port_save from lcm.nf.biz.grant_vnf import grant_resource from lcm.nf.const import RESOURCE_MAP, GRANT_TYPE, OPERATION_STATE_TYPE from lcm.nf.const import VNF_STATUS, OPERATION_TASK, OPERATION_TYPE +from lcm.nf.const import SUB_OPERATION_TASK from lcm.pub.database.models import VmInstModel, NfInstModel, PortInstModel from lcm.pub.utils.notificationsutil import NotificationsUtil, prepare_notification from lcm.pub.utils.values import ignore_case_get from lcm.pub.utils.timeutil import now_time from lcm.pub.utils.jobutil import JobUtil from lcm.pub.exceptions import NFLCMException +from lcm.pub.exceptions import NFLCMExceptionConflict from lcm.pub.vimapi import adaptor from .operate_vnf_lcm_op_occ import VnfLcmOpOcc @@ -48,6 +50,7 @@ class ChangeExtConn(Thread): operation=OPERATION_TYPE.CHANGE_EXT_CONN, task=OPERATION_TASK.CHANGE_EXT_CONN ) + self.pre_deal() def run(self): try: @@ -64,6 +67,10 @@ class ChangeExtConn(Thread): 50, "Start to change ext conn." ) + self.lcm_op_occ.upd( + sub_operation=SUB_OPERATION_TASK.GRANTED, + operation_state=OPERATION_STATE_TYPE.PROCESSING + ) self.do_operation() self.vnf_insts.update( status='INSTANTIATED', @@ -75,13 +82,27 @@ class ChangeExtConn(Thread): 100, "Change ext conn success." ) + self.lcm_op_occ.upd( + sub_operation=SUB_OPERATION_TASK.SUCCESS, + operation_state=OPERATION_STATE_TYPE.COMPLETED + ) except NFLCMException as e: - logger.error(e.message) - self.change_ext_conn_failed_handle(e.message) + logger.error(e.args[0]) + self.change_ext_conn_failed_handle(e.args[0]) except Exception as e: - logger.error(e.message) + logger.error(e.args[0]) logger.error(traceback.format_exc()) - self.change_ext_conn_failed_handle(e.message) + self.change_ext_conn_failed_handle(e.args[0]) + + def pre_deal(self): + logger.debug("Start pre deal for VNF change_ext_conn task") + + vnf_is_in_processing, vnf_op = self.lcm_op_occ.is_in_processing() + if vnf_is_in_processing: + raise NFLCMExceptionConflict('VNF(%s) %s in processing.' % ( + self.nf_inst_id, vnf_op + )) + self.lcm_op_occ.add() def apply_grant(self): vdus = VmInstModel.objects.filter(instid=self.nf_inst_id) @@ -211,7 +232,7 @@ class ChangeExtConn(Thread): def query_inst_resource(self, inst_resource): logger.debug('Query resource begin') - for resource_type in RESOURCE_MAP.keys(): + for resource_type in list(RESOURCE_MAP.keys()): resource_table = globals().get(resource_type + 'InstModel') resource_insts = resource_table.objects.filter( instid=self.nf_inst_id @@ -287,3 +308,11 @@ class ChangeExtConn(Thread): ) self.lcm_op_occ.notify_lcm(OPERATION_STATE_TYPE.FAILED, error_msg) JobUtil.add_job_status(self.job_id, 255, error_msg) + self.lcm_op_occ.upd( + sub_operation=SUB_OPERATION_TASK.ERROR, + operation_state=OPERATION_STATE_TYPE.FAILED, + error={ + "status": 500, + "detail": error_msg + } + )