support users in domains other than Default (KSv3)
Closes-Bug: 1471882 Change-Id: I8574fa3d393dc7a2c9d0470cbf7b9e819a3be0cc
This commit is contained in:
parent
a50f7c5a93
commit
6e428c4614
@ -78,10 +78,13 @@ When using Keystone to obtain the token and endpoint::
|
||||
|
||||
export OS_USERNAME=
|
||||
export OS_PASSWORD=
|
||||
export OS_USER_DOMAIN_NAME=
|
||||
export OS_PROJECT_NAME=
|
||||
export OS_AUTH_URL=
|
||||
export OS_REGION_NAME=
|
||||
|
||||
When OS_USER_DOMAIN_NAME is not set, then 'Default' is assumed. Alternatively IDs can be used instead of names.
|
||||
|
||||
When using Vagrant Environment with middleware disabled::
|
||||
|
||||
export OS_AUTH_TOKEN=82510970543135
|
||||
@ -97,6 +100,7 @@ You'll find complete documentation on the shell by running
|
||||
[--key-file KEY_FILE] [--os-cacert OS_CACERT]
|
||||
[--timeout TIMEOUT] [--os-username OS_USERNAME]
|
||||
[--os-password OS_PASSWORD] [--os-project-id OS_PROJECT_ID]
|
||||
[--os-user-domain-id OS_USER_DOMAIN_ID] [--os-user-domain-name OS_USER_DOMAIN_NAME]
|
||||
[--os-project-name OS_PROJECT_NAME]
|
||||
[--os-domain-id OS_DOMAIN_ID] [--os-domain-name OS_DOMAIN_NAME]
|
||||
[--os-auth-url OS_AUTH_URL] [--os-region-name OS_REGION_NAME]
|
||||
|
@ -62,6 +62,8 @@ class HTTPClient(object):
|
||||
self.auth_token = kwargs.get('token')
|
||||
self.username = kwargs.get('username')
|
||||
self.password = kwargs.get('password')
|
||||
self.user_domain_id = kwargs.get('user_domain_id')
|
||||
self.user_domain_name = kwargs.get('user_domain_name')
|
||||
self.region_name = kwargs.get('region_name')
|
||||
self.include_pass = kwargs.get('include_pass')
|
||||
self.endpoint_url = endpoint
|
||||
@ -99,6 +101,8 @@ class HTTPClient(object):
|
||||
ks_args = {
|
||||
'username': self.username,
|
||||
'password': self.password,
|
||||
'user_domain_id': self.user_domain_id,
|
||||
'user_domain_name': self.user_domain_name,
|
||||
'token': '',
|
||||
'auth_url': self.auth_url,
|
||||
'service_type': self.service_type,
|
||||
|
@ -24,11 +24,14 @@ from monascaclient import exc
|
||||
|
||||
|
||||
class KSClient(object):
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
"""Get an endpoint and auth token from Keystone.
|
||||
|
||||
:param username: name of user
|
||||
:param password: user's password
|
||||
:param user_domain_id: unique identifier of domain username resides in (optional)
|
||||
:param user_domain_name: name of domain for username (optional), if user_domain_id not specified
|
||||
:param project_id: unique identifier of project
|
||||
:param project_name: name of project
|
||||
:param domain_name: name of domain project is in
|
||||
@ -55,6 +58,11 @@ class KSClient(object):
|
||||
else:
|
||||
kc_args['username'] = kwargs.get('username')
|
||||
kc_args['password'] = kwargs.get('password')
|
||||
# when username not in the default domain (id='default'), supply user domain (as namespace)
|
||||
if kwargs.get('user_domain_name'):
|
||||
kc_args['user_domain_name'] = kwargs.get('user_domain_name')
|
||||
if kwargs.get('user_domain_id'):
|
||||
kc_args['user_domain_id'] = kwargs.get('user_domain_id')
|
||||
|
||||
self._kwargs = kwargs
|
||||
self._keystone = client.Client(**kc_args)
|
||||
|
@ -118,6 +118,14 @@ class MonascaShell(object):
|
||||
parser.add_argument('--os_password',
|
||||
help=argparse.SUPPRESS)
|
||||
|
||||
parser.add_argument('--os-user-domain-id',
|
||||
default=utils.env('OS_USER_DOMAIN_ID'),
|
||||
help='Defaults to env[OS_USER_DOMAIN_ID].')
|
||||
|
||||
parser.add_argument('--os-user-domain-name',
|
||||
default=utils.env('OS_USER_DOMAIN_NAME'),
|
||||
help='Defaults to env[OS_USER_DOMAIN_NAME].')
|
||||
|
||||
parser.add_argument('--os-project-id',
|
||||
default=utils.env('OS_PROJECT_ID'),
|
||||
help='Defaults to env[OS_PROJECT_ID].')
|
||||
@ -322,6 +330,8 @@ class MonascaShell(object):
|
||||
'service_type': args.os_service_type,
|
||||
'endpoint_type': args.os_endpoint_type,
|
||||
'os_cacert': args.os_cacert,
|
||||
'user_domain_id': args.os_user_domain_id,
|
||||
'user_domain_name': args.os_user_domain_name,
|
||||
'project_id': args.os_project_id,
|
||||
'project_name': args.os_project_name,
|
||||
'domain_id': args.os_domain_id,
|
||||
@ -346,7 +356,7 @@ class MonascaShell(object):
|
||||
"--os-project-id or via env[OS_PROJECT_ID], "
|
||||
"or you must provide a project name using "
|
||||
"--os-project-name or via env[OS_PROJECT_NAME] "
|
||||
"and a domain using --os-domain-name, via "
|
||||
"and a project domain using --os-domain-name, via "
|
||||
"env[OS_DOMAIN_NAME], using --os-domain-id or "
|
||||
"via env[OS_DOMAIN_ID]")
|
||||
|
||||
@ -364,6 +374,10 @@ class MonascaShell(object):
|
||||
'auth_url': args.os_auth_url
|
||||
}
|
||||
|
||||
if args.os_user_domain_name:
|
||||
kwargs['user_domain_name'] = args.os_user_domain_name
|
||||
if args.os_user_domain_id:
|
||||
kwargs['user_domain_id'] = args.os_user_domain_id
|
||||
if args.os_region_name:
|
||||
kwargs['region_name'] = args.os_region_name
|
||||
if args.os_project_name:
|
||||
|
@ -31,7 +31,8 @@ from monascaclient.tests import fakes
|
||||
class TestCase(testtools.TestCase):
|
||||
|
||||
def set_fake_env(self, fake_env):
|
||||
client_env = ('OS_USERNAME', 'OS_PASSWORD', 'OS_PROJECT_ID',
|
||||
client_env = ('OS_USERNAME', 'OS_PASSWORD', 'OS_USER_DOMAIN_ID',
|
||||
'OS_USER_DOMAIN_NAME', 'OS_PROJECT_ID',
|
||||
'OS_PROJECT_NAME', 'OS_AUTH_URL', 'OS_REGION_NAME',
|
||||
'OS_AUTH_TOKEN', 'OS_NO_CLIENT_AUTH', 'OS_SERVICE_TYPE',
|
||||
'OS_DOMAIN_NAME', 'OS_DOMAIN_ID',
|
||||
|
Loading…
Reference in New Issue
Block a user