Correcting SlabImporter according previous changes.
authorSandrine Avakian <sandrine.avakian@inria.fr>
Wed, 12 Dec 2012 13:35:35 +0000 (14:35 +0100)
committerSandrine Avakian <sandrine.avakian@inria.fr>
Wed, 12 Dec 2012 13:35:35 +0000 (14:35 +0100)
sfa/importer/slabimporter.py
sfa/senslab/slabdriver.py
sfa/senslab/tests/TestSuite.py

index 9737272..7fd1eb5 100644 (file)
@@ -75,6 +75,8 @@ class SlabImporter:
        
         self.records_by_type_hrn = \
             dict ( [ ( (record.type,record.hrn) , record ) for record in all_records ] )
+        self.users_rec_by_email = \
+            dict ( [ (record.email, record) for record in all_records if record.type == 'user' ] )
             
         # create hash by (type,pointer) 
         self.records_by_type_pointer = \
@@ -92,7 +94,7 @@ class SlabImporter:
         print>>sys.stderr,"\r\n SLABIMPORT \t ldap_person_listdict %s \r\n" %(ldap_person_listdict)
         slices_listdict = slabdriver.GetSlices()
         try:
-            slices_by_userid = dict ( [ (one_slice['record_id_user'], one_slice ) for one_slice in slices_listdict ] )
+            slices_by_userid = dict ( [ (one_slice['reg_researchers']['record_id'], one_slice ) for one_slice in slices_listdict ] )
         except TypeError:
              self.logger.log_exc("SlabImporter: failed to create list of slices by user id.") 
              pass
@@ -178,8 +180,10 @@ class SlabImporter:
             # xxx suspicious again
             if len(person_hrn) > 64: person_hrn = person_hrn[:64]
             person_urn = hrn_to_urn(person_hrn, 'user')
-
-            user_record = self.find_record_by_type_hrn('user', person_hrn)
+            
+            user_record = self.users_rec_by_email[person['email']]
+            print>>sys.stderr,"SlabImporter: user_record " , user_record
+            #user_record = self.find_record_by_type_hrn('user', person_hrn)
             slice_record = self.find_record_by_type_hrn ('slice', slice_hrn)
             
             # return a tuple pubkey (a plc key object) and pkey (a Keypair object)
index 2b42f04..3871280 100644 (file)
@@ -968,7 +968,7 @@ class SlabDriver(Driver):
             return_slicerec_dictlist = []
             for record in query_slice_list:
                 tmp = record.__dict__
-                tmp['reg_researchers'] = tmp['reg_researchers'].__dict__
+                tmp['reg_researchers'] = tmp['reg_researchers'][0].__dict__
                 #del tmp['reg_researchers']['_sa_instance_state']
                 return_slicerec_dictlist.append(tmp)
                 #return_slicerec_dictlist.append(record.__dict__)
index b9d3339..62b8e1c 100644 (file)
@@ -23,6 +23,8 @@ from sfa.senslab.OARrestapi import OARrestapi
 from sfa.senslab.slabdriver import SlabDriver
 from sfa.util.config import Config
 
+
+
 import sys
 
 
@@ -76,73 +78,73 @@ 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
+    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.LdapFindUser %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.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 = {}
@@ -249,28 +251,37 @@ def TestOAR(job_id = None):
     print "\r\nOAR ", uri, raw_json, "\r\n KKK \t",raw_json.keys()
     return
     
+    
+  
 def TestSlabDriver(job_id = None):
     if job_id is None:
         job_id = 1
     if isinstance(job_id,list) and len(job_id) == 1:
        job_id = job_id[0]
     slabdriver = SlabDriver(Config())
-    nodes = slabdriver.GetReservedNodes(username='avakian')
-    print "\r\n \r\n" ,nodes
     
-    l = slabdriver.GetSlices(slice_filter = '269', slice_filter_type = 'record_id_user')
+    nodes = slabdriver.GetReservedNodes()
+    print " \r\n \r\n GetReservedNodes" ,nodes
+    
+    sl = slabdriver.GetSlices(slice_filter='senslab2.avakian_slice', slice_filter_type='slice_hrn') 
+    print "\r\n \r\nGetSlices", sl[0]
     
+    sl = slabdriver.GetSlices(slice_filter='528', slice_filter_type='record_id_user')  
+    print "\r\n \r\nGetSlices", sl
     
-    print "\r\n \r\nGetSlices", l
+    sl = slabdriver.GetSlices()  
+    print "\r\n \r\nGetSlices", sl
     
     persons = slabdriver.GetPersons()
     print "\r\n \r\n  GetPersons", persons
     
-    leases = slabdriver.GetLeases()
+    leases = slabdriver.GetLeases(login='avakian')
     print "\r\n \r\n  GetLeases", leases
-    #slabdriver.DeleteJobs(job_id,'senslab2.avakian_slice')
-  
+
   
+
+
+      
 def  TestSfi(arg = None):
     import os
     print " =================    SFI.PY RESOURCES            ============="
@@ -319,7 +330,32 @@ def  TestSfi(arg = None):
     print " =================    SFI.PY CREATE SLICE   ============="
     create = os.system("sfi.py create senslab2.avakian_slice /home/savakian/flab-sfa/rspec_sfa.rspec")
       
+def TestSQL(arg = None):
+    from sfa.storage.model import make_record, RegRecord, RegAuthority, RegUser, RegSlice, RegKey
+    from sfa.storage.alchemy import dbsession
+    from sqlalchemy.orm.collections import InstrumentedList 
+    
+    from sqlalchemy.orm import joinedload 
+    
+    solo_query_slice_list = dbsession.query(RegSlice).options(joinedload('reg_researchers')).filter_by(hrn='senslab2.avakian_slice').first()
+    print "\r\n \r\n ===========      query_slice_list  RegSlice joinedload('reg_researchers')   senslab2.avakian    first \r\n \t ",solo_query_slice_list.__dict__
       
+    query_slice_list = dbsession.query(RegSlice).options(joinedload('reg_researchers')).all()             
+    print "\r\n \r\n ===========      query_slice_list RegSlice joinedload('reg_researchers')   ALL  \r\n \t", query_slice_list[0].__dict__ 
+    return_slicerec_dictlist = []
+    record = query_slice_list[0]
+    print "\r\n \r\n ===========   \r\n \t", record 
+    
+    tmp = record.__dict__
+    print "\r\n \r\n ===========   \r\n \t", tmp 
+    tmp['reg_researchers'] = tmp['reg_researchers'][0].__dict__
+    print "\r\n \r\n ===========   \r\n \t", tmp 
+        #del tmp['reg_researchers']['_sa_instance_state']
+    return_slicerec_dictlist.append(tmp)
+        
+    print "\r\n \r\n ===========   \r\n \t",return_slicerec_dictlist
+    
+    
 def RunAll( arg ):
     TestLdap()
     TestOAR()
@@ -332,6 +368,7 @@ supported_options = {
         'LDAP': TestLdap,
         'driver': TestSlabDriver,
         'sfi':TestSfi,
+        'sql':TestSQL,
         'all' : RunAll }
         
 def main():