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