X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fplc%2FsfaImport.py;h=d6691e77dc0bd4ba1ce6ae3af994775b9733c26e;hb=9b797da9df5269c5f4992c3bc1845e02a6ffd53f;hp=cbfec5cbe5050f6ea6b939959a4e29ff3068ee57;hpb=eb459df94e99b51ff0105c6eb3d40d53bf884582;p=sfa.git diff --git a/sfa/plc/sfaImport.py b/sfa/plc/sfaImport.py index cbfec5cb..d6691e77 100644 --- a/sfa/plc/sfaImport.py +++ b/sfa/plc/sfaImport.py @@ -83,43 +83,29 @@ class sfaImport: import PLC.Shell self.shell = PLC.Shell.Shell(globals = globals()) - def get_auth_table(self, auth_name): - AuthHierarchy = self.AuthHierarchy - auth_info = AuthHierarchy.get_auth_info(auth_name) - - table = GeniTable(hrn=auth_name, - cninfo=auth_info.get_dbinfo()) - - # if the table doesn't exist, then it means we haven't put any records - # into this authority yet. - - if not table.exists(): - trace("Import: creating table for authority " + auth_name) - table.create() - - return table - def create_top_level_auth_records(self, hrn): AuthHierarchy = self.AuthHierarchy - # if root doesnt exist, create it + # if auth records for this hrn dont exist, create it if not AuthHierarchy.auth_exists(hrn): AuthHierarchy.create_auth(hrn) - # get the parent hrn - parent_hrn = get_authority(hrn) - if not parent_hrn: - parent_hrn = hrn # get the auth info of the newly created root auth (parent) # or level1_auth if it exists - auth_info = AuthHierarchy.get_auth_info(parent_hrn) if self.level1_auth: auth_info = AuthHierarchy.get_auth_info(hrn) - table = self.get_auth_table(parent_hrn) + parent_hrn = hrn + else: + parent_hrn = get_authority(hrn) + if not parent_hrn: + parent_hrn = hrn + auth_info = AuthHierarchy.get_auth_info(parent_hrn) + + table = GeniTable() + auth_record = table.find({'type': 'authority', 'hrn': hrn}) - auth_record = table.resolve("authority", hrn) if not auth_record: auth_record = GeniRecord(hrn=hrn, gid=auth_info.get_gid_object(), type="authority", pointer=-1) trace(" inserting authority record for " + hrn) @@ -136,7 +122,7 @@ class sfaImport: trace("Import: importing person " + hrn) - table = self.get_auth_table(parent_hrn) + table = GeniTable() key_ids = [] if 'key_ids' in person and person['key_ids']: @@ -157,7 +143,7 @@ class sfaImport: # create the gid person_gid = AuthHierarchy.create_gid(hrn, create_uuid(), pkey) - person_record = table.resolve("user", hrn) + person_record = table.find({'type': 'user', 'hrn': hrn}) if not person_record: trace(" inserting user record for " + hrn) person_record = GeniRecord(hrn=hrn, gid=person_gid, type="user", pointer=person['person_id']) @@ -179,9 +165,9 @@ class sfaImport: hrn = parent_hrn + "." + slicename trace("Import: importing slice " + hrn) - table = self.get_auth_table(parent_hrn) + table = GeniTable() - slice_record = table.resolve("slice", hrn) + slice_record = table.find({'type': 'sslice', 'hrn': hrn}) if not slice_record: pkey = Keypair(create=True) slice_gid = AuthHierarchy.create_gid(hrn, create_uuid(), pkey) @@ -191,7 +177,7 @@ class sfaImport: def import_node(self, parent_hrn, node): AuthHierarchy = self.AuthHierarchy - nodename = node['hostname'].replace(".", "_") + nodename = node['hostname'].split(".")[0] nodename = cleanup_string(nodename) if not nodename: @@ -206,9 +192,9 @@ class sfaImport: trace("Import: importing node " + hrn) - table = self.get_auth_table(parent_hrn) + table = GeniTable() - node_record = table.resolve("node", hrn) + node_record = table.find({'type': 'node', 'hrn': hrn}) if not node_record: pkey = Keypair(create=True) node_gid = AuthHierarchy.create_gid(hrn, create_uuid(), pkey) @@ -246,9 +232,9 @@ class sfaImport: auth_info = AuthHierarchy.get_auth_info(hrn) - table = self.get_auth_table(parent_hrn) + table = GeniTable() - auth_record = table.resolve("authority", hrn) + auth_record = table.find({'type': 'authority', 'hrn': 'hrn'}) if not auth_record: auth_record = GeniRecord(hrn=hrn, gid=auth_info.get_gid_object(), type="authority", pointer=site['site_id']) trace(" inserting authority record for " + hrn) @@ -281,11 +267,12 @@ class sfaImport: def delete_record(self, parent_hrn, object, type): # get the hrn + table = GeniTable() hrn = None if type in ['slice'] and 'name' in object and object['name']: slice_name = object['name'].split("_")[0] hrn = parent_hrn + "." + slice_name - elif type in ['user', 'person'] and 'email' in object and object['email']: + elif type in ['user'] and 'email' in object and object['email']: person_name = object['email'].split('@')[0] hrn = parent_hrn + "." + person_name elif type in ['node'] and 'hostname' in object and object['hostname']: @@ -293,13 +280,17 @@ class sfaImport: hrn = parent_hrn + "." + node_name elif type in ['site'] and 'login_base' in object and object['login_base']: site_name = object['login_base'] - hrn = parent_hrn + "." + site_name + hrn = parent_hrn + parent_hrn = get_authority(hrn) + type = "authority" + # delete all records whos authority is this site + records = table.find({'authority': hrn}) + for record in records: + table.remove(record) else: return - - table = self.get_auth_table(parent_hrn) - record_list = table.resolve(type, hrn) - if not record_list: - return - record = record_list[0] - table.remove(record) + + # delete the record + record_list = table.find({'type': type, 'hrn': hrn}) + for record in record_list: + table.remove(record)