Further changes to handle federated user .
authorSandrine Avakian <sandrine.avakian@inria.fr>
Thu, 10 Jan 2013 08:03:59 +0000 (09:03 +0100)
committerSandrine Avakian <sandrine.avakian@inria.fr>
Thu, 10 Jan 2013 08:03:59 +0000 (09:03 +0100)
sfa/senslab/OARrestapi.py
sfa/senslab/slabdriver.py
sfa/senslab/slabslices.py

index a59fe0f..7faf75a 100644 (file)
@@ -145,8 +145,8 @@ class OARrestapi:
             return answer
 
         except ValueError, error:
-            logger.log_exc("Failed to parse Server Response: error %s answer \
-                            %s" %(error, answer))
+            logger.log_exc("Failed to parse Server Response: error %s  \
+                            %s" %(error))
             #raise ServerError("Failed to parse Server Response:" + answer)
 
 
index 106a821..7cc29bf 100644 (file)
@@ -1,4 +1,5 @@
 import subprocess
+import os
 
 from datetime import datetime
 
@@ -1230,7 +1231,10 @@ class SlabDriver(Driver):
             # second step : configure the experiment
             # we need to store the nodes in a yaml (well...) file like this :
             # [1,56,23,14,45,75] with name /tmp/sfa<jobid>.json
-            job_file = open('/tmp/sfa/'+ str(jobid) + '.json', 'w')
+            tmp_dir = '/tmp/sfa/'
+            if not os.path.exists(tmp_dir):
+                os.makedirs(tmp_dir)
+            job_file = open(tmp_dir + str(jobid) + '.json', 'w')
             job_file.write('[')
             job_file.write(str(added_nodes[0].strip('node')))
             for node in added_nodes[1:len(added_nodes)] :
@@ -1274,12 +1278,14 @@ class SlabDriver(Driver):
                  %( hostname_list, slice_record , lease_start_time, \
                  lease_duration))
 
-        tmp = slice_record['reg-researchers'][0].split(".")
-        username = tmp[(len(tmp)-1)]
+        #tmp = slice_record['reg-researchers'][0].split(".")
+        username = slice_record['user']['uid']
+        #username = tmp[(len(tmp)-1)]
         job_id = self.LaunchExperimentOnOAR(hostname_list, slice_record['hrn'], \
                                     lease_start_time, lease_duration, username)
         start_time = datetime.fromtimestamp(int(lease_start_time)).strftime(self.time_format)
         end_time = lease_start_time + lease_duration
+        logger.debug("SLABDRIVER \r\n \r\n \t AddLeases %s %s %s " %(type(slice_record['hrn']), type(job_id), type(end_time)))
         slab_ex_row = SenslabXP(slice_record['hrn'], job_id, end_time)
         logger.debug("SLABDRIVER \r\n \r\n \t slab_ex_row %s" %(slab_ex_row))
         slab_dbsession.add(slab_ex_row)
@@ -1390,13 +1396,13 @@ class SlabDriver(Driver):
                 
     
                 resa['component_id_list'] = []
+                resa['hrn'] = Xrn(resa['slice_id']).get_hrn()
                 #Transform the hostnames into urns (component ids)
                 for node in resa['reserved_nodes']:
                     #resa['component_id_list'].append(hostname_to_urn(self.hrn, \
                             #self.root_auth, node['hostname']))
                     slab_xrn = slab_xrn_object(self.root_auth, node)
                     resa['component_id_list'].append(slab_xrn.urn)
-                    resa['slice_hrn'] = Xrn(resa['slice_id']).get_hrn()
                     
                 if lease_filter_dict:
                     logger.debug("SLABDRIVER \tGetLeases resa_ %s \r\n leasefilter %s"\
index 66f9c7c..5eedc1e 100644 (file)
@@ -416,12 +416,13 @@ class SlabSlices:
                 slice_rec = info['slice_record'] 
                 user = slice_rec['user']
 
-               
-            if 'hrn' in user:
+            if 'email' in user:  
                 users_by_email[user['email']] = user
+                users_dict[user['email']] = user
+                
+            #if 'hrn' in user:
                 #users_by_hrn[user['hrn']] = user
                 #users_dict[user['hrn']] = user
-                users_dict[user['email']] = user
         
         logger.debug( "SLABSLICE.PY \t verify_person  \
                         users_dict %s \r\n user_by_email %s \r\n \
@@ -455,7 +456,9 @@ class SlabSlices:
             #User's in senslab LDAP               
             if existing_users:
                 for user in existing_users :
+                    users_dict[user['email']].update(user)
                     existing_user_emails.append(users_dict[user['email']]['email'])
+                    
                     #existing_user_hrns.append(users_dict[user['hrn']]['hrn'])
                     #existing_user_ids.\
                                     #append(users_dict[user['hrn']]['person_id'])
@@ -525,8 +528,18 @@ class SlabSlices:
 
         added_persons = []
         # add new users
+        
+        #requested_user_email is in existing_user_emails
+        if len(added_user_emails) == 0:
+           
+            slice_record['login'] = users_dict[requested_user_emails[0]]['uid']
+            logger.debug(" SLABSLICE  \tverify_person QUICK DIRTY %s" \
+                        %(slice_record))
+            
         #for added_user_hrn in added_user_hrns:
             #added_user = users_dict[added_user_hrn]
+            
+            
         for added_user_email in added_user_emails:
             #hrn, type = urn_to_hrn(added_user['urn'])  
             
@@ -544,9 +557,8 @@ class SlabSlices:
                 
             #person['person_id'] = self.driver.AddPerson(person)
             person['uid'] = self.driver.AddPerson(person)
-            slice_record['HEYMOTHERFUCKER'] = "DAFUQ?"
             #Update slice_Record with the id now known to LDAP
-            
+            slice_record['login'] = person['uid']
             slice_record['reg_researchers'] = [self.driver.root_auth + '.' + person['uid']]
             slice_record['reg-researchers'] =  slice_record['reg_researchers']
             logger.debug(" SLABSLICE \r\n \r\n  \t THE SECONDverify_person slice_record['record_id_user'] %s" %(slice_record))