summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Santa Barbara <justin@fathomdb.com>2011-03-30 09:04:29 -0700
committerJustin Santa Barbara <justin@fathomdb.com>2011-03-30 09:04:29 -0700
commit131b7da40946b12bae59ebcc8f1c3d66d0cb5cff (patch)
tree2df9b4ff4fd88e938cb26a6a241f767c3deafc4a
parent172f0cdc98164179d657213d47f625829594fc3d (diff)
Store socket_info as a dictionary rather than an array
-rw-r--r--nova/service.py14
-rw-r--r--nova/tests/integrated/integrated_helpers.py2
-rw-r--r--nova/wsgi.py7
3 files changed, 12 insertions, 11 deletions
diff --git a/nova/service.py b/nova/service.py
index e399273a0..1405da605 100644
--- a/nova/service.py
+++ b/nova/service.py
@@ -248,11 +248,9 @@ class WsgiService(object):
def wait(self):
self.wsgi_app.wait()
- def get_port(self, api):
- for i in xrange(len(self.apis)):
- if self.apis[i] == api:
- return self.wsgi_app.ports[i]
- return None
+ def get_socket_info(self, api_name):
+ """Returns the (host, port) that an API was started on."""
+ return self.wsgi_app.socket_info[api_name]
class ApiService(WsgiService):
@@ -331,8 +329,10 @@ def _run_wsgi(paste_config_file, apis):
logging.debug(_("App Config: %(api)s\n%(config)r") % locals())
logging.info(_("Running %s API"), api)
app = wsgi.load_paste_app(paste_config_file, api)
- apps.append((app, getattr(FLAGS, "%s_listen_port" % api),
- getattr(FLAGS, "%s_listen" % api)))
+ apps.append((app,
+ getattr(FLAGS, "%s_listen_port" % api),
+ getattr(FLAGS, "%s_listen" % api),
+ api))
if len(apps) == 0:
logging.error(_("No known API applications configured in %s."),
paste_config_file)
diff --git a/nova/tests/integrated/integrated_helpers.py b/nova/tests/integrated/integrated_helpers.py
index 5169dcb2e..14b2e06c6 100644
--- a/nova/tests/integrated/integrated_helpers.py
+++ b/nova/tests/integrated/integrated_helpers.py
@@ -176,7 +176,7 @@ class _IntegratedTestBase(test.TestCase):
self.api_service = api_service
- host, port = api_service.get_port('osapi')
+ host, port = api_service.get_socket_info('osapi')
self.auth_url = 'http://%s:%s/v1.0' % (host, port)
def tearDown(self):
diff --git a/nova/wsgi.py b/nova/wsgi.py
index 54401f998..2487ada22 100644
--- a/nova/wsgi.py
+++ b/nova/wsgi.py
@@ -61,15 +61,16 @@ class Server(object):
def __init__(self, threads=1000):
self.pool = eventlet.GreenPool(threads)
- self.ports = []
+ self.socket_info = {}
- def start(self, application, port, host='0.0.0.0', backlog=128):
+ def start(self, application, port, host='0.0.0.0', key=None, backlog=128):
"""Run a WSGI server with the given application."""
arg0 = sys.argv[0]
logging.audit(_("Starting %(arg0)s on %(host)s:%(port)s") % locals())
socket = eventlet.listen((host, port), backlog=backlog)
self.pool.spawn_n(self._run, application, socket)
- self.ports.append(socket.getsockname())
+ if key:
+ self.socket_info[key] = socket.getsockname()
def wait(self):
"""Wait until all servers have completed running."""