From: Sandrine Avakian <sandrine.avakian@inria.fr>
Date: Tue, 15 Nov 2011 10:24:08 +0000 (+0100)
Subject: Fixed bugs for the import part .
X-Git-Tag: sfa-2.1-24~3^2~307
X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=e30680cbfcb07ce5a53a889fea857a6e9ae466d1;p=sfa.git

Fixed bugs for the import part .
---

diff --git a/sfa/senslab/OARrestapi.py b/sfa/senslab/OARrestapi.py
index 6da7ab84..087954ab 100644
--- a/sfa/senslab/OARrestapi.py
+++ b/sfa/senslab/OARrestapi.py
@@ -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):
diff --git a/sfa/senslab/slab-import.py b/sfa/senslab/slab-import.py
index 2f131573..9ee11437 100644
--- a/sfa/senslab/slab-import.py
+++ b/sfa/senslab/slab-import.py
@@ -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)    		
diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py
index 94828a95..4e83c5a5 100644
--- a/sfa/senslab/slabdriver.py
+++ b/sfa/senslab/slabdriver.py
@@ -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