diff options
author | Jamie Lennox <jlennox@redhat.com> | 2013-08-22 11:09:49 +1000 |
---|---|---|
committer | Morgan Fainberg <m@metacloud.com> | 2013-08-26 03:20:23 -0700 |
commit | b43349a1ad8a5353ec415577723bfa3802582c14 (patch) | |
tree | 3869458b3364b9e637e486fa3d96ddcc26a91cdf /keystoneclient/access.py | |
parent | 7eb6f805177d429d6e07e26a6c1ea98ef4d83577 (diff) | |
download | python-keystoneclient-b43349a1ad8a5353ec415577723bfa3802582c14.tar.gz |
Support older token formats for projects in accessinfo
Older token formats get decoded as a v2 token so we should support
reading project information from these tokens.
Change-Id: I31473a00b294bd0d7b535cfab8d2eaf09db97ff5
Diffstat (limited to 'keystoneclient/access.py')
-rw-r--r-- | keystoneclient/access.py | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/keystoneclient/access.py b/keystoneclient/access.py index 8be7a5c..5a10c79 100644 --- a/keystoneclient/access.py +++ b/keystoneclient/access.py @@ -222,7 +222,7 @@ class AccessInfo(dict): request, or None if the authentication request wasn't scoped to a project. - :returns: str or None ((if no project associated with the token) + :returns: str or None (if no project associated with the token) """ raise NotImplementedError() @@ -327,9 +327,24 @@ class AccessInfoV2(AccessInfo): @property def project_name(self): - tenant_dict = self['token'].get('tenant', None) - if tenant_dict: - return tenant_dict.get('name', None) + try: + tenant_dict = self['token']['tenant'] + except KeyError: + pass + else: + return tenant_dict.get('name') + + # pre grizzly + try: + return self['user']['tenantName'] + except KeyError: + pass + + # pre diablo, keystone only provided a tenantId + try: + return self['token']['tenantId'] + except KeyError: + pass @property def scoped(self): @@ -357,10 +372,24 @@ class AccessInfoV2(AccessInfo): @property def project_id(self): - tenant_dict = self['token'].get('tenant', None) - if tenant_dict: - return tenant_dict.get('id', None) - return None + try: + tenant_dict = self['token']['tenant'] + except KeyError: + pass + else: + return tenant_dict.get('id') + + # pre grizzly + try: + return self['user']['tenantId'] + except KeyError: + pass + + # pre diablo + try: + return self['token']['tenantId'] + except KeyError: + pass @property def project_domain_id(self): |