From 29ec93d99d71f4abd689d97c0448a85c7e24c809 Mon Sep 17 00:00:00 2001 From: jichenjc Date: Wed, 7 Oct 2015 11:41:18 +0800 Subject: [PATCH] Use instance object instead of db record make console manager use object of instance instead of db record in the add_console method also, updated unit test of related usage from db record to object. Change-Id: I7ff21e35f584bde2ece6ccda71f1fa93ff2cfff7 --- nova/console/manager.py | 11 ++++---- nova/tests/unit/console/test_console.py | 34 +++++++++++++++---------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/nova/console/manager.py b/nova/console/manager.py index b4a9f1fc1e..a467dc1a5e 100644 --- a/nova/console/manager.py +++ b/nova/console/manager.py @@ -24,6 +24,7 @@ import nova.conf from nova import exception from nova.i18n import _LI from nova import manager +from nova import objects from nova import utils @@ -58,20 +59,20 @@ class ConsoleProxyManager(manager.Manager): self.driver.init_host() def add_console(self, context, instance_id): - instance = self.db.instance_get(context, instance_id) - host = instance['host'] - name = instance['name'] + instance = objects.Instance.get_by_id(context, instance_id) + host = instance.host + name = instance.name pool = self._get_pool_for_instance_host(context, host) try: console = self.db.console_get_by_pool_instance(context, pool['id'], - instance['uuid']) + instance.uuid) except exception.NotFound: LOG.debug('Adding console', instance=instance) password = utils.generate_password(8) port = self.driver.get_port(context) console_data = {'instance_name': name, - 'instance_uuid': instance['uuid'], + 'instance_uuid': instance.uuid, 'password': password, 'pool_id': pool['id']} if port: diff --git a/nova/tests/unit/console/test_console.py b/nova/tests/unit/console/test_console.py index 8101984c9c..ce48a3ba25 100644 --- a/nova/tests/unit/console/test_console.py +++ b/nova/tests/unit/console/test_console.py @@ -27,6 +27,7 @@ from nova import db from nova import exception from nova import objects from nova import test +from nova.tests.unit import fake_instance CONF = nova.conf.CONF @@ -62,7 +63,7 @@ class ConsoleTestCase(test.TestCase): inst['project_id'] = self.project_id inst['instance_type_id'] = 1 inst['ami_launch_index'] = 0 - return db.instance_create(self.context, inst) + return fake_instance.fake_instance_obj(self.context, **inst) @mock.patch.object(compute_rpcapi.ComputeAPI, 'get_console_pool_info') def test_get_pool_for_instance_host(self, mock_get): @@ -101,40 +102,45 @@ class ConsoleTestCase(test.TestCase): self.assertEqual(pool['id'], new_pool['id']) @mock.patch.object(compute_rpcapi.ComputeAPI, 'get_console_pool_info') - def test_add_console(self, mock_get): + @mock.patch('nova.objects.instance.Instance.get_by_id') + def test_add_console(self, mock_id, mock_get): mock_get.return_value = self.pool_info + instance = self._create_instance() - self.console.add_console(self.context, instance['id']) - instance = db.instance_get(self.context, instance['id']) + mock_id.return_value = instance + self.console.add_console(self.context, instance.id) pool = db.console_pool_get_by_host_type(self.context, - instance['host'], self.console.host, + instance.host, self.console.host, self.console.driver.console_type) console_instances = [con['instance_uuid'] for con in pool['consoles']] - self.assertIn(instance['uuid'], console_instances) - db.instance_destroy(self.context, instance['uuid']) + self.assertIn(instance.uuid, console_instances) @mock.patch.object(compute_rpcapi.ComputeAPI, 'get_console_pool_info') - def test_add_console_does_not_duplicate(self, mock_get): + @mock.patch('nova.objects.instance.Instance.get_by_id') + def test_add_console_does_not_duplicate(self, mock_id, mock_get): mock_get.return_value = self.pool_info + instance = self._create_instance() - cons1 = self.console.add_console(self.context, instance['id']) - cons2 = self.console.add_console(self.context, instance['id']) + mock_id.return_value = instance + cons1 = self.console.add_console(self.context, instance.id) + cons2 = self.console.add_console(self.context, instance.id) self.assertEqual(cons1, cons2) - db.instance_destroy(self.context, instance['uuid']) @mock.patch.object(compute_rpcapi.ComputeAPI, 'get_console_pool_info') - def test_remove_console(self, mock_get): + @mock.patch('nova.objects.instance.Instance.get_by_id') + def test_remove_console(self, mock_id, mock_get): mock_get.return_value = self.pool_info + instance = self._create_instance() - console_id = self.console.add_console(self.context, instance['id']) + mock_id.return_value = instance + console_id = self.console.add_console(self.context, instance.id) self.console.remove_console(self.context, console_id) self.assertRaises(exception.NotFound, db.console_get, self.context, console_id) - db.instance_destroy(self.context, instance['uuid']) class ConsoleAPITestCase(test.NoDBTestCase):