1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
#!/usr/bin/python3
import linaro_ldap
import yaml
from jinja2 import Template
import os
OUTFILE = "member-identities.yaml"
if os.path.isfile(OUTFILE):
os.unlink(OUTFILE)
tmpl = Template('''\
- profile:
name: {{ username }}
enrollments:
- organization: {{ org }}
email:
- {{ email }}
''')
def getKey(item):
return item[0]
def getPersonKey(item):
try:
return item[1]['gecos'][0].lstrip()
except KeyError:
return "None"
def get_member_ous(ldap):
result = ldap.do_complex_query( search_filter='(organizationalStatus=*)', attrlist=['ou','description'])
member_list = []
for x in result:
member_list.append( (x[1]['description'][0].decode('utf-8'), x[1]['ou'][0].decode('utf-8')) )
member_list = sorted(member_list, key=getKey)
return member_list
member_ou_list = get_member_ous(linaro_ldap)
for member in member_ou_list:
people = linaro_ldap.do_complex_query( \
base = 'ou=%s,ou=accounts,dc=linaro,dc=org' % member[1], \
search_filter='(objectClass=inetOrgPerson)', \
attrlist=['uid','gecos','mail'])
s_people = sorted(people, key=getPersonKey)
for person in s_people:
try:
uid = person[1]['gecos'][0].decode('utf-8')
email = person[1]['mail'][0].decode('utf-8')
foo = tmpl.render(
username=uid,
org=member[0].decode('utf-8'),
email=email
)
with open( OUTFILE, 'a') as outfile:
outfile.write(foo)
except KeyError:
pass
|