summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-05-24 18:24:30 +0000
committerGerrit Code Review <review@openstack.org>2012-05-24 18:24:30 +0000
commitb91cf18420fc09b0151271e0c5f878d5df944e1c (patch)
treedfe417dd86a736834f237a8bec73bbab78995db5
parent43e9e7c0703ad1d49b1ce63a751a2ff5e176c394 (diff)
parent40481581696a8ba3c056c59d97213791eca84a6c (diff)
Merge "Use memcache to store consoleauth tokens"
-rw-r--r--nova/consoleauth/manager.py40
1 files changed, 18 insertions, 22 deletions
diff --git a/nova/consoleauth/manager.py b/nova/consoleauth/manager.py
index a5c133e7a..09f9a4046 100644
--- a/nova/consoleauth/manager.py
+++ b/nova/consoleauth/manager.py
@@ -24,7 +24,7 @@ from nova import flags
from nova import log as logging
from nova import manager
from nova.openstack.common import cfg
-from nova import utils
+from nova.openstack.common import jsonutils
LOG = logging.getLogger(__name__)
@@ -49,33 +49,29 @@ class ConsoleAuthManager(manager.Manager):
def __init__(self, scheduler_driver=None, *args, **kwargs):
super(ConsoleAuthManager, self).__init__(*args, **kwargs)
- self.tokens = {}
- utils.LoopingCall(self._delete_expired_tokens).start(1)
- def _delete_expired_tokens(self):
- now = time.time()
- to_delete = []
- for k, v in self.tokens.items():
- if now - v['last_activity_at'] > FLAGS.console_token_ttl:
- to_delete.append(k)
-
- for k in to_delete:
- LOG.audit(_("Deleting Expired Token: (%s)"), k)
- del self.tokens[k]
+ if FLAGS.memcached_servers:
+ import memcache
+ else:
+ from nova.common import memorycache as memcache
+ self.mc = memcache.Client(FLAGS.memcached_servers,
+ debug=0)
def authorize_console(self, context, token, console_type, host, port,
internal_access_path):
- self.tokens[token] = {'token': token,
- 'console_type': console_type,
- 'host': host,
- 'port': port,
- 'internal_access_path': internal_access_path,
- 'last_activity_at': time.time()}
- token_dict = self.tokens[token]
+ token_dict = {'token': token,
+ 'console_type': console_type,
+ 'host': host,
+ 'port': port,
+ 'internal_access_path': internal_access_path,
+ 'last_activity_at': time.time()}
+ data = jsonutils.dumps(token_dict)
+ self.mc.set(token, data, FLAGS.console_token_ttl)
LOG.audit(_("Received Token: %(token)s, %(token_dict)s)"), locals())
def check_token(self, context, token):
- token_valid = token in self.tokens
+ token_str = self.mc.get(token)
+ token_valid = (token_str != None)
LOG.audit(_("Checking Token: %(token)s, %(token_valid)s)"), locals())
if token_valid:
- return self.tokens[token]
+ return jsonutils.loads(token_str)