Leases features up-to-date.
authorSandrine Avakian <sandrine.avakian@inria.fr>
Thu, 12 Jul 2012 14:53:03 +0000 (16:53 +0200)
committerSandrine Avakian <sandrine.avakian@inria.fr>
Thu, 12 Jul 2012 14:53:03 +0000 (16:53 +0200)
Using start-time and duration, as well as granularity.
DEfined new slabdriver function GetLeaseGranularity.
grain set to 60sec for Senslab.

sfa/rspecs/elements/lease.py
sfa/rspecs/elements/versions/slabv1Lease.py
sfa/senslab/slabaggregate.py
sfa/senslab/slabdriver.py
sfa/senslab/slabslices.py

index 3327407..dc3fe58 100644 (file)
@@ -5,7 +5,7 @@ class Lease(Element):
     fields = [
         'lease_id',
         'component_id',
-        'slice_id'
+        'slice_id',
         'start_time',
         'duration',    
     ]
index a966346..bd562ff 100644 (file)
@@ -34,7 +34,7 @@ class Slabv1Lease:
          
         lease_elems = []       
         for lease in leases:
-            lease_fields = ['lease_id', 'component_id', 'slice_id', 't_from', 't_until']
+            lease_fields = ['lease_id', 'component_id', 'slice_id', 'start_time', 'duration']
             lease_elem = network_elem.add_instance('lease', lease, lease_fields)
             lease_elems.append(lease_elem)
 
@@ -54,8 +54,8 @@ class Slabv1Lease:
                lease['lease_id'] = lease_elem.attrib['lease_id']
             lease['component_id'] = lease_elem.attrib['component_id']
             lease['slice_id'] = lease_elem.attrib['slice_id']
-            lease['t_from'] = lease_elem.attrib['t_from']
-            lease['t_until'] = lease_elem.attrib['t_until']
+            lease['start_time'] = lease_elem.attrib['start_time']
+            lease['duration'] = lease_elem.attrib['duration']
 
             leases.append(lease)
         return leases      
\ No newline at end of file
index 5fc796c..85db333 100644 (file)
@@ -15,6 +15,7 @@ from sfa.rspecs.elements.node import Node
 #from sfa.rspecs.elements.services import Services
 from sfa.rspecs.elements.sliver import Sliver
 from sfa.rspecs.elements.lease import Lease
+from sfa.rspecs.elements.granularity import Granularity
 from sfa.rspecs.version_manager import VersionManager
 
 #from sfa.util.sfatime import datetime_to_epoch
@@ -107,6 +108,9 @@ class SlabAggregate:
         #filter_dict = {}
         tags_filter = {}
         
+        # get the granularity in second for the reservation system
+        grain = self.driver.GetLeaseGranularity()
+        
         # Commenting this part since all nodes should be returned, 
         # even if a slice is provided
         #if slice :
@@ -208,6 +212,9 @@ class SlabAggregate:
                 #if_count+=1
         
             #tags = [PLTag(node_tags[tag_id]) for tag_id in node['node_tag_ids']]
+            # Granularity
+            granularity = Granularity({'grain': grain})
+            rspec_node['granularity'] = granularity
             rspec_node['tags'] = []
             if node['hostname'] in slivers:
                 # add sliver info
@@ -231,9 +238,10 @@ class SlabAggregate:
         #if slice_record:
             #lease_filter.update({'name': slice_record['name']})
         return_fields = ['lease_id', 'hostname', 'site_id', \
-                            'name', 't_from', 't_until']
+                            'name', 'start_time', 'duration']
         #leases = self.driver.GetLeases(lease_filter)
         leases = self.driver.GetLeases()
+        grain = self.driver.GetLeaseGranularity()
         site_ids = []
         rspec_leases = []
         for lease in leases:
@@ -310,7 +318,7 @@ class SlabAggregate:
     
                     rspec.version.add_default_sliver_attribute(attrib['tagname'], \
                                                                 attrib['value'])   
-        if options.get('list_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)
         return rspec.toxml()          
index dc18d3d..349873e 100644 (file)
@@ -194,8 +194,8 @@ class SlabDriver(Driver):
             if not lease.get('lease_id'):
                 requested_lease['hostname'] = \
                             xrn_to_hostname(lease.get('component_id').strip())
-                requested_lease['t_from'] = lease.get('t_from')
-                requested_lease['t_until'] = lease.get('t_until')
+                requested_lease['start_time'] = lease.get('start_time')
+                requested_lease['duration'] = lease.get('duration')
             else:
                 kept_leases.append(int(lease['lease_id']))
             if requested_lease.get('hostname'):
@@ -1113,7 +1113,12 @@ class SlabDriver(Driver):
         return   
     
  
-
+    def GetLeaseGranularity(self):
+        """ Returns the granularity of Senslab testbed.
+        Defined in seconds. """
+        
+        grain = 60 
+        return grain
     
     def GetLeases(self, lease_filter_dict=None, return_fields_list=None):
         unfiltered_reservation_list = self.GetReservedNodes()
index 1b02b22..b6a0bcb 100644 (file)
@@ -143,6 +143,7 @@ class SlabSlices:
         peer):
         
         leases = self.driver.GetLeases({'name':sfa_slice['name']}, ['lease_id'])
+        grain = self.driver.GetLeaseGranularity()
         if leases : 
             current_leases = [lease['lease_id'] for lease in leases]
             deleted_leases = list(set(current_leases).difference(kept_leases))
@@ -154,8 +155,8 @@ class SlabSlices:
                 deleted = self.driver.DeleteLeases(deleted_leases)
                 for lease in requested_leases:
                     added = self.driver.AddLeases(lease['hostname'], \
-                            sfa_slice['name'], int(lease['t_from']), \
-                            int(lease['t_until']))
+                            sfa_slice['name'], int(lease['start_time']), \
+                            int(lease['duration']))
             #TODO : catch other exception?
             except KeyError: 
                 logger.log_exc('Failed to add/remove slice leases')