Merge branch 'bug-1210'

Conflicts:
	share/doc/states/states-complete.dot
This commit is contained in:
Ruben S. Montero committed 2012-10-18 23:40:01 +02:00
commit ea98ae0bc8
12 files changed
+131 -23

No files matched your search

+3 -1
View File
@@ -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
};
// -------------------------------------------------------------------------
+1 -7
View File
@@ -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"];
}
+2
View File
@@ -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"/>
+2
View File
@@ -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"/>
+3 -1
View File
@@ -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();
+2 -1
View File
@@ -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);
+10 -4
View File
@@ -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:
+93 -4
View File
@@ -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" };
/**
+4 -2
View File
@@ -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}
+3 -1
View File
@@ -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":
+3 -1
View File
@@ -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":