Take into account case where there is no information on
authorSandrine Avakian <sandrine.avakian@inria.fr>
Thu, 13 Dec 2012 13:26:35 +0000 (14:26 +0100)
committerSandrine Avakian <sandrine.avakian@inria.fr>
Thu, 13 Dec 2012 13:26:35 +0000 (14:26 +0100)
the running experiment in slab db when asking for list
of leases.

sfa/senslab/slabaggregate.py
sfa/senslab/slabdriver.py

index a464eb2..3c1dfa5 100644 (file)
@@ -281,7 +281,11 @@ class SlabAggregate:
                 rspec_lease['component_id'] = slab_xrn.urn
                 #rspec_lease['component_id'] = hostname_to_urn(self.driver.hrn, \
                                         #site, node['hostname'])
-                rspec_lease['slice_id'] = lease['slice_id']
+                try:
+                    rspec_lease['slice_id'] = lease['slice_id']
+                except KeyError:
+                    #No info on the slice used in slab_xp table
+                    pass
                 rspec_lease['start_time'] = lease['t_from']
                 rspec_lease['duration'] = (lease['t_until'] - lease['t_from']) \
                                                                     / grain   
index 81ac2c4..d9d69da 100644 (file)
@@ -1338,7 +1338,7 @@ class SlabDriver(Driver):
         jobs_psql_query = slab_dbsession.query(SenslabXP).all()
         jobs_psql_dict =  [ (row.job_id, row.__dict__ )for row in jobs_psql_query ]
         jobs_psql_dict = dict(jobs_psql_dict)
-        logger.debug("SLABDRIVER \r\n \r\n \tGetLeases jobs_psql_dict %s"\
+        logger.debug("SLABDRIVER \tGetLeases jobs_psql_dict %s"\
                                             %(jobs_psql_dict))
         jobs_psql_id_list =  [ row.job_id for row in jobs_psql_query ]
         
@@ -1347,11 +1347,19 @@ class SlabDriver(Driver):
         for resa in unfiltered_reservation_list:
             logger.debug("SLABDRIVER \tGetLeases USER %s"\
                                             %(resa['user']))   
-            #Cosntruct list of jobs (runing, waiting..) in oar
-            job_oar_list.append(resa['lease_id'])   
+            #Cosntruct list of jobs (runing, waiting..) in oar 
+            job_oar_list.append(resa['lease_id'])  
+            #If there is information on the job in SLAB DB (slice used and job id) 
             if resa['lease_id'] in jobs_psql_dict:
                 job_info = jobs_psql_dict[resa['lease_id']]
-                            
+                logger.debug("SLABDRIVER \tGetLeases resa_user_dict %s"\
+                                            %(resa_user_dict))        
+                resa['slice_hrn'] = job_info['slice_hrn']
+                resa['slice_id'] = hrn_to_urn(resa['slice_hrn'], 'slice')
+                
+             #Assume it is a senslab slice:   
+            else:
+                resa['slice_id'] =  hrn_to_urn(self.root_auth+'.'+ resa['user'] +"_slice"  , 'slice')            
             #if resa['user'] not in resa_user_dict: 
                 #logger.debug("SLABDRIVER \tGetLeases userNOTIN ")
                 #ldap_info = self.ldap.LdapSearch('(uid='+resa['user']+')')
@@ -1379,9 +1387,7 @@ class SlabDriver(Driver):
                     
                     #resa['slice_hrn'] = resa_user_dict[resa['user']]['slice_info']['hrn']
                     #resa['slice_id'] = hrn_to_urn(resa['slice_hrn'], 'slice')
-                        
-                resa['slice_hrn'] = job_info['slice_hrn']
-                resa['slice_id'] = hrn_to_urn(resa['slice_hrn'], 'slice')
+                
     
                 resa['component_id_list'] = []
                 #Transform the hostnames into urns (component ids)
@@ -1402,8 +1408,7 @@ class SlabDriver(Driver):
 
                     
         self.update_jobs_in_slabdb(job_oar_list, jobs_psql_id_list)
-        logger.debug("SLABDRIVER \tGetLeases resa_user_dict %s"\
-                                            %(resa_user_dict))         
+                
         #for resa in unfiltered_reservation_list: