From d6e437565593f4294126d0b82bedb65bf22cc0dd Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Tue, 1 Jun 2010 18:58:33 +0200 Subject: [PATCH] first very draft for exporting myplc userbase to NITOS --- scripts/export-omf.py | 58 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 scripts/export-omf.py diff --git a/scripts/export-omf.py b/scripts/export-omf.py new file mode 100755 index 0000000..438bc48 --- /dev/null +++ b/scripts/export-omf.py @@ -0,0 +1,58 @@ +#!/usr/bin/plcsh + +# utility to store, read and diff our user base data for exporting to OMF + +import sys +import time +from optparse import OptionParser + +class OmfUserBase: + + def __init__ (self,filename): + self.filename = filename + + def save_person (self, file, person, sites_by_id, pubkeys_by_id): + # do not expose people without a key + if not person['key_ids']: return + # do not expose techs + roles=person['roles'] + if 'admin' not in roles and 'pi' not in roles and 'user' not in roles: return + print >>file, "--- PERSON ---" + #print >>file, "TMP id=%d"%person['person_id'] + print >>file, "email=%s"%person['email'] + for site_id in person['site_ids']: + print >>file, "site=%s"%sites_by_id[site_id]['name'] + if 'pi' in person['roles']: + print >>file, "pi=yes" + # somehow the passord information does not show up here + #print >>file, "password=%s"%person['password'] + for key_id in person['key_ids']: + print >>file, "ssh=%s"%pubkeys_by_id[key_id] + + def save(self): + """ + Write configuration store to file. + """ + + fileout = open(self.filename, 'w') + print >>fileout, "# myplc simple userbase extration tools export-omf.py" + print >>fileout, "# generated on %s"%time.strftime("%Y-%m-%d @ %H:%M UTC",time.gmtime()) + # store all ssh keys by key_id - keep only the public key + pubkeys_by_id = dict ( [ (k['key_id'], k['key'].strip()) for k in GetKeys() if k['key_type'] == 'ssh']) + # idem for sites, keep whole site info + sites_by_id = dict ( [ (s['site_id'], s ) for s in GetSites({'peer_id':None}) ] ) + # + persons=GetPersons({'peer_id':None}) + persons = sorted(persons, key=lambda(person): person['email']) + for p in persons: + self.save_person(fileout, p, sites_by_id, pubkeys_by_id) + fileout.close() + + +def main (): + output=sys.argv[1] + userbase=OmfUserBase(output) + userbase.save() + +if __name__ == '__main__': + main() -- 2.47.0