summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavanum Srinivas <davanum@gmail.com>2016-12-22 16:07:51 -0500
committerDavanum Srinivas <davanum@gmail.com>2016-12-22 17:27:40 -0500
commit7a2610d6d61529e653697117e829312b230a001a (patch)
tree777ba1b5428b8e43363ed7fd5403523b998dcfb0
parent8046106ea748f55004fa1f7f8b1ce153870ccc74 (diff)
downloadoslo-rootwrap-7a2610d6d61529e653697117e829312b230a001a.tar.gz
Relax default strict option under python3.x for configparser
Looks like things changed in 3.2: "In previous versions of configparser behaviour matched strict=False." from: https://docs.python.org/3/library/configparser.html Closes-Bug: #1652157 Change-Id: Iffb058b72b14b7535c501d5bf03b8f3576443b34
-rw-r--r--oslo_rootwrap/tests/test_rootwrap.py12
-rw-r--r--oslo_rootwrap/wrapper.py4
2 files changed, 15 insertions, 1 deletions
diff --git a/oslo_rootwrap/tests/test_rootwrap.py b/oslo_rootwrap/tests/test_rootwrap.py
index 200c4f0..fb8f804 100644
--- a/oslo_rootwrap/tests/test_rootwrap.py
+++ b/oslo_rootwrap/tests/test_rootwrap.py
@@ -44,6 +44,18 @@ class RootwrapLoaderTestCase(testtools.TestCase):
self.assertEqual(["/fake/privsep-helper", "--context", "foo"],
filtermatch.get_command(privsep))
+ def test_strict_switched_off_in_configparser(self):
+ temp_dir = self.useFixture(fixtures.TempDir()).path
+ temp_file = os.path.join(temp_dir, 'test.conf')
+ f = open(temp_file, 'w')
+ f.write("""[Filters]
+privsep: PathFilter, privsep-helper, root
+privsep: PathFilter, privsep-helper, root
+""")
+ f.close()
+ filterlist = wrapper.load_filters([temp_dir])
+ self.assertIsNotNone(filterlist)
+
class RootwrapTestCase(testtools.TestCase):
if os.path.exists('/sbin/ip'):
diff --git a/oslo_rootwrap/wrapper.py b/oslo_rootwrap/wrapper.py
index cd7a253..998beae 100644
--- a/oslo_rootwrap/wrapper.py
+++ b/oslo_rootwrap/wrapper.py
@@ -19,6 +19,7 @@ import os
import pwd
import signal
+import six
from six import moves
from oslo_rootwrap import filters
@@ -116,7 +117,8 @@ def load_filters(filters_path):
continue
for filterfile in filter(lambda f: not f.startswith('.'),
os.listdir(filterdir)):
- filterconfig = moves.configparser.RawConfigParser()
+ kwargs = {"strict": False} if six.PY3 else {}
+ filterconfig = moves.configparser.RawConfigParser(**kwargs)
filterconfig.read(os.path.join(filterdir, filterfile))
for (name, value) in filterconfig.items("Filters"):
filterdefinition = [s.strip() for s in value.split(',')]