Skip to content

Commit 5fd95a4

Browse files
author
Lee Richardson
committed
Merge branch 'ADZ-3281-get-developer-emails' into ADZ-3283_handle_company_apps
2 parents 447003c + e2cd7be commit 5fd95a4

4 files changed

Lines changed: 38 additions & 24 deletions

File tree

ansible/filter_plugins/apigee_helpers.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -83,28 +83,34 @@ def apigee_remove_proxy_from_product(product: dict, proxy_to_remove):
8383
return product
8484

8585

86-
def apigee_teams_map(teams: List[dict]):
86+
def apigee_team_to_admin(team):
87+
return next((attr.get('value') for attr in team['attributes'] if attr['name'] == 'ADMIN_EMAIL'), None)
88+
89+
90+
def apigee_teams_map(team_members: List[dict], teams: List[dict]):
91+
from collections import defaultdict
92+
joined = defaultdict(dict)
93+
for item in team_members + teams:
94+
joined[item['name']].update(item)
95+
full_teams = list(joined.values())
8796

8897
return {
89-
f"{team['id']}@devteam.apigee.io": {
90-
"contact": team['pointOfContact'],
91-
"members": list(mem['userId'] for mem in team.get('memberships', []))
98+
team['name']: {
99+
"contact": apigee_team_to_admin(team),
100+
"members": team['members']
92101
}
93-
for team in teams
102+
for team in full_teams
94103
}
95104

96105

97106
def apigee_teams_to_point_of_contact(teams: List[dict]):
98-
99-
return {
100-
f"{team['id']}@devteam.apigee.io": team['pointOfContact'] for team in teams
101-
}
107+
return {apigee_team_to_admin(team) for team in teams}
102108

103109

104110
def apigee_teams_to_members(teams: List[dict]):
105111

106112
return {
107-
f"{team['id']}@devteam.apigee.io": list(mem['userId'] for mem in team.get('memberships', [])) for team in teams
113+
team['owner']: team.get('members', []) for team in teams
108114
}
109115

110116

@@ -126,18 +132,16 @@ def apigee_product_developers(
126132
result[product_name] = []
127133

128134
for app in apps:
129-
developer = dev_id_to_email[app["developerId"]]
130-
131-
team = teams_map.get(developer, {})
132-
133135
entry = {
134-
"app": app["appName"],
135-
"developer": developer
136+
"app": app["appName"]
136137
}
137138

138-
if team:
139+
if app['ownerEndpoint'] == 'companies':
140+
team = teams_map.get(app.get("owner"), {})
139141
entry['developer'] = team['contact']
140142
entry['team'] = team['members']
143+
else:
144+
entry['developer'] = dev_id_to_email[app["owner"]]
141145

142146
result[product_name].append(entry)
143147

@@ -147,10 +151,6 @@ def apigee_product_developers(
147151

148152
return result
149153

150-
# return {
151-
# f"{team['id']}@devteam.apigee.io": list(mem['userId'] for mem in team.get('memberships', [])) for team in teams
152-
# }
153-
154154

155155
class FilterModule:
156156

ansible/get-developer-emails.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
- name: remove old pr portal apis
1+
- name: get developer emails
22
hosts: 127.0.0.1
33
connection: local
44
gather_facts: yes

ansible/roles/get-developer-emails/tasks/main.yml

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,28 @@
4545

4646
- name: get teams
4747
uri:
48-
url: "https://apigee.com/consumers/api/providers/{{ audience_id }}/teams"
48+
url: "{{ companies_uri }}?expand=true"
4949
headers:
5050
Authorization: "Bearer {{ APIGEE_ACCESS_TOKEN }}"
5151
return_content: yes
5252
register: get_teams
5353

54+
- name: get team members
55+
uri:
56+
url: "{{ companies_uri }}/{{ item | replace(' ', '%20') }}/developers"
57+
headers:
58+
Authorization: "Bearer {{ APIGEE_ACCESS_TOKEN }}"
59+
return_content: yes
60+
register: get_team_members
61+
loop: "{{ get_teams.json.company | map(attribute='name') }}"
62+
63+
- name: setup developer team members map
64+
set_fact:
65+
team_members_map: "{{ get_team_members | json_query('results[*].{members: json.developer, name: item}') }}"
66+
5467
- name: setup developer teams map
5568
set_fact:
56-
teams_map: "{{ get_teams.json.data | apigee_teams_map }}"
69+
teams_map: "{{ get_team_members | json_query('results[*].{members: json.developer[*].email, name: item}') | apigee_teams_map(teams=get_teams.json.company) }}"
5770

5871
- name: "get apps"
5972
uri:

ansible/roles/get-developer-emails/vars/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ org_uri: "https://api.enterprise.apigee.com/v1/organizations/{{ APIGEE_ORGANIZAT
22
products_uri: "{{ org_uri }}/apiproducts"
33
apps_uri: "{{ org_uri }}/apps"
44
developers_uri: "{{ org_uri }}/developers"
5+
companies_uri: "{{ org_uri }}/companies"
56
retain_hours: "{{ (lookup('env', 'retain_hours') or 72) }}"
67
product_filter: "{{ lookup('env', 'PRODUCT_FILTER') }}"
78
portals_base_uri: "https://apigee.com/portals/api/sites"

0 commit comments

Comments
 (0)