summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/cmd/__init__.py17
-rw-r--r--nova/tests/__init__.py20
2 files changed, 37 insertions, 0 deletions
diff --git a/nova/cmd/__init__.py b/nova/cmd/__init__.py
index cc641efc0..9ee46ea44 100644
--- a/nova/cmd/__init__.py
+++ b/nova/cmd/__init__.py
@@ -13,7 +13,24 @@
# License for the specific language governing permissions and limitations
# under the License.
+# TODO(mikal): move eventlet imports to nova.__init__ once we move to PBR
+import os
+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 nova/cmd/__init__ '
+ '(env var set to %s)'
+ % os.environ.get('EVENTLET_NO_GREENDNS'))
+
+os.environ['EVENTLET_NO_GREENDNS'] = 'yes'
+
import eventlet
+
eventlet.monkey_patch(os=False)
import gettext
diff --git a/nova/tests/__init__.py b/nova/tests/__init__.py
index 7109e000f..c9e402e19 100644
--- a/nova/tests/__init__.py
+++ b/nova/tests/__init__.py
@@ -24,6 +24,26 @@
:platform: Unix
"""
+# TODO(mikal): move eventlet imports to nova.__init__ once we move to PBR
+import os
+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 nova/cmd/__init__ '
+ '(env var set to %s)'
+ % os.environ.get('EVENTLET_NO_GREENDNS'))
+
+os.environ['EVENTLET_NO_GREENDNS'] = 'yes'
+
+import eventlet
+
+eventlet.monkey_patch(os=False)
+
# See http://code.google.com/p/python-nose/issues/detail?id=373
# The code below enables nosetests to work with i18n _() blocks
import __builtin__