requested_slivers = [node.get('component_name') \
for node in rspec.version.get_nodes_with_slivers()]
+ l = [ node for node in rspec.version.get_nodes_with_slivers() ]
logger.debug("SLADRIVER \tcreate_sliver requested_slivers \
- requested_slivers %s " %(requested_slivers))
+ requested_slivers %s listnodes %s" %(requested_slivers,l))
nodes = slices.verify_slice_nodes(sfa_slice, requested_slivers, peer)
reservation_list = []
#Find the slice associated with this user senslab ldap uid
logger.debug(" SLABDRIVER.PY \tGetLeases ")
+ #Create user dict first to avoir looking several times for
+ #the same user in LDAP SA 27/07/12
+ resa_user_dict = {}
for resa in unfiltered_reservation_list:
- ldap_info = self.ldap.LdapSearch('(uid='+resa['user']+')')
- ldap_info = ldap_info[0][1]
-
- user = dbsession.query(RegUser).filter_by(email = \
- ldap_info['mail'][0]).first()
- #Separated in case user not in database : record_id not defined SA 17/07//12
- query_slice_info = slab_dbsession.query(SliceSenslab).filter_by(record_id_user = user.record_id)
- if query_slice_info:
- slice_info = query_slice_info.first()
-
+ logger.debug("SLABDRIVER \tGetLeases USER %s"\
+ %(resa['user']))
+ if resa['user'] not in resa_user_dict:
+ logger.debug("SLABDRIVER \tGetLeases userNOTIN ")
+ ldap_info = self.ldap.LdapSearch('(uid='+resa['user']+')')
+ ldap_info = ldap_info[0][1]
+ user = dbsession.query(RegUser).filter_by(email = \
+ ldap_info['mail'][0]).first()
+ #Separated in case user not in database : record_id not defined SA 17/07//12
+ query_slice_info = slab_dbsession.query(SliceSenslab).filter_by(record_id_user = user.record_id)
+ if query_slice_info:
+ slice_info = query_slice_info.first()
+ else:
+ slice_info = None
+ resa_user_dict[resa['user']] = {}
+ resa_user_dict[resa['user']]['ldap_info'] = user
+ resa_user_dict[resa['user']]['slice_info'] = slice_info
+
+ logger.debug("SLABDRIVER \tGetLeases resa_user_dict %s"\
+ %(resa_user_dict))
+ for resa in unfiltered_reservation_list:
+
+ #ldap_info = self.ldap.LdapSearch('(uid='+resa['user']+')')
+ #ldap_info = ldap_info[0][1]
+
+ #user = dbsession.query(RegUser).filter_by(email = \
+ #ldap_info['mail'][0]).first()
+ ##Separated in case user not in database : record_id not defined SA 17/07//12
+ #query_slice_info = slab_dbsession.query(SliceSenslab).filter_by(record_id_user = user.record_id)
+ #if query_slice_info:
+ #slice_info = query_slice_info.first()
+ #Put the slice_urn
+ resa['slice_hrn'] = resa_user_dict[resa['user']]['slice_info'].slice_hrn
+ resa['slice_id'] = hrn_to_urn(resa['slice_hrn'], 'slice')
#Put the slice_urn
- resa['slice_id'] = hrn_to_urn(slice_info.slice_hrn, 'slice')
+ #resa['slice_id'] = hrn_to_urn(slice_info.slice_hrn, 'slice')
resa['component_id_list'] = []
#Transform the hostnames into urns (component ids)
for node in resa['reserved_nodes']:
logger.debug("SLABDRIVER \tGetLeases lease_filter_dict %s"\
%(lease_filter_dict))
for resa in unfiltered_reservation_list:
- if lease_filter_dict['name'] == resa['slice_id']:
+ if lease_filter_dict['name'] == resa['slice_hrn']:
reservation_list.append(resa)
else:
reservation_list = unfiltered_reservation_list
"""
logger.warning("SLABDRIVER AddPersonKey EMPTY - DO NOTHING \r\n ")
return
+
+ def DeleteLeases(self, leases_id_list, slice_hrn ):
+ for job_id in leases_id_list:
+ self.DeleteJobs(job_id, slice_hrn)
+
+ logger.debug("SLABDRIVER DeleteLeases leases_id_list %s slice_hrn %s \r\n " %(leases_id_list, slice_hrn))
+ return
\ No newline at end of file
def verify_slice_leases(self, sfa_slice, requested_leases, kept_leases, \
peer):
-
+ logger.debug("SLABSLICES \tverify_slice_leases requested_leases %s kept_leases %s sfa_slice%s peer%s" %(requested_leases, kept_leases,sfa_slice,peer) )
leases = self.driver.GetLeases({'name':sfa_slice['name']}, ['lease_id'])
grain = self.driver.GetLeaseGranularity()
if leases :
try:
if peer:
- self.driver.UnBindObjectFromPeer('slice', \
- sfa_slice['slice_id'], peer['shortname'])
- deleted = self.driver.DeleteLeases(deleted_leases)
+ #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'])
for lease in requested_leases:
added = self.driver.AddLeases(lease['hostname'], \
sfa_slice['name'], int(lease['start_time']), \
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: