diff --git a/nova/__init__.py b/nova/__init__.py index b8044faecee0..21403ab570ac 100644 --- a/nova/__init__.py +++ b/nova/__init__.py @@ -22,3 +22,9 @@ :platform: Unix :synopsis: Infrastructure-as-a-Service Cloud platform. """ + +import os + +os.environ['EVENTLET_NO_GREENDNS'] = 'yes' + +import eventlet # noqa diff --git a/nova/cmd/__init__.py b/nova/cmd/__init__.py index 5f1129d9c11b..d1e331c39d63 100644 --- a/nova/cmd/__init__.py +++ b/nova/cmd/__init__.py @@ -13,27 +13,6 @@ # 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 -import traceback - -# 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. -# NOTE(dims): Prevent this code from kicking in under docs generation -# as it leads to spurious errors/warning. -stack = traceback.extract_stack() -if ('eventlet' in sys.modules and - os.environ.get('EVENTLET_NO_GREENDNS', '').lower() != 'yes' and - (len(stack) < 2 or 'sphinx' not in stack[-2][0])): - 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 from nova import debugger diff --git a/nova/tests/functional/__init__.py b/nova/tests/functional/__init__.py index d34fc4925abe..e74717f867e1 100644 --- a/nova/tests/functional/__init__.py +++ b/nova/tests/functional/__init__.py @@ -20,28 +20,6 @@ :platform: Unix """ -# TODO(mikal): move eventlet imports to nova.__init__ once we move to PBR -import os -import sys -import traceback - - -# 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. -# NOTE(dims): Prevent this code from kicking in under docs generation -# as it leads to spurious errors/warning. -stack = traceback.extract_stack() -if ('eventlet' in sys.modules and - os.environ.get('EVENTLET_NO_GREENDNS', '').lower() != 'yes' and - (len(stack) < 2 or 'sphinx' not in stack[-2][0])): - 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) diff --git a/nova/tests/unit/__init__.py b/nova/tests/unit/__init__.py index 31822c15169c..6446a8a733ce 100644 --- a/nova/tests/unit/__init__.py +++ b/nova/tests/unit/__init__.py @@ -22,28 +22,6 @@ :platform: Unix """ -# TODO(mikal): move eventlet imports to nova.__init__ once we move to PBR -import os -import sys -import traceback - - -# 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. -# NOTE(dims): Prevent this code from kicking in under docs generation -# as it leads to spurious errors/warning. -stack = traceback.extract_stack() -if ('eventlet' in sys.modules and - os.environ.get('EVENTLET_NO_GREENDNS', '').lower() != 'yes' and - (len(stack) < 2 or 'sphinx' not in stack[-2][0])): - 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)