From dafeeaf95cc893d433d6c327f87792d9aa6a59e5 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Thu, 3 Mar 2016 23:38:36 +0100 Subject: [PATCH] feature #3958: Merge common code for PROLOG_MIGRATE_UNKNOWN --- src/lcm/LifeCycleActions.cc | 52 ++++++++++--------------------------- src/lcm/LifeCycleStates.cc | 4 --- 2 files changed, 13 insertions(+), 43 deletions(-) diff --git a/src/lcm/LifeCycleActions.cc b/src/lcm/LifeCycleActions.cc index ea4ef24038..ffe52543c3 100644 --- a/src/lcm/LifeCycleActions.cc +++ b/src/lcm/LifeCycleActions.cc @@ -251,19 +251,25 @@ void LifeCycleManager::migrate_action(int vid) vmm->trigger(VirtualMachineManager::SAVE,vid); } else if (vm->get_state() == VirtualMachine::POWEROFF || - vm->get_state() == VirtualMachine::SUSPENDED ) + vm->get_state() == VirtualMachine::SUSPENDED || + (vm->get_state() == VirtualMachine::ACTIVE && + vm->get_lcm_state() == VirtualMachine::UNKNOWN )) { - //------------------------------------------------------ - // Bypass SAVE_MIGRATE & go to PROLOG_MIGRATE_POWEROFF - //------------------------------------------------------ + //---------------------------------------------------------------------- + // Bypass SAVE_MIGRATE & go to PROLOG_MIGRATE_POWEROFF/SUSPENDED/UNKNOWN + //---------------------------------------------------------------------- if (vm->get_state() == VirtualMachine::POWEROFF) { vm->set_state(VirtualMachine::PROLOG_MIGRATE_POWEROFF); } - else // VirtualMachine::SUSPENDED + else if (vm->get_state() == VirtualMachine::SUSPENDED) { vm->set_state(VirtualMachine::PROLOG_MIGRATE_SUSPEND); } + else //VirtualMachine::UNKNOWN + { + vm->set_state(VirtualMachine::PROLOG_MIGRATE_UNKNOWN); + } vm->set_state(VirtualMachine::ACTIVE); @@ -292,40 +298,6 @@ void LifeCycleManager::migrate_action(int vid) tm->trigger(TransferManager::PROLOG_MIGR,vid); } - else if (vm->get_state() == VirtualMachine::ACTIVE && - vm->get_lcm_state() == VirtualMachine::UNKNOWN) - { - //---------------------------------------------------- - // Bypass SAVE_MIGRATE goto PROLOG_MIGRATE_UNKNOWN - //---------------------------------------------------- - - vm->set_resched(false); - - vm->set_state(VirtualMachine::PROLOG_MIGRATE_UNKNOWN); - - vm->delete_snapshots(); - - vm->reset_info(); - - vmpool->update(vm); - - vm->set_stime(the_time); - - vm->set_prolog_stime(the_time); - - vmpool->update_history(vm); - - vm->get_requirements(cpu, mem, disk, pci); - - hpool->add_capacity(vm->get_hid(), vm->get_oid(), cpu, mem, disk, pci); - - hpool->del_capacity(vm->get_previous_hid(), vm->get_oid(), cpu, mem, - disk, pci); - - //---------------------------------------------------- - - tm->trigger(TransferManager::PROLOG_MIGR,vid); - } else { vm->log("LCM", Log::ERROR, "migrate_action, VM in a wrong state."); @@ -1606,10 +1578,12 @@ void LifeCycleManager::updatesg_action(int sgid) case VirtualMachine::PROLOG_MIGRATE_SUSPEND_FAILURE: case VirtualMachine::PROLOG_RESUME_FAILURE: case VirtualMachine::PROLOG_UNDEPLOY_FAILURE: + case VirtualMachine::PROLOG_MIGRATE_UNKNOWN_FAILURE: case VirtualMachine::PROLOG_FAILURE: case VirtualMachine::PROLOG_MIGRATE: case VirtualMachine::PROLOG_MIGRATE_POWEROFF: case VirtualMachine::PROLOG_MIGRATE_SUSPEND: + case VirtualMachine::PROLOG_MIGRATE_UNKNOWN: case VirtualMachine::PROLOG_RESUME: case VirtualMachine::PROLOG_UNDEPLOY: case VirtualMachine::EPILOG: diff --git a/src/lcm/LifeCycleStates.cc b/src/lcm/LifeCycleStates.cc index 6740a89458..bcc979fa83 100644 --- a/src/lcm/LifeCycleStates.cc +++ b/src/lcm/LifeCycleStates.cc @@ -663,10 +663,6 @@ void LifeCycleManager::prolog_success_action(int vid) case VirtualMachine::PROLOG: case VirtualMachine::PROLOG_FAILURE: //recover success - action = VirtualMachineManager::DEPLOY; - vm->set_state(VirtualMachine::BOOT); - break; - case VirtualMachine::PROLOG_MIGRATE_UNKNOWN: case VirtualMachine::PROLOG_MIGRATE_UNKNOWN_FAILURE: //recover success action = VirtualMachineManager::DEPLOY;