Make config parser case sensitivity in configure-verifier

Options in config file should be case sensitive, some projects
like octavia-tempest-plugin can't set some value as expected:
[load_balancer]
RBAC_test_type = owner_or_admin

Use `conf.optionxform = str` to prevent case transformation[1].

[1] https://docs.python.org/3/library/configparser.html

Change-Id: I34d85b835aaa7a3737577b75ec9e6f2b02f90ead
Closes-Bug: #1877930
This commit is contained in:
Xing Zhang 2020-05-12 15:50:39 +08:00 committed by Andrey Kurilin
parent ab365e9bbb
commit e1ad05c781
4 changed files with 19 additions and 2 deletions

View File

@ -17,6 +17,17 @@ Changelog
.. Release notes for existing releases are MUTABLE! If there is something that .. Release notes for existing releases are MUTABLE! If there is something that
was missed or can be improved, feel free to change it! was missed or can be improved, feel free to change it!
[unreleased]
------------
Fixed
~~~~~
* [verification component] Make config parser case sensitivity in
configure-verifier
`Launchpad-bug #1877930 <https://launchpad.net/bugs/1877930>`_
[3.1.0] - 2020-05-08 [3.1.0] - 2020-05-08
-------------------- --------------------

View File

@ -333,6 +333,7 @@ class VerifyCommands(object):
if extra_options: if extra_options:
if os.path.isfile(extra_options): if os.path.isfile(extra_options):
conf = configparser.ConfigParser() conf = configparser.ConfigParser()
conf.optionxform = str
conf.read(extra_options) conf.read(extra_options)
extra_options = dict(conf._sections) extra_options = dict(conf._sections)
for s in extra_options: for s in extra_options:

View File

@ -73,6 +73,7 @@ def create_dir(dir_path):
def extend_configfile(extra_options, conf_path): def extend_configfile(extra_options, conf_path):
conf_object = configparser.ConfigParser() conf_object = configparser.ConfigParser()
conf_object.optionxform = str
conf_object.read(conf_path) conf_object.read(conf_path)
conf_object = add_extra_options(extra_options, conf_object) conf_object = add_extra_options(extra_options, conf_object)
@ -86,6 +87,7 @@ def extend_configfile(extra_options, conf_path):
def add_extra_options(extra_options, conf_object): def add_extra_options(extra_options, conf_object):
conf_object.optionxform = str
for section in extra_options: for section in extra_options:
if section not in (conf_object.sections() + ["DEFAULT"]): if section not in (conf_object.sections() + ["DEFAULT"]):
conf_object.add_section(section) conf_object.add_section(section)

View File

@ -80,11 +80,14 @@ class UtilsTestCase(test.TestCase):
def test_add_extra_options(self): def test_add_extra_options(self):
conf = configparser.ConfigParser() conf = configparser.ConfigParser()
extra_options = {"section": {"foo": "bar"}, extra_options = {"section": {"foo": "bar"},
"section2": {"option": "value"}} "section2": {"option": "value"},
"section3": {"CamelCaseOption": "CamelCaseValue"}}
conf = utils.add_extra_options(extra_options, conf) conf = utils.add_extra_options(extra_options, conf)
expected = {"section": ("foo", "bar"), "section2": ("option", "value")} expected = {"section": ("foo", "bar"),
"section2": ("option", "value"),
"section3": ("CamelCaseOption", "CamelCaseValue")}
for section, option in expected.items(): for section, option in expected.items():
result = conf.items(section) result = conf.items(section)
self.assertIn(option, result) self.assertIn(option, result)