Removed custom timeslot and duration to make a reservation on OAR.
[sfa.git] / sfa / senslab / slabslices.py
index 1b02b22..ec6d072 100644 (file)
@@ -139,27 +139,38 @@ class SlabSlices:
         return sfa_peer
         
         
-    def verify_slice_leases(self, sfa_slice, requested_leases, kept_leases, \
+    def verify_slice_leases(self, sfa_slice, requested_jobs_dict, kept_leases, \
         peer):
-        
+
+       
+        #First get the list of current leases from OAR  
         leases = self.driver.GetLeases({'name':sfa_slice['name']}, ['lease_id'])
         if leases : 
             current_leases = [lease['lease_id'] for lease in leases]
+            #Deleted leases are the ones with lease id not declared in the Rspec
             deleted_leases = list(set(current_leases).difference(kept_leases))
     
             try:
                 if peer:
-                    self.driver.UnBindObjectFromPeer('slice', \
-                                    sfa_slice['slice_id'], peer['shortname'])
-                deleted = self.driver.DeleteLeases(deleted_leases)
-                for lease in requested_leases:
-                    added = self.driver.AddLeases(lease['hostname'], \
-                            sfa_slice['name'], int(lease['t_from']), \
-                            int(lease['t_until']))
+                    #peer = RegAuyhority object is unsubscriptable
+                    #TODO :UnBindObjectFromPeer Quick and dirty auth='senslab2 SA 27/07/12
+                    self.driver.UnBindObjectFromPeer('senslab2', 'slice', \
+                                    sfa_slice['record_id_slice'], peer.hrn)
+                
+                deleted = self.driver.DeleteLeases(deleted_leases, \
+                                        sfa_slice['name'])
+               
             #TODO : catch other exception?
             except KeyError: 
                 logger.log_exc('Failed to add/remove slice leases')
-
+                
+        #Add new leases        
+        for start_time in requested_jobs_dict:
+            job = requested_jobs_dict[start_time]
+            added = self.driver.AddLeases(job['hostname'], \
+                        sfa_slice, int(job['start_time']), \
+                        int(job['duration']))
+                        
         return leases
 
     def verify_slice_nodes(self, sfa_slice, requested_slivers, peer):
@@ -187,16 +198,16 @@ class SlabSlices:
             username = tmp[(len(tmp)-1)]
             #Update the table with the nodes that populate the slice
             self.driver.db.update_job(sfa_slice['name'], nodes = added_nodes)
-            logger.debug("SLABSLICES \tverify_slice_nodes slice %s "\
-                                                             %(sfa_slice))
+            logger.debug("SLABSLICES \tverify_slice_nodes slice %s \r\n \r\n deleted_nodes %s"\
+                                                             %(sfa_slice,deleted_nodes))
             #If there is a timeslot specified, then a job can be launched
-            try:
-                #slot = sfa_slice['timeslot']
-                self.driver.LaunchExperimentOnOAR(sfa_slice, added_nodes, \
-                                                                    username)
-            except KeyError:  
-                logger.log_exc("SLABSLICES \verify_slice_nodes KeyError \
-                                                sfa_slice %s  " %(sfa_slice))
+            #try:
+                ##slot = sfa_slice['timeslot']
+                #self.driver.LaunchExperimentOnOAR(sfa_slice, added_nodes, \
+                                                                    #username)
+            #except KeyError:  
+                #logger.log_exc("SLABSLICES \verify_slice_nodes KeyError \
+                                                #sfa_slice %s  " %(sfa_slice))
 
 
             if deleted_nodes: