From 37e2d938a678bf5bc2c3a7ae7d605abfbcbdbe6f Mon Sep 17 00:00:00 2001 From: Andrew Laski Date: Thu, 11 Apr 2013 20:56:53 -0400 Subject: [PATCH] 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/test_db_api.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py index 93685c35..0af6ed14 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')