Merge "Abort operation for live migration"
This commit is contained in:
@@ -238,3 +238,18 @@ class TestMigration(base.TestCase):
|
||||
]
|
||||
self.m_helper.live_migrate_instance.mock_calls == expected
|
||||
self.assertEqual(2, self.m_helper.live_migrate_instance.call_count)
|
||||
|
||||
def test_abort_live_migrate(self):
|
||||
migration = mock.MagicMock()
|
||||
migration.id = "2"
|
||||
migrations = [migration]
|
||||
self.m_helper.get_running_migration.return_value = migrations
|
||||
self.m_helper.find_instance.return_value = self.INSTANCE_UUID
|
||||
try:
|
||||
self.action.abort()
|
||||
except Exception as exc:
|
||||
self.fail(exc)
|
||||
|
||||
self.m_helper.abort_live_migrate.assert_called_once_with(
|
||||
instance_id=self.INSTANCE_UUID, source="compute1-hostname",
|
||||
destination="compute2-hostname")
|
||||
|
||||
@@ -343,7 +343,6 @@ class TestDefaultWorkFlowEngine(base.DbTestCase):
|
||||
actions.append(action1)
|
||||
actions.append(action2)
|
||||
actions.append(action3)
|
||||
|
||||
self.assertRaises(exception.ActionPlanCancelled,
|
||||
self.engine.execute, actions)
|
||||
try:
|
||||
|
||||
@@ -48,6 +48,12 @@ class TestNovaHelper(base.TestCase):
|
||||
|
||||
return server
|
||||
|
||||
@staticmethod
|
||||
def fake_migration(*args, **kwargs):
|
||||
migration = mock.MagicMock()
|
||||
migration.id = args[0]
|
||||
return migration
|
||||
|
||||
@staticmethod
|
||||
def fake_nova_find_list(nova_util, find=None, list=None):
|
||||
nova_util.nova.servers.get.return_value = find
|
||||
@@ -56,6 +62,13 @@ class TestNovaHelper(base.TestCase):
|
||||
else:
|
||||
nova_util.nova.servers.list.return_value = [list]
|
||||
|
||||
@staticmethod
|
||||
def fake_nova_migration_list(nova_util, list=None):
|
||||
if list is None:
|
||||
nova_util.nova.server_migrations.list.return_value = []
|
||||
else:
|
||||
nova_util.nova.server_migration.list.return_value = [list]
|
||||
|
||||
@mock.patch.object(time, 'sleep', mock.Mock())
|
||||
def test_stop_instance(self, mock_glance, mock_cinder, mock_neutron,
|
||||
mock_nova):
|
||||
@@ -189,6 +202,32 @@ class TestNovaHelper(base.TestCase):
|
||||
self.destination_node, keep_original_image_name=False)
|
||||
self.assertTrue(is_success)
|
||||
|
||||
@mock.patch.object(time, 'sleep', mock.Mock())
|
||||
def test_abort_live_migrate_instance(self, mock_glance, mock_cinder,
|
||||
mock_neutron, mock_nova):
|
||||
nova_util = nova_helper.NovaHelper()
|
||||
server = self.fake_server(self.instance_uuid)
|
||||
setattr(server, 'OS-EXT-SRV-ATTR:host',
|
||||
self.source_node)
|
||||
setattr(server, 'OS-EXT-STS:task_state', None)
|
||||
migration = self.fake_migration(2)
|
||||
self.fake_nova_migration_list(nova_util, list=migration)
|
||||
|
||||
self.fake_nova_find_list(nova_util, find=server, list=server)
|
||||
|
||||
self.assertTrue(nova_util.abort_live_migrate(
|
||||
self.instance_uuid, self.source_node, self.destination_node))
|
||||
|
||||
setattr(server, 'OS-EXT-SRV-ATTR:host', self.destination_node)
|
||||
|
||||
self.assertFalse(nova_util.abort_live_migrate(
|
||||
self.instance_uuid, self.source_node, self.destination_node))
|
||||
|
||||
setattr(server, 'status', 'ERROR')
|
||||
self.assertRaises(Exception, nova_util.abort_live_migrate,
|
||||
(self.instance_uuid, self.source_node,
|
||||
self.destination_node))
|
||||
|
||||
@mock.patch.object(time, 'sleep', mock.Mock())
|
||||
def test_create_image_from_instance(self, mock_glance, mock_cinder,
|
||||
mock_neutron, mock_nova):
|
||||
|
||||
Reference in New Issue
Block a user