Default user domain id and project domain id

If either of OS_USER_DOMAIN_ID or OS_USER_DOMAIN_NAME are present
then we don't tinker with anything. Otherwise, we should set
the USER_DOMAIN_ID to 'OS_DEFAULT_DOMAIN', as this provides a better UX,
since the end user doesn't have to specify these arguments.

Same logic applies for OS_PROJECT_DOMAIN_ID.

Closes-Bug: #1385338

Change-Id: I8a4034c16a1dd50d269f809abab8e960d5de20f7
This commit is contained in:
Steve Martinelli 2014-11-17 21:35:30 -05:00
parent 9057cedfd4
commit 1d75edb167
3 changed files with 24 additions and 0 deletions

View File

@ -102,6 +102,12 @@ def base_parser(parser):
default=env('OS_CACERT'),
help='CA certificate bundle file (Env: OS_CACERT)',
)
parser.add_argument(
'--os-default-domain',
metavar='<auth-domain>',
default='default',
help='Default domain ID, default=default (Env: OS_DEFAULT_DOMAIN)',
)
verify_group = parser.add_mutually_exclusive_group()
verify_group.add_argument(
'--verify',

View File

@ -98,6 +98,23 @@ class ClientManager(object):
self._auth_ref = None
self.timing = auth_options.timing
default_domain = auth_options.os_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')):
self._auth_params['project_domain_id'] = default_domain
# NOTE(stevemar): If USER_DOMAIN_ID or USER_DOMAIN_NAME is present,
# then do not change the behaviour. Otherwise, set the USER_DOMAIN_ID
# to 'OS_DEFAULT_DOMAIN' for better usability.
if (self._api_version.get('identity') == '3' and
not self._auth_params.get('user_domain_id') and
not self._auth_params.get('user_domain_name')):
self._auth_params['user_domain_id'] = default_domain
# For compatibility until all clients can be updated
if 'project_name' in self._auth_params:
self._project_name = self._auth_params['project_name']

View File

@ -49,6 +49,7 @@ class FakeOptions(object):
self.timing = None
self.os_region_name = None
self.os_url = None
self.os_default_domain = 'default'
self.__dict__.update(kwargs)