Using start-time and duration, as well as granularity.
DEfined new slabdriver function GetLeaseGranularity.
grain set to 60sec for Senslab.
fields = [
'lease_id',
'component_id',
- 'slice_id'
+ 'slice_id',
'start_time',
'duration',
]
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)
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
#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
#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 :
#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
#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:
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()
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'):
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()
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))
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')