Added code for delete slice - kills the job .
authorSandrine Avakian <sandrine.avakian@inria.fr>
Thu, 29 Mar 2012 13:52:42 +0000 (15:52 +0200)
committerSandrine Avakian <sandrine.avakian@inria.fr>
Thu, 29 Mar 2012 13:52:42 +0000 (15:52 +0200)
sfa/senslab/slabaggregate.py
sfa/senslab/slabdriver.py
sfa/senslab/slabpostgres.py

index f8ce7a3..3295340 100644 (file)
@@ -251,7 +251,7 @@ class SlabAggregate:
                 #service = Services({'login': login})
                 #rspec_node['services'] = [service]
             rspec_nodes.append(rspec_node)
-        print>>sys.stderr, "\r\n \r\n \t get_nodes_and_links options %s rspec_nodes[0] %s " %(options,rspec_nodes[0])
+        
         return (rspec_nodes)       
 
 #from plc/aggregate.py 
index 3c35164..86c0fb0 100644 (file)
@@ -185,20 +185,21 @@ class SlabDriver(Driver):
         
     def delete_sliver (self, slice_urn, slice_hrn, creds, options):
         
-        slices = self.GetSlices(slice_filter= slice_hrn, filter_type = 'slice_hrn')
-        if not slices:
+        slice = self.GetSlices(slice_filter= slice_hrn, filter_type = 'slice_hrn')
+        print>>sys.stderr, "\r\n \r\n \t\t  SLABDRIVER.PY delete_sliver slice %s" %(slice)
+        if not slice:
             return 1
-        slice = slices[0]
-    
+       
+        slices = SlabSlices(self)
         # determine if this is a peer slice
         # xxx I wonder if this would not need to use PlSlices.get_peer instead 
         # in which case plc.peers could be deprecated as this here
         # is the only/last call to this last method in plc.peers
-        peer = peers.get_peer(self, slice_hrn)
+        peer = slices.get_peer(slice_hrn)
         try:
             if peer:
-                self.UnBindObjectFromPeer('slice', slice['slice_id'], peer)
-            self.DeleteSliceFromNodes(slice_hrn, slice['node_ids'])
+                self.UnBindObjectFromPeer('slice', slice['record_id_slice'], peer)
+            self.DeleteSliceFromNodes(slice)
         finally:
             if peer:
                 self.BindObjectToPeer('slice', slice['slice_id'], peer, slice['peer_slice_id'])
@@ -453,9 +454,10 @@ class SlabDriver(Driver):
         return server_timestamp,server_tz
     
 
-    def DeleteJobs(self, job_id, username):
+    def DeleteJobs(self, job_id, slice_hrn):
         if not job_id:
             return
+        username  = slice_hrn.split(".")[-1].rstrip("_slice")
         reqdict = {}
         reqdict['method'] = "delete"
         reqdict['strval'] = str(job_id)
@@ -758,8 +760,14 @@ class SlabDriver(Driver):
     
 
         
-        
-    def DeleteSliceFromNodes(self, slice_name, deleted_nodes):
+    #Delete the jobs and updates the job id in the senslab table
+    #to set it to -1  
+    #Does not clear the node list 
+    def DeleteSliceFromNodes(self, slice_record):
+         # Get user information
+       
+        self.DeleteJobs(slice_record['oar_job_id'], slice_record['hrn'])
+        self.db.update_job(slice_record['hrn'], job_id = -1)
         return   
     
  
index 34d78ac..513c858 100644 (file)
@@ -171,7 +171,7 @@ class SlabDB:
         SlabBase.metadata.create_all(slab_engine)
         return
     
-    
+    #Updates the job_id and the nodes list 
     def update_job(self, hrn, job_id= None, nodes = None ):
         slice_rec = slab_dbsession.query(SliceSenslab).filter_by(slice_hrn = hrn).first()
         print>>sys.stderr, " \r\n \r\n \t SLABPOSTGRES  update_job slice_rec %s"%(slice_rec)