X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fserver%2Fsfaapi.py;h=d1acec7171f3e3b037f6ae4dd640248d1f03b973;hb=68bc84ae53c3f5a319c78f48191205ae24694de7;hp=b783369a142477c1553c9979d0341467b67f9494;hpb=28eac17c30d5af62b0017e920fd742225e9864be;p=sfa.git diff --git a/sfa/server/sfaapi.py b/sfa/server/sfaapi.py index b783369a..d1acec71 100644 --- a/sfa/server/sfaapi.py +++ b/sfa/server/sfaapi.py @@ -15,8 +15,6 @@ from sfa.server.xmlrpcapi import XmlrpcApi from sfa.client.return_value import ReturnValue -# thgen xxx fixme this is wrong all right, but temporary, will use generic -from sfa.storage.table import SfaTable #################### class SfaApi (XmlrpcApi): @@ -93,9 +91,9 @@ class SfaApi (XmlrpcApi): return server - def getCredential(self): + def getCredential(self, minimumExpiration=0): """ - Return a valid credential for this interface. + Return a valid credential for this interface. """ type = 'authority' path = self.config.SFA_DATA_DIR @@ -106,7 +104,7 @@ class SfaApi (XmlrpcApi): cred = Credential(filename = cred_filename) # make sure cred isnt expired if not cred.get_expiration or \ - datetime.datetime.utcnow() < cred.get_expiration(): + datetime.datetime.utcnow() + datetime.timedelta(seconds=minimumExpiration) < cred.get_expiration(): return cred.save_to_string(save_parents=True) # get a new credential @@ -162,14 +160,12 @@ class SfaApi (XmlrpcApi): if not auth_hrn or hrn == self.config.SFA_INTERFACE_HRN: auth_hrn = hrn auth_info = self.auth.get_auth_info(auth_hrn) - # xxx thgen fixme - use SfaTable hardwired for now - #table = self.SfaTable() - table = SfaTable() - records = table.findObjects({'hrn': hrn, 'type': 'authority+sa'}) - if not records: - raise RecordNotFound - record = records[0] - type = record['type'] + from sfa.storage.alchemy import dbsession + from sfa.storage.persistentobjs import RegRecord + record = dbsession.query(RegRecord).filter_by(type='authority+sa', hrn=hrn).first() + if not record: + raise RecordNotFound(hrn) + type = record.type object_gid = record.get_gid_object() new_cred = Credential(subject = object_gid.get_subject()) new_cred.set_gid_caller(object_gid)