summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-03-10 11:24:17 +0000
committerGerrit Code Review <review@openstack.org>2012-03-10 11:24:17 +0000
commit7322c59ef45d14c94e171bebc2c9bf13710b25a8 (patch)
tree226fd0e211be19ca1085fac66764d20c3c920fe4 /nova
parentac557d5778089d4f83160901039db3b1c766dc78 (diff)
parentdc68e51c51b9d423601f6c1bfd627716df1e66bd (diff)
Merge "Allow soft_reboot to work from more states:"
Diffstat (limited to 'nova')
-rw-r--r--nova/compute/manager.py5
-rw-r--r--nova/virt/libvirt/connection.py12
2 files changed, 13 insertions, 4 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 1c6de672f..6572c5a3a 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -2343,7 +2343,10 @@ class ComputeManager(manager.SchedulerDependentManager):
if vm_power_state == db_power_state:
continue
- if (vm_power_state in (power_state.NOSTATE, power_state.SHUTOFF)
+ if (vm_power_state in (power_state.NOSTATE,
+ power_state.SHUTOFF,
+ power_state.SHUTDOWN,
+ power_state.CRASHED)
and db_instance['vm_state'] == vm_states.ACTIVE):
self._instance_update(context,
db_instance["id"],
diff --git a/nova/virt/libvirt/connection.py b/nova/virt/libvirt/connection.py
index f526f15ca..88922f11b 100644
--- a/nova/virt/libvirt/connection.py
+++ b/nova/virt/libvirt/connection.py
@@ -674,13 +674,19 @@ class LibvirtConnection(driver.ComputeDriver):
:returns: True if the reboot succeeded
"""
dom = self._lookup_by_name(instance.name)
- dom.shutdown()
+ (state, _max_mem, _mem, _cpus, _t) = dom.info()
+ # NOTE(vish): This check allows us to reboot an instance that
+ # is already shutdown.
+ if state == power_state.RUNNING:
+ dom.shutdown()
# NOTE(vish): This actually could take slighty longer than the
# FLAG defines depending on how long the get_info
# call takes to return.
for x in xrange(FLAGS.libvirt_wait_soft_reboot_seconds):
- state = self.get_info(instance)['state']
- if state == power_state.SHUTDOWN:
+ (state, _max_mem, _mem, _cpus, _t) = dom.info()
+ if state in [power_state.SHUTDOWN,
+ power_state.SHUTOFF,
+ power_state.CRASHED]:
LOG.info(_("Instance shutdown successfully."),
instance=instance)
dom.create()