aboutsummaryrefslogtreecommitdiff
path: root/member_list.py
blob: df0388673af12373cb8fc16c1cb3e82bd0bfe7f8 (plain)
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