From: Sandrine Avakian Date: Thu, 10 Jan 2013 08:03:59 +0000 (+0100) Subject: Further changes to handle federated user . X-Git-Tag: sfa-2.1-24~3^2~8 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=759d9dc7edbc97a15483000534610e0e44fc1f5d;p=sfa.git Further changes to handle federated user . --- diff --git a/sfa/senslab/OARrestapi.py b/sfa/senslab/OARrestapi.py index a59fe0f9..7faf75a2 100644 --- a/sfa/senslab/OARrestapi.py +++ b/sfa/senslab/OARrestapi.py @@ -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) diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index 106a8218..7cc29bf4 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -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.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"\ diff --git a/sfa/senslab/slabslices.py b/sfa/senslab/slabslices.py index 66f9c7c6..5eedc1e6 100644 --- a/sfa/senslab/slabslices.py +++ b/sfa/senslab/slabslices.py @@ -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))