summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-05-31 04:02:58 +0000
committerGerrit Code Review <review@openstack.org>2013-05-31 04:02:58 +0000
commit447bc401688bca9fd611ffc9e51553fceba27407 (patch)
treeaccd36a7878f018430d4a6646bd35f5e9cb3e3a2
parentea91fc91a7a2034c5e34f8c26e69f14700be4525 (diff)
parent489677319b416351d73044ae1336ff2a2112340e (diff)
Merge "Disable eventlet monkey-patching of DNS"
-rw-r--r--keystone/common/wsgi_server.py13
-rw-r--r--keystone/test.py5
2 files changed, 13 insertions, 5 deletions
diff --git a/keystone/common/wsgi_server.py b/keystone/common/wsgi_server.py
index f3c22907..d8d2512f 100644
--- a/keystone/common/wsgi_server.py
+++ b/keystone/common/wsgi_server.py
@@ -23,6 +23,19 @@ import socket
import ssl
import sys
+# NOTE(mikal): All of this is because if dnspython is present in your
+# environment then eventlet monkeypatches socket.getaddrinfo() with an
+# implementation which doesn't work for IPv6. What we're checking here is
+# that the magic environment variable was set when the import happened.
+if ('eventlet' in sys.modules and
+ os.environ.get('EVENTLET_NO_GREENDNS', '').lower() != 'yes'):
+ raise ImportError('eventlet imported before '
+ 'keystone.common.wsgi_server '
+ '(EVENTLET_NO_GREENDNS env var set to %s)'
+ % os.environ.get('EVENTLET_NO_GREENDNS'))
+
+os.environ['EVENTLET_NO_GREENDNS'] = 'yes'
+
import eventlet
import eventlet.wsgi
diff --git a/keystone/test.py b/keystone/test.py
index 3cfbd01c..fc5cd1c6 100644
--- a/keystone/test.py
+++ b/keystone/test.py
@@ -375,11 +375,6 @@ class TestCase(NoModule, unittest.TestCase):
@staticmethod
def skip_if_no_ipv6():
-
- # TODO(blk-u): lp 1176204. At this time, eventlet address resolution
- # doesn't support IPv6. Once it does, remove the next line.
- raise nose.exc.SkipTest("Eventlet doesn't support IPv6, lp 1176204")
-
try:
s = socket.socket(socket.AF_INET6)
except socket.error as e: