diff options
author | Shobana Jothi <shobana.jothi@verizon.com> | 2018-08-29 11:45:57 +0530 |
---|---|---|
committer | Shobana Jothi <shobana.jothi@verizon.com> | 2018-09-14 16:44:14 +0530 |
commit | 49b87c030e4ae60b141268f9c2f89b8010acd050 (patch) | |
tree | bf623da156ca38404f49e27d926906821ac7a742 /lcm/lcm/pub/vimapi | |
parent | 9975ee2ab76998715538fa3aeee377b947125b7e (diff) |
Add Heal Api in GVNFM
Change-Id: If825c7a03cd38a6694d2cc0d28fbff391a3f4a95
Signed-off-by: Shobana Jothi<shobana.jothi@verizon.com>
Issue-ID: VFC-995
Diffstat (limited to 'lcm/lcm/pub/vimapi')
-rw-r--r-- | lcm/lcm/pub/vimapi/adaptor.py | 32 |
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"): |