get_aggregates and get_registries returns full interface details (urn, hrn, url,...
authorTony Mack <tmack@cs.princeton.edu>
Mon, 16 Aug 2010 21:44:19 +0000 (21:44 +0000)
committerTony Mack <tmack@cs.princeton.edu>
Mon, 16 Aug 2010 21:44:19 +0000 (21:44 +0000)
sfa/methods/get_aggregates.py
sfa/methods/get_registries.py
sfa/server/aggregate.py
sfa/server/interface.py
sfa/server/registry.py
sfa/trust/auth.py

index 384b0b6..0ed15f3 100644 (file)
@@ -31,16 +31,4 @@ class get_aggregates(Method):
         hrn, type = urn_to_hrn(xrn)
         self.api.auth.check(cred, 'list')
         aggregates = Aggregates(self.api)
-        hrn_list = [] 
-        if hrn:
-            if isinstance(hrn, StringTypes):
-                hrn_list = [hrn]
-            elif isinstance(hrn, list):
-                hrn_list = hrn
-        
-        if not hrn_list:
-            interfaces = aggregates.interfaces.keys()
-        else:
-            interfaces = [interface for interface in aggregates.interfaces if interface in hrn_list]
-      
-        return interfaces
+        return aggregates.interfaces.values()
index 082c5df..0d382d6 100644 (file)
@@ -31,16 +31,4 @@ class get_registries(Method):
         hrn, type = urn_to_hrn(xrn)
         self.api.auth.check(cred, 'list')
         registries = Registries(self.api)
-        hrn_list = []
-        if hrn:
-            if isinstance(hrn, StringTypes):
-                hrn_list = [hrn]
-            elif isinstance(hrn, list):
-                hrn_list = hrn
-
-        if not hrn_list:
-            interfaces = registries.interfaces.keys()
-        else:
-            interfaces = [interface for interface in registries.interfaces if interface in hrn_list]
-
-        return interfaces
+        return registries.interfaces.values()
index 515b9e9..81d8705 100644 (file)
@@ -4,6 +4,7 @@
 
 from sfa.util.server import SfaServer
 from sfa.util.faults import *
+from sfa.util.namespace import hrn_to_urn
 from sfa.server.interface import Interfaces
 import sfa.util.xmlrpcprotocol as xmlrpcprotocol
 import sfa.util.soapprotocol as soapprotocol
@@ -35,7 +36,11 @@ class Aggregates(Interfaces):
         address = self.api.config.SFA_AGGREGATE_HOST
         port = self.api.config.SFA_AGGREGATE_PORT
         url = 'http://%(address)s:%(port)s' % locals()
-        local_aggregate = {'hrn': self.api.hrn, 'addr': address, 'port': port}
+        local_aggregate = {'hrn': self.api.hrn,
+                           'urn': hrn_to_urn(self.api.hrn, 'authority'),
+                           'addr': address,
+                           'port': port,
+                           'url': url}
         self.interfaces[self.api.hrn] = local_aggregate
 
         # get connections
index 5ccb7ee..6492e70 100644 (file)
@@ -60,6 +60,13 @@ class Interfaces(dict):
         interfaces = self.interface_info.values()[0].values()[0]
         if not isinstance(interfaces, list):
             interfaces = [self.interfaces]
+        # set the url and urn 
+        for interface in interfaces:
+            hrn, address, port = interface['hrn'], interface['addr'], interface['port']
+            url = 'http://%(address)s:%(port)s' % locals()
+            interface['url'] = url
+            interface['urn'] = hrn_to_urn(hrn, 'authority')
+    
         self.interfaces = {}
         required_fields = self.default_fields.keys()
         for interface in interfaces:
@@ -183,12 +190,8 @@ class Interfaces(dict):
         required_fields = self.default_fields.keys()
         for interface in self.interfaces.values():
             # make sure the required fields are present and not null
-            if not all([interface.get(key) for key in required_fields]):
-                continue
-            
-            hrn, address, port = interface['hrn'], interface['addr'], interface['port']
-            url = 'http://%(address)s:%(port)s' % locals()
             
+            url = interface['url']
             # check which client we should use
             # sfa.util.xmlrpcprotocol is default
             client_type = 'xmlrpcprotocol'
@@ -198,6 +201,6 @@ class Interfaces(dict):
                 client_type = 'geniclientlight'
                 connections[hrn] = GeniClientLight(url, self.api.key_file, self.api.cert_file) 
             else:
-                connections[hrn] = xmlrpcprotocol.get_server(url, self.api.key_file, self.api.cert_file)
+                connections[interface['hrn']] = xmlrpcprotocol.get_server(url, self.api.key_file, self.api.cert_file)
 
         return connections 
index 0b92f76..fb4f043 100644 (file)
@@ -7,6 +7,7 @@
 
 from sfa.util.server import SfaServer
 from sfa.util.faults import *
+from sfa.util.namespace import hrn_to_urn
 from sfa.server.interface import Interfaces
 import sfa.util.xmlrpcprotocol as xmlrpcprotocol
 import sfa.util.soapprotocol as soapprotocol
@@ -41,7 +42,11 @@ class Registries(Interfaces):
         address = self.api.config.SFA_REGISTRY_HOST
         port = self.api.config.SFA_REGISTRY_PORT
         url = 'http://%(address)s:%(port)s' % locals()
-        local_registry = {'hrn': self.api.hrn, 'addr': address, 'port': port}
+        local_registry = {'hrn': self.api.hrn,
+                           'urn': hrn_to_urn(self.api.hrn, 'authority'),
+                           'addr': address,
+                           'port': port,
+                           'url': url}
         self.interfaces[self.api.hrn] = local_registry
        
         # get connections
index f8d09b4..28e8639 100644 (file)
@@ -6,6 +6,7 @@
 #
 
 
+from sfa.trust.certificate import Keypair, Certificate
 from sfa.trust.credential import Credential
 from sfa.trust.trustedroot import TrustedRootList
 from sfa.util.faults import *