Fix precedence for pass-in options

The passed-in argparse Namespace is flat and does not have an 'auth'
dict, all of the auth options are in the top level.  If the loaded
dict from clouds.yaml as an 'auth' dict, that used to totally override
any passed-in options.

This is backwards.

Make the passed-in auth options always win over clouds.yaml as this is
the only way to change/override those values from the command line.

Change-Id: Ic2752a396d45deeda19a16389437679829e0844d
This commit is contained in:
Dean Troyer 2016-08-02 21:15:49 -05:00
parent 51b4cbee52
commit 05b3c933b3

View File

@ -885,14 +885,14 @@ class OpenStackConfig(object):
plugin_options = loader.get_options()
for p_opt in plugin_options:
# if it's in config.auth, win, kill it from config dict
# if it's in config and not in config.auth, move it
# if it's in config, win, move it and kill it from config dict
# if it's in config.auth but not in config we're good
# deprecated loses to current
# provided beats default, deprecated or not
winning_value = self._find_winning_auth_value(
p_opt, config['auth'])
winning_value = self._find_winning_auth_value(p_opt, config)
if not winning_value:
winning_value = self._find_winning_auth_value(p_opt, config)
winning_value = self._find_winning_auth_value(
p_opt, config['auth'])
# Clean up after ourselves
for opt in [p_opt.name] + [o.name for o in p_opt.deprecated]: