deeper pass on xmlrpclib vs xmlrpc.client as well as configparser
[sfa.git] / tools / reset_gids.py
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 from sfa.storage.model import *
5 from sfa.storage.alchemy import *
6 from sfa.trust.gid import create_uuid
7 from sfa.trust.hierarchy import Hierarchy
8 from sfa.util.xrn import Xrn
9 from sfa.trust.certificate import Certificate, Keypair, convert_public_key
10
11 def fix_users():
12     s=global_dbsession
13     hierarchy = Hierarchy()
14     users = s.query(RegRecord).filter_by(type="user")
15     for record in users:
16         record.gid = ""
17         if not record.gid:
18             uuid = create_uuid()
19             pkey = Keypair(create=True)
20             pub_key=getattr(record,'reg_keys',None)
21             if len(pub_key) > 0:
22                 # use only first key in record
23                 if pub_key and isinstance(pub_key, list): pub_key = pub_key[0]
24                 pub_key = pub_key.key
25                 pkey = convert_public_key(pub_key)
26             urn = Xrn (xrn=record.hrn, type='user').get_urn()
27             email=getattr(record,'email',None)
28             gid_object = hierarchy.create_gid(urn, uuid, pkey, email = email)
29             gid = gid_object.save_to_string(save_parents=True)
30             record.gid = gid
31     s.commit()
32
33 if __name__ == '__main__':
34     fix_users()