From d550a4bd30a06f830f8f60a4065ef2097118e09b Mon Sep 17 00:00:00 2001 From: Sandrine Avakian Date: Fri, 11 Jan 2013 15:45:10 +0100 Subject: [PATCH] Propagating the users' senslab login in GetSlices, get_rspec and GetLeases from cerate_sliver. --- sfa/senslab/slabaggregate.py | 8 +++--- sfa/senslab/slabdriver.py | 52 +++++++++++++++++++++--------------- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/sfa/senslab/slabaggregate.py b/sfa/senslab/slabaggregate.py index 3ba745f0..9a202264 100644 --- a/sfa/senslab/slabaggregate.py +++ b/sfa/senslab/slabaggregate.py @@ -44,7 +44,7 @@ class SlabAggregate: def __init__(self, driver): self.driver = driver - def get_slice_and_slivers(self, slice_xrn): + def get_slice_and_slivers(self, slice_xrn, login=None): """ Returns a dict of slivers keyed on the sliver's node_id """ @@ -57,7 +57,7 @@ class SlabAggregate: slice_name = slice_hrn slices = self.driver.GetSlices(slice_filter= str(slice_name), \ - slice_filter_type = 'slice_hrn') + slice_filter_type = 'slice_hrn', login=login) logger.debug("Slabaggregate api \tget_slice_and_slivers \ sfa_slice %s \r\n slices %s self.driver.hrn %s" \ @@ -312,7 +312,7 @@ class SlabAggregate: #rspec_leases.append(rspec_lease) #return rspec_leases #from plc/aggregate.py - def get_rspec(self, slice_xrn=None, version = None, options={}): + def get_rspec(self, slice_xrn=None, login=None, version = None, options={}): rspec = None version_manager = VersionManager() @@ -329,7 +329,7 @@ class SlabAggregate: rspec_version = version_manager._get_version(version.type, \ version.version, 'manifest') - slices, slivers = self.get_slice_and_slivers(slice_xrn) + slices, slivers = self.get_slice_and_slivers(slice_xrn, login) #at this point sliver may be empty if no senslab job #is running for this user/slice. rspec = RSpec(version=rspec_version, user_options=options) diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index 50c8e1ab..41ba8c32 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -276,7 +276,7 @@ class SlabDriver(Driver): slices.verify_slice_leases(sfa_slice, \ requested_job_dict, peer) - return aggregate.get_rspec(slice_xrn=slice_urn, version=rspec.version) + return aggregate.get_rspec(slice_xrn=slice_urn, login=sfa_slice['login'],version=rspec.version) def delete_sliver (self, slice_urn, slice_hrn, creds, options): @@ -865,17 +865,19 @@ class SlabDriver(Driver): def _get_slice_records(self, slice_filter = None, \ slice_filter_type = None): - login = None + #login = None + #Get list of slices based on the slice hrn if slice_filter_type == 'slice_hrn': - if get_authority(slice_filter) == self.root_auth: - login = slice_filter.split(".")[1].split("_")[0] + #if get_authority(slice_filter) == self.root_auth: + #login = slice_filter.split(".")[1].split("_")[0] slicerec = self._sql_get_slice_info(slice_filter) if slicerec is None: - return login, None + return None + #return login, None #Get slice based on user id if slice_filter_type == 'record_id_user': @@ -886,14 +888,14 @@ class SlabDriver(Driver): fixed_slicerec_dict = slicerec #At this point if the there is no login it means #record_id_user filter has been used for filtering - if login is None : - #If theslice record is from senslab - if fixed_slicerec_dict['peer_authority'] is None: - login = fixed_slicerec_dict['hrn'].split(".")[1].split("_")[0] - return login, fixed_slicerec_dict - + #if login is None : + ##If theslice record is from senslab + #if fixed_slicerec_dict['peer_authority'] is None: + #login = fixed_slicerec_dict['hrn'].split(".")[1].split("_")[0] + #return login, fixed_slicerec_dict + return fixed_slicerec_dict - def GetSlices(self, slice_filter = None, slice_filter_type = None): + def GetSlices(self, slice_filter = None, slice_filter_type = None, login=None): """ Get the slice records from the slab db. Returns a slice ditc if slice_filter and slice_filter_type are specified. @@ -901,15 +903,16 @@ class SlabDriver(Driver): specified. """ - login = None + #login = None authorized_filter_types_list = ['slice_hrn', 'record_id_user'] return_slicerec_dictlist = [] #First try to get information on the slice based on the filter provided if slice_filter_type in authorized_filter_types_list: - - login, fixed_slicerec_dict = \ + fixed_slicerec_dict = \ self._get_slice_records(slice_filter, slice_filter_type) + #login, fixed_slicerec_dict = \ + #self._get_slice_records(slice_filter, slice_filter_type) logger.debug(" SLABDRIVER \tGetSlices login %s \ slice record %s slice_filter %s slice_filter_type %s "\ %(login, fixed_slicerec_dict,slice_filter, slice_filter_type)) @@ -1208,7 +1211,8 @@ class SlabDriver(Driver): return reqdict - + logger.debug("SLABDRIVER.PY \tLaunchExperimentOnOAR slice_user %s\ + \r\n " %(slice_user)) #Create the request for OAR reqdict = __create_job_structure_request_for_OAR(lease_dict) # first step : start the OAR job and update the job @@ -1284,9 +1288,14 @@ class SlabDriver(Driver): lease_start_time, lease_duration, username) start_time = datetime.fromtimestamp(int(lease_start_time)).strftime(self.time_format) end_time = lease_start_time + lease_duration + + import logging, logging.handlers + from sfa.util.sfalogging import _SfaLogger + logger.debug("SLABDRIVER \r\n \r\n \t AddLeases TURN ON LOGGING SQL %s %s %s "%(slice_record['hrn'], job_id, end_time)) + sql_logger = _SfaLogger(loggername = 'sqlalchemy.engine', level=logging.DEBUG) logger.debug("SLABDRIVER \r\n \r\n \t AddLeases %s %s %s " %(type(slice_record['hrn']), type(job_id), type(end_time))) - slab_ex_row = SenslabXP(slice_record['hrn'], job_id, end_time) - logger.debug("SLABDRIVER \r\n \r\n \t slab_ex_row %s" %(slab_ex_row)) + slab_ex_row = SenslabXP(slice_hrn = slice_record['hrn'], job_id = job_id,end_time= end_time) + logger.debug("SLABDRIVER \r\n \r\n \t AddLeases slab_ex_row %s" %(slab_ex_row)) slab_dbsession.add(slab_ex_row) slab_dbsession.commit() @@ -1316,7 +1325,8 @@ class SlabDriver(Driver): jobs_psql = set(jobs_psql) kept_jobs = set(job_oar_list).intersection(jobs_psql) - + logger.debug ( "\r\n \t\tt update_jobs_in_slabdb jobs_psql %s \r\n \t job_oar_list %s \ + kept_jobs %s " %(jobs_psql,job_oar_list,kept_jobs)) deleted_jobs = set(jobs_psql).difference(kept_jobs) deleted_jobs = list(deleted_jobs) if len(deleted_jobs) > 0: @@ -1334,7 +1344,7 @@ class SlabDriver(Driver): reservation_list = [] #Find the slice associated with this user senslab ldap uid - logger.debug(" SLABDRIVER.PY \tGetLeases unfiltered_reservation_list %s " %(unfiltered_reservation_list)) + logger.debug(" SLABDRIVER.PY \tGetLeases login %s unfiltered_reservation_list %s " %(login ,unfiltered_reservation_list)) #Create user dict first to avoid looking several times for #the same user in LDAP SA 27/07/12 resa_user_dict = {} @@ -1779,7 +1789,7 @@ class SlabDriver(Driver): if not check_if_exists: logger.debug("__add_person_to_db \t Adding %s \r\n \r\n \ _________________________________________________________________________\ - " %(hrn)) + " %(user_dict['hrn'])) user_record = RegUser(hrn =user_dict['hrn'] , pointer= '-1', authority=get_authority(hrn), \ email= user_dict['email'], gid = None) user_record.reg_keys = [RegKey(user_dict['pkey'])] -- 2.43.0