Make bind host configurable

* fixes bug 945868

Change-Id: Ib33dc9ad1878a9215c1a1ab10814fa7d0905cbdb
This commit is contained in:
Devin Carlen
2012-03-03 14:01:46 -08:00
parent fe6414c8c1
commit d0429ea9b8
4 changed files with 12 additions and 7 deletions

View File

@@ -25,9 +25,9 @@ from keystone.common import wsgi
CONF = config.CONF
def create_server(conf, name, port):
def create_server(conf, name, host, port):
app = deploy.loadapp('config:%s' % conf, name=name)
return wsgi.Server(app, port)
return wsgi.Server(app, host=host, port=port)
def serve(*servers):
@@ -65,8 +65,10 @@ if __name__ == '__main__':
servers = []
servers.append(create_server(CONF.config_file[0],
'admin',
options['bind_host'],
int(options['admin_port'])))
servers.append(create_server(CONF.config_file[0],
'main',
options['bind_host'],
int(options['public_port'])))
serve(*servers)

View File

@@ -1,4 +1,5 @@
[DEFAULT]
bind_host = 0.0.0.0
public_port = 5000
admin_port = 35357
admin_token = ADMIN

View File

@@ -51,20 +51,21 @@ class WritableLogger(object):
class Server(object):
"""Server class to manage multiple WSGI sockets and applications."""
def __init__(self, application, port, threads=1000):
def __init__(self, application, host=None, port=None, threads=1000):
self.application = application
self.port = port
self.host = host or '0.0.0.0'
self.port = port or 0
self.pool = eventlet.GreenPool(threads)
self.socket_info = {}
self.greenthread = None
def start(self, host='0.0.0.0', key=None, backlog=128):
def start(self, key=None, backlog=128):
"""Run a WSGI server with the given application."""
logging.debug('Starting %(arg0)s on %(host)s:%(port)s' %
{'arg0': sys.argv[0],
'host': host,
'host': self.host,
'port': self.port})
socket = eventlet.listen((host, self.port), backlog=backlog)
socket = eventlet.listen((self.host, self.port), backlog=backlog)
self.greenthread = self.pool.spawn(self._run, self.application, socket)
if key:
self.socket_info[key] = socket.getsockname()

View File

@@ -139,6 +139,7 @@ CONF = CommonConfig(project='keystone')
register_str('admin_token', default='ADMIN')
register_str('bind_host', default='0.0.0.0')
register_str('compute_port')
register_str('admin_port')
register_str('public_port')