summaryrefslogtreecommitdiffstats
path: root/nova/compute
diff options
context:
space:
mode:
authorTodd Willey <todd@ansolabs.com>2010-07-26 17:00:50 -0400
committerTodd Willey <todd@ansolabs.com>2010-07-26 17:00:50 -0400
commitfd2d4e3f3dba426eedc22b326d2bb0cb6a19eb76 (patch)
tree2d1f8c47bbc995e71eb4a32003bad424e39f11da /nova/compute
parentd6e74751fa156f3879ff2136caccf2a40d4b9e8c (diff)
Expiry awareness for SessionToken.
Diffstat (limited to 'nova/compute')
-rw-r--r--nova/compute/model.py33
1 files changed, 24 insertions, 9 deletions
diff --git a/nova/compute/model.py b/nova/compute/model.py
index 331b68349..3aa6fc841 100644
--- a/nova/compute/model.py
+++ b/nova/compute/model.py
@@ -40,6 +40,7 @@ True
True
"""
+import datetime
import logging
import time
import redis
@@ -241,10 +242,24 @@ class SessionToken(datastore.BasicModel):
return self.token
def default_state(self):
- return {'user': None, 'session_type': None, 'token': self.token}
+ now = datetime.datetime.utcnow()
+ diff = datetime.timedelta(hours=1)
+ expires = now + diff
+ return {'user': None, 'session_type': None, 'token': self.token,
+ 'expiry': expires.strftime(utils.TIME_FORMAT)}
+
+ def save(self):
+ """Call into superclass to save object, then save associations"""
+ if not self['user']:
+ raise exception.Invalid("SessionToken requires a User association")
+ success = super(SessionToken, self).save()
+ if success:
+ self.associate_with("user", self['user'])
+ return True
@classmethod
def generate(cls, userid, session_type=None):
+ """make a new token for the given user"""
token = str(uuid.uuid4())
while cls.lookup(token):
token = str(uuid.uuid4())
@@ -254,14 +269,14 @@ class SessionToken(datastore.BasicModel):
instance.save()
return instance
- def save(self):
- """Call into superclass to save object, then save associations"""
- if not self['user']:
- raise exception.Invalid("SessionToken requires a User association")
- success = super(SessionToken, self).save()
- if success:
- self.associate_with("user", self['user'])
- return True
+ def update_expiry(self, **kwargs):
+ """updates the expirty attribute, but doesn't save"""
+ if not kwargs:
+ kwargs['hours'] = 1
+ time = datetime.datetime.utcnow()
+ diff = datetime.timedelta(**kwargs)
+ expires = time + diff
+ self['expiry'] = expires.strftime(utils.TIME_FORMAT)
if __name__ == "__main__":