Fixing bug deleting 2nd job created on OAR in the iotlab_sfa db.
authorSandrine Avakian <sandrine.avakian@inria.fr>
Wed, 7 Aug 2013 15:02:15 +0000 (17:02 +0200)
committerMohamed Larabi <mohamed.larabi@inria.fr>
Tue, 20 Aug 2013 07:32:15 +0000 (09:32 +0200)
(Removing 'login' in GetReservedNodes in GetLEases to have all the
leases in OAR instead of filtereing the results.)

sfa/iotlab/iotlabaggregate.py
sfa/iotlab/iotlabapi.py
sfa/iotlab/iotlabslices.py
sfa/rspecs/elements/versions/iotlabv1Lease.py

index cffc1ef..6b31498 100644 (file)
@@ -196,7 +196,7 @@ class IotlabAggregate:
         #attributes
         rspec_nodes = []
 
         #attributes
         rspec_nodes = []
 
-        logger.debug("IOTLABAGGREGATE api get_nodes slice_nodes_list  %s "
+        logger.debug("IOTLABAGGREGATE api get_nodes slices  %s "
                      % (slices))
 
 
                      % (slices))
 
 
@@ -393,27 +393,29 @@ class IotlabAggregate:
         #if not options.get('list_leases') or options.get('list_leases')
         #and options['list_leases'] != 'leases':
             nodes = self.get_nodes(slices, slivers)
         #if not options.get('list_leases') or options.get('list_leases')
         #and options['list_leases'] != 'leases':
             nodes = self.get_nodes(slices, slivers)
-            logger.debug("\r\n \r\n IotlabAggregate \t lease_option %s \
+            logger.debug("\r\n")
+            logger.debug("IotlabAggregate \t lease_option %s \
                           get rspec  ******* nodes %s"
                           get rspec  ******* nodes %s"
-                         % (lease_option, nodes[0]))
+                         % (lease_option, nodes))
 
             sites_set = set([node['location']['site'] for node in nodes])
 
             #In case creating a job,  slice_xrn is not set to None
             rspec.version.add_nodes(nodes)
 
             sites_set = set([node['location']['site'] for node in nodes])
 
             #In case creating a job,  slice_xrn is not set to None
             rspec.version.add_nodes(nodes)
-            if slice_xrn:
+            if slice_xrn and slices is not None:
                 #Get user associated with this slice
                 #for one_slice in slices :
                 ldap_username = slices[0]['hrn']
                 tmp = ldap_username.split('.')
                 ldap_username = tmp[1].split('_')[0]
                 #Get user associated with this slice
                 #for one_slice in slices :
                 ldap_username = slices[0]['hrn']
                 tmp = ldap_username.split('.')
                 ldap_username = tmp[1].split('_')[0]
-
+                logger.debug("IotlabAggregate \tget_rspec **** \
+                        version type %s \r\n" % (version.type))
                 if version.type == "Iotlab":
                     rspec.version.add_connection_information(
                         ldap_username, sites_set)
 
             default_sliver = slivers.get('default_sliver', [])
                 if version.type == "Iotlab":
                     rspec.version.add_connection_information(
                         ldap_username, sites_set)
 
             default_sliver = slivers.get('default_sliver', [])
-            if default_sliver:
+            if default_sliver and len(nodes) is not 0:
                 #default_sliver_attribs = default_sliver.get('tags', [])
                 logger.debug("IotlabAggregate \tget_rspec **** \
                         default_sliver%s \r\n" % (default_sliver))
                 #default_sliver_attribs = default_sliver.get('tags', [])
                 logger.debug("IotlabAggregate \tget_rspec **** \
                         default_sliver%s \r\n" % (default_sliver))
index 0e3e900..bbae92b 100644 (file)
@@ -58,7 +58,7 @@ class IotlabTestbedAPI():
         return IotlabTestbedAPI._MINIMUM_DURATION
 
     @staticmethod
         return IotlabTestbedAPI._MINIMUM_DURATION
 
     @staticmethod
-    def GetPeers (peer_filter=None ):
+    def GetPeers(peer_filter=None ):
         """ Gathers registered authorities in SFA DB and looks for specific peer
         if peer_filter is specified.
         :param peer_filter: name of the site authority looked for.
         """ Gathers registered authorities in SFA DB and looks for specific peer
         if peer_filter is specified.
         :param peer_filter: name of the site authority looked for.
@@ -69,7 +69,7 @@ class IotlabTestbedAPI():
 
         existing_records = {}
         existing_hrns_by_types = {}
 
         existing_records = {}
         existing_hrns_by_types = {}
