-
- # load all know registry names into a prefix tree and attempt to find
- # the longest matching prefix
- records = []
- registries = Registries(self.api)
- hrns = registries.keys()
- tree = prefixTree()
- tree.load(hrns)
- registry_hrn = tree.best_match(hrn)
-
- #if there was no match then this record belongs to an unknow registry
- if not registry_hrn:
- raise MissingAuthority(hrn)
-
- # if the best match (longest matching hrn) is not the local registry,
- # forward the request
- if registry_hrn != self.api.hrn:
- credential = self.api.getCredential()
- record_list = registries[registry_hrn].list(credential, hrn, 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):
- raise MissingAuthority(hrn)
-
- table = GeniTable()
- records = table.find({'authority': hrn})