Fixes compatibility with keystoneclient v0.2.
This commit is contained in:
parent
f8b1be84bf
commit
b95664d5ba
|
@ -1,2 +1,2 @@
|
||||||
# following PEP 386
|
# following PEP 386
|
||||||
__version__ = "1.0.5"
|
__version__ = "1.0.6"
|
||||||
|
|
|
@ -97,6 +97,9 @@ class KeystoneBackend(object):
|
||||||
while tenants:
|
while tenants:
|
||||||
tenant = tenants.pop()
|
tenant = tenants.pop()
|
||||||
try:
|
try:
|
||||||
|
client = keystone_client.Client(tenant_id=tenant.id,
|
||||||
|
token=unscoped_token.id,
|
||||||
|
auth_url=auth_url)
|
||||||
token = client.tokens.authenticate(username=username,
|
token = client.tokens.authenticate(username=username,
|
||||||
token=unscoped_token.id,
|
token=unscoped_token.id,
|
||||||
tenant_id=tenant.id)
|
tenant_id=tenant.id)
|
||||||
|
@ -113,7 +116,9 @@ class KeystoneBackend(object):
|
||||||
self.check_auth_expiry(token)
|
self.check_auth_expiry(token)
|
||||||
|
|
||||||
# If we made it here we succeeded. Create our User!
|
# If we made it here we succeeded. Create our User!
|
||||||
user = create_user_from_token(request, token, client.management_url)
|
user = create_user_from_token(request,
|
||||||
|
token,
|
||||||
|
client.service_catalog.url_for())
|
||||||
|
|
||||||
if request is not None:
|
if request is not None:
|
||||||
if is_ans1_token(unscoped_token.id):
|
if is_ans1_token(unscoped_token.id):
|
||||||
|
|
|
@ -41,6 +41,10 @@ class OpenStackAuthTests(test.TestCase):
|
||||||
username=user.name,
|
username=user.name,
|
||||||
tenant_id=None).AndReturn(self.keystone_client)
|
tenant_id=None).AndReturn(self.keystone_client)
|
||||||
self.keystone_client.tenants.list().AndReturn(tenants)
|
self.keystone_client.tenants.list().AndReturn(tenants)
|
||||||
|
client.Client(auth_url=settings.OPENSTACK_KEYSTONE_URL,
|
||||||
|
tenant_id=self.data.tenant_two.id,
|
||||||
|
token=sc.get_token()['id']) \
|
||||||
|
.AndReturn(self.keystone_client)
|
||||||
self.keystone_client.tokens.authenticate(tenant_id=tenants[1].id,
|
self.keystone_client.tokens.authenticate(tenant_id=tenants[1].id,
|
||||||
token=sc.get_token()['id'],
|
token=sc.get_token()['id'],
|
||||||
username=user.name) \
|
username=user.name) \
|
||||||
|
@ -172,7 +176,12 @@ class OpenStackAuthTests(test.TestCase):
|
||||||
username=user.name) \
|
username=user.name) \
|
||||||
.AndReturn(scoped)
|
.AndReturn(scoped)
|
||||||
|
|
||||||
client.Client(endpoint=settings.OPENSTACK_KEYSTONE_URL) \
|
client.Client(auth_url=settings.OPENSTACK_KEYSTONE_URL,
|
||||||
|
tenant_id=self.data.tenant_two.id,
|
||||||
|
token=sc.get_token()['id']) \
|
||||||
|
.AndReturn(self.keystone_client)
|
||||||
|
|
||||||
|
client.Client(endpoint=sc.url_for()) \
|
||||||
.AndReturn(self.keystone_client)
|
.AndReturn(self.keystone_client)
|
||||||
|
|
||||||
self.keystone_client.tokens.authenticate(tenant_id=tenant.id,
|
self.keystone_client.tokens.authenticate(tenant_id=tenant.id,
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import hashlib
|
import hashlib
|
||||||
|
import logging
|
||||||
|
|
||||||
from django.contrib.auth.models import AnonymousUser
|
from django.contrib.auth.models import AnonymousUser
|
||||||
|
|
||||||
|
@ -8,6 +9,9 @@ from keystoneclient import exceptions as keystone_exceptions
|
||||||
from .utils import check_token_expiration, is_ans1_token
|
from .utils import check_token_expiration, is_ans1_token
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def set_session_from_user(request, user):
|
def set_session_from_user(request, user):
|
||||||
if is_ans1_token(user.token.id):
|
if is_ans1_token(user.token.id):
|
||||||
hashed_token = hashlib.md5(user.token.id).hexdigest()
|
hashed_token = hashlib.md5(user.token.id).hexdigest()
|
||||||
|
@ -117,11 +121,10 @@ class User(AnonymousUser):
|
||||||
client = keystone_client.Client(username=self.username,
|
client = keystone_client.Client(username=self.username,
|
||||||
auth_url=endpoint,
|
auth_url=endpoint,
|
||||||
token=token.id)
|
token=token.id)
|
||||||
authd = client.tenants.list()
|
self._authorized_tenants = client.tenants.list()
|
||||||
except (keystone_exceptions.ClientException,
|
except (keystone_exceptions.ClientException,
|
||||||
keystone_exceptions.AuthorizationFailure):
|
keystone_exceptions.AuthorizationFailure):
|
||||||
authd = []
|
LOG.exception('Unable to retrieve tenant list.')
|
||||||
self._authorized_tenants = authd
|
|
||||||
return self._authorized_tenants or []
|
return self._authorized_tenants or []
|
||||||
|
|
||||||
@authorized_tenants.setter
|
@authorized_tenants.setter
|
||||||
|
|
|
@ -55,8 +55,9 @@ def login(request):
|
||||||
# will erase it if we set it earlier.
|
# will erase it if we set it earlier.
|
||||||
if request.user.is_authenticated():
|
if request.user.is_authenticated():
|
||||||
set_session_from_user(request, request.user)
|
set_session_from_user(request, request.user)
|
||||||
|
regions = dict(Login.get_region_choices())
|
||||||
region = request.user.endpoint
|
region = request.user.endpoint
|
||||||
region_name = dict(Login.get_region_choices()).get(region)
|
region_name = regions.get(region)
|
||||||
request.session['region_endpoint'] = region
|
request.session['region_endpoint'] = region
|
||||||
request.session['region_name'] = region_name
|
request.session['region_name'] = region_name
|
||||||
return res
|
return res
|
||||||
|
|
Loading…
Reference in New Issue