Handle C-BAS hrn format with "\"
[sfa.git] / sfa / iotlab / iotlabdriver.py
index f2c9a26..a820fc6 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,7 +143,7 @@ class IotLabDriver(Driver):
         """
         leases = rspec.version.get_leases()
         start_time = min([int(lease['start_time'])
-                         for lease in leases])
+                          for lease in leases])
         # ASAP jobs
         if start_time == 0:
             start_time = None
@@ -152,13 +152,13 @@ class IotLabDriver(Driver):
         # schedule jobs
         else:
             end_time = max([int(lease['start_time']) +
-                            int(lease['duration'])*60
+                            int(lease['duration']) * 60
                             for lease in leases])
             from math import floor
             # minutes
-            duration = floor((end_time - start_time)/60)
+            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))
@@ -194,6 +194,7 @@ class IotLabDriver(Driver):
         # parse rspec
         rspec = RSpec(rspec_string)
 
+        logger.warning(options)
         caller_hrn = options.get('actual_caller_hrn', [])
         geni_users = options.get('geni_users', [])
         caller_user = [user for user in geni_users if
@@ -206,11 +207,12 @@ class IotLabDriver(Driver):
         if login:
             nodes_list, start_time, duration = \
                 self._get_experiment(rspec)
+            # [0-9A-Za-z_] with onelab.inria.test_iotlab
+            exp_name = '_'.join((xrn.hrn.replace('\\.','')).split('.'))
             logger.warning("iotlabdriver allocate submit OAR job :"
                            " %s %s %s %s" %
-                           (xrn.hrn, start_time, duration, nodes_list))
-            # [0-9A-Za-z_] with onelab.inria.test_iotlab
-            exp_name = '_'.join((xrn.hrn).split('.'))
+                           (exp_name, start_time, duration, nodes_list))
+
             # submit OAR job
             ret = self.shell.reserve_nodes(login,
                                            exp_name,