summaryrefslogtreecommitdiff
path: root/openstackclient/common/clientmanager.py
diff options
context:
space:
mode:
authorDean Troyer <dtroyer@gmail.com>2015-03-02 17:05:35 -0600
committerDean Troyer <dtroyer@gmail.com>2015-04-18 23:04:51 -0500
commit5649695c658505b0217fb6d03cf199797b90ca4c (patch)
tree277dc72a93e7fa4c557a1dbe0d4d021d69e94c5d /openstackclient/common/clientmanager.py
parenta5e79d58ae508e218a113bfa3976fae369980688 (diff)
downloadpython-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.py20
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