From 9ea41fc80b46b0c5adbab3ea191b92583feb02e0 Mon Sep 17 00:00:00 2001 From: Jian Wen Date: Fri, 12 Oct 2012 15:52:17 +0800 Subject: Migrate DHCP host info during resize Update instance host to migration_ref['dest_compute'] before update_dhcp to make its DHCP host info will be written in dhcp-hostsfile. Make similiar change in finish_revert_resize. Fixes bug 1065440 Change-Id: I9d3e0ebf8512f98f2943999e7ad95bc58f2bf585 --- nova/compute/manager.py | 9 +++++++-- nova/tests/compute/test_compute.py | 12 ++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'nova') diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 05112536f..7cd54bd75 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -1469,6 +1469,12 @@ class ComputeManager(manager.SchedulerDependentManager): self._notify_about_instance_usage( context, instance, "resize.revert.start") + instance = self._instance_update(context, + instance['uuid'], + host=migration_ref['source_compute']) + self.network_api.setup_networks_on_host(context, instance, + migration_ref['source_compute']) + old_instance_type = migration_ref['old_instance_type_id'] instance_type = instance_types.get_instance_type(old_instance_type) @@ -1491,7 +1497,6 @@ class ComputeManager(manager.SchedulerDependentManager): self._instance_update(context, instance['uuid'], memory_mb=instance_type['memory_mb'], - host=migration_ref['source_compute'], vcpus=instance_type['vcpus'], root_gb=instance_type['root_gb'], ephemeral_gb=instance_type['ephemeral_gb'], @@ -1619,6 +1624,7 @@ class ComputeManager(manager.SchedulerDependentManager): {'status': 'post-migrating'}) self._instance_update(context, instance['uuid'], + host=migration_ref['dest_compute'], task_state=task_states.RESIZE_MIGRATED, expected_task_state=task_states. RESIZE_MIGRATING) @@ -1681,7 +1687,6 @@ class ComputeManager(manager.SchedulerDependentManager): instance = self._instance_update(context, instance['uuid'], vm_state=vm_states.RESIZED, - host=migration_ref['dest_compute'], launched_at=timeutils.utcnow(), task_state=None, expected_task_state=task_states. diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index cad27b544..d48edc376 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -1822,6 +1822,9 @@ class ComputeTestCase(BaseTestCase): self.compute.resize_instance(context, instance=instance, migration_id=migration_ref['id'], image={}) + inst = db.instance_get_by_uuid(context, instance['uuid']) + self.assertEqual(migration_ref['dest_compute'], inst['host']) + self.compute.terminate_instance(context, instance=jsonutils.to_primitive(instance)) @@ -1882,6 +1885,15 @@ class ComputeTestCase(BaseTestCase): self.compute.revert_resize(context, migration_id=migration_ref['id'], instance=rpcinst, reservations=reservations) + + def fake_setup_networks_on_host(cls, ctxt, instance, host): + self.assertEqual(host, migration_ref['source_compute']) + inst = db.instance_get_by_uuid(ctxt, instance['uuid']) + self.assertEqual(host, inst['host']) + + self.stubs.Set(network_api.API, 'setup_networks_on_host', + fake_setup_networks_on_host) + self.compute.finish_revert_resize(context, migration_id=migration_ref['id'], instance=rpcinst, reservations=reservations) -- cgit