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):
tmp = sfa_slice['PI'][0].split(".")
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))
+ #self.driver.db.update_job(sfa_slice['name'], nodes = added_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:
self.driver.DeleteSliceFromNodes(sfa_slice['name'], \
deleted_nodes)
-
+ #return added_nodes
except:
logger.log_exc('Failed to add/remove slice from nodes')
#login_base = slice_hrn.split(".")[0]
slicename = slice_hrn
- sl = self.driver.GetSlices(slice_filter = slicename, \
+ slices_list = self.driver.GetSlices(slice_filter = slicename, \
slice_filter_type = 'slice_hrn')
- if sl:
-
- logger.debug("SLABSLICE \tverify_slice slicename %s sl %s \
- slice_record %s"%(slicename, sl, slice_record))
- sfa_slice = sl
- sfa_slice.update(slice_record)
- #del slice['last_updated']
- #del slice['date_created']
- #if peer:
- #slice['peer_slice_id'] = slice_record.get('slice_id', None)
- ## unbind from peer so we can modify if necessary.
- ## Will bind back later
- #self.driver.UnBindObjectFromPeer('slice', slice['slice_id'], \
- #peer['shortname'])
- #Update existing record (e.g. expires field)
- #it with the latest info.
- ##if slice_record and slice['expires'] != slice_record['expires']:
- ##self.driver.UpdateSlice( slice['slice_id'], {'expires' : \
- #slice_record['expires']})
+ if slices_list:
+ for sl in slices_list:
+
+ logger.debug("SLABSLICE \tverify_slice slicename %s sl %s \
+ slice_record %s"%(slicename, sl, slice_record))
+ sfa_slice = sl
+ sfa_slice.update(slice_record)
+ #del slice['last_updated']
+ #del slice['date_created']
+ #if peer:
+ #slice['peer_slice_id'] = slice_record.get('slice_id', None)
+ ## unbind from peer so we can modify if necessary.
+ ## Will bind back later
+ #self.driver.UnBindObjectFromPeer('slice', slice['slice_id'], \
+ #peer['shortname'])
+ #Update existing record (e.g. expires field)
+ #it with the latest info.
+ ##if slice_record and slice['expires'] != slice_record['expires']:
+ ##self.driver.UpdateSlice( slice['slice_id'], {'expires' : \
+ #slice_record['expires']})
else:
logger.debug(" SLABSLICES \tverify_slice Oups \
slice_record %s peer %s sfa_peer %s "\