From c9ba40d91a270149d1a5dc88c6b8fc9fed1c1460 Mon Sep 17 00:00:00 2001 From: Sandrine Avakian Date: Thu, 12 Jul 2012 16:53:03 +0200 Subject: [PATCH] Leases features up-to-date. 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 | 2 +- sfa/rspecs/elements/versions/slabv1Lease.py | 6 +++--- sfa/senslab/slabaggregate.py | 12 ++++++++++-- sfa/senslab/slabdriver.py | 11 ++++++++--- sfa/senslab/slabslices.py | 5 +++-- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/sfa/rspecs/elements/lease.py b/sfa/rspecs/elements/lease.py index 3327407e..dc3fe587 100644 --- a/sfa/rspecs/elements/lease.py +++ b/sfa/rspecs/elements/lease.py @@ -5,7 +5,7 @@ class Lease(Element): fields = [ 'lease_id', 'component_id', - 'slice_id' + 'slice_id', 'start_time', 'duration', ] diff --git a/sfa/rspecs/elements/versions/slabv1Lease.py b/sfa/rspecs/elements/versions/slabv1Lease.py index a9663469..bd562ff7 100644 --- a/sfa/rspecs/elements/versions/slabv1Lease.py +++ b/sfa/rspecs/elements/versions/slabv1Lease.py @@ -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 diff --git a/sfa/senslab/slabaggregate.py b/sfa/senslab/slabaggregate.py index 5fc796c2..85db3333 100644 --- a/sfa/senslab/slabaggregate.py +++ b/sfa/senslab/slabaggregate.py @@ -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() diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index dc18d3d0..349873e6 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -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() diff --git a/sfa/senslab/slabslices.py b/sfa/senslab/slabslices.py index 1b02b22b..b6a0bcb9 100644 --- a/sfa/senslab/slabslices.py +++ b/sfa/senslab/slabslices.py @@ -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') -- 2.47.0