Using Instance object instead of db call
It would be better to use the Instance object for all the instance related db calls. Blueprint: kilo-objects Change-Id: I673727513b66e8a6bdbbe0c037c32b92710e2cc9
This commit is contained in:
@@ -16,11 +16,11 @@
|
||||
"""Handles ConsoleProxy API requests."""
|
||||
|
||||
from oslo_config import cfg
|
||||
from oslo_utils import uuidutils
|
||||
|
||||
from nova.compute import rpcapi as compute_rpcapi
|
||||
from nova.console import rpcapi as console_rpcapi
|
||||
from nova.db import base
|
||||
from nova import objects
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.import_opt('console_topic', 'nova.console.rpcapi')
|
||||
@@ -51,21 +51,14 @@ class API(base.Base):
|
||||
# They can just do an index later to fetch
|
||||
# console info. I am not sure which is better
|
||||
# here.
|
||||
instance = self._get_instance(context, instance_uuid)
|
||||
topic = self._get_console_topic(context, instance['host'])
|
||||
instance = objects.Instance.get_by_uuid(context, instance_uuid)
|
||||
topic = self._get_console_topic(context, instance.host)
|
||||
server = None
|
||||
if '.' in topic:
|
||||
topic, server = topic.split('.', 1)
|
||||
rpcapi = console_rpcapi.ConsoleAPI(topic=topic, server=server)
|
||||
rpcapi.add_console(context, instance['id'])
|
||||
rpcapi.add_console(context, instance.id)
|
||||
|
||||
def _get_console_topic(self, context, instance_host):
|
||||
rpcapi = compute_rpcapi.ComputeAPI()
|
||||
return rpcapi.get_console_topic(context, instance_host)
|
||||
|
||||
def _get_instance(self, context, instance_uuid):
|
||||
if uuidutils.is_uuid_like(instance_uuid):
|
||||
instance = self.db.instance_get_by_uuid(context, instance_uuid)
|
||||
else:
|
||||
instance = self.db.instance_get(context, instance_uuid)
|
||||
return instance
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
"""Tests For Console proxy."""
|
||||
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
from oslo_utils import importutils
|
||||
|
||||
@@ -25,6 +26,7 @@ from nova.console import rpcapi as console_rpcapi
|
||||
from nova import context
|
||||
from nova import db
|
||||
from nova import exception
|
||||
from nova import objects
|
||||
from nova import test
|
||||
|
||||
CONF = cfg.CONF
|
||||
@@ -146,10 +148,6 @@ class ConsoleAPITestCase(test.TestCase):
|
||||
self.stubs.Set(db, 'console_get_all_by_instance',
|
||||
_fake_db_console_get_all_by_instance)
|
||||
|
||||
def _fake_instance_get_by_uuid(_ctxt, _instance_uuid):
|
||||
return self.fake_instance
|
||||
self.stubs.Set(db, 'instance_get_by_uuid', _fake_instance_get_by_uuid)
|
||||
|
||||
def test_get_consoles(self):
|
||||
console = self.console_api.get_consoles(self.context, self.fake_uuid)
|
||||
self.assertEqual(console, [self.fake_console])
|
||||
@@ -169,18 +167,13 @@ class ConsoleAPITestCase(test.TestCase):
|
||||
self.console_api.delete_console(self.context, self.fake_uuid,
|
||||
'fake_id')
|
||||
|
||||
def test_create_console(self):
|
||||
self.mox.StubOutWithMock(compute_rpcapi.ComputeAPI,
|
||||
'get_console_topic')
|
||||
|
||||
compute_rpcapi.ComputeAPI.get_console_topic(
|
||||
self.context, 'fake_host').AndReturn('compute.fake_host')
|
||||
self.mox.StubOutClassWithMocks(console_rpcapi, 'ConsoleAPI')
|
||||
console_api_mock = console_rpcapi.ConsoleAPI(
|
||||
topic='compute', server='fake_host')
|
||||
console_api_mock.add_console(self.context,
|
||||
self.fake_instance['id'])
|
||||
|
||||
self.mox.ReplayAll()
|
||||
|
||||
@mock.patch.object(compute_rpcapi.ComputeAPI, 'get_console_topic',
|
||||
return_value='compute.fake_host')
|
||||
@mock.patch.object(objects.Instance, 'get_by_uuid')
|
||||
def test_create_console(self, mock_get_instance_by_uuid,
|
||||
mock_get_console_topic):
|
||||
mock_get_instance_by_uuid.return_value = objects.Instance(
|
||||
**self.fake_instance)
|
||||
self.console_api.create_console(self.context, self.fake_uuid)
|
||||
mock_get_console_topic.assert_called_once_with(self.context,
|
||||
'fake_host')
|
||||
|
Reference in New Issue
Block a user