Add async param to local conductor live_migrate_instance
A new async param was added to the RPC version of live_migrate_instance in the conductor but it was missed on the local conductor API. This adds that parameter and adds a unit test that uses the parameter. Change-Id: I7c44a8fc72ba9afbb67269b0bc7ad59eb9b1580e Closes-Bug: #1604475
This commit is contained in:
parent
a147215196
commit
a7f83fc6ce
|
@ -77,11 +77,15 @@ class LocalComputeTaskAPI(object):
|
|||
|
||||
def live_migrate_instance(self, context, instance, host_name,
|
||||
block_migration, disk_over_commit,
|
||||
request_spec=None):
|
||||
request_spec=None, async=False):
|
||||
scheduler_hint = {'host': host_name}
|
||||
self._manager.live_migrate_instance(context, instance, scheduler_hint,
|
||||
block_migration, disk_over_commit,
|
||||
request_spec)
|
||||
if async:
|
||||
wrap = lambda *args: utils.spawn_n(*args)
|
||||
else:
|
||||
wrap = lambda *args: args[0](*args[1:])
|
||||
|
||||
wrap(self._manager.live_migrate_instance, context, instance,
|
||||
scheduler_hint, block_migration, disk_over_commit, request_spec)
|
||||
|
||||
def build_instances(self, context, instances, image,
|
||||
filter_properties, admin_password, injected_files,
|
||||
|
|
|
@ -1912,7 +1912,32 @@ class ConductorLocalComputeTaskAPITestCase(ConductorTaskAPITestCase):
|
|||
'_build_live_migrate_task',
|
||||
return_value=task) as mock_build_task:
|
||||
self.conductor.live_migrate_instance(self.context, inst_obj,
|
||||
'destination', 'block_migration', 'disk_over_commit')
|
||||
'destination', 'block_migration', 'disk_over_commit',
|
||||
async=False)
|
||||
mock_build_task.assert_called_once_with(self.context, inst_obj,
|
||||
'destination',
|
||||
'block_migration',
|
||||
'disk_over_commit',
|
||||
migration, None)
|
||||
task.execute.assert_called_once()
|
||||
self.assertEqual('accepted', migration.status)
|
||||
self.assertEqual('destination', migration.dest_compute)
|
||||
self.assertEqual(inst_obj.host, migration.source_compute)
|
||||
|
||||
@mock.patch('nova.objects.Migration')
|
||||
def test_live_migrate_async(self, migobj):
|
||||
inst = fake_instance.fake_db_instance()
|
||||
inst_obj = objects.Instance._from_db_object(
|
||||
self.context, objects.Instance(), inst, [])
|
||||
|
||||
migration = migobj()
|
||||
task = mock.MagicMock()
|
||||
with mock.patch.object(self.conductor_manager,
|
||||
'_build_live_migrate_task',
|
||||
return_value=task) as mock_build_task:
|
||||
self.conductor.live_migrate_instance(self.context, inst_obj,
|
||||
'destination', 'block_migration', 'disk_over_commit',
|
||||
async=True)
|
||||
mock_build_task.assert_called_once_with(self.context, inst_obj,
|
||||
'destination',
|
||||
'block_migration',
|
||||
|
|
Loading…
Reference in New Issue