FIT IoT-Lab optimized get_users with email filter
authorLoic Baron <loic.baron@lip6.fr>
Fri, 9 Feb 2018 16:46:51 +0000 (17:46 +0100)
committerLoic Baron <loic.baron@lip6.fr>
Fri, 9 Feb 2018 16:46:51 +0000 (17:46 +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..0741c55 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}
@@ -105,6 +108,7 @@ class IotLABShell(object):
                                    files=exp_file)
         except HTTPError as err:
             logger.warning("iotlashell reserve_nodes error %s" % err.reason)
+            logger.error(err)
             return {'error': err.reason}
 
     def get_reserved_nodes(self):