Merge "vm_state:=error on driver exceptions during resize"
This commit is contained in:
@@ -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'])
|
||||
|
Reference in New Issue
Block a user