Skip to content

Commit 9e1b277

Browse files
author
Lee Richardson
committed
Use companies for teams in get-developer-emails.yml
1 parent 334a6a6 commit 9e1b277

4 files changed

Lines changed: 37 additions & 21 deletions

File tree

ansible/filter_plugins/apigee_helpers.py

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import collections
12
import re
23
from typing import List
34

@@ -29,7 +30,8 @@ def apigee_apps_to_product_map(apps_list: List[dict], product_filter: str = None
2930
dict(
3031
appId=app["appId"],
3132
appName=app["name"],
32-
developerId=app["developerId"],
33+
developerId=app.get("developerId"),
34+
companyName=app.get("companyName"),
3335
consumerKey=cred["consumerKey"],
3436
apiproduct=api_product
3537
)
@@ -73,28 +75,33 @@ def apigee_remove_proxy_from_product(product: dict, proxy_to_remove):
7375
return product
7476

7577

76-
def apigee_teams_map(teams: List[dict]):
78+
def apigee_teams_map(teamMembers: List[dict], teams: List[dict]):
79+
joined = collections.defaultdict(dict)
80+
for item in teamMembers + teams:
81+
joined[item['name']].update(item)
82+
full_teams = list(joined.values())
7783

7884
return {
79-
f"{team['id']}@devteam.apigee.io": {
80-
"contact": team['pointOfContact'],
81-
"members": list(mem['userId'] for mem in team.get('memberships', []))
85+
team['name']: {
86+
"contact": next((attr.get('value') for attr in team['attributes'] if attr['name'] == 'ADMIN_EMAIL'), {}),
87+
"members": team['members']
8288
}
83-
for team in teams
89+
for team in full_teams
8490
}
8591

8692

8793
def apigee_teams_to_point_of_contact(teams: List[dict]):
8894

8995
return {
90-
f"{team['id']}@devteam.apigee.io": team['pointOfContact'] for team in teams
96+
next((attr.get('value') for attr in team['attributes'] if attr['name'] == 'ADMIN_EMAIL'), {})
97+
for team in teams
9198
}
9299

93100

94101
def apigee_teams_to_members(teams: List[dict]):
95102

96103
return {
97-
f"{team['id']}@devteam.apigee.io": list(mem['userId'] for mem in team.get('memberships', [])) for team in teams
104+
team.get('members', []) for team in teams
98105
}
99106

100107

@@ -116,18 +123,17 @@ def apigee_product_developers(
116123
result[product_name] = []
117124

118125
for app in apps:
119-
developer = dev_id_to_email[app["developerId"]]
120-
121-
team = teams_map.get(developer, {})
122-
123126
entry = {
124-
"app": app["appName"],
125-
"developer": developer
127+
"app": app["appName"]
126128
}
127129

130+
team = teams_map.get(app.get("companyName"), {})
131+
128132
if team:
129133
entry['developer'] = team['contact']
130134
entry['team'] = team['members']
135+
else:
136+
entry['developer'] = dev_id_to_email[app["developerId"]]
131137

132138
result[product_name].append(entry)
133139

@@ -137,10 +143,6 @@ def apigee_product_developers(
137143

138144
return result
139145

140-
# return {
141-
# f"{team['id']}@devteam.apigee.io": list(mem['userId'] for mem in team.get('memberships', [])) for team in teams
142-
# }
143-
144146

145147
class FilterModule:
146148

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)