- try:
- if not self.api.auth.hierarchy.auth_exists(hrn):
- raise MissingAuthority(hrn)
- table = self.api.auth.get_auth_table(hrn)
- records = table.list()
- except MissingAuthority:
- # is this a foreign authority
- registries = Registries(self.api)
+
+ # load all know registry names into a prefix tree and attempt to find
+ # the longest matching prefix
+ 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: