Provide has_scope_parameters function on plugins

Provide a parameters for testing if scoping options were provided to a
parameter. This will allow for consumers like OSC to provide an early
earning message if the plugin they have loaded has no scoping
parameters and they are trying to make calls against non keystone
services.

Change-Id: I9c2595ac96fc320f4d41622b34f72ca11dc7efcb
This commit is contained in:
Jamie Lennox 2015-09-01 11:30:18 +10:00
parent dcea6b89ee
commit 9a8d4abd1f
4 changed files with 23 additions and 0 deletions

View File

@ -83,6 +83,11 @@ class Auth(base.BaseIdentityPlugin):
:rtype: dict
"""
@property
def has_scope_parameters(self):
"""Does the plugin have parameters that will create a scoped token"""
return self.tenant_id or self.tenant_name or self.trust_id
_NOT_PASSED = object()

View File

@ -74,6 +74,13 @@ class BaseAuth(base.BaseIdentityPlugin):
def get_auth_ref(self, session, **kwargs):
return None
@property
def has_scope_parameters(self):
"""Does the plugin have parameters that will create a scoped token"""
return (self.domain_id or self.domain_name or
self.project_id or self.project_name or
self.trust_id)
class Auth(BaseAuth):
"""Identity V3 Authentication Plugin.

View File

@ -101,6 +101,7 @@ class V2IdentityPlugin(utils.TestCase):
a = v2.Password(self.TEST_URL, username=self.TEST_USER,
password=self.TEST_PASS)
self.assertIsNone(a.user_id)
self.assertFalse(a.has_scope_parameters)
s = session.Session(a)
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
s.get_auth_headers())
@ -117,6 +118,7 @@ class V2IdentityPlugin(utils.TestCase):
a = v2.Password(self.TEST_URL, user_id=self.TEST_USER,
password=self.TEST_PASS)
self.assertIsNone(a.username)
self.assertFalse(a.has_scope_parameters)
s = session.Session(a)
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
s.get_auth_headers())
@ -132,6 +134,7 @@ class V2IdentityPlugin(utils.TestCase):
self.stub_auth(json=self.TEST_RESPONSE_DICT)
a = v2.Password(self.TEST_URL, username=self.TEST_USER,
password=self.TEST_PASS, tenant_id=self.TEST_TENANT_ID)
self.assertTrue(a.has_scope_parameters)
self.assertIsNone(a.user_id)
s = session.Session(a)
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
@ -148,6 +151,7 @@ class V2IdentityPlugin(utils.TestCase):
a = v2.Password(self.TEST_URL, user_id=self.TEST_USER,
password=self.TEST_PASS, tenant_id=self.TEST_TENANT_ID)
self.assertIsNone(a.username)
self.assertTrue(a.has_scope_parameters)
s = session.Session(a)
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
s.get_auth_headers())
@ -176,6 +180,7 @@ class V2IdentityPlugin(utils.TestCase):
self.stub_auth(json=self.TEST_RESPONSE_DICT)
a = v2.Password(self.TEST_URL, username=self.TEST_USER,
password=self.TEST_PASS, trust_id='trust')
self.assertTrue(a.has_scope_parameters)
s = session.Session(a)
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
s.get_auth_headers())

View File

@ -197,6 +197,7 @@ class V3IdentityPlugin(utils.TestCase):
a = v3.Password(self.TEST_URL,
username=self.TEST_USER,
password=self.TEST_PASS)
self.assertFalse(a.has_scope_parameters)
s = session.Session(auth=a)
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
@ -216,6 +217,7 @@ class V3IdentityPlugin(utils.TestCase):
self.stub_auth(json=self.TEST_RESPONSE_DICT)
a = v3.Password(self.TEST_URL, username=self.TEST_USER,
password=self.TEST_PASS, domain_id=self.TEST_DOMAIN_ID)
self.assertTrue(a.has_scope_parameters)
s = session.Session(a)
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
@ -234,6 +236,7 @@ class V3IdentityPlugin(utils.TestCase):
a = v3.Password(self.TEST_URL, username=self.TEST_USER,
password=self.TEST_PASS,
project_id=self.TEST_TENANT_ID)
self.assertTrue(a.has_scope_parameters)
s = session.Session(a)
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
@ -288,6 +291,7 @@ class V3IdentityPlugin(utils.TestCase):
password='password', project_id='project',
domain_id='domain')
self.assertTrue(a.has_scope_parameters)
self.assertRaises(exceptions.AuthorizationFailure,
a.get_token, None)
self.assertRaises(exceptions.AuthorizationFailure,
@ -297,6 +301,7 @@ class V3IdentityPlugin(utils.TestCase):
self.stub_auth(json=self.TEST_RESPONSE_DICT)
a = v3.Password(self.TEST_URL, username=self.TEST_USER,
password=self.TEST_PASS, trust_id='trust')
self.assertTrue(a.has_scope_parameters)
s = session.Session(a)
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},
@ -335,6 +340,7 @@ class V3IdentityPlugin(utils.TestCase):
password=self.TEST_PASS)
t = v3.TokenMethod(token='foo')
a = v3.Auth(self.TEST_URL, [p, t], trust_id='trust')
self.assertTrue(a.has_scope_parameters)
s = session.Session(auth=a)
self.assertEqual({'X-Auth-Token': self.TEST_TOKEN},