Fixed bugs for the import part .
authorSandrine Avakian <sandrine.avakian@inria.fr>
Tue, 15 Nov 2011 10:24:08 +0000 (11:24 +0100)
committerSandrine Avakian <sandrine.avakian@inria.fr>
Tue, 15 Nov 2011 10:24:08 +0000 (11:24 +0100)
sfa/senslab/OARrestapi.py
sfa/senslab/slab-import.py
sfa/senslab/slabdriver.py

index 6da7ab8..087954a 100644 (file)
@@ -277,18 +277,18 @@ class OARapi:
                self.server = OARrestapi()
                self.parser = OARGETParser(self.server)
 
-       def GetNodes(self,node_filter= None, return_fields=None):
-               #print>>sys.stderr, " \r\n GetNodes node_filter %s return_fields %s" %(node_filter,return_fields) 
-               self.parser.SendRequest("GET_resources_full")
-               node_dict = self.parser.GetNodesFromOARParse()
-               return_node_list = []
-               #print>>sys.stderr, " \r\n GetNodes   node_dict %s" %(node_dict) 
-               if not (node_filter or return_fields):
-                       return_node_list = node_dict.values()
-                       return return_node_list
+       #def GetNodes(self,node_filter= None, return_fields=None):
+               ##print>>sys.stderr, " \r\n GetNodes node_filter %s return_fields %s" %(node_filter,return_fields) 
+               #self.parser.SendRequest("GET_resources_full")
+               #node_dict = self.parser.GetNodesFromOARParse()
+               #return_node_list = []
+               ##print>>sys.stderr, " \r\n GetNodes   node_dict %s" %(node_dict) 
+               #if not (node_filter or return_fields):
+                       #return_node_list = node_dict.values()
+                       #return return_node_list
 
-               return_node_list= parse_filter(node_dict.values(),node_filter ,'node', return_fields)
-               return return_node_list
+               #return_node_list= parse_filter(node_dict.values(),node_filter ,'node', return_fields)
+               #return return_node_list
 
                
        def GetSites(self, site_filter= None, return_fields=None):
index 2f13157..9ee1143 100644 (file)
@@ -15,7 +15,9 @@ from sfa.trust.hierarchy import Hierarchy
 
 AuthHierarchy = Hierarchy()
 table = SfaTable()
