diff --git a/src/lcm/LifeCycleActions.cc b/src/lcm/LifeCycleActions.cc index 5afdecbb5d..95343a4ff2 100644 --- a/src/lcm/LifeCycleActions.cc +++ b/src/lcm/LifeCycleActions.cc @@ -252,11 +252,6 @@ void LifeCycleManager::migrate_action(int vid) //------------------------------------------------------ // Bypass SAVE_MIGRATE & go to PROLOG_MIGRATE_POWEROFF //------------------------------------------------------ - - vm->set_resched(false); - - vm->set_state(VirtualMachine::ACTIVE); - if (vm->get_state() == VirtualMachine::POWEROFF) { vm->set_state(VirtualMachine::PROLOG_MIGRATE_POWEROFF); @@ -268,6 +263,10 @@ void LifeCycleManager::migrate_action(int vid) vm->log("LCM", Log::INFO, "New VM state is PROLOG_MIGRATE_SUSPEND"); } + vm->set_state(VirtualMachine::ACTIVE); + + vm->set_resched(false); + vm->delete_snapshots(); map empty; diff --git a/src/lcm/LifeCycleStates.cc b/src/lcm/LifeCycleStates.cc index 620a2e952e..dd20f05fd8 100644 --- a/src/lcm/LifeCycleStates.cc +++ b/src/lcm/LifeCycleStates.cc @@ -783,8 +783,8 @@ void LifeCycleManager::prolog_success_action(int vid) vm->set_vm_info(); - vm->set_reason(vm->get_previous_reason()); - vm->set_action(vm->get_previous_action()); + vm->set_reason(History::USER); + vm->set_action(History::MIGRATE_ACTION); vmpool->update_history(vm); @@ -795,7 +795,7 @@ void LifeCycleManager::prolog_success_action(int vid) } else //PROLOG_MIGRATE_SUSPEND, PROLOG_MIGRATE_SUSPEND_FAILURE { - dm->trigger(DispatchManager::POWEROFF_SUCCESS,vid); + dm->trigger(DispatchManager::SUSPEND_SUCCESS,vid); } break; @@ -926,6 +926,7 @@ void LifeCycleManager::prolog_failure_action(int vid) //wrong state + recover failure from failure state else if ( state != VirtualMachine::PROLOG_MIGRATE_FAILURE && state != VirtualMachine::PROLOG_MIGRATE_POWEROFF_FAILURE && + state != VirtualMachine::PROLOG_MIGRATE_SUSPEND_FAILURE && state != VirtualMachine::PROLOG_FAILURE ) { vm->log("LCM",Log::ERROR,"prolog_failure_action, VM in a wrong state"); diff --git a/src/rm/RequestManagerVirtualMachine.cc b/src/rm/RequestManagerVirtualMachine.cc index c919ac1879..0efa1d4def 100644 --- a/src/rm/RequestManagerVirtualMachine.cc +++ b/src/rm/RequestManagerVirtualMachine.cc @@ -944,6 +944,7 @@ void VirtualMachineMigrate::request_execute(xmlrpc_c::paramList const& paramList if((vm->hasPreviousHistory() && vm->get_previous_reason()== History::NONE)|| (vm->get_state() != VirtualMachine::POWEROFF && + vm->get_state() != VirtualMachine::SUSPENDED && (vm->get_state() != VirtualMachine::ACTIVE || (vm->get_lcm_state() != VirtualMachine::RUNNING && vm->get_lcm_state() != VirtualMachine::UNKNOWN))))