Merge "Use correct ENV variables for scoping"

This commit is contained in:
Jenkins 2017-01-20 16:47:46 +00:00 committed by Gerrit Code Review
commit 27cebc673c
3 changed files with 43 additions and 26 deletions

View File

@ -102,7 +102,7 @@ You'll find complete documentation on the shell by running
[--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-project-domain-id OS_PROJECT_DOMAIN_ID] [--os-project-domain-name OS_PROJECT_DOMAIN_NAME]
[--os-auth-url OS_AUTH_URL] [--os-region-name OS_REGION_NAME]
[--os-auth-token OS_AUTH_TOKEN] [--os-no-client-auth]
[--monasca-api-url MONASCA_API_URL]

View File

@ -34,8 +34,8 @@ class KSClient(object):
: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
:param domain_id: id of domain project is in
:param project_domain_name: name of domain project is in
:param project_domain_id: id of domain project is in
:param auth_url: endpoint to authenticate against
:param token: token to use instead of username/password
"""
@ -49,10 +49,14 @@ class KSClient(object):
kc_args['project_id'] = kwargs.get('project_id')
elif kwargs.get('project_name'):
kc_args['project_name'] = kwargs.get('project_name')
if kwargs.get('domain_name'):
kc_args['project_domain_name'] = kwargs.get('domain_name')
if kwargs.get('domain_id'):
kc_args['project_domain_id'] = kwargs.get('domain_id')
if kwargs.get('project_domain_name'):
kc_args['project_domain_name'] = kwargs.get('project_domain_name')
elif kwargs.get('domain_name'):
kc_args['project_domain_name'] = kwargs.get('domain_name') # backwards compat to 1.0.30 API
if kwargs.get('project_domain_id'):
kc_args['project_domain_id'] = kwargs.get('project_domain_id')
elif kwargs.get('domain_id'):
kc_args['project_domain_id'] = kwargs.get('domain_id') # backwards compat to 1.0.30 API
if kwargs.get('token'):
kc_args['token'] = kwargs.get('token')

View File

@ -140,19 +140,13 @@ class MonascaShell(object):
parser.add_argument('--os_project_name',
help=argparse.SUPPRESS)
parser.add_argument('--os-domain-id',
default=utils.env('OS_DOMAIN_ID'),
help='Defaults to env[OS_DOMAIN_ID].')
parser.add_argument('--os-project-domain-id',
default=utils.env('OS_PROJECT_DOMAIN_ID'),
help='Defaults to env[OS_PROJECT_DOMAIN_ID].')
parser.add_argument('--os_domain_id',
help=argparse.SUPPRESS)
parser.add_argument('--os-domain-name',
default=utils.env('OS_DOMAIN_NAME'),
help='Defaults to env[OS_DOMAIN_NAME].')
parser.add_argument('--os_domain_name',
help=argparse.SUPPRESS)
parser.add_argument('--os-project-domain-name',
default=utils.env('OS_PROJECT_DOMAIN_NAME'),
help='Defaults to env[OS_PROJECT_DOMAIN_NAME].')
parser.add_argument('--os-auth-url',
default=utils.env('OS_AUTH_URL'),
@ -211,6 +205,20 @@ class MonascaShell(object):
parser.add_argument('--os_endpoint_type',
help=argparse.SUPPRESS)
# In OpenStack, the parameters below are intended for domain-scoping, i.e. authorize
# the user against a domain instead of a project. Previous versions of the agent used these
# to qualify the project name, leading to confusion and preventing reuse of typical RC files.
# Since domain scoping is not supported by Monasca, we can still support the old variable
# names for the time being. If the project-name is not scoped using the correct project
# domain name parameter, the code falls back to the domain scoping parameters.
parser.add_argument('--os-domain-id',
default=utils.env('OS_DOMAIN_ID'),
help=argparse.SUPPRESS)
parser.add_argument('--os-domain-name',
default=utils.env('OS_DOMAIN_NAME'),
help=argparse.SUPPRESS)
return parser
def get_subcommand_parser(self, version):
@ -334,8 +342,9 @@ class MonascaShell(object):
'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,
'domain_name': args.os_domain_name,
# if project name is not scoped, fall back to previous behaviour (see above)
'project_domain_id': args.os_project_domain_id if args.os_project_domain_id else args.os_domain_id,
'project_domain_name': args.os_project_domain_name if args.os_project_domain_name else args.os_domain_name,
'insecure': args.insecure,
'region_name': args.os_region_name,
'keystone_timeout': args.keystone_timeout
@ -357,9 +366,9 @@ 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 project domain using --os-domain-name, via "
"env[OS_DOMAIN_NAME], using --os-domain-id or "
"via env[OS_DOMAIN_ID]")
"and a project domain using --os-project-domain-name, via "
"env[OS_PROJECT_DOMAIN_NAME], using --os-project-domain-id or "
"via env[OS_PROJECT_DOMAIN_ID]")
kwargs = {
'token': token,
@ -385,10 +394,14 @@ class MonascaShell(object):
kwargs['project_name'] = args.os_project_name
if args.os_project_id:
kwargs['project_id'] = args.os_project_id
# Monasca API uses domain_id/name for project_domain_id/name
# We cannot change this and therefore still use the misleading parameter names
if args.os_domain_name:
kwargs['domain_name'] = args.os_domain_name
kwargs['domain_name'] = args.os_project_domain_name if args.os_project_domain_name \
else args.os_domain_name
if args.os_domain_id:
kwargs['domain_id'] = args.os_domain_id
kwargs['domain_id'] = args.os_project_domain_id if args.os_project_domain_id \
else args.os_domain_id
if not endpoint:
endpoint = _ksclient.monasca_url