updated default path and search path for geni_config
[sfa.git] / geni / methods / list.py
index 641e4db..81c5e08 100644 (file)
@@ -4,6 +4,7 @@ from geni.util.method import Method
 from geni.util.parameter import Parameter, Mixed
 from geni.util.auth import Auth
 from geni.util.record import GeniRecord
+from geni.registry import Registries
 
 class list(Method):
     """
@@ -26,16 +27,18 @@ class list(Method):
     def call(self, cred, hrn):
         
         self.api.auth.check(cred, 'list')
-        # is this a foreign authority
-        if not hrn.startswith(self.api.hrn):
-            for registry in self.api.registries:
-                if hrn.startswith(registry):
-                    records = self.api.registries[registry].list(self.api.credential, hrn)
-                    return records    
-
-        if not self.api.auth.hierarchy.auth_exists(hrn):
-            raise MissingAuthority(hrn)
-        table = self.api.auth.get_auth_table(hrn)   
-        records = table.list()
+        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)
+            credential = self.api.getCredential()
+            for registry in registries:
+                if hrn.startswith(registry) and registry not in [self.api.hrn]:
+                    records = registries[registry].list(credential, hrn)
+                    return records
         
         return records