FIT IoT-Lab driver: fixed add_user when user login not found
[sfa.git] / sfa / iotlab / iotlabdriver.py
index 231ed06..efbe4b6 100644 (file)
@@ -99,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
@@ -110,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:
@@ -143,21 +143,25 @@ class IotLabDriver(Driver):
         """
         leases = rspec.version.get_leases()
         start_time = min([int(lease['start_time'])
-                         for lease in leases])
-        # ASAP Jobs
+                          for lease in leases])
+        # ASAP jobs
         if start_time == 0:
             start_time = None
-        end_time = max([int(lease['start_time']) +
-                       int(lease['duration'])*60
-                       for lease in leases])
+            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):