[openstack-dev] [oslo.config] Config files overriding CLI: The path of most surprise.

Clint Byrum clint at fewbar.com
Mon Jul 1 21:52:34 UTC 2013

Last week I went to use oslo.config in a utility I am writing called

While running unit tests on the main() method that is used for the CLI,
I was surprised to find that my unit tests were picking up values from
a config file I had created just as a test. The tests can be fixed to
disable config file lookups, but what was more troublesome was that the
config file was overriding values I was passing in as sys.argv.

I have read the thread[2] which suggest that CLI should defer to config
file because config files are somehow less permanent than the CLI.

I am writing today to challenge that notion, and also to suggest that even
if that is the case, it is inappropriate to have oslo.config operate in
such a profoundly different manner than basically any other config library
or system software in general use. CLI options are _for config files_
and if packagers are shipping configurations in systemd unit files,
upstart jobs, or sysvinits, they are doing so to control the concerns
of that particular invocation of whatever command they are running,
and not to configure the software entirely.

CLI args are by definition ephemeral, even if somebody might make them
"permanent" in their system, I doubt any packager would then expect that
these CLI args would be overridden by any config files. This default is
just wrong, and needs to be fixed.

[1] https://github.com/SpamapS/os-collect-config.git
[2] http://lists.openstack.org/pipermail/openstack-dev/2013-May/008691.html

Clint Byrum
HP Cloud Services

More information about the OpenStack-dev mailing list