Fixed bug when using sfi.py resources.
[sfa.git] / sfa / senslab / slabaggregate.py
index 40df86e..2f98c77 100644 (file)
@@ -68,27 +68,28 @@ class SlabAggregate:
                                                                     %(slices))
         if not slices:
             return (sfa_slice, slivers)
-        if isinstance(sfa_slice, list):
-            sfa_slice = slices[0]
-        else:
-            sfa_slice = slices
+        #if isinstance(sfa_slice, list):
+            #sfa_slice = slices[0]
+        #else:
+            #sfa_slice = slices
 
         # sort slivers by node id , if there is a job
         #and therfore, node allocated to this slice
-        if sfa_slice['oar_job_id'] is not -1:
-            try:
-                
-                for node_id in sfa_slice['node_ids']:
-                    #node_id = self.driver.root_auth + '.' + node_id
-                    sliver = Sliver({'sliver_id': urn_to_sliver_id(slice_urn, \
-                                    sfa_slice['record_id_slice'], node_id),
-                                    'name': sfa_slice['slice_hrn'],
-                                    'type': 'slab-node', 
-                                    'tags': []})
-                    slivers[node_id] = sliver
-            except KeyError:
-                logger.log_exc("SLABAGGREGATE \t \
-                                        get_slice_and_slivers KeyError ")
+        for sfa_slice in slices:
+            if sfa_slice['oar_job_id'] is not -1:
+                try:
+                    
+                    for node_id in sfa_slice['node_ids']:
+                        #node_id = self.driver.root_auth + '.' + node_id
+                        sliver = Sliver({'sliver_id': urn_to_sliver_id(slice_urn, \
+                                        sfa_slice['record_id_slice'], node_id),
+                                        'name': sfa_slice['slice_hrn'],
+                                        'type': 'slab-node', 
+                                        'tags': []})
+                        slivers[node_id] = sliver
+                except KeyError:
+                    logger.log_exc("SLABAGGREGATE \t \
+                                            get_slice_and_slivers KeyError ")
         ## sort sliver attributes by node id    
         ##tags = self.driver.GetSliceTags({'slice_tag_id': slice['slice_tag_ids']})
         ##for tag in tags:
@@ -252,6 +253,8 @@ class SlabAggregate:
     
         now = int(time.time())
         lease_filter = {'clip': now }
+        
+        self.driver.synchronize_oar_and_slice_table()
         #if slice_record:
             #lease_filter.update({'name': slice_record['name']})
         return_fields = ['lease_id', 'hostname', 'site_id', \
@@ -326,7 +329,14 @@ class SlabAggregate:
         #nodes, links = self.get_nodes(slice, slivers)
         logger.debug("\r\n \r\n SlabAggregate \tget_rspec ******* slice_xrn %s \r\n \r\n"\
                                             %(slice_xrn)) 
-        if not options.get('list_leases') or options.get('list_leases') and options['list_leases'] != 'leases':
+                                            
+        try:                                    
+            lease_option = options['list_leases']
+        except KeyError:
+            return 
+        
+        if lease_option == 'resources':
+        #if not options.get('list_leases') or options.get('list_leases') and options['list_leases'] != 'leases':
             nodes = self.get_nodes(slices, slivers) 
             #In case creating a job slice _xrn is not set to None
             rspec.version.add_nodes(nodes)
@@ -353,8 +363,9 @@ class SlabAggregate:
                     
     
                     rspec.version.add_default_sliver_attribute(attrib['tagname'], \
-                                                                attrib['value'])   
-        if options.get('list_leases') or options.get('list_leases') and options['list_leases'] != 'resources':
+                                                                attrib['value'])  
+        if lease_option in ['all','leases']:                                                         
+        #if options.get('list_leases') or options.get('list_leases') and options['list_leases'] != 'resources':
             leases = self.get_leases(slices)
             rspec.version.add_leases(leases)