diff options
| author | Russell Bryant <rbryant@redhat.com> | 2012-07-27 11:05:46 -0400 |
|---|---|---|
| committer | Russell Bryant <rbryant@redhat.com> | 2012-07-30 16:58:24 -0400 |
| commit | 0e16133db77b434f8dc5b298ef8166aa05013630 (patch) | |
| tree | 131f602d2a883edd9c37146753357481914d1dfc /nova/tests | |
| parent | 115fea1f9fa0fdb93f344a8ef9dc8ce9ba3cf6e9 (diff) | |
Send a full instance in rebuild_instance.
Change the rebuild_instance method of the compute
rpc API to take a full instance over rpc instead of just
the instance UUID. This cuts down on database access needed
by nova-compute.
This patch also includes fixes for a couple of places that were getting
the instance name using the old instance.name syntax. It must be
instance['name']. These no-db-messaging patches are making it so more
code paths have an instance as a dict (received over rpc) instead of
the SQLAlchemy model (looked up from the db on the compute node).
Part of blueprint no-db-messaging.
Change-Id: I21647a5a5cbf71a2c498f6fee2e4adbe30b8f2ea
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/compute/test_compute.py | 17 | ||||
| -rw-r--r-- | nova/tests/compute/test_rpcapi.py | 6 |
2 files changed, 13 insertions, 10 deletions
diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 848376da1..8ce9212d7 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -526,13 +526,13 @@ class ComputeTestCase(BaseTestCase): def test_rebuild(self): """Ensure instance can be rebuilt""" - instance = self._create_fake_instance() + instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] image_ref = instance['image_ref'] self.compute.run_instance(self.context, instance_uuid) - self.compute.rebuild_instance(self.context, instance_uuid, - image_ref, image_ref) + self.compute.rebuild_instance(self.context, image_ref, image_ref, + instance=instance) self.compute.terminate_instance(self.context, instance_uuid) def test_rebuild_launch_time(self): @@ -540,14 +540,14 @@ class ComputeTestCase(BaseTestCase): old_time = datetime.datetime(2012, 4, 1) cur_time = datetime.datetime(2012, 12, 21, 12, 21) timeutils.set_time_override(old_time) - instance = self._create_fake_instance() + instance = jsonutils.to_primitive(self._create_fake_instance()) instance_uuid = instance['uuid'] image_ref = instance['image_ref'] self.compute.run_instance(self.context, instance_uuid) timeutils.set_time_override(cur_time) - self.compute.rebuild_instance(self.context, instance_uuid, - image_ref, image_ref) + self.compute.rebuild_instance(self.context, image_ref, image_ref, + instance=instance) instance = db.instance_get_by_uuid(self.context, instance_uuid) self.assertEquals(cur_time, instance['launched_at']) self.compute.terminate_instance(self.context, instance_uuid) @@ -1143,7 +1143,10 @@ class ComputeTestCase(BaseTestCase): password = "new_password" - self.compute._rebuild_instance(self.context, inst_ref['uuid'], + instance = db.instance_get_by_uuid(self.context, inst_ref['uuid']) + + self.compute._rebuild_instance(self.context.elevated(), + jsonutils.to_primitive(instance), image_ref, new_image_ref, dict(new_pass=password)) instance = db.instance_get_by_uuid(self.context, inst_ref['uuid']) diff --git a/nova/tests/compute/test_rpcapi.py b/nova/tests/compute/test_rpcapi.py index 8620f81be..79b33f25d 100644 --- a/nova/tests/compute/test_rpcapi.py +++ b/nova/tests/compute/test_rpcapi.py @@ -57,8 +57,8 @@ class ComputeRpcAPITestCase(test.TestCase): 'inject_file', 'inject_network_info', 'pause_instance', 'post_live_migration_at_destination', 'power_off_instance', 'power_on_instance', 'pre_live_migration', 'reboot_instance', - 'start_instance', 'stop_instance', 'suspend_instance', - 'unpause_instance' + 'rebuild_instance', 'start_instance', 'stop_instance', + 'suspend_instance', 'unpause_instance' ] if 'rpcapi_class' in kwargs: @@ -235,7 +235,7 @@ class ComputeRpcAPITestCase(test.TestCase): self._test_compute_api('rebuild_instance', 'cast', instance=self.fake_instance, new_pass='pass', injected_files='files', image_ref='ref', - orig_image_ref='orig_ref') + orig_image_ref='orig_ref', version='1.24') def refresh_provider_fw_rules(self): self._test_compute_api('refresh_provider_fw_rules', 'cast', |
