Merge "Abort operation for live migration"

This commit is contained in:
Jenkins
2017-07-13 09:05:56 +00:00
committed by Gerrit Code Review
11 changed files with 141 additions and 13 deletions

View File

@@ -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")

View File

@@ -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:

View File

@@ -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):