diff options
| author | Todd Willey <todd@ansolabs.com> | 2010-07-26 17:00:50 -0400 |
|---|---|---|
| committer | Todd Willey <todd@ansolabs.com> | 2010-07-26 17:00:50 -0400 |
| commit | fd2d4e3f3dba426eedc22b326d2bb0cb6a19eb76 (patch) | |
| tree | 2d1f8c47bbc995e71eb4a32003bad424e39f11da /nova/compute | |
| parent | d6e74751fa156f3879ff2136caccf2a40d4b9e8c (diff) | |
Expiry awareness for SessionToken.
Diffstat (limited to 'nova/compute')
| -rw-r--r-- | nova/compute/model.py | 33 |
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__": |
