Merge "Fixed bug 905422. Swift caching should work again. Also fixed a few other minor syntactical stuff."

This commit is contained in:
Jenkins 2011-12-26 16:19:24 +00:00 committed by Gerrit Code Review
commit 6c40cc9223

15
keystone/middleware/auth_token.py Executable file → Normal file
View File

@ -335,12 +335,12 @@ class AuthProtocol(object):
def _cache_put(self, env, token, claims, valid): def _cache_put(self, env, token, claims, valid):
""" Put a claim into the cache """ """ Put a claim into the cache """
cache = self._cache(env) cache = self._cache(env)
if (cache and claims): if cache and claims:
key = 'tokens/%s' % (token) key = 'tokens/%s' % (token)
claims = self._protect_claims(token, claims)
if "timeout" in cache.set.func_code.co_varnames: if "timeout" in cache.set.func_code.co_varnames:
# swift cache # swift cache
expires = self._convert_date(claims['expires']) expires = self._convert_date(claims['expires'])
claims = self._protect_claims(token, claims)
cache.set(key, (claims, expires, valid), cache.set(key, (claims, expires, valid),
timeout=expires - time.time()) timeout=expires - time.time())
else: else:
@ -351,6 +351,7 @@ class AuthProtocol(object):
if timeout > MAX_CACHE_TIME or not valid: if timeout > MAX_CACHE_TIME or not valid:
# Limit cache to one day (and cache bad tokens for a day) # Limit cache to one day (and cache bad tokens for a day)
timeout = MAX_CACHE_TIME timeout = MAX_CACHE_TIME
claims = self._protect_claims(token, claims)
cache.set(key, (claims, expires, valid), time=timeout) cache.set(key, (claims, expires, valid), time=timeout)
def _cache_get(self, env, token): def _cache_get(self, env, token):
@ -363,14 +364,18 @@ class AuthProtocol(object):
if cached_claims: if cached_claims:
claims, expires, valid = cached_claims claims, expires, valid = cached_claims
if valid: if valid:
if expires > datetime.now(): if "timeout" in cache.set.func_code.co_varnames:
claims = self._unprotect_claims(token, claims) if expires > time.time():
claims = self._unprotect_claims(token, claims)
else:
if expires > datetime.now():
claims = self._unprotect_claims(token, claims)
return (claims, expires, valid) return (claims, expires, valid)
return None return None
def _cache(self, env): def _cache(self, env):
""" Return a cache to use for token caching, or none """ """ Return a cache to use for token caching, or none """
if (self.cache is not None): if self.cache is not None:
return env.get(self.cache, None) return env.get(self.cache, None)
return None return None