Merge "fix VM power state to be NOSTATE when instance not found"
This commit is contained in:
@@ -3371,7 +3371,7 @@ class ComputeManager(manager.SchedulerDependentManager):
|
||||
vm_instance = self.driver.get_info(db_instance)
|
||||
vm_power_state = vm_instance['state']
|
||||
except exception.InstanceNotFound:
|
||||
vm_power_state = power_state.SHUTDOWN
|
||||
vm_power_state = power_state.NOSTATE
|
||||
# Note(maoy): the above get_info call might take a long time,
|
||||
# for example, because of a broken libvirt driver.
|
||||
# We re-query the DB to get the latest instance info to minimize
|
||||
@@ -3458,6 +3458,12 @@ class ComputeManager(manager.SchedulerDependentManager):
|
||||
# instrumentation is done. See bug 1097806 for details.
|
||||
LOG.warn(_("Instance is paused unexpectedly. Ignore."),
|
||||
instance=db_instance)
|
||||
elif vm_power_state == power_state.NOSTATE:
|
||||
# Occasionally, depending on the status of the hypervisor,
|
||||
# which could be restarting for example, an instance may
|
||||
# not be found. Therefore just log the condidtion.
|
||||
LOG.warn(_("Instance is unexpectedly not found. Ignore."),
|
||||
instance=db_instance)
|
||||
elif vm_state == vm_states.STOPPED:
|
||||
if vm_power_state not in (power_state.NOSTATE,
|
||||
power_state.SHUTDOWN,
|
||||
|
||||
@@ -2776,7 +2776,7 @@ class ComputeTestCase(BaseTestCase):
|
||||
instances = db.instance_get_all(self.context)
|
||||
LOG.info(_("After force-killing instances: %s"), instances)
|
||||
self.assertEqual(len(instances), 1)
|
||||
self.assertEqual(task_states.POWERING_OFF, instances[0]['task_state'])
|
||||
self.assertEqual(instances[0]['task_state'], None)
|
||||
|
||||
def test_add_instance_fault(self):
|
||||
instance = self._create_fake_instance()
|
||||
|
||||
Reference in New Issue
Block a user