Merge "vm_state:=error on driver exceptions during resize"

This commit is contained in:
Jenkins
2011-12-07 02:39:42 +00:00
committed by Gerrit Code Review

View File

@@ -713,6 +713,31 @@ class ComputeTestCase(BaseTestCase):
self.compute.terminate_instance(self.context, instance['uuid'])
def test_finish_resize_handles_error(self):
"""Make sure we don't leave the instance in RESIZE on error"""
def throw_up(*args, **kwargs):
raise Exception()
def fake(*args, **kwargs):
pass
self.stubs.Set(self.compute.driver, 'finish_migration', throw_up)
self.stubs.Set(self.compute.network_api, 'get_instance_nw_info', fake)
context = self.context.elevated()
instance = self._create_fake_instance()
self.compute.prep_resize(context, instance['uuid'], 1)
migration_ref = db.migration_get_by_instance_and_status(context,
instance['uuid'], 'pre-migrating')
self.assertRaises(Exception, self.compute.finish_resize,
context, instance['uuid'],
int(migration_ref['id']), {})
instance = db.instance_get_by_uuid(context, instance['uuid'])
self.assertEqual(instance['vm_state'], vm_states.ERROR)
self.compute.terminate_instance(self.context, instance['uuid'])
def test_resize_instance_notification(self):
"""Ensure notifications on instance migrate/resize"""
instance = self._create_fake_instance()
@@ -831,9 +856,9 @@ class ComputeTestCase(BaseTestCase):
self.compute.terminate_instance(self.context, instance['uuid'])
def test_resize_instance_handles_migration_error(self):
"""Ensure vm_state is ERROR when MigrationError occurs"""
"""Ensure vm_state is ERROR when error occurs"""
def raise_migration_failure(*args):
raise exception.MigrationError(reason='test failure')
raise Exception(reason='test failure')
self.stubs.Set(self.compute.driver,
'migrate_disk_and_power_off',
raise_migration_failure)
@@ -846,9 +871,8 @@ class ComputeTestCase(BaseTestCase):
self.compute.prep_resize(context, inst_ref['uuid'], 1)
migration_ref = db.migration_get_by_instance_and_status(context,
inst_ref['uuid'], 'pre-migrating')
self.compute.resize_instance(context,
inst_ref['uuid'],
migration_ref['id'])
self.assertRaises(Exception, self.compute.resize_instance,
context, inst_ref['uuid'], migration_ref['id'])
inst_ref = db.instance_get_by_uuid(context, inst_ref['uuid'])
self.assertEqual(inst_ref['vm_state'], vm_states.ERROR)
self.compute.terminate_instance(context, inst_ref['uuid'])