diff options
| -rw-r--r-- | nova/cmd/__init__.py | 17 | ||||
| -rw-r--r-- | nova/tests/__init__.py | 20 |
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__ |
