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
This commit is contained in:
@@ -24,6 +24,7 @@ import nova.conf
|
|||||||
from nova import exception
|
from nova import exception
|
||||||
from nova.i18n import _LI
|
from nova.i18n import _LI
|
||||||
from nova import manager
|
from nova import manager
|
||||||
|
from nova import objects
|
||||||
from nova import utils
|
from nova import utils
|
||||||
|
|
||||||
|
|
||||||
@@ -58,20 +59,20 @@ class ConsoleProxyManager(manager.Manager):
|
|||||||
self.driver.init_host()
|
self.driver.init_host()
|
||||||
|
|
||||||
def add_console(self, context, instance_id):
|
def add_console(self, context, instance_id):
|
||||||
instance = self.db.instance_get(context, instance_id)
|
instance = objects.Instance.get_by_id(context, instance_id)
|
||||||
host = instance['host']
|
host = instance.host
|
||||||
name = instance['name']
|
name = instance.name
|
||||||
pool = self._get_pool_for_instance_host(context, host)
|
pool = self._get_pool_for_instance_host(context, host)
|
||||||
try:
|
try:
|
||||||
console = self.db.console_get_by_pool_instance(context,
|
console = self.db.console_get_by_pool_instance(context,
|
||||||
pool['id'],
|
pool['id'],
|
||||||
instance['uuid'])
|
instance.uuid)
|
||||||
except exception.NotFound:
|
except exception.NotFound:
|
||||||
LOG.debug('Adding console', instance=instance)
|
LOG.debug('Adding console', instance=instance)
|
||||||
password = utils.generate_password(8)
|
password = utils.generate_password(8)
|
||||||
port = self.driver.get_port(context)
|
port = self.driver.get_port(context)
|
||||||
console_data = {'instance_name': name,
|
console_data = {'instance_name': name,
|
||||||
'instance_uuid': instance['uuid'],
|
'instance_uuid': instance.uuid,
|
||||||
'password': password,
|
'password': password,
|
||||||
'pool_id': pool['id']}
|
'pool_id': pool['id']}
|
||||||
if port:
|
if port:
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ from nova import db
|
|||||||
from nova import exception
|
from nova import exception
|
||||||
from nova import objects
|
from nova import objects
|
||||||
from nova import test
|
from nova import test
|
||||||
|
from nova.tests.unit import fake_instance
|
||||||
|
|
||||||
CONF = nova.conf.CONF
|
CONF = nova.conf.CONF
|
||||||
|
|
||||||
@@ -62,7 +63,7 @@ class ConsoleTestCase(test.TestCase):
|
|||||||
inst['project_id'] = self.project_id
|
inst['project_id'] = self.project_id
|
||||||
inst['instance_type_id'] = 1
|
inst['instance_type_id'] = 1
|
||||||
inst['ami_launch_index'] = 0
|
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')
|
@mock.patch.object(compute_rpcapi.ComputeAPI, 'get_console_pool_info')
|
||||||
def test_get_pool_for_instance_host(self, mock_get):
|
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'])
|
self.assertEqual(pool['id'], new_pool['id'])
|
||||||
|
|
||||||
@mock.patch.object(compute_rpcapi.ComputeAPI, 'get_console_pool_info')
|
@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
|
mock_get.return_value = self.pool_info
|
||||||
|
|
||||||
instance = self._create_instance()
|
instance = self._create_instance()
|
||||||
self.console.add_console(self.context, instance['id'])
|
mock_id.return_value = instance
|
||||||
instance = db.instance_get(self.context, instance['id'])
|
self.console.add_console(self.context, instance.id)
|
||||||
pool = db.console_pool_get_by_host_type(self.context,
|
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)
|
self.console.driver.console_type)
|
||||||
|
|
||||||
console_instances = [con['instance_uuid'] for con in pool['consoles']]
|
console_instances = [con['instance_uuid'] for con in pool['consoles']]
|
||||||
self.assertIn(instance['uuid'], console_instances)
|
self.assertIn(instance.uuid, console_instances)
|
||||||
db.instance_destroy(self.context, instance['uuid'])
|
|
||||||
|
|
||||||
@mock.patch.object(compute_rpcapi.ComputeAPI, 'get_console_pool_info')
|
@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
|
mock_get.return_value = self.pool_info
|
||||||
|
|
||||||
instance = self._create_instance()
|
instance = self._create_instance()
|
||||||
cons1 = self.console.add_console(self.context, instance['id'])
|
mock_id.return_value = instance
|
||||||
cons2 = self.console.add_console(self.context, instance['id'])
|
cons1 = self.console.add_console(self.context, instance.id)
|
||||||
|
cons2 = self.console.add_console(self.context, instance.id)
|
||||||
self.assertEqual(cons1, cons2)
|
self.assertEqual(cons1, cons2)
|
||||||
db.instance_destroy(self.context, instance['uuid'])
|
|
||||||
|
|
||||||
@mock.patch.object(compute_rpcapi.ComputeAPI, 'get_console_pool_info')
|
@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
|
mock_get.return_value = self.pool_info
|
||||||
|
|
||||||
instance = self._create_instance()
|
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.console.remove_console(self.context, console_id)
|
||||||
|
|
||||||
self.assertRaises(exception.NotFound,
|
self.assertRaises(exception.NotFound,
|
||||||
db.console_get,
|
db.console_get,
|
||||||
self.context,
|
self.context,
|
||||||
console_id)
|
console_id)
|
||||||
db.instance_destroy(self.context, instance['uuid'])
|
|
||||||
|
|
||||||
|
|
||||||
class ConsoleAPITestCase(test.NoDBTestCase):
|
class ConsoleAPITestCase(test.NoDBTestCase):
|
||||||
|
|||||||
Reference in New Issue
Block a user