summaryrefslogtreecommitdiffstats
path: root/nova/wsgi.py
diff options
context:
space:
mode:
authorDavanum Srinivas <dims@linux.vnet.ibm.com>2013-01-09 11:41:18 -0500
committerDavanum Srinivas <dims@linux.vnet.ibm.com>2013-01-09 11:43:47 -0500
commit3e35f10d42aa474d34152a95ba504261c386b9d2 (patch)
tree65e32823cdc0806ea631d6440f98c0a11c5e3a3c /nova/wsgi.py
parent8b83990c12e4dc03aa599dd5e68ce91a9cab4eb7 (diff)
downloadnova-3e35f10d42aa474d34152a95ba504261c386b9d2.tar.gz
nova-3e35f10d42aa474d34152a95ba504261c386b9d2.tar.xz
nova-3e35f10d42aa474d34152a95ba504261c386b9d2.zip
Enhance wsgi to listen on ipv6 address
* Check if the hostname is ipv6 and set the family appropriately * Add test case for wsgi.Server and service.WSGIService Change-Id: I6edd467467fa3d623d62e146750b3a6c42d8833c
Diffstat (limited to 'nova/wsgi.py')
-rw-r--r--nova/wsgi.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/nova/wsgi.py b/nova/wsgi.py
index e7e731523..c103526da 100644
--- a/nova/wsgi.py
+++ b/nova/wsgi.py
@@ -20,6 +20,7 @@
"""Utility methods for working with WSGI servers."""
import os.path
+import socket
import sys
import eventlet
@@ -82,8 +83,14 @@ class Server(object):
raise exception.InvalidInput(
reason='The backlog must be more than 1')
- self._socket = eventlet.listen((host, port), backlog=backlog)
- (self.host, self.port) = self._socket.getsockname()
+ try:
+ socket.inet_pton(socket.AF_INET6, host)
+ family = socket.AF_INET6
+ except Exception:
+ family = socket.AF_INET
+
+ self._socket = eventlet.listen((host, port), family, backlog=backlog)
+ (self.host, self.port) = self._socket.getsockname()[0:2]
LOG.info(_("%(name)s listening on %(host)s:%(port)s") % self.__dict__)
def start(self):