slices = self.driver.GetSlices(slice_filter= str(slice_name), \
slice_filter_type = 'slice_hrn')
- logger.debug("Slabaggregate api \tget_slice_and_slivers slices %s " \
- %(slices))
+ logger.debug("Slabaggregate api \tget_slice_and_slivers slices %s self.driver.hrn %s" \
+ %(slices, self.driver.hrn))
if not slices:
return (sfa_slice, slivers)
#if isinstance(sfa_slice, list):
try:
for node in sfa_slice['node_ids']:
+ sliver_xrn = Xrn(slice_urn, type='sliver', id=node)
+ sliver_xrn.set_authority(self.driver.hrn)
#node_id = self.driver.root_auth + '.' + node_id
- sliver = Sliver({'sliver_id': Xrn(slice_urn, type='slice', id=node['hostname'], authority=self.driver.hrn).urn,
+ sliver = Sliver({'sliver_id':sliver_xrn.urn,
'name': sfa_slice['slice_hrn'],
'type': 'slab-node',
'tags': []})
- slivers[node['hostname']] = sliver
+ slivers[node] = sliver
except KeyError:
logger.log_exc("SLABAGGREGATE \t \
get_slice_and_slivers KeyError ")
# Make a list of all the nodes in the slice before getting their attributes
rspec_nodes = []
slice_nodes_list = []
+ logger.debug("SLABAGGREGATE api get_rspec slice_nodes_list %s "\
+ %(slices ))
if slices:
for one_slice in slices:
- for node in one_slice['node_ids']:
- slice_nodes_list.append(node['hostname'])
+ slice_nodes_list = one_slice['node_ids']
+ #for node in one_slice['node_ids']:
+ #slice_nodes_list.append(node)
reserved_nodes = self.driver.GetNodesCurrentlyInUse()
logger.debug("SLABAGGREGATE api get_rspec slice_nodes_list %s "\
for node in lease['reserved_nodes']:
rspec_lease = Lease()
rspec_lease['lease_id'] = lease['lease_id']
- site = node['site_id']
- slab_xrn = slab_xrn_object(self.driver.root_auth, node['hostname'])
+ #site = node['site_id']
+ slab_xrn = slab_xrn_object(self.driver.root_auth, node)
rspec_lease['component_id'] = slab_xrn.urn
#rspec_lease['component_id'] = hostname_to_urn(self.driver.hrn, \
#site, node['hostname'])
# add/remove leases
requested_lease_list = []
kept_leases = []
+ logger.debug("SLABDRIVER.PY \tcreate_sliver AVANTLEASE " )
for lease in rspec.version.get_leases():
single_requested_lease = {}
logger.debug("SLABDRIVER.PY \tcreate_sliver lease %s " %(lease))
if single_requested_lease.get('hostname'):
requested_lease_list.append(single_requested_lease)
+ logger.debug("SLABDRIVER.PY \tcreate_sliver APRESLEASE" )
#dCreate dict of leases by start_time, regrouping nodes reserved
#at the same
#time, for the same amount of time = one job on OAR
for node in full_nodes_dict_list:
oar_id_node_dict[node['oar_id']] = node
- logger.debug("SLABDRIVER \t __get_hostnames_from_oar_node_ids\
- oar_id_node_dict %s" %(oar_id_node_dict))
+ #logger.debug("SLABDRIVER \t __get_hostnames_from_oar_node_ids\
+ #oar_id_node_dict %s" %(oar_id_node_dict))
hostname_dict_list = []
for resource_id in resource_id_list:
#Because jobs requested "asap" do not have defined resources
if resource_id is not "Undefined":
- hostname_dict_list.append({'hostname' : \
- oar_id_node_dict[resource_id]['hostname'],
- 'site_id' : oar_id_node_dict[resource_id]['site']})
+ hostname_dict_list.append(\
+ oar_id_node_dict[resource_id]['hostname'])
#hostname_list.append(oar_id_node_dict[resource_id]['hostname'])
return hostname_dict_list
"""
node_dict_by_id = self.oar.parser.SendRequest("GET_resources_full")
node_dict_list = node_dict_by_id.values()
-
+ logger.debug (" SLABDRIVER GetNodes node_filter_dict %s return_fields_list %s "%(node_filter_dict,return_fields_list))
#No filtering needed return the list directly
if not (node_filter_dict or return_fields_list):
return node_dict_list
#the slice record
-
+
slicerec_dict['oar_job_id'] = lease['lease_id']
+ #reserved_list = []
+ #for reserved_node in lease['reserved_nodes']:
+ #reserved_list.append(reserved_node['hostname'])
+ reserved_list = lease['reserved_nodes']
+ #slicerec_dict.update({'node_ids':[lease['reserved_nodes'][n]['hostname'] for n in lease['reserved_nodes']]})
+ slicerec_dict.update({'list_node_ids':{'hostname':reserved_list}})
slicerec_dict.update({'node_ids':lease['reserved_nodes']})
slicerec_dict.update(fixed_slicerec_dict)
slicerec_dict.update({'hrn':\
slicerec_dictlist.append(slicerec_dict)
- logger.debug("SLABDRIVER.PY \tGetSlices slicerec_dict %s slicerec_dictlist %s" %(slicerec_dict, slicerec_dictlist))
+ logger.debug("SLABDRIVER.PY \tGetSlices slicerec_dict %s slicerec_dictlist %s lease['reserved_nodes'] %s" %(slicerec_dict, slicerec_dictlist,lease['reserved_nodes'] ))
logger.debug("SLABDRIVER.PY \tGetSlices RETURN slicerec_dictlist %s"\
%(slicerec_dictlist))
for lease in leases_list:
if owner == lease['user']:
slicerec_dict['oar_job_id'] = lease['lease_id']
+ reserved_list = []
+ for reserved_node in lease['reserved_nodes']:
+ reserved_list.append(reserved_node['hostname'])
+ #slicerec_dict.update({'node_ids':{'hostname':reserved_list}})
+ #slicerec_dict.update({'node_ids':[lease['reserved_nodes'][n]['hostname'] for n in lease['reserved_nodes']]})
slicerec_dict.update({'node_ids':lease['reserved_nodes']})
+ slicerec_dict.update({'list_node_ids':{'hostname':reserved_list}})
slicerec_dict.update(fixed_slicerec_dict)
slicerec_dict.update({'hrn':\
str(fixed_slicerec_dict['slice_hrn'])})
%( hostname_list, slice_record , lease_start_time, \
lease_duration))
- tmp = slice_record['PI'][0].split(".")
+ tmp = slice_record['reg-researchers'][0].split(".")
username = tmp[(len(tmp)-1)]
- self.LaunchExperimentOnOAR(hostname_list, slice_record['name'], lease_start_time, lease_duration, username)
+ self.LaunchExperimentOnOAR(hostname_list, slice_record['slice_hrn'], lease_start_time, lease_duration, username)
start_time = datetime.fromtimestamp(int(lease_start_time)).strftime(self.time_format)
logger.debug("SLABDRIVER \t AddLeases hostname_list start_time %s " %(start_time))
for node in resa['reserved_nodes']:
#resa['component_id_list'].append(hostname_to_urn(self.hrn, \
#self.root_auth, node['hostname']))
- slab_xrn = slab_xrn_object(self.root_auth, node['hostname'])
+ slab_xrn = slab_xrn_object(self.root_auth, node)
resa['component_id_list'].append(slab_xrn.urn)
#Filter the reservation list if necessary
#First get the list of current leases from OAR
- leases = self.driver.GetLeases({'name':sfa_slice['name']})
+ leases = self.driver.GetLeases({'name':sfa_slice['slice_hrn']})
+ logger.debug("SLABSLICES verify_slice_leases requested_jobs_dict %s leases %s "%(requested_jobs_dict, leases ))
#leases = self.driver.GetLeases({'name':sfa_slice['name']},\
#['lease_id'])
if leases :
current_leases = [lease['lease_id'] for lease in leases]
+ logger.debug("SLABSLICES verify_slice_leases current_leases %s kept_leases %s requested_jobs_dict %s"\
+ %(current_leases,kept_leases,requested_jobs_dict))
#Deleted leases are the ones with lease id not declared in the Rspec
deleted_leases = list(set(current_leases).difference(kept_leases))
#Commented out UnBindObjectFromPeer SA 09/10/12
#self.driver.UnBindObjectFromPeer('senslab2', 'slice', \
#sfa_slice['record_id_slice'], peer.hrn)
-
+ logger.debug("SLABSLICES verify_slice_leases slice %s deleted_leases %s"\
+ %(sfa_slice, deleted_leases))
self.driver.DeleteLeases(deleted_leases, \
sfa_slice['name'])
+ #self.driver.DeleteLeases(deleted_leases, \
+ #sfa_slice['name'])
#TODO verify_slice_leases: catch other exception?
except KeyError:
def verify_slice_nodes(self, sfa_slice, requested_slivers, peer):
current_slivers = []
deleted_nodes = []
-
- if sfa_slice['node_ids']:
- nodes = self.driver.GetNodes(sfa_slice['node_ids'], ['hostname'])
+
+ if 'node_ids' in sfa_slice:
+ nodes = self.driver.GetNodes(sfa_slice['list_node_ids'], ['hostname'])
current_slivers = [node['hostname'] for node in nodes]
# remove nodes not in rspec
%(sfa_slice,deleted_nodes))
if deleted_nodes:
- self.driver.DeleteSliceFromNodes(sfa_slice['name'], \
- deleted_nodes)
+ #Delete the entire experience
+ self.driver.DeleteSliceFromNodes(sfa_slice)
+ #self.driver.DeleteSliceFromNodes(sfa_slice['slice_hrn'], \
+ #deleted_nodes)
return nodes