X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmethods%2Flist.py;h=90a7b8b606e75cf6287e1a048bad884958c33556;hb=ba39ba406a20ca957718fd8f539e782f88068c09;hp=24c4064d4dad6543c93b15f6980d0ad265f4d7fa;hpb=d7d3f34ea227818f46ba16ee46c057ddebabdcb5;p=sfa.git diff --git a/sfa/methods/list.py b/sfa/methods/list.py index 24c4064d..90a7b8b6 100644 --- a/sfa/methods/list.py +++ b/sfa/methods/list.py @@ -30,14 +30,14 @@ class list(Method): returns = [GeniRecord] - def call(self, cred, hrn, request_hash=None, caller_cred=None): + def call(self, cred, hrn, request_hash=None, origin_hrn=None): self.api.auth.authenticateCred(cred, [cred, hrn], request_hash) self.api.auth.check(cred, 'list') - if caller_cred==None: - caller_cred=cred + if origin_hrn==None: + origin_hrn=Credential(string=cred).get_gid_caller().get_hrn() #log the call - self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, Credential(string=caller_cred).get_gid_caller().get_hrn(), hrn, self.name)) + self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, hrn, self.name)) records = [] # load all know registry names into a prefix tree and attempt to find @@ -56,14 +56,18 @@ class list(Method): # forward the request if registry_hrn != self.api.hrn: credential = self.api.getCredential() - request_hash=None try: + request_hash=None record_list = registries[registry_hrn].list(credential, hrn, request_hash, caller_cred) records = [GeniRecord(dict=record).as_dict() for record in record_list] - if records: - return records except: - pass + arg_list = [credential, hrn] + request_hash = self.api.key.compute_hash(arg_list) + record_list = registries[registry_hrn].list(credential, hrn, request_hash, origin_hrn) + records = [GeniRecord(dict=record).as_dict() for record in record_list] + + if records: + return records # if we still havnt found the record yet, try the local registry if not self.api.auth.hierarchy.auth_exists(hrn):