From 231964f76532dac66289448dba6b035594010d4c Mon Sep 17 00:00:00 2001 From: Andrew Laski Date: Thu, 11 Apr 2013 20:56:53 -0400 Subject: Add option to exclude joins from instance_get_by_uuid Some callers of instance_get_by_uuid do not need the data that it joins by default. This allows the caller the choice of getting it or not. Specifically in this case the _sync_power_state periodic task is pulling it unnecessarily. Change-Id: I48cc2ea1de993b87ce6f96f4877c8d8513f507e2 --- nova/tests/compute/test_compute.py | 3 ++- nova/tests/test_db_api.py | 39 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) (limited to 'nova/tests') diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 1b95ea365..0d8431184 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -3813,7 +3813,8 @@ class ComputeTestCase(BaseTestCase): 'instance_uuid': instance['uuid'], 'status': None}) - def fake_instance_get_by_uuid(context, instance_uuid): + def fake_instance_get_by_uuid(context, instance_uuid, + cols_to_join=None): # raise InstanceNotFound exception for uuid 'noexist' if instance_uuid == 'noexist': raise exception.InstanceNotFound(instance_id=instance_uuid) diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py index 93685c359..0af6ed143 100644 --- a/nova/tests/test_db_api.py +++ b/nova/tests/test_db_api.py @@ -204,6 +204,45 @@ class DbApiTestCase(DbTestCase): {'display_name': u'test'}) self.assertEqual(1, len(result)) + def test_instance_get_by_uuid(self): + inst = self.create_instances_with_args() + fake_meta, fake_sys = self.create_metadata_for_instance(inst['uuid']) + result = db.instance_get_by_uuid(self.context, inst['uuid']) + meta = utils.metadata_to_dict(result['metadata']) + self.assertEqual(meta, fake_meta) + sys_meta = utils.metadata_to_dict(result['system_metadata']) + self.assertEqual(sys_meta, fake_sys) + + def test_instance_get_by_uuid_join_empty(self): + inst = self.create_instances_with_args() + fake_meta, fake_sys = self.create_metadata_for_instance(inst['uuid']) + result = db.instance_get_by_uuid(self.context, inst['uuid'], + columns_to_join=[]) + meta = utils.metadata_to_dict(result['metadata']) + self.assertEqual(meta, {}) + sys_meta = utils.metadata_to_dict(result['system_metadata']) + self.assertEqual(sys_meta, {}) + + def test_instance_get_by_uuid_join_meta(self): + inst = self.create_instances_with_args() + fake_meta, fake_sys = self.create_metadata_for_instance(inst['uuid']) + result = db.instance_get_by_uuid(self.context, inst['uuid'], + columns_to_join=['metadata']) + meta = utils.metadata_to_dict(result['metadata']) + self.assertEqual(meta, fake_meta) + sys_meta = utils.metadata_to_dict(result['system_metadata']) + self.assertEqual(sys_meta, {}) + + def test_instance_get_by_uuid_join_sys_meta(self): + inst = self.create_instances_with_args() + fake_meta, fake_sys = self.create_metadata_for_instance(inst['uuid']) + result = db.instance_get_by_uuid(self.context, inst['uuid'], + columns_to_join=['system_metadata']) + meta = utils.metadata_to_dict(result['metadata']) + self.assertEqual(meta, {}) + sys_meta = utils.metadata_to_dict(result['system_metadata']) + self.assertEqual(sys_meta, fake_sys) + def test_instance_get_all_by_filters_deleted(self): inst1 = self.create_instances_with_args() inst2 = self.create_instances_with_args(reservation_id='b') -- cgit