git://git.onelab.eu
/
sfa.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6437041
)
only use cached credentials if they havn't expired
author
Tony Mack
<tmack@cs.princeton.edu>
Tue, 27 Jul 2010 23:08:21 +0000
(23:08 +0000)
committer
Tony Mack
<tmack@cs.princeton.edu>
Tue, 27 Jul 2010 23:08:21 +0000
(23:08 +0000)
sfa/client/sfi.py
patch
|
blob
|
history
diff --git
a/sfa/client/sfi.py
b/sfa/client/sfi.py
index
8c7704c
..
53c2227
100755
(executable)
--- a/
sfa/client/sfi.py
+++ b/
sfa/client/sfi.py
@@
-9,6
+9,7
@@
import tempfile
import traceback
import socket
import random
import traceback
import socket
import random
+import datetime
from lxml import etree
from StringIO import StringIO
from types import StringTypes, ListType
from lxml import etree
from StringIO import StringIO
from types import StringTypes, ListType
@@
-380,12
+381,25
@@
class Sfi:
print "Writing user gid to", file
gid.save_to_file(file, save_parents=True)
return gid
print "Writing user gid to", file
gid.save_to_file(file, save_parents=True)
return gid
+
+ def get_cached_credential(self, file):
+ """
+ Return a cached credential only if it hasn't expired.
+ """
+ if (os.path.isfile(file)):
+ credential = Credential(filename=file)
+ # make sure it isnt expired
+ if not credential.get_lifetime or \
+ datetime.datetime.today() < credential.get_lifefime():
+ return credential
+ return None
def get_user_cred(self):
#file = os.path.join(self.options.sfi_dir, get_leaf(self.user) + ".cred")
file = os.path.join(self.options.sfi_dir, self.user.replace(self.authority + '.', '') + ".cred")
def get_user_cred(self):
#file = os.path.join(self.options.sfi_dir, get_leaf(self.user) + ".cred")
file = os.path.join(self.options.sfi_dir, self.user.replace(self.authority + '.', '') + ".cred")
- if (os.path.isfile(file)):
- user_cred = Credential(filename=file)
+
+ user_cred = self.get_cached_credential(file)
+ if user_cred:
return user_cred
else:
# bootstrap user credential
return user_cred
else:
# bootstrap user credential
@@
-412,8
+426,8
@@
class Sfi:
sys.exit(-1)
file = os.path.join(self.options.sfi_dir, get_leaf("authority") + ".cred")
sys.exit(-1)
file = os.path.join(self.options.sfi_dir, get_leaf("authority") + ".cred")
- if (os.path.isfile(file)):
- auth_cred = Credential(filename=file)
+ auth_cred = self.get_cached_credential(file)
+ if auth_cred:
return auth_cred
else:
# bootstrap authority credential from user credential
return auth_cred
else:
# bootstrap authority credential from user credential
@@
-431,8
+445,8
@@
class Sfi:
def get_slice_cred(self, name):
file = os.path.join(self.options.sfi_dir, "slice_" + get_leaf(name) + ".cred")
def get_slice_cred(self, name):
file = os.path.join(self.options.sfi_dir, "slice_" + get_leaf(name) + ".cred")
- if (os.path.isfile(file)):
- slice_cred = Credential(filename=file)
+ slice_cred = self.get_cached_credential(file)
+ if slice_cred:
return slice_cred
else:
# bootstrap slice credential from user credential
return slice_cred
else:
# bootstrap slice credential from user credential