Add domain attributes to accessinfo

user_domain_id and project_domain_id are already available, so simply
add an equivalent user_domain_name and project_domain_name if available.

The use of 'default' for v2 tokens is inspired from the default behaviour of
similar functions and what is used in auth_token middleware.

Change-Id: Ia9b345529072ab893d04c7a38fb7ba3acdc28227
This commit is contained in:
Jamie Lennox
2013-08-22 11:05:30 +10:00
committed by Morgan Fainberg
parent b43349a1ad
commit 90d161fc3a
3 changed files with 91 additions and 6 deletions

View File

@@ -134,10 +134,23 @@ class AccessInfo(dict):
@property
def user_domain_id(self):
"""Returns the domain id of the user associated with the authentication
request.
request.
For v2, it always returns 'default' which may be different from the
Keystone configuration.
:returns: str
"""
raise NotImplementedError()
@property
def user_domain_name(self):
"""Returns the domain name of the user associated with the
authentication request.
For v2, it always returns 'Default' which may be different from the
Keystone configuration.
For v2, it always returns 'default' which maybe different from the
Keystone configuration.
:returns: str
"""
raise NotImplementedError()
@@ -234,10 +247,23 @@ class AccessInfo(dict):
@property
def project_domain_id(self):
"""Returns the domain id of the project associated with the
authentication request.
authentication request.
For v2, it returns 'default' if a project is scoped or None which may
be different from the keystone configuration.
:returns: str
"""
raise NotImplementedError()
@property
def project_domain_name(self):
"""Returns the domain name of the project associated with the
authentication request.
For v2, it returns 'Default' if a project is scoped or None which may
be different from the keystone configuration.
For v2, it always returns 'default' which maybe different from the
keystone configuration.
:returns: str
"""
raise NotImplementedError()
@@ -317,6 +343,10 @@ class AccessInfoV2(AccessInfo):
def user_domain_id(self):
return 'default'
@property
def user_domain_name(self):
return 'Default'
@property
def domain_name(self):
return None
@@ -396,6 +426,11 @@ class AccessInfoV2(AccessInfo):
if self.project_id:
return 'default'
@property
def project_domain_name(self):
if self.project_id:
return 'Default'
@property
def auth_url(self):
if self.service_catalog:
@@ -456,6 +491,10 @@ class AccessInfoV3(AccessInfo):
def user_domain_id(self):
return self['user']['domain']['id']
@property
def user_domain_name(self):
return self['user']['domain']['name']
@property
def username(self):
return self['user']['name']
@@ -484,6 +523,12 @@ class AccessInfoV3(AccessInfo):
if project:
return project['domain']['id']
@property
def project_domain_name(self):
project = self.get('project')
if project:
return project['domain']['name']
@property
def project_name(self):
project = self.get('project')

View File

@@ -37,6 +37,11 @@ class AccessInfoTest(utils.TestCase):
self.assertFalse(auth_ref.project_scoped)
self.assertFalse(auth_ref.trust_scoped)
self.assertIsNone(auth_ref.project_domain_id)
self.assertIsNone(auth_ref.project_domain_name)
self.assertEqual(auth_ref.user_domain_id, 'default')
self.assertEqual(auth_ref.user_domain_name, 'Default')
self.assertEquals(auth_ref.expires, timeutils.parse_isotime(
UNSCOPED_TOKEN['access']['token']['expires']))
@@ -73,6 +78,11 @@ class AccessInfoTest(utils.TestCase):
self.assertEquals(auth_ref.management_url,
('http://admin:35357/v2.0',))
self.assertEqual(auth_ref.project_domain_id, 'default')
self.assertEqual(auth_ref.project_domain_name, 'Default')
self.assertEqual(auth_ref.user_domain_id, 'default')
self.assertEqual(auth_ref.user_domain_name, 'Default')
self.assertTrue(auth_ref.scoped)
self.assertTrue(auth_ref.project_scoped)
self.assertFalse(auth_ref.domain_scoped)
@@ -84,6 +94,10 @@ class AccessInfoTest(utils.TestCase):
self.assertEquals(auth_ref.username, 'user_name1')
self.assertEquals(auth_ref.project_id, 'tenant_id1')
self.assertEquals(auth_ref.project_name, 'tenant_id1')
self.assertEquals(auth_ref.project_domain_id, 'default')
self.assertEquals(auth_ref.project_domain_name, 'Default')
self.assertEquals(auth_ref.user_domain_id, 'default')
self.assertEquals(auth_ref.user_domain_name, 'Default')
self.assertFalse(auth_ref.scoped)
def test_grizzly_token(self):
@@ -91,3 +105,7 @@ class AccessInfoTest(utils.TestCase):
self.assertEquals(auth_ref.project_id, 'tenant_id1')
self.assertEquals(auth_ref.project_name, 'tenant_name1')
self.assertEquals(auth_ref.project_domain_id, 'default')
self.assertEquals(auth_ref.project_domain_name, 'Default')
self.assertEquals(auth_ref.user_domain_id, 'default')
self.assertEquals(auth_ref.user_domain_name, 'Default')

View File

@@ -37,6 +37,13 @@ class AccessInfoTest(utils.TestCase):
self.assertFalse(auth_ref.domain_scoped)
self.assertFalse(auth_ref.project_scoped)
self.assertEquals(auth_ref.user_domain_id,
'4e6893b7ba0b4006840c3845660b86ed')
self.assertEquals(auth_ref.user_domain_name, 'exampledomain')
self.assertIsNone(auth_ref.project_domain_id)
self.assertIsNone(auth_ref.project_domain_name)
self.assertEquals(auth_ref.expires, timeutils.parse_isotime(
UNSCOPED_TOKEN['token']['expires_at']))
@@ -70,6 +77,13 @@ class AccessInfoTest(utils.TestCase):
self.assertEquals(auth_ref.project_name, None)
self.assertEquals(auth_ref.project_id, None)
self.assertEquals(auth_ref.user_domain_id,
'4e6893b7ba0b4006840c3845660b86ed')
self.assertEquals(auth_ref.user_domain_name, 'exampledomain')
self.assertIsNone(auth_ref.project_domain_id)
self.assertIsNone(auth_ref.project_domain_name)
self.assertTrue(auth_ref.domain_scoped)
self.assertFalse(auth_ref.project_scoped)
@@ -102,5 +116,13 @@ class AccessInfoTest(utils.TestCase):
self.assertEquals(auth_ref.management_url,
('http://admin:35357/v3',))
self.assertEquals(auth_ref.project_domain_id,
'4e6893b7ba0b4006840c3845660b86ed')
self.assertEquals(auth_ref.project_domain_name, 'exampledomain')
self.assertEquals(auth_ref.user_domain_id,
'4e6893b7ba0b4006840c3845660b86ed')
self.assertEquals(auth_ref.user_domain_name, 'exampledomain')
self.assertFalse(auth_ref.domain_scoped)
self.assertTrue(auth_ref.project_scoped)