From: YAMAMOTO Takashi Date: Tue, 9 Sep 2014 03:20:23 +0000 (+0900) Subject: iptables_manager: Fix get_binary_name for eventlet X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=2c5b6391c06f20959a86ad27950e30547f9559ac;p=openstack-build%2Fneutron-build.git iptables_manager: Fix get_binary_name for eventlet The inspect trick used by get_binary_name does not work for eventlet non-main threads. It's actually the case for ofagent and in that case it yields something like "greenthread.py", which is not desirable because this module assumes it different for each programs. This commit fixes the problem by switching to use sys.argv. Closes-Bug: #1367075 Change-Id: I8e765882c58d9991a37f0bbb52cdccc406e287bd --- diff --git a/neutron/agent/linux/iptables_manager.py b/neutron/agent/linux/iptables_manager.py index c9a2b894b..11b275d3d 100644 --- a/neutron/agent/linux/iptables_manager.py +++ b/neutron/agent/linux/iptables_manager.py @@ -18,9 +18,9 @@ """Implements iptables rules using linux utilities.""" -import inspect import os import re +import sys from oslo.config import cfg from oslo.utils import excutils @@ -42,7 +42,7 @@ LOG = logging.getLogger(__name__) # (max_chain_name_length - len('-POSTROUTING') == 16) def get_binary_name(): """Grab the name of the binary we're running in.""" - return os.path.basename(inspect.stack()[-1][1])[:16] + return os.path.basename(sys.argv[0])[:16] binary_name = get_binary_name() diff --git a/neutron/tests/unit/test_iptables_manager.py b/neutron/tests/unit/test_iptables_manager.py index 54380401d..e96309fec 100644 --- a/neutron/tests/unit/test_iptables_manager.py +++ b/neutron/tests/unit/test_iptables_manager.py @@ -13,8 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import inspect import os +import sys import mock from oslo.config import cfg @@ -190,8 +190,8 @@ class IptablesManagerStateFulTestCase(base.BaseTestCase): self.execute = mock.patch.object(self.iptables, "execute").start() def test_binary_name(self): - self.assertEqual(iptables_manager.binary_name, - os.path.basename(inspect.stack()[-1][1])[:16]) + expected = os.path.basename(sys.argv[0])[:16] + self.assertEqual(expected, iptables_manager.binary_name) def test_get_chain_name(self): name = '0123456789' * 5