mirror of
https://github.com/OpenNebula/one.git
synced 2026-11-08 21:16:39 +09:00
Merge branch 'bug-1210'
Conflicts: share/doc/states/states-complete.dot
This commit is contained in:
commit
ea98ae0bc8
12 files changed
+131
-23
No files matched your search
@@ -85,7 +85,9 @@ public:
|
||||
HOTPLUG = 17,
|
||||
SHUTDOWN_POWEROFF = 18,
|
||||
BOOT_UNKNOWN = 19,
|
||||
BOOT_POWEROFF = 20
|
||||
BOOT_POWEROFF = 20,
|
||||
BOOT_SUSPENDED = 21,
|
||||
BOOT_STOPPED = 22
|
||||
};
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@@ -9,7 +9,7 @@ digraph OpenNebula {
|
||||
|
||||
node [fontname="Helvetica"];
|
||||
edge [fontname="Menlo"];
|
||||
|
||||
|
||||
user [
|
||||
fillcolor="black",
|
||||
style="filled", shape="box",
|
||||
@@ -131,12 +131,6 @@ digraph OpenNebula {
|
||||
boot_suspended -> suspended [style="dotted"];
|
||||
boot_stopped -> epilog_stop [style="dotted"];
|
||||
|
||||
running -> failure [style="dotted"];
|
||||
unknown -> failure [style="dotted"];
|
||||
|
||||
running -> save_suspend [style="dotted"];
|
||||
unknown -> save_suspend [style="dotted"];
|
||||
|
||||
running -> unknown [style="dotted"];
|
||||
unknown -> running [style="dashed"];
|
||||
}
|
||||
@@ -103,6 +103,8 @@
|
||||
SHUTDOWN_POWEROFF = 18
|
||||
BOOT_UNKNOWN = 19
|
||||
BOOT_POWEROFF = 20
|
||||
BOOT_SUSPENDED = 21
|
||||
BOOT_STOPPED = 22
|
||||
-->
|
||||
<xs:element name="LCM_STATE" type="xs:integer"/>
|
||||
<xs:element name="RESCHED" type="xs:integer"/>
|
||||
|
||||
@@ -65,6 +65,8 @@
|
||||
SHUTDOWN_POWEROFF = 18
|
||||
BOOT_UNKNOWN = 19
|
||||
BOOT_POWEROFF = 20
|
||||
BOOT_SUSPENDED = 21
|
||||
BOOT_STOPPED = 22
|
||||
-->
|
||||
<xs:element name="LCM_STATE" type="xs:integer"/>
|
||||
<xs:element name="RESCHED" type="xs:integer"/>
|
||||
|
||||
@@ -556,7 +556,9 @@ int DispatchManager::restart(int vid)
|
||||
(vm->get_lcm_state() == VirtualMachine::UNKNOWN ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_UNKNOWN ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_POWEROFF))
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_POWEROFF ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_SUSPENDED ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_STOPPED))
|
||||
|| vm->get_state() == VirtualMachine::POWEROFF )
|
||||
{
|
||||
Nebula& nd = Nebula::instance();
|
||||
|
||||
@@ -70,7 +70,8 @@ void DispatchManager::stop_success_action(int vid)
|
||||
}
|
||||
|
||||
if ((vm->get_state() == VirtualMachine::ACTIVE) &&
|
||||
(vm->get_lcm_state() == VirtualMachine::EPILOG_STOP))
|
||||
(vm->get_lcm_state() == VirtualMachine::EPILOG_STOP ||
|
||||
vm->get_lcm_state() == VirtualMachine::PROLOG_RESUME))
|
||||
{
|
||||
vm->set_state(VirtualMachine::STOPPED);
|
||||
|
||||
|
||||
@@ -408,7 +408,7 @@ void LifeCycleManager::restore_action(int vid)
|
||||
//----------------------------------------------------
|
||||
vm->set_state(VirtualMachine::ACTIVE);
|
||||
|
||||
vm->set_state(VirtualMachine::BOOT);
|
||||
vm->set_state(VirtualMachine::BOOT_SUSPENDED);
|
||||
|
||||
vm->cp_history();
|
||||
|
||||
@@ -420,7 +420,7 @@ void LifeCycleManager::restore_action(int vid)
|
||||
|
||||
vmpool->update_history(vm);
|
||||
|
||||
vm->log("LCM", Log::INFO, "New state is BOOT");
|
||||
vm->log("LCM", Log::INFO, "New state is BOOT_SUSPENDED");
|
||||
|
||||
//----------------------------------------------------
|
||||
|
||||
@@ -500,7 +500,9 @@ void LifeCycleManager::restart_action(int vid)
|
||||
(vm->get_lcm_state() == VirtualMachine::UNKNOWN ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_UNKNOWN ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_POWEROFF))
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_POWEROFF ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_SUSPENDED ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_STOPPED))
|
||||
||vm->get_state() == VirtualMachine::POWEROFF)
|
||||
{
|
||||
Nebula& nd = Nebula::instance();
|
||||
@@ -513,7 +515,9 @@ void LifeCycleManager::restart_action(int vid)
|
||||
if (vm->get_state() == VirtualMachine::ACTIVE &&
|
||||
(vm->get_lcm_state() == VirtualMachine::BOOT ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_UNKNOWN ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_POWEROFF))
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_POWEROFF ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_SUSPENDED ||
|
||||
vm->get_lcm_state() == VirtualMachine::BOOT_STOPPED))
|
||||
{
|
||||
vm->log("LCM", Log::INFO, "Sending BOOT command to VM again");
|
||||
}
|
||||
@@ -659,6 +663,8 @@ void LifeCycleManager::clean_up_vm(VirtualMachine * vm)
|
||||
case VirtualMachine::BOOT:
|
||||
case VirtualMachine::BOOT_UNKNOWN:
|
||||
case VirtualMachine::BOOT_POWEROFF:
|
||||
case VirtualMachine::BOOT_SUSPENDED:
|
||||
case VirtualMachine::BOOT_STOPPED:
|
||||
case VirtualMachine::RUNNING:
|
||||
case VirtualMachine::UNKNOWN:
|
||||
case VirtualMachine::SHUTDOWN:
|
||||
|
||||
@@ -373,6 +373,43 @@ void LifeCycleManager::deploy_failure_action(int vid)
|
||||
|
||||
vm->log("LCM", Log::INFO, "Fail to boot VM. New VM state is POWEROFF");
|
||||
}
|
||||
else if (vm->get_lcm_state() == VirtualMachine::BOOT_SUSPENDED)
|
||||
{
|
||||
vm->set_state(VirtualMachine::SUSPENDED);
|
||||
vm->set_state(VirtualMachine::LCM_INIT);
|
||||
|
||||
vmpool->update(vm);
|
||||
|
||||
vm->log("LCM", Log::INFO, "Fail to boot VM. New VM state is SUSPENDED");
|
||||
}
|
||||
else if (vm->get_lcm_state() == VirtualMachine::BOOT_STOPPED)
|
||||
{
|
||||
Nebula& nd = Nebula::instance();
|
||||
TransferManager * tm = nd.get_tm();
|
||||
time_t the_time = time(0);
|
||||
|
||||
//----------------------------------------------------
|
||||
// EPILOG_STOP STATE FROM BOOT
|
||||
//----------------------------------------------------
|
||||
|
||||
vm->set_state(VirtualMachine::EPILOG_STOP);
|
||||
|
||||
vmpool->update(vm);
|
||||
|
||||
vm->set_epilog_stime(the_time);
|
||||
|
||||
vm->set_running_etime(the_time);
|
||||
|
||||
vm->set_reason(History::STOP_RESUME);
|
||||
|
||||
vmpool->update_history(vm);
|
||||
|
||||
vm->log("LCM", Log::INFO, "Fail to boot VM. New VM state is EPILOG_STOP");
|
||||
|
||||
//----------------------------------------------------
|
||||
|
||||
tm->trigger(TransferManager::EPILOG_STOP,vid);
|
||||
}
|
||||
|
||||
vm->unlock();
|
||||
}
|
||||
@@ -524,7 +561,14 @@ void LifeCycleManager::prolog_success_action(int vid)
|
||||
// BOOT STATE
|
||||
//----------------------------------------------------
|
||||
|
||||
vm->set_state(VirtualMachine::BOOT);
|
||||
if ( lcm_state == VirtualMachine::PROLOG_RESUME )
|
||||
{
|
||||
vm->set_state(VirtualMachine::BOOT_STOPPED);
|
||||
}
|
||||
else // PROLOG || PROLOG_MIGRATE
|
||||
{
|
||||
vm->set_state(VirtualMachine::BOOT);
|
||||
}
|
||||
|
||||
vmpool->update(vm);
|
||||
|
||||
@@ -550,7 +594,9 @@ void LifeCycleManager::prolog_success_action(int vid)
|
||||
|
||||
void LifeCycleManager::prolog_failure_action(int vid)
|
||||
{
|
||||
VirtualMachine * vm;
|
||||
VirtualMachine::LcmState state;
|
||||
VirtualMachine * vm;
|
||||
|
||||
time_t the_time = time(0);
|
||||
|
||||
vm = vmpool->get(vid,true);
|
||||
@@ -560,9 +606,52 @@ void LifeCycleManager::prolog_failure_action(int vid)
|
||||
return;
|
||||
}
|
||||
|
||||
vm->set_prolog_etime(the_time);
|
||||
state = vm->get_lcm_state();
|
||||
|
||||
failure_action(vm);
|
||||
if ( state == VirtualMachine::PROLOG ||
|
||||
state == VirtualMachine::PROLOG_MIGRATE )
|
||||
{
|
||||
vm->set_prolog_etime(the_time);
|
||||
|
||||
failure_action(vm);
|
||||
}
|
||||
else if ( state == VirtualMachine::PROLOG_RESUME )
|
||||
{
|
||||
//----------------------------------------------------
|
||||
// STOPPED STATE FROM PROLOG_RESUME
|
||||
//----------------------------------------------------
|
||||
|
||||
Nebula& nd = Nebula::instance();
|
||||
DispatchManager * dm = nd.get_dm();
|
||||
|
||||
int cpu,mem,disk;
|
||||
|
||||
vm->set_prolog_etime(the_time);
|
||||
|
||||
vm->set_resched(false);
|
||||
|
||||
vmpool->update(vm);
|
||||
|
||||
vm->set_etime(the_time);
|
||||
|
||||
vm->set_vm_info();
|
||||
|
||||
vm->set_reason(History::STOP_RESUME);
|
||||
|
||||
vmpool->update_history(vm);
|
||||
|
||||
vm->get_requirements(cpu,mem,disk);
|
||||
|
||||
hpool->del_capacity(vm->get_hid(),cpu,mem,disk);
|
||||
|
||||
//----------------------------------------------------
|
||||
|
||||
dm->trigger(DispatchManager::STOP_SUCCESS,vid);
|
||||
}
|
||||
else
|
||||
{
|
||||
vm->log("LCM",Log::ERROR,"prolog_failure_action, VM in a wrong state");
|
||||
}
|
||||
|
||||
vm->unlock();
|
||||
|
||||
|
||||
@@ -86,7 +86,9 @@ public class VirtualMachine extends PoolElement{
|
||||
"HOTPLUG",
|
||||
"SHUTDOWN_POWEROFF",
|
||||
"BOOT_UNKNOWN",
|
||||
"BOOT_POWEROFF" };
|
||||
"BOOT_POWEROFF",
|
||||
"BOOT_SUSPENDED",
|
||||
"BOOT_STOPPED" };
|
||||
|
||||
private static final String[] SHORT_LCM_STATES =
|
||||
{
|
||||
@@ -110,6 +112,8 @@ public class VirtualMachine extends PoolElement{
|
||||
"hotp",
|
||||
"poff",
|
||||
"boot",
|
||||
"boot",
|
||||
"boot",
|
||||
"boot" };
|
||||
|
||||
/**
|
||||
|
||||
@@ -44,7 +44,7 @@ module OpenNebula
|
||||
LCM_STATE=%w{LCM_INIT PROLOG BOOT RUNNING MIGRATE SAVE_STOP SAVE_SUSPEND
|
||||
SAVE_MIGRATE PROLOG_MIGRATE PROLOG_RESUME EPILOG_STOP EPILOG
|
||||
SHUTDOWN CANCEL FAILURE CLEANUP UNKNOWN HOTPLUG SHUTDOWN_POWEROFF
|
||||
BOOT_UNKNOWN BOOT_POWEROFF}
|
||||
BOOT_UNKNOWN BOOT_POWEROFF BOOT_SUSPENDED BOOT_STOPPED}
|
||||
|
||||
SHORT_VM_STATES={
|
||||
"INIT" => "init",
|
||||
@@ -78,7 +78,9 @@ module OpenNebula
|
||||
"HOTPLUG" => "hotp",
|
||||
"SHUTDOWN_POWEROFF" => "shut",
|
||||
"BOOT_UNKNOWN" => "boot",
|
||||
"BOOT_POWEROFF" => "boot"
|
||||
"BOOT_POWEROFF" => "boot",
|
||||
"BOOT_SUSPENDED" => "boot",
|
||||
"BOOT_STOPPED" => "boot"
|
||||
}
|
||||
|
||||
MIGRATE_REASON=%w{NONE ERROR STOP_RESUME USER CANCEL}
|
||||
|
||||
@@ -99,7 +99,9 @@ var oZones = {
|
||||
"HOTPLUG",
|
||||
"SHUTDOWN_POWEROFF",
|
||||
"BOOT_UNKNOWN",
|
||||
"BOOT_POWEROFF"][value]);
|
||||
"BOOT_POWEROFF",
|
||||
"BOOT_SUSPENDED",
|
||||
"BOOT_STOPPED"][value]);
|
||||
break;
|
||||
case "IMAGE":
|
||||
case "image":
|
||||
|
||||
@@ -107,7 +107,9 @@ var OpenNebula = {
|
||||
"HOTPLUG",
|
||||
"SHUTDOWN_POWEROFF",
|
||||
"BOOT_UNKNOWN",
|
||||
"BOOT_POWEROFF"][value]);
|
||||
"BOOT_POWEROFF",
|
||||
"BOOT_SUSPENDED",
|
||||
"BOOT_STOPPED"][value]);
|
||||
break;
|
||||
case "IMAGE":
|
||||
case "image":
|
||||
|
||||
Reference in new issue
Block a user