summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-12-12 20:48:58 +0000
committerGerrit Code Review <review@openstack.org>2012-12-12 20:48:58 +0000
commit91c9631bd3e3a0c72b36840ddf90e1db483f9a14 (patch)
treeba43b8d8757de7e3063566de9ac02bc5b2d4b090
parente6c576d9b08e96b0dcd6b630eefa84fa1bec9f16 (diff)
parent1438ac6107865f1440a6d6aea82c602f84898203 (diff)
Merge "Make wsgi.Server comply with service.Launcher interface"
-rw-r--r--openstack/common/wsgi.py19
-rw-r--r--tests/unit/test_wsgi.py6
2 files changed, 15 insertions, 10 deletions
diff --git a/openstack/common/wsgi.py b/openstack/common/wsgi.py
index 60b14ef..f52fca0 100644
--- a/openstack/common/wsgi.py
+++ b/openstack/common/wsgi.py
@@ -55,27 +55,32 @@ class Service(service.Service):
Launcher classes in service.py.
"""
- def __init__(self, threads=1000):
+ def __init__(self, application, port,
+ host='0.0.0.0', backlog=128, threads=1000):
+ self.application = application
+ self._port = port
+ self._host = host
+ self.backlog = backlog
super(Service, self).__init__(threads)
- def start(self, application, port, host='0.0.0.0', backlog=128):
+ def start(self):
"""Start serving this service using the provided server instance.
:returns: None
"""
super(Service, self).start()
- socket = eventlet.listen((host, port), backlog=backlog)
- (self._host, self._port) = socket.getsockname()
- self.tg.add_thread(self._run, application, socket)
+ self._socket = eventlet.listen((self._host, self._port),
+ backlog=self.backlog)
+ self.tg.add_thread(self._run, self.application, self._socket)
@property
def host(self):
- return self._host
+ return self._socket.getsockname()[0] if self._socket else self._host
@property
def port(self):
- return self._port
+ return self._socket.getsockname()[1] if self._socket else self._port
def stop(self):
"""Stop serving this API.
diff --git a/tests/unit/test_wsgi.py b/tests/unit/test_wsgi.py
index 25c0dcf..07c85d5 100644
--- a/tests/unit/test_wsgi.py
+++ b/tests/unit/test_wsgi.py
@@ -449,14 +449,14 @@ class ServerTest(unittest.TestCase):
class WSGIServerTest(unittest.TestCase):
def test_pool(self):
- server = wsgi.Service()
+ server = wsgi.Service('fake', 9000)
self.assertTrue(server.tg)
self.assertTrue(server.tg.pool)
self.assertEqual(server.tg.pool.free(), 1000)
def test_start_random_port(self):
- server = wsgi.Service()
- server.start("test_random_port", 0)
+ server = wsgi.Service('test_random_port', 0)
+ server.start()
self.assertEqual("0.0.0.0", server.host)
self.assertNotEqual(0, server.port)
server.stop()