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'
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]
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"
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 = {}
# 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'])
# 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']]),\
('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},
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
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()
-