FIT IoT-Lab optimized get_users with email filter
authorLoic Baron <loic.baron@lip6.fr>
Fri, 9 Feb 2018 17:27:55 +0000 (18:27 +0100)
committerLoic Baron <loic.baron@lip6.fr>
Fri, 9 Feb 2018 17:27:55 +0000 (18:27 +0100)
sfa/iotlab/iotlabdriver.py
sfa/iotlab/iotlabshell.py

index fc7c7c2..d43395c 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()
+        users = self._get_users(email)
         if users and 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:
index 101de84..f237dde 100644 (file)
@@ -52,7 +52,7 @@ class IotLABShell(object):
             nodes_dict[node['network_address']] = node
         return nodes_dict
 
-    def get_users(self):
+    def get_users(self, email=None):
         """
         Get all LDAP users
         :returns: users with LDAP attributes
@@ -79,7 +79,10 @@ class IotLABShell(object):
         logger.warning("iotlashell get_users")
         users_dict = {}
         try:
-            users = self.api.method('admin/users')
+            if email:
+                users = self.api.method('admin/users?email=%s' % email)
+            else:
+                users = self.api.method('admin/users')
         except HTTPError as err:
             logger.warning("iotlashell get_users error %s" % err.reason)
             return {'error': err.reason}
@@ -94,6 +97,7 @@ class IotLABShell(object):
         """
         # pylint:disable=W0212,R0913,E1123
         logger.warning("iotlashell reserve_nodes")
+        logger.info("login=%s, exp_name=%s, nodes_list=%s, start_time=%s, duration=%s" % (login, exp_name, nodes_list, start_time, duration))
         exp_file = helpers.FilesDict()
         _experiment = experiment._Experiment(exp_name, duration, start_time)
         _experiment.type = 'physical'