list nodes now collapsed into list resources
[sfa.git] / geni / slicemgr.py
index c87a78e..2abfc37 100644 (file)
@@ -51,7 +51,8 @@ class SliceMgr(GeniServer):
         
         # Get list of aggregates this sm talks to
         aggregates_file = self.server_basedir + os.sep + 'aggregates.xml'
-        self.aggregate_info = XmlStorage(aggregates_file, {'aggregates': {'aggregate': []}} )
+        connection_dict = {'hrn': '', 'addr': '', 'port': ''}
+        self.aggregate_info = XmlStorage(aggregates_file, {'aggregates': {'aggregate': [connection_dict]}} )
         self.aggregate_info.load()
         
         # Get cached list of nodes (rspec) 
@@ -88,7 +89,7 @@ class SliceMgr(GeniServer):
         try:
             self.credential = Credential(filename = ma_cred_filename)
         except IOError:
-            self.credential = self.getCrednetialFromRegistry()
+            self.credential = self.getCredentialFromRegistry()
             
         
     def getCredentialFromRegistry(self):
@@ -118,8 +119,8 @@ class SliceMgr(GeniServer):
 
     def connectAggregates(self):
         """
-        Get info about the aggregates available to us from file and create 
-        an xmlrpc connection to each. If any info is invalid, skip it. 
+        Get connection details for the trusted peer aggregates from file and 
+        create a GeniClient connection to each.      
         """
         self.aggregates = {} 
         aggregates = self.aggregate_info['aggregates']['aggregate']
@@ -129,6 +130,8 @@ class SliceMgr(GeniServer):
             for aggregate in aggregates:         
                 # create xmlrpc connection using GeniClient
                 hrn, address, port = aggregate['hrn'], aggregate['addr'], aggregate['port']
+                if not hrn or not address or not port:
+                    continue
                 url = 'http://%(address)s:%(port)s' % locals()
                 self.aggregates[hrn] = GeniClient(url, self.key_file, self.cert_file)
 
@@ -408,9 +411,12 @@ class SliceMgr(GeniServer):
         self.decode_authentication(cred, 'listslices')
         return self.getSlices()
 
-    def get_resources(self, cred, hrn):
+    def get_resources(self, cred, hrn=None):
         self.decode_authentication(cred, 'listnodes')
-        return self.getResources(hrn)
+        if not hrn: 
+            return self.getNodes()
+        else:
+            return self.getResources(hrn)
 
     def get_ticket(self, cred, hrn, rspec):
         self.decode_authentication(cred, 'getticket')