X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fserver%2Fsfaapi.py;h=d1acec7171f3e3b037f6ae4dd640248d1f03b973;hb=108f6d000af6517d3b22501255b377a83568b946;hp=afb71a422841a75f398217a5d3034f824116663c;hpb=0d88de5aaee6820835f2d9770aab6c7392f14e21;p=sfa.git diff --git a/sfa/server/sfaapi.py b/sfa/server/sfaapi.py index afb71a42..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) @@ -214,7 +210,6 @@ class SfaApi (XmlrpcApi): def get_geni_code(self, result): code = { - 'geni_api': 2, 'geni_code': GENICODE.SUCCESS, 'am_type': 'sfa', 'am_code': None, @@ -239,6 +234,7 @@ class SfaApi (XmlrpcApi): def prepare_response_v2_am(self, result): response = { + 'geni_api': 2, 'code': self.get_geni_code(result), 'value': self.get_geni_value(result), 'output': self.get_geni_output(result),