diff options
| author | Dean Troyer <dtroyer@gmail.com> | 2015-03-02 17:05:35 -0600 |
|---|---|---|
| committer | Dean Troyer <dtroyer@gmail.com> | 2015-04-18 23:04:51 -0500 |
| commit | 5649695c658505b0217fb6d03cf199797b90ca4c (patch) | |
| tree | 277dc72a93e7fa4c557a1dbe0d4d021d69e94c5d /openstackclient/common/clientmanager.py | |
| parent | a5e79d58ae508e218a113bfa3976fae369980688 (diff) | |
| download | python-openstackclient-5649695c658505b0217fb6d03cf199797b90ca4c.tar.gz | |
Add --os-cloud support
This adds a new option --os-cloud that allows the configuration values
for multiple clouds to be stored in a local file and selected with
a single option.
Internal option names have had 'os_' removed to be comptible with
the options returned from OpenStackConfig().get_one_cloud().
The config file is ~/.config/openstack/clouds.yaml:
Sample
------
clouds:
devstack:
auth:
auth_url: http://192.168.122.10:35357/
project_name: demo
username: demo
password: 0penstack
region_name: RegionOne
devstack:
auth:
auth_url: http://192.168.122.10:35357/
project_name: demo
username: demo
password: 0penstack
region_name: RegionOne
Co-Authored-By: Monty Taylor <mordred@inaugust.com>
Change-Id: I4939acf8067e44ffe06a2e26fc28f1adf8985b7d
Depends-On: I45e2550af58aee616ca168d20a557077beeab007
Diffstat (limited to 'openstackclient/common/clientmanager.py')
| -rw-r--r-- | openstackclient/common/clientmanager.py | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/openstackclient/common/clientmanager.py b/openstackclient/common/clientmanager.py index 6d2a9d76..ca5ece0d 100644 --- a/openstackclient/common/clientmanager.py +++ b/openstackclient/common/clientmanager.py @@ -58,7 +58,7 @@ class ClientManager(object): def __init__( self, - cli_options, + cli_options=None, api_version=None, verify=True, pw_func=None, @@ -82,8 +82,8 @@ class ClientManager(object): self._cli_options = cli_options self._api_version = api_version self._pw_callback = pw_func - self._url = self._cli_options.os_url - self._region_name = self._cli_options.os_region_name + self._url = self._cli_options.auth.get('url', None) + self._region_name = self._cli_options.region_name self.timing = self._cli_options.timing @@ -121,7 +121,7 @@ class ClientManager(object): # Horrible hack alert...must handle prompt for null password if # password auth is requested. if (self.auth_plugin_name.endswith('password') and - not self._cli_options.os_password): + not self._cli_options.auth.get('password', None)): self._cli_options.os_password = self._pw_callback() (auth_plugin, self._auth_params) = auth.build_auth_params( @@ -129,13 +129,15 @@ class ClientManager(object): self._cli_options, ) - default_domain = self._cli_options.os_default_domain + # TODO(mordred): This is a usability improvement that's broadly useful + # We should port it back up into os-client-config. + default_domain = self._cli_options.default_domain # NOTE(stevemar): If PROJECT_DOMAIN_ID or PROJECT_DOMAIN_NAME is # present, then do not change the behaviour. Otherwise, set the # PROJECT_DOMAIN_ID to 'OS_DEFAULT_DOMAIN' for better usability. if (self._api_version.get('identity') == '3' and - not self._auth_params.get('project_domain_id') and - not self._auth_params.get('project_domain_name')): + not self._auth_params.get('project_domain_id', None) and + not self._auth_params.get('project_domain_name', None)): self._auth_params['project_domain_id'] = default_domain # NOTE(stevemar): If USER_DOMAIN_ID or USER_DOMAIN_NAME is present, @@ -143,8 +145,8 @@ class ClientManager(object): # to 'OS_DEFAULT_DOMAIN' for better usability. if (self._api_version.get('identity') == '3' and self.auth_plugin_name.endswith('password') and - not self._auth_params.get('user_domain_id') and - not self._auth_params.get('user_domain_name')): + not self._auth_params.get('user_domain_id', None) and + not self._auth_params.get('user_domain_name', None)): self._auth_params['user_domain_id'] = default_domain # For compatibility until all clients can be updated |
