X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fsenslab%2FOARrestapi.py;h=cc0fa0b2f7bd163a2d0a59d480d3310cdba60efd;hb=c3d687e5065631784ea06698c56f0e53d37a304c;hp=427156b0262f703203313815a6c757e2044810b8;hpb=0848f67382b2bdba46e0a0278bf1821f462e34d1;p=sfa.git diff --git a/sfa/senslab/OARrestapi.py b/sfa/senslab/OARrestapi.py index 427156b0..cc0fa0b2 100644 --- a/sfa/senslab/OARrestapi.py +++ b/sfa/senslab/OARrestapi.py @@ -6,8 +6,9 @@ from sfa.senslab.parsing import * from sfa.senslab.SenslabImportUsers import * import urllib import urllib2 - - +from sfa.util.config import Config +from sfa.util.plxrn import PlXrn +from sfa.util.xrn import hrn_to_urn, get_authority,Xrn,get_leaf #OARIP='10.127.255.254' OARIP='192.168.0.109' @@ -47,7 +48,8 @@ class OARrestapi: self.oarserver['port'] = 80 self.oarserver['uri'] = None self.oarserver['postformat'] = 'json' - self.parser = OARGETParser(self) + self.parser = OARGETParser(self) + def GETRequestToOARRestAPI(self, request, strval=None ): self.oarserver['uri'] = OARrequests_get_uri_dict[request] @@ -204,6 +206,26 @@ class OARGETParser: def ParseJobsDetails (self): print "ParseJobsDetails" + + def ParseJobsIds(self): + + job_resources =['assigned_network_address', 'assigned_resources','Job_Id', 'scheduledStart','state','job_user', 'startTime','walltime','message'] + job_resources_full = ['Job_Id', 'scheduledStart', 'resubmit_job_id', 'owner', 'submissionTime', 'message', 'id', 'jobType', 'queue', 'launchingDirectory', 'exit_code', 'state', 'array_index', 'events', 'assigned_network_address', 'cpuset_name', 'initial_request', 'job_user', 'assigned_resources', 'array_id', 'job_id', 'resources_uri', 'dependencies', 'api_timestamp', 'startTime', 'reservation', 'properties', 'types', 'walltime', 'name', 'uri', 'wanted_resources', 'project', 'command'] + + job_info = self.raw_json + + values=[] + try: + for k in job_resources: + values.append(job_info[k]) + return dict(zip(job_resources,values)) + + except KeyError: + print>>sys.stderr, " \r\n \t ParseJobsIds Key Error" + + + + def ParseJobsIdResources(self): print>>sys.stderr, "ParseJobsIdResources" @@ -262,7 +284,9 @@ class OARGETParser: else: pass - + + def hostname_to_hrn(self, root_auth, login_base, hostname): + return PlXrn(auth=root_auth,hostname=login_base+'_'+hostname).get_hrn() #Retourne liste de dictionnaires contenant attributs des sites def ParseSites(self): nodes_per_site = {} @@ -270,6 +294,7 @@ class OARGETParser: # Create a list of nodes per site_id for node_id in self.node_dictlist.keys(): node = self.node_dictlist[node_id] + if node['site_login_base'] not in nodes_per_site.keys(): nodes_per_site[node['site_login_base']] = [] nodes_per_site[node['site_login_base']].append(node['node_id']) @@ -280,6 +305,11 @@ class OARGETParser: # and value is a dictionary of properties, including the list of the node_ids for node_id in self.node_dictlist.keys(): node = self.node_dictlist[node_id] + node.update({'hrn':self.hostname_to_hrn(self.interface_hrn, node['site_login_base'],node['hostname'])}) + #node['hrn'] = self.hostname_to_hrn(self.interface_hrn, node['site_login_base'],node['hostname']) + self.node_dictlist.update({node_id:node}) + if node_id is 1: + print>>sys.stderr, " \r\n \r\n \t \t\t\t OARESTAPI Parse Sites self.node_dictlist %s " %(self.node_dictlist) if node['site_login_base'] not in self.site_dict.keys(): self.site_dict[node['site_login_base']] = [('login_base', node['site_login_base']),\ ('node_ids',nodes_per_site[node['site_login_base']]),\ @@ -293,24 +323,13 @@ class OARGETParser: ('date_created', None), ('peer_id', None),] self.site_dict[node['site_login_base']] = dict(self.site_dict[node['site_login_base']]) - #print>>sys.stderr, "\r\n \r\n =============\t\t ParseSites site dict %s \r\n"%(self.site_dict) - - - def GetNodesFromOARParse(self): - #print>>sys.stderr, " \r\n =========GetNodesFromOARParse: node_dictlist %s "%(self.node_dictlist) - return self.node_dictlist - #def GetSitesFromOARParse(self): - #return self.site_dict - - def GetJobsFromOARParse(self): - return self.jobs_list OARrequests_uri_dict = { 'GET_version': {'uri':'/oarapi/version.json', 'parse_func': ParseVersion}, 'GET_timezone':{'uri':'/oarapi/timezone.json' ,'parse_func': ParseTimezone }, 'GET_jobs': {'uri':'/oarapi/jobs.json','parse_func': ParseJobs}, - 'GET_jobs_id': {'uri':'/oarapi/jobs/id/resources.json','parse_func': ParseJobsIdResources}, + 'GET_jobs_id': {'uri':'/oarapi/jobs/id.json','parse_func': ParseJobsIds}, 'GET_jobs_id_resources': {'uri':'/oarapi/jobs/id/resources.json','parse_func': ParseJobsIdResources}, 'GET_jobs_table': {'uri':'/oarapi/jobs/table.json','parse_func': ParseJobsTable}, 'GET_jobs_details': {'uri':'/oarapi/jobs/details.json','parse_func': ParseJobsDetails}, @@ -321,6 +340,8 @@ class OARGETParser: def __init__(self, srv ): self.version_json_dict= { 'api_version' : None , 'apilib_version' :None, 'api_timezone': None, 'api_timestamp': None, 'oar_version': None ,} + self.config = Config() + self.interface_hrn = self.config.SFA_INTERFACE_HRN self.timezone_json_dict = { 'timezone': None, 'api_timestamp': None, } self.jobs_json_dict = { 'total' : None, 'links' : [] , 'offset':None , 'items' : [] , } self.jobs_table_json_dict = self.jobs_json_dict @@ -339,19 +360,4 @@ class OARGETParser: else: print>>sys.stderr, "\r\n OARGetParse __init__ : ERROR_REQUEST " ,request -#class OARapi: - - #def __init__(self): - #self.server = OARrestapi() - #self.parser = OARGETParser(self.server) - - - - - - #def GetJobs(self): - #print>>sys.stderr, " \r\n GetJobs" - #self.parser.SendRequest("GET_jobs") - #return self.parser.GetJobsFromOARParse() -