From: Sandrine Avakian Date: Mon, 3 Dec 2012 08:58:22 +0000 (+0100) Subject: Test with a new table to manage external federated usrs. X-Git-Tag: sfa-2.1-24~3^2~26 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=34d7d9f305e99feba74da6af8b49a9bbdefc5a04;p=sfa.git Test with a new table to manage external federated usrs. --- diff --git a/sfa/senslab/LDAPapi.py b/sfa/senslab/LDAPapi.py index e6a6253e..b0f8b47a 100644 --- a/sfa/senslab/LDAPapi.py +++ b/sfa/senslab/LDAPapi.py @@ -432,7 +432,7 @@ class LDAPapi : return {'bool' : False, 'message' : error } self.conn.close() - return {'bool': True, 'uid':filter_by['uid']} + return {'bool': True, 'uid':user_ldap_attrs['uid']} else: return result diff --git a/sfa/senslab/config/bash_nukem b/sfa/senslab/config/bash_nukem index ff119a25..68c7dcec 100755 --- a/sfa/senslab/config/bash_nukem +++ b/sfa/senslab/config/bash_nukem @@ -72,13 +72,15 @@ sudo cp $git_local_repo/sfa/senslab/config/$vm/default_config.xml /etc/sfa/defau # sudo ln -s ldap_config.py /etc/sfa/ldap_config.py #Senslab LDAP and OAR access config files -if [ !-f /etc/sfa/ldap_config.py ] +if [ ! -f /etc/sfa/ldap_config.py ] then sudo cp $git_local_repo/sfa/senslab/config/ldap_config.py /etc/sfa/ldap_config.py +fi -if [ !-f /etc/sfa/oar_config.py ] +if [ ! -f /etc/sfa/oar_config.py ] then sudo cp $git_local_repo/sfa/senslab/config/oar_config.py /etc/sfa/oar_config.py +fi sudo service sfa restart @@ -91,4 +93,4 @@ cd ~ sudo sfaadmin.py registry import_registry sudo service sfa restart -sudo rm -rf /var/lib/sfa/authorities/plc \ No newline at end of file +sudo rm -rf /var/lib/sfa/authorities/plc diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index 61985b38..902c3993 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -26,7 +26,8 @@ from sfa.util.xrn import hrn_to_urn, get_authority from sfa.senslab.OARrestapi import OARrestapi from sfa.senslab.LDAPapi import LDAPapi -from sfa.senslab.slabpostgres import SlabDB, slab_dbsession, SliceSenslab +from sfa.senslab.slabpostgres import SlabDB, slab_dbsession, SliceSenslab, \ + FederatedToSenslab from sfa.senslab.slabaggregate import SlabAggregate, slab_xrn_to_hostname, \ slab_xrn_object @@ -1529,7 +1530,7 @@ class SlabDriver(Driver): return #TODO UpdatePerson 04/07/2012 SA - def UpdatePerson(self, auth, person_id_or_email, person_fields=None): + def UpdatePerson(self, slab_hrn, federated_hrn, person_fields=None): """Updates a person. Only the fields specified in person_fields are updated, all other fields are left untouched. Users and techs can only update themselves. PIs can only update @@ -1538,7 +1539,11 @@ class SlabDriver(Driver): FROM PLC API DOC """ - logger.warning("SLABDRIVER UpdatePerson EMPTY - DO NOTHING \r\n ") + new_row = FederatedToSenslab(slab_hrn, federated_hrn) + slab_dbsession.add(new_row) + slab_dbsession.commit() + + logger.debug("SLABDRIVER UpdatePerson EMPTY - DO NOTHING \r\n ") return #TODO GetKeys 04/07/2012 SA diff --git a/sfa/senslab/slabpostgres.py b/sfa/senslab/slabpostgres.py index c7861b1e..b0c90184 100644 --- a/sfa/senslab/slabpostgres.py +++ b/sfa/senslab/slabpostgres.py @@ -25,6 +25,39 @@ tablenames_dict = {'slice_senslab': slice_table} SlabBase = declarative_base() +class FederatedToSenslab( SlabBase): + + __tablename__ = 'identities' + slab_hrn = Column(String, primary_key=True) + aka_hrn = Column(String) + email = Column(String) + + def __init__ (self, slab_hrn = None, aka_hrn = None, email= None): + self.slab_hrn = slab_hrn + self.aka_hrn = aka_hrn + self.email = email + + def __repr__(self): + """Prints the SQLAlchemy record to the format defined + by the function. + """ + result = "< slab_hrn =%s, aka_hrn=%s , email=%s"% (self.slab_hrn, self.aka_hrn, self.email) + result += ">" + return result + + def dump_sqlalchemyobj_to_dict(self): + """Transforms a SQLalchemy record object to a python dictionary. + Returns the dictionary. + """ + + dump_dict = {'slab_hrn':self.slab_hrn, + 'aka_hrn':self.aka_hrn, + 'email' : self.email, } + return dump_dict + + + + class SliceSenslab (SlabBase): """ SQL alchemy class to manipulate slice_senslab table in slab_sfa database. diff --git a/sfa/senslab/slabslices.py b/sfa/senslab/slabslices.py index a9197254..43524ba1 100644 --- a/sfa/senslab/slabslices.py +++ b/sfa/senslab/slabslices.py @@ -535,13 +535,13 @@ class SlabSlices: person['uid'] = self.driver.AddPerson(person) #Update slice_Record with the id now known to LDAP - slice_record['reg-researcher'] = [self.root_auth + '.' + person['uid']] + slice_record['reg-researchers'] = [self.driver.root_auth + '.' + person['uid']] #if peer: #person['peer_person_id'] = added_user['person_id'] added_persons.append(person) # enable the account - #self.driver.UpdatePerson(person['person_id'], {'enabled': True}) + self.driver.UpdatePerson(slice_record['reg-researchers'][0], added_user_hrn) # add person to site #self.driver.AddPersonToSite(added_user_id, login_base) diff --git a/sfa/senslab/tests/TestSuite.py b/sfa/senslab/tests/TestSuite.py index 7f43ee67..b9d3339c 100644 --- a/sfa/senslab/tests/TestSuite.py +++ b/sfa/senslab/tests/TestSuite.py @@ -76,83 +76,83 @@ def TestLdap(job_id = None): print "\r\n TEST ldap.LdapSearch ids = avakian",ret - password = ldap.generate_password() - print "\r\n TEST generate_password ",password + #password = ldap.generate_password() + #print "\r\n TEST generate_password ",password - maxi = ldap.find_max_uidNumber() - print "\r\n TEST find_max_uidNumber " , maxi + #maxi = ldap.find_max_uidNumber() + #print "\r\n TEST find_max_uidNumber " , maxi - data = {} - data['last_name'] = "Drake" - data['first_name']="Tim" - data['givenName']= data['first_name'] - data['mail'] = "robin@arkham.fr" + #data = {} + #data['last_name'] = "Drake" + #data['first_name']="Tim" + #data['givenName']= data['first_name'] + #data['mail'] = "robin@arkham.fr" - record={} - record['hrn'] = 'senslab2.drake' - record['last_name'] = "Drake" - record['first_name']="Tim" - record['mail'] = "robin@arkham.fr" + #record={} + #record['hrn'] = 'senslab2.drake' + #record['last_name'] = "Drake" + #record['first_name']="Tim" + #record['mail'] = "robin@arkham.fr" - login = ldap.generate_login(data) - print "\r\n Robin \tgenerate_login ", ret + #login = ldap.generate_login(data) + #print "\r\n Robin \tgenerate_login ", ret, login - ret = ldap.LdapAddUser(data) - print "\r\n Robin \tLdapAddUser ", ret + #ret = ldap.LdapAddUser(data) + #print "\r\n Robin \tLdapAddUser ", ret - req_ldap = '(uid=' + login + ')' - ret = ldap.LdapSearch(req_ldap, []) - print "\r\n Robin \tldap.LdapSearch ids = %s %s"%(login,ret ) + #req_ldap = '(uid=' + login + ')' + #ret = ldap.LdapSearch(req_ldap, []) + #print "\r\n Robin \tldap.LdapSearch ids = %s %s"%(login,ret ) - password = "Thridrobin" - enc = ldap.encrypt_password(password) - print "\r\n Robin \tencrypt_password ", enc + #password = "Thridrobin" + #enc = ldap.encrypt_password(password) + #print "\r\n Robin \tencrypt_password ", enc - ret = ldap.LdapModifyUser(record, {'userPassword':enc}) - print "\r\n Robin \tChange password LdapModifyUser ", ret + #ret = ldap.LdapModifyUser(record, {'userPassword':enc}) + #print "\r\n Robin \tChange password LdapModifyUser ", ret - dn = 'uid=' + login + ',' + ldap.baseDN - ret = ldap.LdapDelete(dn) - print "\r\n Robin \tLdapDelete ", ret + ##dn = 'uid=' + login + ',' + ldap.baseDN + ##ret = ldap.LdapDelete(dn) + ##print "\r\n Robin \tLdapDelete ", ret - datanight = {} - datanight['last_name'] = "Grayson" - datanight['first_name']="Dick" - datanight['givenName']= datanight['first_name'] - datanight['mail'] = "nightwing@arkham.fr" + #datanight = {} + #datanight['last_name'] = "Grayson" + #datanight['first_name']="Dick" + #datanight['givenName']= datanight['first_name'] + #datanight['mail'] = "nightwing@arkham.fr" - record_night = {} - record_night['hrn'] = 'senslab2.grayson' - record_night['last_name'] = datanight['last_name'] - record_night['first_name'] = datanight['first_name'] - record_night['mail'] = datanight['mail'] + #record_night = {} + #record_night['hrn'] = 'senslab2.grayson' + #record_night['last_name'] = datanight['last_name'] + #record_night['first_name'] = datanight['first_name'] + #record_night['mail'] = datanight['mail'] - ret = ldap.LdapFindUser(record_night) - print "\r\n Nightwing \tldap.LdapFindHrn %s : %s"%(record_night,ret) + #ret = ldap.LdapFindUser(record_night) + #print "\r\n Nightwing \tldap.LdapFindUser %s : %s"%(record_night,ret) - ret = ldap.LdapSearch('(uid=grayson)', []) - print "\r\n Nightwing \tldap.LdapSearch ids = %s %s"%('grayson',ret ) + #ret = ldap.LdapSearch('(uid=grayson)', []) + #print "\r\n Nightwing \tldap.LdapSearch ids = %s %s"%('grayson',ret ) - ret = ldap.LdapAddUser(datanight) - print "\r\n Nightwing \tLdapAddUser ", ret + #ret = ldap.LdapAddUser(datanight) + #print "\r\n Nightwing \tLdapAddUser ", ret - ret = ldap.LdapResetPassword(record_night) - print "\r\n Nightwing \tLdapResetPassword de %s : %s "%(record_night,ret) + #ret = ldap.LdapResetPassword(record_night) + #print "\r\n Nightwing \tLdapResetPassword de %s : %s "%(record_night,ret) - ret = ldap.LdapDeleteUser(record_night) - print "\r\n Nightwing \tLdapDeleteUser ", ret + ##ret = ldap.LdapDeleteUser(record_night) + ##print "\r\n Nightwing \tLdapDeleteUser ", ret - record_avakian = {} - record_avakian['hrn']= 'senslab2.avakian' - record_avakian['last_name'] = 'avakian' - record_avakian['first_name'] = 'sandrine' - record_avakian['mail'] = 'sandrine.avakian@inria.fr' - pubkey = "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwSUkJ+cr3xM47h8lFkIXJoJhg4wHakTaLJmgTXkzvUmQsQeFB2MjUZ6WAelMXj/EFz2+XkK+bcWNXwfbrLptJQ+XwGpPZlu9YV/kzO63ghVrAyEg0+p7Pn1TO9f1ZYg4R6JfP/3qwH1AsE+X3PNpIewsuEIKwd2wUCJDf5RXJTpl39GizcBFemrRqgs0bdqAN/vUT9YvtWn8fCYR5EfJHVXOK8P1KmnbuGZpk7ryz21pDMlgw13+8aYB+LPkxdv5zG54A5c6o9N3zOCblvRFWaNBqathS8y04cOYWPmyu+Q0Xccwi7vM3Ktm8RoJw+raQNwsmneJOm6KXKnjoOQeiQ== savakian@sfa2.grenoble.senslab.info" - ret = ldap.LdapModifyUser(record_avakian, {'sshPublicKey':pubkey}) - print "\r\n Sandrine \tChange pubkey LdapModifyUser ", ret + #record_avakian = {} + #record_avakian['hrn']= 'senslab2.avakian' + #record_avakian['last_name'] = 'avakian' + #record_avakian['first_name'] = 'sandrine' + #record_avakian['mail'] = 'sandrine.avakian@inria.fr' + #pubkey = "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwSUkJ+cr3xM47h8lFkIXJoJhg4wHakTaLJmgTXkzvUmQsQeFB2MjUZ6WAelMXj/EFz2+XkK+bcWNXwfbrLptJQ+XwGpPZlu9YV/kzO63ghVrAyEg0+p7Pn1TO9f1ZYg4R6JfP/3qwH1AsE+X3PNpIewsuEIKwd2wUCJDf5RXJTpl39GizcBFemrRqgs0bdqAN/vUT9YvtWn8fCYR5EfJHVXOK8P1KmnbuGZpk7ryz21pDMlgw13+8aYB+LPkxdv5zG54A5c6o9N3zOCblvRFWaNBqathS8y04cOYWPmyu+Q0Xccwi7vM3Ktm8RoJw+raQNwsmneJOm6KXKnjoOQeiQ== savakian@sfa2.grenoble.senslab.info" + #ret = ldap.LdapModifyUser(record_night, {'sshPublicKey':pubkey}) + #print "\r\n Sandrine \tChange pubkey LdapModifyUser ", ret #record_myslice = {} #record_myslice['hrn']= 'senslab2.myslice' @@ -265,6 +265,9 @@ def TestSlabDriver(job_id = None): persons = slabdriver.GetPersons() print "\r\n \r\n GetPersons", persons + + leases = slabdriver.GetLeases() + print "\r\n \r\n GetLeases", leases #slabdriver.DeleteJobs(job_id,'senslab2.avakian_slice')