From a3592153928c985fa96fe3fdaad1b694e6e3e90f Mon Sep 17 00:00:00 2001 From: Sandrine Avakian Date: Wed, 29 Feb 2012 10:07:08 +0100 Subject: [PATCH] Removed hard coded login in GET requests (OARrestapi). Only GetJobIds needs a username. Modified SendRequest and GetREquestFromOARapi to take this into account. --- sfa/senslab/OARrestapi.py | 17 ++++++++++------- sfa/senslab/slabdriver.py | 20 +++++++++++--------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/sfa/senslab/OARrestapi.py b/sfa/senslab/OARrestapi.py index 25745017..b2705c7d 100644 --- a/sfa/senslab/OARrestapi.py +++ b/sfa/senslab/OARrestapi.py @@ -60,17 +60,20 @@ class OARrestapi: self.parser = OARGETParser(self) - def GETRequestToOARRestAPI(self, request, strval=None ): + def GETRequestToOARRestAPI(self, request, strval=None , username = None ): self.oarserver['uri'] = OARrequests_get_uri_dict[request] - + headers = {} data = json.dumps({}) if strval: self.oarserver['uri'] = self.oarserver['uri'].replace("id",str(strval)) print>>sys.stderr, "\r\n \r\n GETRequestToOARRestAPI replace : self.oarserver['uri'] %s", self.oarserver['uri'] - + if username: + headers['X-REMOTE_IDENT'] = username try : - headers = {'X-REMOTE_IDENT':'avakian',\ - 'content-length':'0'} + #headers = {'X-REMOTE_IDENT':'avakian',\ + #'content-length':'0'} + headers['content-length'] = '0' #seems that it does not work if we don't add this + #conn = httplib.HTTPConnection(self.oarserver['ip'],self.oarserver['port']) #conn.putheader(headers) #conn.endheaders() @@ -381,9 +384,9 @@ class OARGETParser: self.site_dict = {} self.SendRequest("GET_version") - def SendRequest(self,request, strval = None ): + def SendRequest(self,request, strval = None , username = None): if request in OARrequests_get_uri_dict: - self.raw_json = self.server.GETRequestToOARRestAPI(request,strval) + self.raw_json = self.server.GETRequestToOARRestAPI(request,strval,username) #print>>sys.stderr, "\r\n OARGetParse __init__ : request %s result %s "%(request,self.raw_json) return self.OARrequests_uri_dict[request]['parse_func'](self) else: diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index 2716f719..68b84828 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -83,7 +83,7 @@ class SlabDriver(Driver): print >>sys.stderr, "\r\n \r\n_____________ Sliver status urn %s hrn %s slices %s \r\n " %(slice_urn,slice_hrn,slices) if sl['oar_job_id'] is not -1: - # report about the local nodes only + # report about the local nodes only nodes = self.GetNodes({'hostname':sl['node_ids']}, ['node_id', 'hostname','site_login_base','boot_state']) if len(nodes) is 0: @@ -100,13 +100,13 @@ class SlabDriver(Driver): result['pl_login'] = sl['job_user'] timestamp = float(sl['startTime']) + float(sl['walltime']) - result['slab_expires'] = strftime(self.time_format, gmtime(float(timestamp))) + result['pl_expires'] = strftime(self.time_format, gmtime(float(timestamp))) resources = [] for node in nodes: res = {} - res['slab_hostname'] = node['hostname'] - res['slab_boot_state'] = node['boot_state'] + res['pl_hostname'] = node['hostname'] + res['pl_boot_state'] = node['boot_state'] sliver_id = urn_to_sliver_id(slice_urn, sl['record_id_slice'], node['node_id']) res['geni_urn'] = sliver_id @@ -436,7 +436,7 @@ class SlabDriver(Driver): print>>sys.stderr, "\r\n \r\n jobid DeleteJobs %s " %(answer) - def GetJobs(self,job_id= None, resources=True,return_fields=None): + def GetJobs(self,job_id= None, resources=True,return_fields=None, username = None): #job_resources=['reserved_resources', 'assigned_resources','job_id', 'job_uri', 'assigned_nodes',\ #'api_timestamp'] #assigned_res = ['resource_id', 'resource_uri'] @@ -454,7 +454,7 @@ class SlabDriver(Driver): #Get job info from OAR - job_info = self.oar.parser.SendRequest(req, job_id) + job_info = self.oar.parser.SendRequest(req, job_id, username) print>>sys.stderr, "\r\n \r\n \t\t GetJobs %s " %(job_info) if 'state' in job_info : @@ -517,12 +517,14 @@ class SlabDriver(Driver): print >>sys.stderr, " \r\n \r\n \tSLABDRIVER.PY GetSlices slices %s slice_filter %s " %(sliceslist,slice_filter) return_slice_list = parse_filter(sliceslist, slice_filter,'slice', return_fields) - + if return_slice_list: for sl in return_slice_list: + login = sl['slice_hrn'].split(".")[1].split("_")[0] + print >>sys.stderr, " \r\n \r\n \tSLABDRIVER.PY GetSlices sl %s " %(sl) if sl['oar_job_id'] is not -1: - rslt = self.GetJobs( sl['oar_job_id'],resources=False) - print >>sys.stderr, " \r\n \r\n \tSLABDRIVER.PY GetSlices GetJobs %s" %(rslt) + rslt = self.GetJobs( sl['oar_job_id'],resources=False, username = login ) + print >>sys.stderr, " \r\n \r\n \tSLABDRIVER.PY GetSlices GetJobs %s " %(rslt) if rslt : sl.update(rslt) sl.update({'hrn':str(sl['slice_hrn'])}) -- 2.43.0