summaryrefslogtreecommitdiffstats
path: root/lcm/lcm/pub/vimapi/adaptor.py
diff options
context:
space:
mode:
Diffstat (limited to 'lcm/lcm/pub/vimapi/adaptor.py')
-rw-r--r--lcm/lcm/pub/vimapi/adaptor.py32
1 files changed, 23 insertions, 9 deletions
diff --git a/lcm/lcm/pub/vimapi/adaptor.py b/lcm/lcm/pub/vimapi/adaptor.py
index f47c3370..3427aaf4 100644
--- a/lcm/lcm/pub/vimapi/adaptor.py
+++ b/lcm/lcm/pub/vimapi/adaptor.py
@@ -20,7 +20,8 @@ from lcm.pub.utils.values import ignore_case_get, set_opt_val
from lcm.pub.msapi.aai import get_flavor_info
from . import api
from .exceptions import VimException
-from lcm.nf.const import ACTION_TYPE
+from lcm.pub.exceptions import NFLCMException
+from lcm.nf.const import ACTION_TYPE, HEAL_ACTION_TYPE
logger = logging.getLogger(__name__)
@@ -101,17 +102,30 @@ def operate_vim_res(data, changeStateTo, stopType, gracefulStopTimeout, do_notif
gracefulStopTimeout = 60
time.sleep(gracefulStopTimeout)
action_vm(ACTION_TYPE.STOP, res, res["vim_id"], res["tenant_id"])
- # TODO check if the we should poll getvm to get the status or the action_vm api
- # successful return should suffice to mark vm as Active/Inactive
do_notify_op("INACTIVE", res["id"])
except VimException as e:
- # TODO Have to update database appropriately on failure
- logger.error("Failed to Heal %s(%s)", RES_VM, res["res_id"])
+ logger.error("Failed to Operate %s(%s)", RES_VM, res["res_id"])
logger.error("%s:%s", e.http_code, e.message)
-
-
-def create_vim_res(data, do_notify):
- vim_cache, res_cache = {}, {}
+ raise NFLCMException("Failed to Operate %s(%s)", RES_VM, res["res_id"])
+
+
+def heal_vim_res(vdus, vnfd_info, do_notify, data, vim_cache, res_cache):
+ try:
+ vimid = data["vimid"]
+ tenant = data["tenant"]
+ actionType = data["action"]
+ if actionType == HEAL_ACTION_TYPE.START:
+ create_vm(vim_cache, res_cache, vnfd_info, vdus[0], do_notify, RES_VM)
+ elif actionType == HEAL_ACTION_TYPE.RESTART:
+ vm_info = api.get_vm(vimid, tenant, vdus[0].resourceid)
+ action_vm(ACTION_TYPE.REBOOT, vm_info, vimid, tenant)
+ except VimException as e:
+ logger.error("Failed to Heal %s(%s)", RES_VM, vdus[0]["vdu_id"])
+ logger.error("%s:%s", e.http_code, e.message)
+ raise NFLCMException("Failed to Heal %s(%s)", RES_VM, vdus[0]["vdu_id"])
+
+
+def create_vim_res(data, do_notify, vim_cache={}, res_cache={}):
for vol in ignore_case_get(data, "volume_storages"):
create_volume(vim_cache, res_cache, vol, do_notify, RES_VOLUME)
for network in ignore_case_get(data, "vls"):