summaryrefslogtreecommitdiffstats
path: root/lcm
diff options
context:
space:
mode:
authorfujinhua <fu.jinhua@zte.com.cn>2019-04-24 16:20:59 +0800
committerfujinhua <fu.jinhua@zte.com.cn>2019-04-24 16:26:33 +0800
commit3f63b351c906c800c0aba78f6b72914fa49239fe (patch)
treebdfee41466e874e867fa93492d6ad7defe451de7 /lcm
parentb644c9b0970c8a345abc1d0eee404e901efa5eac (diff)
Add lcm op occ to vnf heal
Change-Id: If99d1ccf70314f68f862972b4914564587df526b Issue-ID: VFC-1306 Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
Diffstat (limited to 'lcm')
-rw-r--r--lcm/lcm/nf/biz/change_ext_conn.py2
-rw-r--r--lcm/lcm/nf/biz/change_vnf_flavour.py2
-rw-r--r--lcm/lcm/nf/biz/heal_vnf.py43
-rw-r--r--lcm/lcm/pub/utils/notificationsutil.py7
4 files changed, 31 insertions, 23 deletions
diff --git a/lcm/lcm/nf/biz/change_ext_conn.py b/lcm/lcm/nf/biz/change_ext_conn.py
index 4448ccee..ef14b8cc 100644
--- a/lcm/lcm/nf/biz/change_ext_conn.py
+++ b/lcm/lcm/nf/biz/change_ext_conn.py
@@ -256,5 +256,5 @@ class ChangeExtConn(Thread):
logger.error('Chnage ext conn failed, detail message: %s', error_msg)
self.vnf_insts.update(status=VNF_STATUS.FAILED,
lastuptime=now_time())
- self.lcm_op_occ.notify_lcm(OPERATION_STATE_TYPE.FAILED)
+ self.lcm_op_occ.notify_lcm(OPERATION_STATE_TYPE.FAILED, error_msg)
JobUtil.add_job_status(self.job_id, 255, error_msg)
diff --git a/lcm/lcm/nf/biz/change_vnf_flavour.py b/lcm/lcm/nf/biz/change_vnf_flavour.py
index 7e1eaa7c..7d87fe84 100644
--- a/lcm/lcm/nf/biz/change_vnf_flavour.py
+++ b/lcm/lcm/nf/biz/change_vnf_flavour.py
@@ -103,5 +103,5 @@ class ChangeVnfFlavour(Thread):
logger.error('Chnage vnf flavour failed, detail message: %s', error_msg)
self.vnf_insts.update(status=VNF_STATUS.FAILED,
lastuptime=now_time())
- self.lcm_op_occ.notify_lcm(OPERATION_STATE_TYPE.FAILED)
+ self.lcm_op_occ.notify_lcm(OPERATION_STATE_TYPE.FAILED, error_msg)
JobUtil.add_job_status(self.job_id, 255, error_msg)
diff --git a/lcm/lcm/nf/biz/heal_vnf.py b/lcm/lcm/nf/biz/heal_vnf.py
index 5e013042..535ad633 100644
--- a/lcm/lcm/nf/biz/heal_vnf.py
+++ b/lcm/lcm/nf/biz/heal_vnf.py
@@ -15,9 +15,12 @@
import json
import logging
import traceback
+import uuid
from threading import Thread
-from lcm.pub.database.models import NfInstModel, VmInstModel, VNFCInstModel
+from lcm.pub.database.models import NfInstModel
+from lcm.pub.database.models import VmInstModel
+from lcm.pub.database.models import VNFCInstModel
from lcm.pub.exceptions import NFLCMException
from lcm.pub.utils.jobutil import JobUtil
from lcm.pub.utils.timeutil import now_time
@@ -26,9 +29,9 @@ from lcm.pub.vimapi import adaptor
from lcm.nf.biz.grant_vnf import grant_resource
from lcm.nf.const import VNF_STATUS, GRANT_TYPE, OPERATION_STATE_TYPE, LCM_NOTIFICATION_STATUS
from lcm.nf.const import CHANGE_TYPE, OPERATION_TYPE, HEAL_ACTION_TYPE
+from lcm.nf.const import OPERATION_TASK
from lcm.nf.biz import common
-import uuid
-from lcm.pub.utils.notificationsutil import NotificationsUtil
+from .operate_vnf_lcm_op_occ import VnfLcmOpOcc
logger = logging.getLogger(__name__)
@@ -48,25 +51,33 @@ class HealVnf(Thread):
self.grant_type = GRANT_TYPE.HEAL_CREATE
elif self.action == HEAL_ACTION_TYPE.RESTART:
self.grant_type = GRANT_TYPE.HEAL_RESTART
+ self.lcm_op_occ = VnfLcmOpOcc(
+ vnf_inst_id=nf_inst_id,
+ lcm_op_id=job_id,
+ operation=OPERATION_TYPE.HEAL,
+ task=OPERATION_TASK.HEAL
+ )
def run(self):
try:
self.heal_pre()
- self.lcm_notify(LCM_NOTIFICATION_STATUS.START, OPERATION_STATE_TYPE.STARTING)
+ self.lcm_op_occ.notify_lcm(OPERATION_STATE_TYPE.STARTING)
self.apply_grant()
- self.lcm_notify(LCM_NOTIFICATION_STATUS.RESULT, OPERATION_STATE_TYPE.PROCESSING)
+ self.lcm_op_occ.notify_lcm(OPERATION_STATE_TYPE.PROCESSING)
self.heal_resource()
JobUtil.add_job_status(self.job_id, 100, "Heal Vnf success.")
- NfInstModel.objects.filter(nfinstid=self.nf_inst_id).update(status='INSTANTIATED', lastuptime=now_time())
- self.lcm_notify(LCM_NOTIFICATION_STATUS.RESULT, OPERATION_STATE_TYPE.COMPLETED)
+ NfInstModel.objects.filter(nfinstid=self.nf_inst_id).update(
+ status='INSTANTIATED',
+ lastuptime=now_time()
+ )
+ self.lcm_op_occ.notify_lcm(OPERATION_STATE_TYPE.COMPLETED)
except NFLCMException as e:
logger.error(e.message)
- self.lcm_notify(LCM_NOTIFICATION_STATUS.RESULT, OPERATION_STATE_TYPE.FAILED, str(e))
self.vnf_heal_failed_handle(e.message)
except Exception as e:
logger.error(e.message)
- self.lcm_notify(LCM_NOTIFICATION_STATUS.RESULT, OPERATION_STATE_TYPE.FAILED, str(e))
- self.vnf_heal_failed_handle(traceback.format_exc())
+ logger.error(traceback.format_exc())
+ self.vnf_heal_failed_handle(e.message)
def heal_pre(self):
if self.action not in (HEAL_ACTION_TYPE.START, HEAL_ACTION_TYPE.RESTART):
@@ -117,15 +128,13 @@ class HealVnf(Thread):
def vnf_heal_failed_handle(self, error_msg):
logger.error('VNF Healing failed, detail message: %s' % error_msg)
- NfInstModel.objects.filter(nfinstid=self.nf_inst_id).update(status=VNF_STATUS.FAILED, lastuptime=now_time())
+ NfInstModel.objects.filter(nfinstid=self.nf_inst_id).update(
+ status=VNF_STATUS.FAILED,
+ lastuptime=now_time()
+ )
+ self.lcm_op_occ.notify_lcm(OPERATION_STATE_TYPE.FAILED, error_msg)
JobUtil.add_job_status(self.job_id, 255, error_msg)
- def lcm_notify(self, status, opState, err=None):
- notification_content = self.prepareNotificationData(status, opState, err)
- logger.info('Notify data = %s' % notification_content)
- NotificationsUtil().send_notification(notification_content)
- logger.info('Notify end')
-
def prepareNotificationData(self, status, opState, err=None):
affected_vnfcs = []
if status == LCM_NOTIFICATION_STATUS.RESULT and opState == OPERATION_STATE_TYPE.COMPLETED:
diff --git a/lcm/lcm/pub/utils/notificationsutil.py b/lcm/lcm/pub/utils/notificationsutil.py
index 0a0e1f2d..a8950316 100644
--- a/lcm/lcm/pub/utils/notificationsutil.py
+++ b/lcm/lcm/pub/utils/notificationsutil.py
@@ -171,10 +171,9 @@ def set_affected_vss(affected_vss, nfinstid, changetype):
def get_notification_status(operation_state):
- notification_status = const.LCM_NOTIFICATION_STATUS.START
- if operation_state in const.RESULT_RANGE:
- notification_status = const.LCM_NOTIFICATION_STATUS.RESULT
- return notification_status
+ if operation_state == const.OPERATION_STATE_TYPE.STARTING:
+ return const.LCM_NOTIFICATION_STATUS.START
+ return const.LCM_NOTIFICATION_STATUS.RESULT
def prepare_notification(nfinstid, jobid, operation, operation_state):