Test with a new table to manage external federated usrs.
authorSandrine Avakian <sandrine.avakian@inria.fr>
Mon, 3 Dec 2012 08:58:22 +0000 (09:58 +0100)
committerSandrine Avakian <sandrine.avakian@inria.fr>
Mon, 3 Dec 2012 08:58:22 +0000 (09:58 +0100)
sfa/senslab/LDAPapi.py
sfa/senslab/config/bash_nukem
sfa/senslab/slabdriver.py
sfa/senslab/slabpostgres.py
sfa/senslab/slabslices.py
sfa/senslab/tests/TestSuite.py

index e6a6253..b0f8b47 100644 (file)
@@ -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
 
index ff119a2..68c7dce 100755 (executable)
@@ -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
index 61985b3..902c399 100644 (file)
@@ -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
index c7861b1..b0c9018 100644 (file)
@@ -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.
index a919725..43524ba 100644 (file)
@@ -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)
index 7f43ee6..b9d3339 100644 (file)
@@ -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')