Pass id of token to be deleted to the db api, not the actual object.

This commit is contained in:
Todd Willey
2011-02-24 23:51:17 -05:00
parent 2218cb025a
commit 865c3d57f8
4 changed files with 19 additions and 9 deletions

View File

@@ -107,7 +107,7 @@ class AuthMiddleware(wsgi.Middleware):
if token:
delta = datetime.datetime.now() - token.created_at
if delta.days >= 2:
self.db.auth_token_destroy(ctxt, token)
self.db.auth_token_destroy(ctxt, token.id)
else:
return self.auth.get_user(token.user_id)
return None

View File

@@ -630,9 +630,9 @@ def iscsi_target_create_safe(context, values):
###############
def auth_token_destroy(context, token):
def auth_token_destroy(context, token_id):
"""Destroy an auth token."""
return IMPL.auth_token_destroy(context, token)
return IMPL.auth_token_destroy(context, token_id)
def auth_token_get(context, token_hash):

View File

@@ -1262,16 +1262,19 @@ def iscsi_target_create_safe(context, values):
@require_admin_context
def auth_token_destroy(_context, token):
def auth_token_destroy(context, token_id):
session = get_session()
session.delete(token)
with session.begin():
token_ref = auth_token_get(context, token_id, session=session)
token_ref.delete(session=session)
@require_admin_context
def auth_token_get(_context, token_hash):
def auth_token_get(context, token_hash):
session = get_session()
tk = session.query(models.AuthToken).\
filter_by(token_hash=token_hash).\
filter_by(deleted=can_read_deleted(context)).\
first()
if not tk:
raise exception.NotFound(_('Token %s does not exist') % token_hash)

View File

@@ -188,7 +188,11 @@ def stub_out_glance(stubs, initial_fixtures=None):
class FakeToken(object):
id = 0
def __init__(self, **kwargs):
FakeToken.id += 1
self.id = FakeToken.id
for k, v in kwargs.iteritems():
setattr(self, k, v)
@@ -210,12 +214,15 @@ class FakeAuthDatabase(object):
def auth_token_create(context, token):
fake_token = FakeToken(created_at=datetime.datetime.now(), **token)
FakeAuthDatabase.data[fake_token.token_hash] = fake_token
FakeAuthDatabase.data['id_%i' % fake_token.id] = fake_token
return fake_token
@staticmethod
def auth_token_destroy(context, token):
if token.token_hash in FakeAuthDatabase.data:
del FakeAuthDatabase.data['token_hash']
def auth_token_destroy(context, token_id):
token = FakeAuthDatabase.data.get('id_%i' % token_id)
if token and token.token_hash in FakeAuthDatabase.data:
del FakeAuthDatabase.data[token.token_hash]
del FakeAuthDatabase.data['id_%i' % token_id]
class FakeAuthManager(object):