-
+if not table.exists():
+    table.create()
+    
 def create_top_level_auth_records(hrn):
     """
     Create top level records (includes root and sub authorities (local/remote)
@@ -66,15 +68,15 @@ def import_node(hrn, node):
         node_record['record_id'] = existing_record['record_id']
         table.update(node_record)
 
+# person is already a sfa record 
 def import_person(person):       
     existing_records = table.find({'hrn': person['hrn'], 'type': 'user'})
     if not existing_records:
-        table.insert(person_record)
+        table.insert(person)
     else:
         existing_record = existing_records[0]
         person['record_id'] = existing_record['record_id']
-        table.update(person_record)      
+        table.update(person)      
         
         
         
@@ -95,9 +97,9 @@ def main():
     print interface_hrn, root_auth
     
      # initialize registry db table
-    table = SfaTable()
-    if not table.exists():
-       table.create()
+    #table = SfaTable()
+    #if not table.exists():
+       #table.create()
 
     # create root authority 
     create_top_level_auth_records(root_auth)
@@ -121,16 +123,16 @@ def main():
         existing_records[(result['hrn'], result['type'])] = result
         existing_hrns.append(result['hrn'])   
         
-         #Get Senslab nodes 
-    Driver = SlabDriver(OARapi(),SenslabUsers())
+    #Get Senslab nodes 
+   
+    Driver = SlabDriver(OARapi(),LDAPapi())
     nodes_dict  = Driver.GetNodes()
     print "\r\n NODES8DICT ",nodes_dict
     
-    persons_list = Driver.GetPersons()
-    print "\r\n PERSONS_LIST ",persons_list
+    ldap_person_list = Driver.GetPersons()
+    print "\r\n PERSONS_LIST ",ldap_person_list
 
-    keys_list = Driver.GetKeys()
-    print "\r\n KEYSS_LIST ",keys_list
+   
     
     #slices_list = SenslabUsers.GetSlices()
     #print "\r\n SLICES_LIST ",slices_list
@@ -158,24 +160,19 @@ def main():
                        #print '\r\n \t **NODE_ID %s node %s '%( node_id, node)         
                        #continue 
     for node in nodes_dict:
-        #if node_id is node['node_id']:        
-                #node = nodes_dict[node_id]
         print '\r\n \t NODE_ID %s node %s '%( node_id, node)
         hrn =  hostname_to_hrn(interface_hrn, root_auth, node['hostname'])
-        break  
-
-    if hrn not in existing_hrns or \
-    (hrn, 'node') not in existing_records:
-        print "\t\t NODE HRN NOT in existing records!" ,hrn
-        import_node(hrn, node)
+        if hrn not in existing_hrns or \
+        (hrn, 'node') not in existing_records:
+            print "\t\t NODE HRN NOT in existing records!" ,hrn
+            import_node(hrn, node)
 
    # import persons
-    for person in persons_list:
+    for person in ldap_person_list:
         print >>sys.stderr, "\r\n\r\n^^^^^^^^^^^^^PERSON hrn %s person %s site hrn %s" %(hrn,person)    
-        import_person( site_hrn, person,keys_list)
-        if hrn not in existing_hrns or \
-            (hrn, 'user') not in existing_records or update_record:
-            import_person(site_hrn, person)    
+        if person['hrn'] not in existing_hrns or \
+            (person['hrn'], 'user') not in existing_records :
+            import_person( person)     
 # import slices
         #for slice_id in site['slice_ids']:
                #print >>sys.stderr, "\r\n\r\n \t ^^^^^^^\\\\\\\\\\\\\\\^^^^^^ slice_id  %s  " %(slice_id)              
index 94828a9..4e83c5a 100644 (file)
@@ -12,7 +12,7 @@ from sfa.util.plxrn import slicename_to_hrn, hostname_to_hrn, hrn_to_pl_slicenam
 
 ## thierry : please avoid wildcard imports :)
 from sfa.senslab.OARrestapi import *
-from sfa.senslab.SenslabImportUsers import *
+from sfa.senslab.LDAapi import *
 
 def list_to_dict(recs, key):
     """
@@ -28,22 +28,45 @@ def list_to_dict(recs, key):
 # this inheritance scheme is so that the driver object can receive
 # GetNodes or GetSites sorts of calls directly
 # and thus minimize the differences in the managers with the pl version
-class SlabDriver (OARapi, SenslabImportUsers):
+class SlabDriver (OARapi, LDAPapi):
 
-    def __init__(self, config):
+    def __init__(self,config):
+       
         self.config=config
         self.hrn = config.SFA_INTERFACE_HRN
+    
+        self.root_auth = config.SFA_REGISTRY_ROOT_AUTH
+
+        
        print >>sys.stderr, "\r\n_____________ SFA SENSLAB DRIVER \r\n" 
         # thierry - just to not break the rest of this code
        #self.oar = OARapi()
        #self.users = SenslabImportUsers()
        self.oar = self
-       self.users = self
+       self.ldap = self
         self.time_format = "%Y-%m-%d %H:%M:%S"
         #self.logger=sfa_logger()
       
        
+    def GetPersons(self, person_filter=None, return_fields=None):
+
+        person_list = self.ldapFind({'authority': self.root_auth })
+        return_person_list = parse_filter(person_list,person_filter ,'persons', return_fields)
+        return return_person_list
+    
+    def GetNodes(self,node_filter= None, return_fields=None):
+               
+        self.parser.SendRequest("GET_resources_full")
+        node_dict = self.parser.GetNodesFromOARParse()
+        return_node_list = []
+        print>>sys.stderr, " \r\n GetNodes   node_dict %s" %(node_dict) 
+        if not (node_filter or return_fields):
+                return_node_list = node_dict.values()
+                return return_node_list
+    
+        return_node_list= parse_filter(node_dict.values(),node_filter ,'node', return_fields)
+        return return_node_list
+    
     ##
     # Convert SFA fields to PLC fields for use when registering up updating
     # registry record in the PLC database