no longer using geniclient, pass string arguments not objecs when calling aggregate...
authorTony Mack <tmack@cs.princeton.edu>
Fri, 23 Oct 2009 01:30:35 +0000 (01:30 +0000)
committerTony Mack <tmack@cs.princeton.edu>
Fri, 23 Oct 2009 01:30:35 +0000 (01:30 +0000)
sfa/plc/nodes.py

index 7706763..e4458d3 100644 (file)
@@ -31,7 +31,7 @@ class Nodes(SimpleStorage):
         SimpleStorage.__init__(self, self.nodes_file)
         self.policy = Policy(api)
         self.load()
-       self.caller_cred=caller_cred
+        self.caller_cred=caller_cred
 
 
     def refresh(self):
@@ -113,17 +113,21 @@ class Nodes(SimpleStorage):
         credential = self.api.getCredential() 
         for aggregate in aggregates:
             try:
+                caller_cred = self.caller_cred
+                cred_str = credential.save_to_string(save_parents=True)
+                arg_list = [cred_str, hrn]
+                request_hash = self.api.key.compute_hash(arg_list)
+                
                 # get the rspec from the aggregate
-                agg_rspec = aggregates[aggregate].get_resources(credential, hrn, caller_cred=self.caller_cred)
+                agg_rspec = aggregates[aggregate].get_resources(cred_str, hrn, request_hash, caller_cred)
                 # extract the netspec from each aggregates rspec
                 rspec.parseString(agg_rspec)
                 networks.extend([{'NetSpec': rspec.getDictsByTagName('NetSpec')}])
             except:
                 # XX print out to some error log
-                print >> log, "Error calling list nodes at aggregate %s" % aggregate
+                print >> log, "Error getting resources at aggregate %s" % aggregate
                 traceback.print_exc(log)
-                exc_type, exc_value, exc_traceback = sys.exc_info()
-                print exc_type, exc_value, exc_traceback
+                print >> log, "%s" % (traceback.format_exc())
         # create the rspec dict
         resources = {'networks': networks, 'start_time': start_time, 'duration': duration}
         resourceDict = {'Rspec': resources}
@@ -162,8 +166,8 @@ class Nodes(SimpleStorage):
 
     def get_rspec_smgr(self, hrn = None):
         
-       rspec = self.get_remote_resources(hrn)
-       return rspec.toxml()
+        rspec = self.get_remote_resources(hrn)
+        return rspec.toxml()
 
     def get_rspec_aggregate(self, hrn = None):
         """