in Python2, ConfigParser is almost the same as RawConfigParser, which
allows set non-string values, but in Python3, ConfigParser.set() only
accepts strings as value of option.
since we do not use "cpar" as an internal storage for options, it does
not matter what type of options we set using ConfigParser as long as it
can be consumed by tempest. boolean settings are translated to "true" or
"false". see also
https://docs.openstack.org/tempest/latest/sampleconf.html
Signed-off-by: Kefu Chai <kchai@redhat.com>
(cherry picked from commit
5ef3a5fe3282146b56bd2a589fef17c28d57e8e2)
def to_config(config, params, section, cpar):
for (k, v) in config[section].items():
- if (isinstance(v, str)):
+ if isinstance(v, str):
v = v.format(**params)
+ elif isinstance(v, bool):
+ v = 'true' if v else 'false'
+ else:
+ v = str(v)
cpar.set(section, k, v)
@contextlib.contextmanager