No auth when token and endpoint are passed

The latest change to the auth_required logic introduced a bug were even
when the token and endpoint were passed, authentication was being
required.

This patch fixes that issue and makes sure that authentication is not
required when these 2 arguements are present.

Closes-bug: #1499540

Change-Id: I4c9c15ba526378970da5461511ed922d42c5a9f9
This commit is contained in:
Flavio Percoco
2015-09-25 10:54:29 +02:00
parent 586d40131d
commit c31c136557
2 changed files with 25 additions and 11 deletions
+6 -11
View File
@@ -443,18 +443,13 @@ class OpenStackImagesShell(object):
return ks_session
def _get_endpoint_and_token(self, args):
image_url = self._get_image_url(args)
endpoint = self._get_image_url(args)
auth_token = args.os_auth_token
auth_reqd = (not (auth_token and image_url) or
(hasattr(args, 'func') and
utils.is_authentication_required(args.func)))
if not auth_reqd:
endpoint = image_url
token = args.os_auth_token
else:
auth_req = (hasattr(args, 'func') and
utils.is_authentication_required(args.func))
if auth_req and not (endpoint and auth_token):
if not args.os_username:
raise exc.CommandError(
_("You must provide a username via"
@@ -527,7 +522,7 @@ class OpenStackImagesShell(object):
'key': args.os_key
}
ks_session = self._get_keystone_session(**kwargs)
token = args.os_auth_token or ks_session.get_token()
auth_token = args.os_auth_token or ks_session.get_token()
endpoint_type = args.os_endpoint_type or 'public'
service_type = args.os_service_type or 'image'
@@ -536,7 +531,7 @@ class OpenStackImagesShell(object):
interface=endpoint_type,
region_name=args.os_region_name)
return endpoint, token
return endpoint, auth_token
def _get_versioned_client(self, api_version, args):
endpoint, token = self._get_endpoint_and_token(args)