-        logger.debug("IOTLABDRIVER \tGetPeers peer_filter %s, \
+        logger.debug("IOTLAB_API \tGetPeers peer_filter %s, \
                     " %(peer_filter))
         all_records = dbsession.query(RegRecord).filter(RegRecord.type.like('%authority%')).all()
 
                     " %(peer_filter))
         all_records = dbsession.query(RegRecord).filter(RegRecord.type.like('%authority%')).all()
 
@@ -81,7 +81,7 @@ class IotlabTestbedAPI():
                 existing_hrns_by_types[record.type].append(record.hrn)
 
 
                 existing_hrns_by_types[record.type].append(record.hrn)
 
 
-        logger.debug("IOTLABDRIVER \tGetPeer\texisting_hrns_by_types %s "\
+        logger.debug("IOTLAB_API \tGetPeer\texisting_hrns_by_types %s "\
                                              %( existing_hrns_by_types))
         records_list = []
 
                                              %( existing_hrns_by_types))
         records_list = []
 
@@ -92,14 +92,14 @@ class IotlabTestbedAPI():
                 for hrn in existing_hrns_by_types['authority']:
                     records_list.append(existing_records[(hrn,'authority')])
 
                 for hrn in existing_hrns_by_types['authority']:
                     records_list.append(existing_records[(hrn,'authority')])
 
-            logger.debug("IOTLABDRIVER \tGetPeer \trecords_list  %s " \
+            logger.debug("IOTLAB_API \tGetPeer \trecords_list  %s " \
                                             %(records_list))
 
         except KeyError:
             pass
 
         return_records = records_list
                                             %(records_list))
 
         except KeyError:
             pass
 
         return_records = records_list
-        logger.debug("IOTLABDRIVER \tGetPeer return_records %s "
+        logger.debug("IOTLAB_API \tGetPeer return_records %s "
                      % (return_records))
         return return_records
 
                      % (return_records))
         return return_records
 
@@ -120,7 +120,7 @@ class IotlabTestbedAPI():
         :rtype: list of dicts
 
         """
         :rtype: list of dicts
 
         """
-        logger.debug("IOTLABDRIVER \tGetPersons person_filter %s"
+        logger.debug("IOTLAB_API \tGetPersons person_filter %s"
                      % (person_filter))
         person_list = []
         if person_filter and isinstance(person_filter, list):
                      % (person_filter))
         person_list = []
         if person_filter and isinstance(person_filter, list):
@@ -171,7 +171,7 @@ class IotlabTestbedAPI():
         :rtype: dict
 
         """
         :rtype: dict
 
         """
-        logger.debug("IOTLABDRIVER \tDeleteJobs jobid  %s username %s "
+        logger.debug("IOTLAB_API \tDeleteJobs jobid  %s username %s "
                      % (job_id, username))
         if not job_id or job_id is -1:
             return
                      % (job_id, username))
         if not job_id or job_id is -1:
             return
@@ -186,7 +186,7 @@ class IotlabTestbedAPI():
             ret = {job_id: True}
         else:
             ret = {job_id: False}
             ret = {job_id: True}
         else:
             ret = {job_id: False}
-        logger.debug("IOTLABDRIVER \tDeleteJobs jobid  %s \r\n answer %s \
+        logger.debug("IOTLAB_API \tDeleteJobs jobid  %s \r\n answer %s \
                                 username %s" % (job_id, answer, username))
         return ret
 
                                 username %s" % (job_id, answer, username))
         return ret
 
@@ -205,19 +205,19 @@ class IotlabTestbedAPI():
         ##Get job info from OAR
         #job_info = self.oar.parser.SendRequest(req, job_id, username)
 
         ##Get job info from OAR
         #job_info = self.oar.parser.SendRequest(req, job_id, username)
 
-        #logger.debug("IOTLABDRIVER \t GetJobsId  %s " %(job_info))
+        #logger.debug("IOTLAB_API \t GetJobsId  %s " %(job_info))
         #try:
             #if job_info['state'] == 'Terminated':
         #try:
             #if job_info['state'] == 'Terminated':
-                #logger.debug("IOTLABDRIVER \t GetJobsId job %s TERMINATED"\
+                #logger.debug("IOTLAB_API \t GetJobsId job %s TERMINATED"\
                                                             #%(job_id))
                 #return None
             #if job_info['state'] == 'Error':
                                                             #%(job_id))
                 #return None
             #if job_info['state'] == 'Error':
-                #logger.debug("IOTLABDRIVER \t GetJobsId ERROR message %s "\
+                #logger.debug("IOTLAB_API \t GetJobsId ERROR message %s "\
                                                             #%(job_info))
                 #return None
 
         #except KeyError:
                                                             #%(job_info))
                 #return None
 
         #except KeyError:
-            #logger.error("IOTLABDRIVER \tGetJobsId KeyError")
+            #logger.error("IOTLAB_API \tGetJobsId KeyError")
             #return None
 
         #parsed_job_info  = self.get_info_on_reserved_nodes(job_info, \
             #return None
 
         #parsed_job_info  = self.get_info_on_reserved_nodes(job_info, \
@@ -227,7 +227,7 @@ class IotlabTestbedAPI():
         ##with "node_ids"
         #job_info.update({'node_ids':parsed_job_info[node_list_k]})
         #del job_info[node_list_k]
         ##with "node_ids"
         #job_info.update({'node_ids':parsed_job_info[node_list_k]})
         #del job_info[node_list_k]
-        #logger.debug(" \r\nIOTLABDRIVER \t GetJobsId job_info %s " %(job_info))
+        #logger.debug(" \r\nIOTLAB_API \t GetJobsId job_info %s " %(job_info))
         #return job_info
 
 
         #return job_info
 
 
@@ -251,7 +251,7 @@ class IotlabTestbedAPI():
 
         #Get job resources list from OAR
         node_id_list = self.oar.parser.SendRequest(req, job_id, username)
 
         #Get job resources list from OAR
         node_id_list = self.oar.parser.SendRequest(req, job_id, username)
-        logger.debug("IOTLABDRIVER \t GetJobsResources  %s " %(node_id_list))
+        logger.debug("IOTLAB_API \t GetJobsResources  %s " %(node_id_list))
 
         hostname_list = \
             self.__get_hostnames_from_oar_node_ids(node_id_list)
 
         hostname_list = \
             self.__get_hostnames_from_oar_node_ids(node_id_list)
@@ -283,11 +283,11 @@ class IotlabTestbedAPI():
                 #reserved_node_hostname_list[index] = \
                         #node_dict[job_info[node_list_name][index]]['hostname']
 
                 #reserved_node_hostname_list[index] = \
                         #node_dict[job_info[node_list_name][index]]['hostname']
 
-            #logger.debug("IOTLABDRIVER \t get_info_on_reserved_nodes \
+            #logger.debug("IOTLAB_API \t get_info_on_reserved_nodes \
                         #reserved_node_hostname_list %s" \
                         #%(reserved_node_hostname_list))
         #except KeyError:
                         #reserved_node_hostname_list %s" \
                         #%(reserved_node_hostname_list))
         #except KeyError:
-            #logger.error("IOTLABDRIVER \t get_info_on_reserved_nodes KEYERROR " )
+            #logger.error("IOTLAB_API \t get_info_on_reserved_nodes KEYERROR " )
 
         #return reserved_node_hostname_list
 
 
         #return reserved_node_hostname_list
 
@@ -321,7 +321,7 @@ class IotlabTestbedAPI():
             #hostname_list.append(oar_id_node_dict[resource_id]['hostname'])
         return hostname_list
 
             #hostname_list.append(oar_id_node_dict[resource_id]['hostname'])
         return hostname_list
 
-    def GetReservedNodes(self, username = None):
+    def GetReservedNodes(self, username=None):
         """ Get list of leases. Get the leases for the username if specified,
         otherwise get all the leases. Finds the nodes hostnames for each
         OAR node identifier.
         """ Get list of leases. Get the leases for the username if specified,
         otherwise get all the leases. Finds the nodes hostnames for each
         OAR node identifier.
@@ -368,7 +368,7 @@ class IotlabTestbedAPI():
         """
         node_dict_by_id = self.oar.parser.SendRequest("GET_resources_full")
         node_dict_list = node_dict_by_id.values()
         """
         node_dict_by_id = self.oar.parser.SendRequest("GET_resources_full")
         node_dict_list = node_dict_by_id.values()
-        logger.debug (" IOTLABDRIVER GetNodes  node_filter_dict %s \
+        logger.debug (" IOTLAB_API GetNodes  node_filter_dict %s \
             return_fields_list %s " % (node_filter_dict, return_fields_list))
         #No  filtering needed return the list directly
         if not (node_filter_dict or return_fields_list):
             return_fields_list %s " % (node_filter_dict, return_fields_list))
         #No  filtering needed return the list directly
         if not (node_filter_dict or return_fields_list):
@@ -420,7 +420,7 @@ class IotlabTestbedAPI():
                               gid=slice_record['gid'],
                               pointer=slice_record['slice_id'],
                               authority=slice_record['authority'])
                               gid=slice_record['gid'],
                               pointer=slice_record['slice_id'],
                               authority=slice_record['authority'])
-        logger.debug("IOTLABDRIVER.PY AddSlice  sfa_record %s user_record %s"
+        logger.debug("IOTLAB_API.PY AddSlice  sfa_record %s user_record %s"
                      % (sfa_record, user_record))
         sfa_record.just_created()
         dbsession.add(sfa_record)
                      % (sfa_record, user_record))
         sfa_record.just_created()
         dbsession.add(sfa_record)
@@ -486,7 +486,7 @@ class IotlabTestbedAPI():
         """
         #Disable user account in iotlab LDAP
         ret = self.ldap.LdapMarkUserAsDeleted(person_record)
         """
         #Disable user account in iotlab LDAP
         ret = self.ldap.LdapMarkUserAsDeleted(person_record)
-        logger.warning("IOTLABDRIVER DeletePerson %s " % (person_record))
+        logger.warning("IOTLAB_API DeletePerson %s " % (person_record))
         return ret['bool']
 
     def DeleteSlice(self, slice_record):
         return ret['bool']
 
     def DeleteSlice(self, slice_record):
@@ -510,7 +510,7 @@ class IotlabTestbedAPI():
                     delete_failed = []
                 delete_failed.append(job_id)
 
                     delete_failed = []
                 delete_failed.append(job_id)
 
-        logger.info("IOTLABDRIVER DeleteSlice %s  answer %s"%(slice_record, \
+        logger.info("IOTLAB_API DeleteSlice %s  answer %s"%(slice_record, \
                     delete_failed))
         return delete_failed or True
 
                     delete_failed))
         return delete_failed or True
 
@@ -573,21 +573,23 @@ class IotlabTestbedAPI():
             LdapAddUser.
 
         :param record: dictionary with the sfa user's properties.
             LdapAddUser.
 
         :param record: dictionary with the sfa user's properties.
-        :returns: The uid of the added person if sucessful, otherwise returns
-            the error message from LDAP.
-        :rtype: interger or string
+        :returns: a dicitonary with the status. If successful, the dictionary
+            boolean is set to True and there is a 'uid' key with the new login
+            added to LDAP, otherwise the bool is set to False and a key
+            'message' is in the dictionary, with the error message.
+        :rtype: dict
 
         """
         ret = self.ldap.LdapAddUser(record)
 
         if ret['bool'] is True:
             record['hrn'] = self.root_auth + '.' + ret['uid']
 
         """
         ret = self.ldap.LdapAddUser(record)
 
         if ret['bool'] is True:
             record['hrn'] = self.root_auth + '.' + ret['uid']
-            logger.debug("IOTLABDRIVER AddPerson return code %s record %s \r\n "\
-                                                                %(ret, record))
+            logger.debug("IOTLAB_API AddPerson return code %s record %s  "
+                         (ret, record))
             self.__add_person_to_db(record)
             self.__add_person_to_db(record)
-            return ret['uid']
-        else:
-            return ret['message']
+        return ret
+
+
 
 
 
 
 
 
@@ -610,7 +612,7 @@ class IotlabTestbedAPI():
         """
         ret = self.ldap.LdapModify(person_uid, old_attributes_dict, \
                                                                 new_key_dict)
         """
         ret = self.ldap.LdapModify(person_uid, old_attributes_dict, \
                                                                 new_key_dict)
-        logger.warning("IOTLABDRIVER AddPersonKey EMPTY - DO NOTHING \r\n ")
+        logger.warning("IOTLAB_API AddPersonKey EMPTY - DO NOTHING \r\n ")
         return ret['bool']
 
     def DeleteLeases(self, leases_id_list, slice_hrn):
         return ret['bool']
 
     def DeleteLeases(self, leases_id_list, slice_hrn):
@@ -632,7 +634,7 @@ class IotlabTestbedAPI():
             there was no easy way to report it to the user.
 
         """
             there was no easy way to report it to the user.
 
         """
-        logger.debug("IOTLABDRIVER DeleteLeases leases_id_list %s slice_hrn %s \
+        logger.debug("IOTLAB_API DeleteLeases leases_id_list %s slice_hrn %s \
                 \r\n " %(leases_id_list, slice_hrn))
         for job_id in leases_id_list:
             self.DeleteJobs(job_id, slice_hrn)
                 \r\n " %(leases_id_list, slice_hrn))
         for job_id in leases_id_list:
             self.DeleteJobs(job_id, slice_hrn)
@@ -755,21 +757,21 @@ class IotlabTestbedAPI():
         lease_dict['time_format'] = self.time_format
 
 
         lease_dict['time_format'] = self.time_format
 
 
-        logger.debug("IOTLABDRIVER.PY \tLaunchExperimentOnOAR slice_user %s\
+        logger.debug("IOTLAB_API.PY \tLaunchExperimentOnOAR slice_user %s\
                              \r\n "  %(slice_user))
         #Create the request for OAR
         reqdict = self._create_job_structure_request_for_OAR(lease_dict)
          # first step : start the OAR job and update the job
                              \r\n "  %(slice_user))
         #Create the request for OAR
         reqdict = self._create_job_structure_request_for_OAR(lease_dict)
          # first step : start the OAR job and update the job
-        logger.debug("IOTLABDRIVER.PY \tLaunchExperimentOnOAR reqdict %s\
+        logger.debug("IOTLAB_API.PY \tLaunchExperimentOnOAR reqdict %s\
                              \r\n "  %(reqdict))
 
         answer = self.oar.POSTRequestToOARRestAPI('POST_job', \
                                                 reqdict, slice_user)
                              \r\n "  %(reqdict))
 
         answer = self.oar.POSTRequestToOARRestAPI('POST_job', \
                                                 reqdict, slice_user)
-        logger.debug("IOTLABDRIVER \tLaunchExperimentOnOAR jobid  %s " %(answer))
+        logger.debug("IOTLAB_API \tLaunchExperimentOnOAR jobid  %s " %(answer))
         try:
             jobid = answer['id']
         except KeyError:
         try:
             jobid = answer['id']
         except KeyError:
-            logger.log_exc("IOTLABDRIVER \tLaunchExperimentOnOAR \
+            logger.log_exc("IOTLAB_API \tLaunchExperimentOnOAR \
                                 Impossible to create job  %s "  %(answer))
             return None
 
                                 Impossible to create job  %s "  %(answer))
             return None
 
@@ -777,7 +779,7 @@ class IotlabTestbedAPI():
 
 
         if jobid :
 
 
         if jobid :
-            logger.debug("IOTLABDRIVER \tLaunchExperimentOnOAR jobid %s \
+            logger.debug("IOTLAB_API \tLaunchExperimentOnOAR jobid %s \
                     added_nodes %s slice_user %s" %(jobid, added_nodes, \
                                                             slice_user))
 
                     added_nodes %s slice_user %s" %(jobid, added_nodes, \
                                                             slice_user))
 
@@ -785,8 +787,8 @@ class IotlabTestbedAPI():
         return jobid
 
 
         return jobid
 
 
-    def AddLeases(self, hostname_list, slice_record, \
-                                        lease_start_time, lease_duration):
+    def AddLeases(self, hostname_list, slice_record,
+                  lease_start_time, lease_duration):
 
         """Creates a job in OAR corresponding to the information provided
         as parameters. Adds the job id and the slice hrn in the iotlab
 
         """Creates a job in OAR corresponding to the information provided
         as parameters. Adds the job id and the slice hrn in the iotlab
@@ -803,7 +805,7 @@ class IotlabTestbedAPI():
         :type lease_duration: integer
 
         """
         :type lease_duration: integer
 
         """
-        logger.debug("IOTLABDRIVER \r\n \r\n \t AddLeases hostname_list %s  \
+        logger.debug("IOTLAB_API \r\n \r\n \t AddLeases hostname_list %s  \
                 slice_record %s lease_start_time %s lease_duration %s  "\
                  %( hostname_list, slice_record , lease_start_time, \
                  lease_duration))
                 slice_record %s lease_start_time %s lease_duration %s  "\
                  %( hostname_list, slice_record , lease_start_time, \
                  lease_duration))
@@ -821,22 +823,22 @@ class IotlabTestbedAPI():
         end_time = lease_start_time + lease_duration
 
 
         end_time = lease_start_time + lease_duration
 
 
-        logger.debug("IOTLABDRIVER \r\n \r\n \t AddLeases TURN ON LOGGING SQL \
+        logger.debug("IOTLAB_API \r\n \r\n \t AddLeases TURN ON LOGGING SQL \
                         %s %s %s "%(slice_record['hrn'], job_id, end_time))
 
 
                         %s %s %s "%(slice_record['hrn'], job_id, end_time))
 
 
-        logger.debug("IOTLABDRIVER \r\n \r\n \t AddLeases %s %s %s " \
+        logger.debug("IOTLAB_API \r\n \r\n \t AddLeases %s %s %s " \
                 %(type(slice_record['hrn']), type(job_id), type(end_time)))
 
                 %(type(slice_record['hrn']), type(job_id), type(end_time)))
 
-        iotlab_ex_row = IotlabXP(slice_hrn = slice_record['hrn'], \
-                job_id = job_id, end_time= end_time)
+        iotlab_ex_row = IotlabXP(slice_hrn = slice_record['hrn'], job_id=job_id,
+                                 end_time= end_time)
 
 
-        logger.debug("IOTLABDRIVER \r\n \r\n \t AddLeases iotlab_ex_row %s" \
+        logger.debug("IOTLAB_API \r\n \r\n \t AddLeases iotlab_ex_row %s" \
                 %(iotlab_ex_row))
         self.iotlab_db.iotlab_session.add(iotlab_ex_row)
         self.iotlab_db.iotlab_session.commit()
 
                 %(iotlab_ex_row))
         self.iotlab_db.iotlab_session.add(iotlab_ex_row)
         self.iotlab_db.iotlab_session.commit()
 
-        logger.debug("IOTLABDRIVER \t AddLeases hostname_list start_time %s " \
+        logger.debug("IOTLAB_API \t AddLeases hostname_list start_time %s " \
                 %(start_time))
 
         return
                 %(start_time))
 
         return
@@ -857,7 +859,7 @@ class IotlabTestbedAPI():
         :rtype: dict
 
         """
         :rtype: dict
 
         """
-        logger.debug("IOTLABDRIVER \t  DeleteSliceFromNodes %s "
+        logger.debug("IOTLAB_API \t  DeleteSliceFromNodes %s "
                      % (slice_record))
 
         if isinstance(slice_record['oar_job_id'], list):
                      % (slice_record))
 
         if isinstance(slice_record['oar_job_id'], list):
@@ -928,11 +930,11 @@ class IotlabTestbedAPI():
 
         """
 
 
         """
 
-        unfiltered_reservation_list = self.GetReservedNodes(login)
+        unfiltered_reservation_list = self.GetReservedNodes()
 
         reservation_list = []
         #Find the slice associated with this user iotlab ldap uid
 
         reservation_list = []
         #Find the slice associated with this user iotlab ldap uid
-        logger.debug(" IOTLABDRIVER.PY \tGetLeases login %s\
+        logger.debug(" IOTLAB_API.PY \tGetLeases login %s\
                         unfiltered_reservation_list %s "
                      % (login, unfiltered_reservation_list))
         #Create user dict first to avoid looking several times for
                         unfiltered_reservation_list %s "
                      % (login, unfiltered_reservation_list))
         #Create user dict first to avoid looking several times for
@@ -943,12 +945,12 @@ class IotlabTestbedAPI():
         jobs_psql_dict = dict([(row.job_id, row.__dict__)
                                for row in jobs_psql_query])
         #jobs_psql_dict = jobs_psql_dict)
         jobs_psql_dict = dict([(row.job_id, row.__dict__)
                                for row in jobs_psql_query])
         #jobs_psql_dict = jobs_psql_dict)
-        logger.debug("IOTLABDRIVER \tGetLeases jobs_psql_dict %s"
+        logger.debug("IOTLAB_API \tGetLeases jobs_psql_dict %s"
                      % (jobs_psql_dict))
         jobs_psql_id_list = [row.job_id for row in jobs_psql_query]
 
         for resa in unfiltered_reservation_list:
                      % (jobs_psql_dict))
         jobs_psql_id_list = [row.job_id for row in jobs_psql_query]
 
         for resa in unfiltered_reservation_list:
-            logger.debug("IOTLABDRIVER \tGetLeases USER %s"
+            logger.debug("IOTLAB_API \tGetLeases USER %s"
                          % (resa['user']))
             #Construct list of jobs (runing, waiting..) in oar
             job_oar_list.append(resa['lease_id'])
                          % (resa['user']))
             #Construct list of jobs (runing, waiting..) in oar
             job_oar_list.append(resa['lease_id'])
@@ -956,7 +958,7 @@ class IotlabTestbedAPI():
             #(slice used and job id)
             if resa['lease_id'] in jobs_psql_dict:
                 job_info = jobs_psql_dict[resa['lease_id']]
             #(slice used and job id)
             if resa['lease_id'] in jobs_psql_dict:
                 job_info = jobs_psql_dict[resa['lease_id']]
-                logger.debug("IOTLABDRIVER \tGetLeases job_info %s"
+                logger.debug("IOTLAB_API \tGetLeases job_info %s"
                              % (job_info))
                 resa['slice_hrn'] = job_info['slice_hrn']
                 resa['slice_id'] = hrn_to_urn(resa['slice_hrn'], 'slice')
                              % (job_info))
                 resa['slice_hrn'] = job_info['slice_hrn']
                 resa['slice_id'] = hrn_to_urn(resa['slice_hrn'], 'slice')
@@ -975,7 +977,7 @@ class IotlabTestbedAPI():
                 resa['component_id_list'].append(iotlab_xrn.urn)
 
             if lease_filter_dict:
                 resa['component_id_list'].append(iotlab_xrn.urn)
 
             if lease_filter_dict:
-                logger.debug("IOTLABDRIVER \tGetLeases resa_ %s \
+                logger.debug("IOTLAB_API \tGetLeases resa_ %s \
                         \r\n leasefilter %s" % (resa, lease_filter_dict))
 
                 if lease_filter_dict['name'] == resa['slice_hrn']:
                         \r\n leasefilter %s" % (resa, lease_filter_dict))
 
                 if lease_filter_dict['name'] == resa['slice_hrn']:
@@ -986,7 +988,7 @@ class IotlabTestbedAPI():
 
         self.iotlab_db.update_jobs_in_iotlabdb(job_oar_list, jobs_psql_id_list)
 
 
         self.iotlab_db.update_jobs_in_iotlabdb(job_oar_list, jobs_psql_id_list)
 
-        logger.debug(" IOTLABDRIVER.PY \tGetLeases reservation_list %s"
+        logger.debug(" IOTLAB_API.PY \tGetLeases reservation_list %s"
                      % (reservation_list))
         return reservation_list
 
                      % (reservation_list))
         return reservation_list
 
@@ -1014,7 +1016,7 @@ class IotlabTestbedAPI():
         #FROM PLC DOC
 
         #"""
         #FROM PLC DOC
 
         #"""
-        #logger.warning("IOTLABDRIVER \tUnBindObjectFromPeer EMPTY-\
+        #logger.warning("IOTLAB_API \tUnBindObjectFromPeer EMPTY-\
                         #DO NOTHING \r\n ")
         #return
 
                         #DO NOTHING \r\n ")
         #return
 
@@ -1033,7 +1035,7 @@ class IotlabTestbedAPI():
         #FROM PLC API DOC
 
         #"""
         #FROM PLC API DOC
 
         #"""
-        #logger.warning("IOTLABDRIVER \tBindObjectToPeer EMPTY - DO NOTHING \r\n ")
+        #logger.warning("IOTLAB_API \tBindObjectToPeer EMPTY - DO NOTHING \r\n ")
         #return
 
     ##TODO UpdateSlice 04/07/2012 SA || Commented out 28/05/13 SA
         #return
 
     ##TODO UpdateSlice 04/07/2012 SA || Commented out 28/05/13 SA
@@ -1050,7 +1052,7 @@ class IotlabTestbedAPI():
         #FROM PLC API DOC
 
         #"""
         #FROM PLC API DOC
 
         #"""
-        #logger.warning("IOTLABDRIVER UpdateSlice EMPTY - DO NOTHING \r\n ")
+        #logger.warning("IOTLAB_API UpdateSlice EMPTY - DO NOTHING \r\n ")
         #return
 
     #Unused SA 30/05/13, we only update the user's key or we delete it.
         #return
 
     #Unused SA 30/05/13, we only update the user's key or we delete it.
@@ -1068,7 +1070,7 @@ class IotlabTestbedAPI():
         ##self.iotlab_db.iotlab_session.add(new_row)
         ##self.iotlab_db.iotlab_session.commit()
 
         ##self.iotlab_db.iotlab_session.add(new_row)
         ##self.iotlab_db.iotlab_session.commit()
 
-        #logger.debug("IOTLABDRIVER UpdatePerson EMPTY - DO NOTHING \r\n ")
+        #logger.debug("IOTLAB_API UpdatePerson EMPTY - DO NOTHING \r\n ")
         #return
 
     @staticmethod
         #return
 
     @staticmethod
@@ -1100,7 +1102,7 @@ class IotlabTestbedAPI():
         #user_by_email = dict((user[1]['mail'][0], user[1]['sshPublicKey']) \
                                         #for user in ldap_rslt)
 
         #user_by_email = dict((user[1]['mail'][0], user[1]['sshPublicKey']) \
                                         #for user in ldap_rslt)
 
-        logger.debug("IOTLABDRIVER  GetKeys  -key_dict %s \r\n " % (key_dict))
+        logger.debug("IOTLAB_API  GetKeys  -key_dict %s \r\n " % (key_dict))
         return key_dict
 
     #TODO : test
         return key_dict
 
     #TODO : test
@@ -1122,14 +1124,14 @@ class IotlabTestbedAPI():
         all_user_keys.remove(key_string)
         new_attributes = {'sshPublicKey':all_user_keys}
         ret = self.ldap.LdapModifyUser(user_record, new_attributes)
         all_user_keys.remove(key_string)
         new_attributes = {'sshPublicKey':all_user_keys}
         ret = self.ldap.LdapModifyUser(user_record, new_attributes)
-        logger.debug("IOTLABDRIVER  DeleteKey  %s- " % (ret))
+        logger.debug("IOTLAB_API  DeleteKey  %s- " % (ret))
         return ret['bool']
 
 
 
 
     @staticmethod
         return ret['bool']
 
 
 
 
     @staticmethod
-    def _sql_get_slice_info( slice_filter ):
+    def _sql_get_slice_info(slice_filter):
         """
         Get the slice record based on the slice hrn. Fetch the record of the
         user associated with the slice by using joinedload based on the
         """
         Get the slice record based on the slice hrn. Fetch the record of the
         user associated with the slice by using joinedload based on the
@@ -1154,7 +1156,7 @@ class IotlabTestbedAPI():
             #load_reg_researcher
             #raw_slicerec.reg_researchers
             raw_slicerec = raw_slicerec.__dict__
             #load_reg_researcher
             #raw_slicerec.reg_researchers
             raw_slicerec = raw_slicerec.__dict__
-            logger.debug(" IOTLABDRIVER \t  get_slice_info slice_filter %s  \
+            logger.debug(" IOTLAB_API \t  _sql_get_slice_info slice_filter %s  \
                             raw_slicerec %s" % (slice_filter, raw_slicerec))
             slicerec = raw_slicerec
             #only one researcher per slice so take the first one
                             raw_slicerec %s" % (slice_filter, raw_slicerec))
             slicerec = raw_slicerec
             #only one researcher per slice so take the first one
@@ -1250,6 +1252,8 @@ class IotlabTestbedAPI():
                     #login = fixed_slicerec_dict['hrn'].split(".")[1].split("_")[0]
             #return login, fixed_slicerec_dict
             return fixed_slicerec_dict
                     #login = fixed_slicerec_dict['hrn'].split(".")[1].split("_")[0]
             #return login, fixed_slicerec_dict
             return fixed_slicerec_dict
+        else:
+            return None
 
 
     def GetSlices(self, slice_filter=None, slice_filter_type=None,
 
 
     def GetSlices(self, slice_filter=None, slice_filter_type=None,
@@ -1279,9 +1283,13 @@ class IotlabTestbedAPI():
         if slice_filter_type in authorized_filter_types_list:
             fixed_slicerec_dict = self._get_slice_records(slice_filter,
                                                           slice_filter_type)
         if slice_filter_type in authorized_filter_types_list:
             fixed_slicerec_dict = self._get_slice_records(slice_filter,
                                                           slice_filter_type)
+            # if the slice was not found in the sfa db
+            if fixed_slicerec_dict is None:
+                return return_slicerec_dictlist
+
             slice_hrn = fixed_slicerec_dict['hrn']
 
             slice_hrn = fixed_slicerec_dict['hrn']
 
-            logger.debug(" IOTLABDRIVER \tGetSlices login %s \
+            logger.debug(" IOTLAB_API \tGetSlices login %s \
                             slice record %s slice_filter %s \
                             slice_filter_type %s " % (login,
                             fixed_slicerec_dict, slice_filter,
                             slice record %s slice_filter %s \
                             slice_filter_type %s " % (login,
                             fixed_slicerec_dict, slice_filter,
@@ -1307,7 +1315,7 @@ class IotlabTestbedAPI():
             # each lease information dict
             for lease in leases_list:
                 slicerec_dict = {}
             # each lease information dict
             for lease in leases_list:
                 slicerec_dict = {}
-                logger.debug("IOTLABDRIVER.PY  \tGetSlices slice_filter %s   \
+                logger.debug("IOTLAB_API.PY  \tGetSlices slice_filter %s   \
                         \t lease['slice_hrn'] %s"
                              % (slice_filter, lease['slice_hrn']))
                 if lease['slice_hrn'] == slice_hrn:
                         \t lease['slice_hrn'] %s"
                              % (slice_filter, lease['slice_hrn']))
                 if lease['slice_hrn'] == slice_hrn:
@@ -1331,16 +1339,16 @@ class IotlabTestbedAPI():
 
 
                     return_slicerec_dictlist.append(slicerec_dict)
 
 
                     return_slicerec_dictlist.append(slicerec_dict)
-                    logger.debug("IOTLABDRIVER.PY  \tGetSlices  \
+                    logger.debug("IOTLAB_API.PY  \tGetSlices  \
                         OHOHOHOH %s" %(return_slicerec_dictlist))
 
                         OHOHOHOH %s" %(return_slicerec_dictlist))
 
-                logger.debug("IOTLABDRIVER.PY  \tGetSlices  \
+                logger.debug("IOTLAB_API.PY  \tGetSlices  \
                         slicerec_dict %s return_slicerec_dictlist %s \
                         lease['reserved_nodes'] \
                         %s" % (slicerec_dict, return_slicerec_dictlist,
                                lease['reserved_nodes']))
 
                         slicerec_dict %s return_slicerec_dictlist %s \
                         lease['reserved_nodes'] \
                         %s" % (slicerec_dict, return_slicerec_dictlist,
                                lease['reserved_nodes']))
 
-            logger.debug("IOTLABDRIVER.PY  \tGetSlices  RETURN \
+            logger.debug("IOTLAB_API.PY  \tGetSlices  RETURN \
                         return_slicerec_dictlist  %s"
                           % (return_slicerec_dictlist))
 
                         return_slicerec_dictlist  %s"
                           % (return_slicerec_dictlist))
 
@@ -1377,7 +1385,7 @@ class IotlabTestbedAPI():
                         slicerec_dict['oar_job_id'] = lease['lease_id']
 
                         #for reserved_node in lease['reserved_nodes']:
                         slicerec_dict['oar_job_id'] = lease['lease_id']
 
                         #for reserved_node in lease['reserved_nodes']:
-                        logger.debug("IOTLABDRIVER.PY  \tGetSlices lease %s "
+                        logger.debug("IOTLAB_API.PY  \tGetSlices lease %s "
                                      % (lease))
                         slicerec_dict.update(fixed_slicerec_dict)
                         slicerec_dict.update({'node_ids':
                                      % (lease))
                         slicerec_dict.update(fixed_slicerec_dict)
                         slicerec_dict.update({'node_ids':
@@ -1391,7 +1399,7 @@ class IotlabTestbedAPI():
                         #return_slicerec_dictlist.append(slicerec_dict)
                         fixed_slicerec_dict.update(slicerec_dict)
 
                         #return_slicerec_dictlist.append(slicerec_dict)
                         fixed_slicerec_dict.update(slicerec_dict)
 
-            logger.debug("IOTLABDRIVER.PY  \tGetSlices RETURN \
+            logger.debug("IOTLAB_API.PY  \tGetSlices RETURN \
                         return_slicerec_dictlist %s \slice_filter %s " \
                         %(return_slicerec_dictlist, slice_filter))
 
                         return_slicerec_dictlist %s \slice_filter %s " \
                         %(return_slicerec_dictlist, slice_filter))
 
@@ -1418,7 +1426,7 @@ class IotlabTestbedAPI():
             ##Unused hrn_to_pl_slicename because Iotlab's hrn already
             ##in the appropriate form SA 23/07/12
             #iotlab_record["hrn"] = hrn
             ##Unused hrn_to_pl_slicename because Iotlab's hrn already
             ##in the appropriate form SA 23/07/12
             #iotlab_record["hrn"] = hrn
-            #logger.debug("IOTLABDRIVER.PY sfa_fields_to_iotlab_fields \
+            #logger.debug("IOTLAB_API.PY sfa_fields_to_iotlab_fields \
                         #iotlab_record %s  " %(iotlab_record['hrn']))
             #if "url" in record:
                 #iotlab_record["url"] = record["url"]
                         #iotlab_record %s  " %(iotlab_record['hrn']))
             #if "url" in record:
                 #iotlab_record["url"] = record["url"]
index f44575c..d66d1e5 100644 (file)
@@ -484,7 +484,7 @@ class IotlabSlices:
 
         for added_user_email in added_user_emails:
             added_user = users_dict[added_user_email]
 
         for added_user_email in added_user_emails:
             added_user = users_dict[added_user_email]
-            logger.debug(" SLABSLICE \r\n \r\n  \t THE SECOND verify_person \
+            logger.debug(" IOTLABSLICES \r\n \r\n  \t  verify_person \
                          added_user %s" % (added_user))
             person = {}
             person['peer_person_id'] = None
                          added_user %s" % (added_user))
             person = {}
             person['peer_person_id'] = None
@@ -499,13 +499,18 @@ class IotlabSlices:
             person['key_ids'] = added_user.get('key_ids', [])
 
             ret = self.driver.iotlab_api.AddPerson(person)
             person['key_ids'] = added_user.get('key_ids', [])
 
             ret = self.driver.iotlab_api.AddPerson(person)
-            if type(ret) == int:
-                person['uid'] = ret
+            if 'uid' in ret:
+                # meaning bool is True and the AddPerson was successful
+                person['uid'] = ret['uid']
+                slice_record['login'] = person['uid']
+            else:
+                # error message in ret
+                logger.debug(" IOTLABSLICES ret message %s" %(ret))
 
             logger.debug(" SLABSLICE \r\n \r\n  \t THE SECOND verify_person\
                            person %s" % (person))
             #Update slice_Record with the id now known to LDAP
 
             logger.debug(" SLABSLICE \r\n \r\n  \t THE SECOND verify_person\
                            person %s" % (person))
             #Update slice_Record with the id now known to LDAP
-            slice_record['login'] = person['uid']
+
 
             added_persons.append(person)
         return added_persons
 
             added_persons.append(person)
         return added_persons
index 601297a..eebb1ae 100644 (file)
@@ -2,8 +2,6 @@ from sfa.util.sfalogging import logger
 from sfa.util.xml import XpathFilter
 from sfa.util.xrn import Xrn
 
 from sfa.util.xml import XpathFilter
 from sfa.util.xrn import Xrn
 
-#from sfa.rspecs.elements.versions.sfav1PLTag import SFAv1PLTag
-#from sfa.rspecs.elements.versions.pgv2Services import PGv2Services
 from sfa.rspecs.elements.lease import Lease
 
 
 from sfa.rspecs.elements.lease import Lease