summaryrefslogtreecommitdiff
path: root/nova
diff options
context:
space:
mode:
authorSean Mooney <work@seanmooney.info>2022-02-25 11:09:50 +0000
committerSean Mooney <work@seanmooney.info>2022-03-08 16:16:11 +0000
commitfe1ebe69f358cbed62434da3f1537a94390324bb (patch)
tree76edda8d5f390d33959b278a3a02d69216e4d848 /nova
parent22a47b466261f1336d1c2a381a5e0fed3275b622 (diff)
downloadnova-fe1ebe69f358cbed62434da3f1537a94390324bb.tar.gz
reenable greendns in nova.
Back in the days of centos 6 and python 2.6 eventlet greendns monkeypatching broke ipv6. As a result nova has run without greendns monkey patching ever since. This removes that old workaround allowing modern eventlet to use greendns for non blocking dns lookups. Closes-Bug: #1964149 Change-Id: Ia511879d2f5f50a3f63d180258abccf046a7264e
Diffstat (limited to 'nova')
-rw-r--r--nova/monkey_patch.py15
-rw-r--r--nova/tests/functional/test_monkey_patch.py45
2 files changed, 2 insertions, 58 deletions
diff --git a/nova/monkey_patch.py b/nova/monkey_patch.py
index 3c96a433d5..6bcd9017a9 100644
--- a/nova/monkey_patch.py
+++ b/nova/monkey_patch.py
@@ -22,22 +22,11 @@ import os
def _monkey_patch():
- # See https://bugs.launchpad.net/nova/+bug/1164822
- # TODO(mdbooth): This feature was deprecated and removed in eventlet at
- # some point but brought back in version 0.21.0, presumably because some
- # users still required it to work round issues. However, there have been a
- # number of greendns fixes in eventlet since then. Specifically, it looks
- # as though the originally reported IPv6 issue may have been fixed in
- # version 0.24.0. We should remove this when we can confirm that the
- # original issue is fixed.
- # NOTE(artom) eventlet processes environment variables at import-time. We
- # therefore set this here, before importing eventlet, in order to correctly
- # disable greendns.
- os.environ['EVENTLET_NO_GREENDNS'] = 'yes'
-
# NOTE(mdbooth): Anything imported here will not be monkey patched. It is
# important to take care not to import anything here which requires monkey
# patching.
+ # NOTE(artom) eventlet processes environment variables at import-time.
+ # as such any eventlet configuration should happen here if needed.
import eventlet
import sys
diff --git a/nova/tests/functional/test_monkey_patch.py b/nova/tests/functional/test_monkey_patch.py
deleted file mode 100644
index b471d333cf..0000000000
--- a/nova/tests/functional/test_monkey_patch.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2020 Red Hat, Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-# NOTE(artom) This file exists to test eventlet monkeypatching. How and what
-# eventlet monkeypatches can be controlled by environment variables that
-# are processed by eventlet at import-time (for exmaple, EVENTLET_NO_GREENDNS).
-# Nova manages all of this in nova.monkey_patch. Therefore, nova.monkey_patch
-# must be the first thing to import eventlet. As nova.tests.functional.__init__
-# imports nova.monkey_patch, we're OK here.
-
-import socket
-import traceback
-
-from nova import test
-
-
-class TestMonkeyPatch(test.TestCase):
-
- def test_greendns_is_disabled(self):
- """Try to resolve a fake fqdn. If we see greendns mentioned in the
- traceback of the raised exception, it means we've not actually disabled
- greendns. See the TODO and NOTE in nova.monkey_patch to understand why
- greendns needs to be disabled.
- """
- raised = False
- try:
- socket.gethostbyname('goat.fake')
- except Exception:
- tb = traceback.format_exc()
- # NOTE(artom) If we've correctly disabled greendns, we expect the
- # traceback to not contain any reference to it.
- self.assertNotIn('greendns.py', tb)
- raised = True
- self.assertTrue(raised)