From: Sandrine Avakian 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