Moved computation of hrn on the OARrestapi level.
[sfa.git] / sfa / senslab / OARrestapi.py
index 427156b..cc0fa0b 100644 (file)
@@ -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()
-