From b834ddd93639505f5ccf46a83e8f54069079e362 Mon Sep 17 00:00:00 2001 From: Sandrine Avakian Date: Fri, 8 Mar 2013 09:32:24 +0100 Subject: [PATCH] Fixes in GetSlices, delete_sliver, DeleteJobs. --- sfa/senslab/slabdriver.py | 111 ++++++++++++++++++++++---------------- sfa/senslab/slabslices.py | 17 +++--- 2 files changed, 75 insertions(+), 53 deletions(-) diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index e80d7090..450827b8 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -142,10 +142,11 @@ class SlabTestbedAPI(): return server_timestamp, server_tz - def DeleteJobs(self, job_id, slice_hrn): + def DeleteJobs(self, job_id, username): + logger.debug("SLABDRIVER \tDeleteJobs jobid %s username %s " %(job_id, username)) if not job_id or job_id is -1: return - username = slice_hrn.split(".")[-1].rstrip("_slice") + #username = slice_hrn.split(".")[-1].rstrip("_slice") reqdict = {} reqdict['method'] = "delete" reqdict['strval'] = str(job_id) @@ -654,8 +655,8 @@ class SlabTestbedAPI(): added_nodes %s slice_user %s" %(jobid, added_nodes, slice_user)) - __configure_experiment(jobid, added_nodes) - __launch_senslab_experiment(jobid) + #__configure_experiment(jobid, added_nodes) + #__launch_senslab_experiment(jobid) return jobid @@ -696,8 +697,12 @@ class SlabTestbedAPI(): #Delete the jobs from job_senslab table def DeleteSliceFromNodes(self, slice_record): - for job_id in slice_record['oar_job_id']: - self.DeleteJobs(job_id, slice_record['hrn']) + logger.debug("SLABDRIVER \t DeleteSliceFromNodese %s " %(slice_record)) + if isinstance(slice_record['oar_job_id'],list): + for job_id in slice_record['oar_job_id']: + self.DeleteJobs(job_id, slice_record['user']) + else: + self.DeleteJobs(slice_record['oar_job_id'],slice_record['user']) return @@ -797,22 +802,22 @@ class SlabTestbedAPI(): #resa['slice_hrn'] = resa_user_dict[resa['user']]['slice_info']['hrn'] #resa['slice_id'] = hrn_to_urn(resa['slice_hrn'], 'slice') - - resa['component_id_list'] = [] - resa['hrn'] = Xrn(resa['slice_id']).get_hrn() - #Transform the hostnames into urns (component ids) - 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) - resa['component_id_list'].append(slab_xrn.urn) + resa['slice_hrn'] = Xrn(resa['slice_id']).get_hrn() + + resa['component_id_list'] = [] + #Transform the hostnames into urns (component ids) + 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) + resa['component_id_list'].append(slab_xrn.urn) - if lease_filter_dict: - logger.debug("SLABDRIVER \tGetLeases resa_ %s \r\n leasefilter %s"\ - %(resa,lease_filter_dict)) + if lease_filter_dict: + logger.debug("SLABDRIVER \tGetLeases resa_ %s \r\n leasefilter %s"\ + %(resa,lease_filter_dict)) - if lease_filter_dict['name'] == resa['hrn']: - reservation_list.append(resa) + if lease_filter_dict['name'] == resa['slice_hrn']: + reservation_list.append(resa) if lease_filter_dict is None: reservation_list = unfiltered_reservation_list @@ -1085,25 +1090,34 @@ class SlabTestbedAPI(): #If several jobs for one slice , put the slice record into # each lease information dict + + for lease in leases_list : slicerec_dict = {} - - reserved_list = lease['reserved_nodes'] - - slicerec_dict['oar_job_id'] = lease['lease_id'] - slicerec_dict.update({'list_node_ids':{'hostname':reserved_list}}) - slicerec_dict.update({'node_ids':lease['reserved_nodes']}) - - #Update lease dict with the slice record - if fixed_slicerec_dict: - fixed_slicerec_dict['oar_job_id'] = [] - fixed_slicerec_dict['oar_job_id'].append(slicerec_dict['oar_job_id']) - slicerec_dict.update(fixed_slicerec_dict) - #slicerec_dict.update({'hrn':\ - #str(fixed_slicerec_dict['slice_hrn'])}) + logger.debug("SLABDRIVER.PY \tGetSlices slice_filter %s \ + \ lease['slice_hrn'] %s" \ + %(slice_filter, lease['slice_hrn'])) + if slice_filter_type =='slice_hrn' and lease['slice_hrn'] == slice_filter: + reserved_list = lease['reserved_nodes'] + slicerec_dict['slice_hrn'] = lease['slice_hrn'] + slicerec_dict['hrn'] = lease['slice_hrn'] + slicerec_dict['user'] = lease['user'] + slicerec_dict['oar_job_id'] = lease['lease_id'] + slicerec_dict.update({'list_node_ids':{'hostname':reserved_list}}) + slicerec_dict.update({'node_ids':lease['reserved_nodes']}) + + #Update lease dict with the slice record + if fixed_slicerec_dict: + fixed_slicerec_dict['oar_job_id'] = [] + fixed_slicerec_dict['oar_job_id'].append(slicerec_dict['oar_job_id']) + slicerec_dict.update(fixed_slicerec_dict) + #slicerec_dict.update({'hrn':\ + #str(fixed_slicerec_dict['slice_hrn'])}) + + return_slicerec_dictlist.append(slicerec_dict) + logger.debug("SLABDRIVER.PY \tGetSlices \ + OHOHOHOH %s" %(return_slicerec_dictlist )) - - return_slicerec_dictlist.append(slicerec_dict) logger.debug("SLABDRIVER.PY \tGetSlices \ slicerec_dict %s return_slicerec_dictlist %s \ lease['reserved_nodes'] \ @@ -1657,19 +1671,22 @@ class SlabDriver(Driver): #used when there is another #senslab testbed, which is not the case 14/08/12 . - logger.debug("SLABDRIVER.PY delete_sliver peer %s" %(peer)) + logger.debug("SLABDRIVER.PY delete_sliver peer %s \r\n \t sfa_slice %s " %(peer, sfa_slice)) try: - if peer: - self.slab_api.UnBindObjectFromPeer('slice', \ - sfa_slice['record_id_slice'], \ - peer, None) + #if peer: + #self.slab_api.UnBindObjectFromPeer('slice', \ + #sfa_slice['record_id_slice'], \ + #peer, None) self.slab_api.DeleteSliceFromNodes(sfa_slice) - finally: - if peer: - self.slab_api.BindObjectToPeer('slice', \ - sfa_slice['record_id_slice'], \ - peer, sfa_slice['peer_slice_id']) - return 1 + return True + except : + return False + #finally: + #if peer: + #self.slab_api.BindObjectToPeer('slice', \ + #sfa_slice['record_id_slice'], \ + #peer, sfa_slice['peer_slice_id']) + #return 1 # first 2 args are None in case of resource discovery diff --git a/sfa/senslab/slabslices.py b/sfa/senslab/slabslices.py index 748b93cf..93a0e271 100644 --- a/sfa/senslab/slabslices.py +++ b/sfa/senslab/slabslices.py @@ -20,18 +20,23 @@ class SlabSlices: # get this slice's authority (site) slice_authority = get_authority(hrn) - site_authority = slice_authority + #Senslab stuff + #This slice belongs to the current site + if slice_authority == self.driver.slab_api.root_auth: + site_authority = slice_authority + return None + + site_authority = get_authority(slice_authority).lower() # get this site's authority (sfa root authority or sub authority) - #site_authority = get_authority(slice_authority).lower() + logger.debug("SLABSLICES \ get_peer slice_authority %s \ site_authority %s hrn %s" %(slice_authority, \ site_authority, hrn)) - #This slice belongs to the current site - if site_authority == self.driver.slab_api.root_auth : - return None + + # check if we are already peered with this site_authority, if so #peers = self.driver.slab_api.GetPeers({}) - peers = self.driver.slab_api.GetPeers(peer_filter = slice_authority) + peers = self.driver.slab_api.GetPeers(peer_filter = site_authority) for peer_record in peers: if site_authority == peer_record.hrn: -- 2.43.0