75
75
with open(GROUPS_CONFIG_FILE, 'r') as f:
76
76
groups_config = yaml.load(f)
81
# Recurse members_details to return a list of (final)users as a tuples:
82
# (login, full_name, email, ssh_keys, openid)
83
def get_all_users(members_details, team_name):
85
for detail in members_details:
89
# 'https://api.launchpad.net/1.0/~team/+member/${username}'
90
login = detail.self_link.split('/')[-1]
92
status = detail.status
93
member = launchpad.people[login]
95
if not (status == "Approved" or status == "Administrator"):
97
# Avoid re-visiting SEEN_LOGINS
98
if login in SEEN_LOGINS:
100
SEEN_LOGINS.add(login)
101
print '{}-entry: {}/{}'.format('T' if member.is_team else 'U', team_name, login)
103
# If is_team recurse down(branch), else add this user details(leaf) to users
105
users.extend(get_all_users(member.members_details, "{}/{}".format(team_name, member.name)))
107
openid = get_openid(login)
108
full_name = member.display_name.encode('ascii', 'replace')
111
email = member.preferred_email_address.email
116
"{} {} {}".format(get_type(key.keytype), key.keytext, key.comment).strip()
117
for key in member.sshkeys
119
users.append((login, full_name, email, ssh_keys, openid),)
120
# Return a list with user details tuple
79
123
for group, teams in groups_config.items():
80
124
# create group if not exists
82
126
print "Creating group %s" % group
83
127
gerrit_client.create_group(group)
86
130
print "Skipping group creation"
92
136
for team_todo in teams:
93
137
team = launchpad.people[team_todo]
94
details = team.members_details
95
138
print "Creating users for team %s" % team
96
for detail in details:
99
# 'https://api.launchpad.net/1.0/~team/+member/${username}'
100
login = detail.self_link.split('/')[-1]
102
status = detail.status
103
member = launchpad.people[login]
105
if (status == "Approved" or status == "Administrator") and \
106
(not member.is_team):
107
openid = get_openid(login)
109
full_name = member.display_name.encode('ascii', 'replace')
113
email = member.preferred_email_address.email
118
"%s %s %s" % (get_type(key.keytype), key.keytext, key.comment)
119
for key in member.sshkeys
121
ssh_keys = [k.strip() for k in ssh_keys]
123
# add user into gerrit for that group
124
final_user = [login, full_name, email, ssh_keys, openid]
125
final_users.append(final_user)
139
final_users.extend(get_all_users(team.members_details, team_todo))
128
144
# add all the users
130
146
gerrit_client.create_users_batch(group, final_users)
131
147
except Exception as e:
132
148
print "ERROR creating users %s" % str(e)
136
152
gerrit_client.flush_cache()
154
# Workaround https://github.com/paramiko/paramiko/issues/17
155
gerrit_client.ssh.close()