summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-12-11 17:45:27 +0000
committerGerrit Code Review <review@openstack.org>2012-12-11 17:45:27 +0000
commit78bbc71bc3a10048e158be6757bf44f2a685458d (patch)
tree7228a0a7d1b15baa0b78456e076ad95e8aecaa7e
parentfa49ec0027e864bbe994818ddb0314e0412e3e58 (diff)
parent2b100e15002fb07c9eeb1497ca11c4c42bab1ba3 (diff)
downloadnova-78bbc71bc3a10048e158be6757bf44f2a685458d.tar.gz
nova-78bbc71bc3a10048e158be6757bf44f2a685458d.tar.xz
nova-78bbc71bc3a10048e158be6757bf44f2a685458d.zip
Merge "Add get_backdoor_port to nova-conductor."
-rw-r--r--nova/conductor/api.py10
-rw-r--r--nova/conductor/manager.py5
-rw-r--r--nova/conductor/rpcapi.py5
-rw-r--r--nova/tests/conductor/test_conductor.py25
4 files changed, 44 insertions, 1 deletions
diff --git a/nova/conductor/api.py b/nova/conductor/api.py
index fe4f6ca98..b9013c4c6 100644
--- a/nova/conductor/api.py
+++ b/nova/conductor/api.py
@@ -16,6 +16,7 @@
from nova.conductor import manager
from nova.conductor import rpcapi
+from nova import exception as exc
from nova.openstack.common import cfg
conductor_opts = [
@@ -76,6 +77,9 @@ class LocalAPI(object):
last_ctr_in, last_ctr_out,
last_refreshed)
+ def get_backdoor_port(self, context, host):
+ raise exc.InvalidRequest
+
class API(object):
"""Conductor API that does updates via RPC to the ConductorManager"""
@@ -121,3 +125,9 @@ class API(object):
context, uuid, mac, start_period,
bw_in, bw_out, last_ctr_in, last_ctr_out,
last_refreshed)
+
+ #NOTE(mtreinish): This doesn't work on multiple conductors without any
+ # topic calculation in conductor_rpcapi. So the host param isn't used
+ # currently.
+ def get_backdoor_port(self, context, host):
+ return self.conductor_rpcapi.get_backdoor_port(context)
diff --git a/nova/conductor/manager.py b/nova/conductor/manager.py
index 4a37b9dfb..796b99360 100644
--- a/nova/conductor/manager.py
+++ b/nova/conductor/manager.py
@@ -41,7 +41,7 @@ datetime_fields = ['launched_at', 'terminated_at']
class ConductorManager(manager.SchedulerDependentManager):
"""Mission: TBD"""
- RPC_API_VERSION = '1.5'
+ RPC_API_VERSION = '1.6'
def __init__(self, *args, **kwargs):
super(ConductorManager, self).__init__(service_name='conductor',
@@ -100,3 +100,6 @@ class ConductorManager(manager.SchedulerDependentManager):
last_refreshed)
usage = self.db.bw_usage_get(context, uuid, start_period, mac)
return jsonutils.to_primitive(usage)
+
+ def get_backdoor_port(self, context):
+ return self.backdoor_port
diff --git a/nova/conductor/rpcapi.py b/nova/conductor/rpcapi.py
index e8a9a2fed..1f38b0ea5 100644
--- a/nova/conductor/rpcapi.py
+++ b/nova/conductor/rpcapi.py
@@ -32,6 +32,7 @@ class ConductorAPI(nova.openstack.common.rpc.proxy.RpcProxy):
1.3 - Added aggregate_host_add and aggregate_host_delete
1.4 - Added migration_get
1.5 - Added bw_usage_update
+ 1.6 - Added get_backdoor_port()
"""
BASE_RPC_API_VERSION = '1.0'
@@ -89,3 +90,7 @@ class ConductorAPI(nova.openstack.common.rpc.proxy.RpcProxy):
last_ctr_in=last_ctr_in, last_ctr_out=last_ctr_out,
last_refreshed=last_refreshed)
return self.call(context, msg, version='1.5')
+
+ def get_backdoor_port(self, context):
+ msg = self.make_msg('get_backdoor_port')
+ return self.call(context, msg, version='1.6')
diff --git a/nova/tests/conductor/test_conductor.py b/nova/tests/conductor/test_conductor.py
index 8805ac648..cace21984 100644
--- a/nova/tests/conductor/test_conductor.py
+++ b/nova/tests/conductor/test_conductor.py
@@ -23,6 +23,7 @@ from nova.conductor import rpcapi as conductor_rpcapi
from nova import context
from nova import db
from nova.db.sqlalchemy import models
+from nova import exception as exc
from nova import notifications
from nova.openstack.common import jsonutils
from nova.openstack.common import timeutils
@@ -168,6 +169,30 @@ class ConductorTestCase(BaseTestCase):
result = self.conductor.bw_usage_update(*update_args)
self.assertEqual(result, 'foo')
+ def test_get_backdoor_port(self):
+ backdoor_port = 59697
+
+ def fake_get_backdoor_port(self, context):
+ return backdoor_port
+
+ if isinstance(self.conductor, conductor_api.API):
+ self.stubs.Set(conductor_manager.ConductorManager,
+ 'get_backdoor_port', fake_get_backdoor_port)
+ port = self.conductor.get_backdoor_port(self.context, 'fake_host')
+ elif isinstance(self.conductor, conductor_api.LocalAPI):
+ try:
+ self.conductor.get_backdoor_port(self.context, 'fake_host')
+ except exc.InvalidRequest:
+ port = backdoor_port
+ else:
+ if isinstance(self.conductor, conductor_rpcapi.ConductorAPI):
+ self.stubs.Set(conductor_manager.ConductorManager,
+ 'get_backdoor_port', fake_get_backdoor_port)
+ self.conductor.backdoor_port = backdoor_port
+ port = self.conductor.get_backdoor_port(self.context)
+
+ self.assertEqual(port, backdoor_port)
+
class ConductorRPCAPITestCase(ConductorTestCase):
"""Conductor RPC API Tests"""