from sfa.iotlab.iotlabaggregate import IotLABAggregate
from sfa.iotlab.iotlablease import LeaseTable
+
class IotLabDriver(Driver):
"""
SFA driver for Iot-LAB testbed
# need by sfa driver
self.cache = None
- ########################################
- ########## registry oriented
- ########################################
+ def check_sliver_credentials(self, creds, urns):
+ """ Not used and need by SFA """
+ pass
+
+ # #######################################
+ # ######### registry oriented
+ # #######################################
##########
def register(self, sfa_record, hrn, pub_key):
logger.warning("iotlabdriver register : not implemented")
return -1
- ##########
def update(self, old_sfa_record, new_sfa_record, hrn, new_key):
logger.warning("iotlabdriver update : not implemented")
return True
-
- ##########
def remove(self, sfa_record):
logger.warning("iotlabdriver remove : not implemented")
return True
-
- ########################################
- ########## aggregate oriented
- ########################################
+ # #######################################
+ # ######### aggregate oriented
+ # #######################################
def provision(self, urns, options=None):
logger.warning("iotlabdriver provision : not implemented")
rspec_version = version_manager.get_version(opt)
return self.describe(urns, rspec_version, options=options)
-
def delete(self, urns, options=None):
logger.warning("iotlabdriver delete : not implemented")
geni_slivers = []
return geni_slivers
-
def aggregate_version(self):
logger.warning("iotlabdriver aggregate_version")
version_manager = VersionManager()
'geni_request_rspec_versions': request_rspec_versions,
'geni_ad_rspec_versions': ad_rspec_versions}
-
def list_resources(self, version=None, options=None):
logger.warning("iotlabdriver list_resources")
if not options:
rspec = aggregate.list_resources(version=version, options=options)
return rspec
-
def describe(self, urns, version, options=None):
logger.warning("iotlabdriver describe")
if not options:
aggregate = IotLABAggregate(self)
return aggregate.describe(urns, version=version, options=options)
-
def status(self, urns, options=None):
logger.warning("iotlabdriver status")
aggregate = IotLABAggregate(self)
'geni_slivers': desc['geni_slivers']}
return status
-
def _get_users(self):
""" Get all users """
ret = self.shell.get_users()
return None
return ret
-
def _get_user_login(self, caller_user):
""" Get user login with email """
email = caller_user['email']
# ensure user exist in LDAP tree
users = self._get_users()
- if users and not email in users:
+ if users and email not in users:
self.shell.add_user(caller_user)
users = self._get_users()
if users and email in users:
else:
return None
-
@classmethod
def _get_experiment(cls, rspec):
"""
- Find in RSpec leases the experiment start time, duration and nodes list.
+ Find in RSpec leases the experiment start time, duration and nodes
+ list.
:Example:
<rspec>
start_time = min([int(lease['start_time'])
for lease in leases])
end_time = max([int(lease['start_time']) +
- int(lease['duration'])
+ int(lease['duration'])*60
for lease in leases])
nodes_list = [Xrn.unescape(Xrn(lease['component_id'].strip(),
type='node').get_leaf())
# uniq hostnames
nodes_list = list(set(nodes_list))
from math import floor
- duration = floor((end_time - start_time)/60) # minutes
+ # minutes
+ duration = floor((end_time - start_time)/60)
return nodes_list, start_time, duration
-
def _save_db_lease(self, job_id, slice_hrn):
""" Save lease table row in SFA database """
lease_row = LeaseTable(job_id,
self.api.dbsession().add(lease_row)
self.api.dbsession().commit()
-
def allocate(self, urn, rspec_string, expiration, options=None):
"""
Allocate method submit an experiment on Iot-LAB testbed with :