diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-05-24 18:24:30 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-05-24 18:24:30 +0000 |
| commit | b91cf18420fc09b0151271e0c5f878d5df944e1c (patch) | |
| tree | dfe417dd86a736834f237a8bec73bbab78995db5 | |
| parent | 43e9e7c0703ad1d49b1ce63a751a2ff5e176c394 (diff) | |
| parent | 40481581696a8ba3c056c59d97213791eca84a6c (diff) | |
Merge "Use memcache to store consoleauth tokens"
| -rw-r--r-- | nova/consoleauth/manager.py | 40 |
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) |
