X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fiotlab%2Fiotlabdriver.py;h=efbe4b6bb85d394bad1db5d33c290cb2d0fb32cf;hb=3147e8e089dd44e40b852cc121483189807ffa9b;hp=8a52ee6a873e11b2b447ac8647a50cf25181bf65;hpb=862a054f009010f2356c0064bd0930b562bfb443;p=sfa.git diff --git a/sfa/iotlab/iotlabdriver.py b/sfa/iotlab/iotlabdriver.py index 8a52ee6a..efbe4b6b 100644 --- a/sfa/iotlab/iotlabdriver.py +++ b/sfa/iotlab/iotlabdriver.py @@ -63,7 +63,6 @@ class IotLabDriver(Driver): return geni_slivers def aggregate_version(self): - logger.warning("iotlabdriver aggregate_version") version_manager = VersionManager() ad_rspec_versions = [] request_rspec_versions = [] @@ -100,9 +99,9 @@ class IotLabDriver(Driver): 'geni_slivers': desc['geni_slivers']} return status - def _get_users(self): + def _get_users(self, email=None): """ Get all users """ - ret = self.shell.get_users() + ret = self.shell.get_users(email) if 'error' in ret: return None return ret @@ -111,10 +110,10 @@ class IotLabDriver(Driver): """ Get user login with email """ email = caller_user['email'] # ensure user exist in LDAP tree - users = self._get_users() - if users and email not in users: + users = self._get_users(email) + if email not in users: self.shell.add_user(caller_user) - users = self._get_users() + users = self._get_users(email) if users and email in users: return users[email]['login'] else: @@ -144,18 +143,25 @@ class IotLabDriver(Driver): """ leases = rspec.version.get_leases() start_time = min([int(lease['start_time']) - for lease in leases]) - end_time = max([int(lease['start_time']) + - int(lease['duration'])*60 - for lease in leases]) + for lease in leases]) + # ASAP jobs + if start_time == 0: + start_time = None + duration = max([int(lease['duration']) + for lease in leases]) + # schedule jobs + else: + end_time = max([int(lease['start_time']) + + int(lease['duration']) * 60 + for lease in leases]) + from math import floor + # minutes + duration = floor((end_time - start_time) / 60) nodes_list = [Xrn.unescape(Xrn(lease['component_id'].strip(), - type='node').get_leaf()) + type='node').get_leaf()) for lease in leases] # uniq hostnames nodes_list = list(set(nodes_list)) - from math import floor - # minutes - duration = floor((end_time - start_time)/60) return nodes_list, start_time, duration def _save_db_lease(self, job_id, slice_hrn):