fix bugs
authorTony Mack <tmack@cs.princeton.edu>
Fri, 6 Feb 2009 05:59:01 +0000 (05:59 +0000)
committerTony Mack <tmack@cs.princeton.edu>
Fri, 6 Feb 2009 05:59:01 +0000 (05:59 +0000)
geni/aggregate.py

index 533b365..9ec0a6e 100644 (file)
@@ -119,22 +119,19 @@ class Aggregate(GeniServer):
         
         # see if this file exists
         try:
         
         # see if this file exists
         try:
-            cred = Credential(filename = ma_cred_filename)
+            cred = Credential(filename = ma_cred_filename, subject=self.hrn)
             self.credential = cred.save_to_string()
         except IOError:
             # get self credential
             self.credential = cred.save_to_string()
         except IOError:
             # get self credential
-            #self_cred = self.registry.get_credential(None, 'ma', self.hrn)
-            #self_credential = Credential(string = self_cred)
-            #self_credential.save_to_file(self_cred_filename)
+            self_cred = self.registry.get_credential(None, 'ma', self.hrn)
+            self_credential = Credential(string = self_cred)
+            self_credential.save_to_file(self_cred_filename)
 
             # get ma credential
 
             # get ma credential
-            #ma_cred = self.registry.get_gredential(self_cred)
-            #ma_credential = Credential(string = ma_cred)
-            #ma_credential.save_to_file(ma_cred_filename)
-
-            ma_cred = Certificate(filename = self.cert_file)
-            
-            self.credential = ma_cred.save_to_string()
+            ma_cred = self.registry.get_credential(self_cred)
+            ma_credential = Credential(string = ma_cred)
+            ma_credential.save_to_file(ma_cred_filename)
+            self.credential = ma_cred
 
     def hostname_to_hrn(self, login_base, hostname):
         """
 
     def hostname_to_hrn(self, login_base, hostname):
         """
@@ -322,6 +319,7 @@ class Aggregate(GeniServer):
         Instantiate the specified slice according to whats defined in the rspec.
         """
         
         Instantiate the specified slice according to whats defined in the rspec.
         """
         
+        spec = Rspec(rspec)
         # save slice state locally
         # we can assume that spec object has been validated so its safer to
         # save this instead of the unvalidated rspec the user gave us
         # save slice state locally
         # we can assume that spec object has been validated so its safer to
         # save this instead of the unvalidated rspec the user gave us
@@ -331,7 +329,7 @@ class Aggregate(GeniServer):
         # Get slice info
         slicename = hrn_to_pl_slicename(slice_hrn)
         slices = self.shell.GetSlices(self.auth, [slicename], ['node_ids'])
         # Get slice info
         slicename = hrn_to_pl_slicename(slice_hrn)
         slices = self.shell.GetSlices(self.auth, [slicename], ['node_ids'])
-        if not slice:
+        if not slices:
             raise RecordNotFound(slice_hrn)
         slice = slices[0]
 
             raise RecordNotFound(slice_hrn)
         slice = slices[0]
 
@@ -340,7 +338,6 @@ class Aggregate(GeniServer):
         hostnames = [node['hostname'] for node in nodes]
 
         # get netspec details
         hostnames = [node['hostname'] for node in nodes]
 
         # get netspec details
-        spec = Rspec(rspec)
         nodespecs = spec.getDictsByTagName('NodeSpec')
         nodes = [nodespec['name'] for nodespec in nodespecs]    
        
         nodespecs = spec.getDictsByTagName('NodeSpec')
         nodes = [nodespec['name'] for nodespec in nodespecs]    
        
@@ -351,16 +348,16 @@ class Aggregate(GeniServer):
         self.slices.write()
 
         # remove nodes not in rspec
         self.slices.write()
 
         # remove nodes not in rspec
-        delete_nodes = set(hostnames).difference(nodes)
+        deleted_nodes = list(set(hostnames).difference(nodes))
         # add nodes from rspec
         # add nodes from rspec
-        added_nodes = set(nodes).difference(hostnames)
+        added_nodes = list(set(nodes).difference(hostnames))
     
     
-        shell.AddSliceToNodes(self.auth, slicename, added_nodes)
-        shell.DeleteSliceFromNodes(self.auth, slicename, deleted_nodes)
+        self.shell.AddSliceToNodes(self.auth, slicename, added_nodes)
+        self.shell.DeleteSliceFromNodes(self.auth, slicename, deleted_nodes)
 
         for attribute in attributes:
             type, value, node, nodegroup = attribute['type'], attribute['value'], attribute['node'], attribute['nodegroup']
 
         for attribute in attributes:
             type, value, node, nodegroup = attribute['type'], attribute['value'], attribute['node'], attribute['nodegroup']
-            shell.AddSliceAttribute(self.auth, slicename, type, value, node, nodegroup)
+            self.shell.AddSliceAttribute(self.auth, slicename, type, value, node, nodegroup)
     
         # contact registry to get slice users and add them to the slice
         slice_record = self.registry.resolve(self.credential, slice_hrn)
     
         # contact registry to get slice users and add them to the slice
         slice_record = self.registry.resolve(self.credential, slice_hrn)
@@ -370,10 +367,10 @@ class Aggregate(GeniServer):
         #    shell.AddPersonToSlice(person['email'], slice_name)
         return 1
 
         #    shell.AddPersonToSlice(person['email'], slice_name)
         return 1
 
-    def update_slice(self, slice_hrn, rspec, attributes = []):
+    def updateSlice(self, slice_hrn, rspec, attributes = []):
         return self.create_slice(slice_hrn, rspec, attributes)
          
         return self.create_slice(slice_hrn, rspec, attributes)
          
-    def deleteSlice_(self, slice_hrn):
+    def deleteSlice(self, slice_hrn):
         """
         Remove this slice from all components it was previouly associated with and 
         free up the resources it was using.
         """
         Remove this slice from all components it was previouly associated with and 
         free up the resources it was using.
@@ -383,12 +380,12 @@ class Aggregate(GeniServer):
             self.slices.write()
 
         slicename = hrn_to_pl_slicename(slice_hrn)
             self.slices.write()
 
         slicename = hrn_to_pl_slicename(slice_hrn)
-        slices = shell.GetSlices(self.auth, [slicename])
-        if not slice:
+        slices = self.shell.GetSlices(self.auth, [slicename])
+        if not slices:
             return 1  
         slice = slices[0]
       
             return 1  
         slice = slices[0]
       
-        shell.DeleteSliceFromNodes(self.auth, slicename, slice['node_ids'])
+        self.shell.DeleteSliceFromNodes(self.auth, slicename, slice['node_ids'])
         return 1
 
     def startSlice(self, slice_hrn):
         return 1
 
     def startSlice(self, slice_hrn):
@@ -459,7 +456,7 @@ class Aggregate(GeniServer):
 
     def create_slice(self, cred, hrn, rspec):
         self.decode_authentication(cred, 'embed')
 
     def create_slice(self, cred, hrn, rspec):
         self.decode_authentication(cred, 'embed')
-        return self.createSlice(hrn)
+        return self.createSlice(hrn, rspec)
 
     def update_slice(self, cred, hrn, rspec):
         self.decode_authentication(cred, 'embed')
 
     def update_slice(self, cred, hrn, rspec):
         self.decode_authentication(cred, 'embed')