diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-03-10 11:24:17 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-03-10 11:24:17 +0000 |
| commit | 7322c59ef45d14c94e171bebc2c9bf13710b25a8 (patch) | |
| tree | 226fd0e211be19ca1085fac66764d20c3c920fe4 /nova | |
| parent | ac557d5778089d4f83160901039db3b1c766dc78 (diff) | |
| parent | dc68e51c51b9d423601f6c1bfd627716df1e66bd (diff) | |
Merge "Allow soft_reboot to work from more states:"
Diffstat (limited to 'nova')
| -rw-r--r-- | nova/compute/manager.py | 5 | ||||
| -rw-r--r-- | nova/virt/libvirt/connection.py | 12 |
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() |
