for person in persons:
pubkeys = []
for key_id in person['key_ids']:
- key = keys_by_id[key_id]
- if key['key_type'] == 'ssh':
+ # by construction all the keys we fetched are ssh keys
+ # so gpg keys won't be in there
+ try:
+ key = keys_by_id[key_id]
pubkeys.append(key)
+ except:
+ self.logger.warning("Could not spot key %d - probably non-ssh"%key_id)
keys_by_person_id[person['person_id']] = pubkeys
# Get all plc nodes
nodes = shell.GetNodes( {'peer_id': None}, ['node_id', 'hostname', 'site_id'])
pass
node_record.stale=False
- site_pis=[]
+ site_pis=set()
# import persons
for person_id in site['person_ids']:
try:
# this is valid for all sites she is in..
# PI is coded with role_id==20
if 20 in person['role_ids']:
- site_pis.append (user_record)
+ site_pis.add (user_record)
except:
self.logger.log_exc("PlImporter: failed to import person %d %s"%(person['person_id'],person['email']))
# maintain the list of PIs for a given site
- site_record.reg_pis = site_pis
+ site_record.reg_pis = list(site_pis)
+ dbsession.commit()
# import slices
for slice_id in site['slice_ids']:
except:
self.logger.log_exc("PlImporter: failed to import slice")
else:
+ # update the pointer if it has changed
+ if slice_id != slice_record.pointer:
+ self.logger.info("updating record (slice) pointer")
+ slice_record.pointer = slice_id
+ dbsession.commit()
# xxx update the record ...
- self.logger.warning ("Slice update not yet implemented")
- pass
+ #self.logger.warning ("Slice update not yet implemented")
# record current users affiliated with the slice
slice_record.reg_researchers = \
[ self.locate_by_type_pointer ('user',user_id) for user_id in slice['person_ids'] ]