Skip to content

Commit 51238e7

Browse files
ADZ-3279 handle company apps for add jwks plugin
1 parent 334a6a6 commit 51238e7

1 file changed

Lines changed: 12 additions & 37 deletions

File tree

ansible/collections/ansible_collections/nhsd/apigee/plugins/action/add_jwks_resource_url_to_app.py

Lines changed: 12 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -39,49 +39,24 @@ def run(self, tmp=None, task_vars=None):
3939
after["attributes"].append(jwks_attribute)
4040
after["attributes"] = sorted(after["attributes"], key=lambda attr: attr["name"])
4141

42-
developer_details = task_vars.get(DEVELOPER_DETAILS)
43-
if not developer_details:
44-
developer_details = []
45-
params = {"expand": True}
46-
url = (
47-
constants.APIGEE_BASE_URL
48-
+ f"organizations/{args.organization}/developers"
49-
)
50-
while True:
51-
resp = utils.get(url, args.access_token, params=params)
52-
if resp.get("failed"):
53-
return resp
54-
devs = resp["response"]["body"]["developer"]
55-
developer_details.extend(devs)
56-
if len(devs) == 1000:
57-
# last developer's ID as startKey will be included
58-
# in next request, so pop now to de-dupe.
59-
last_dev = developer_details.pop()
60-
params["startKey"] = last_dev["developerId"]
61-
else:
62-
break
63-
64-
try:
65-
developer_id = args._app_data["developerId"]
66-
developer_ids = [d["developerId"] for d in developer_details]
67-
i = bisect.bisect_left(developer_ids, developer_id)
68-
if i == len(developer_details):
69-
raise RuntimeError(f"Unable to find developer with id {developer_id}")
70-
except RuntimeError as e:
71-
return {"failed": True, "error": str(e)}
72-
73-
developer = developer_details[i]
74-
7542
delta = utils.delta(before, after)
7643
result = {
7744
"changed": bool(delta),
78-
"app": after,
79-
"developer": developer,
80-
"ansible_facts": {DEVELOPER_DETAILS: developer_details},
45+
"app": after
8146
}
8247

48+
company_exists = "companyName" in args._app_data.keys()
49+
developer_exists = "developerId" in args._app_data.keys()
50+
if developer_exists and not company_exists:
51+
owner = args._app_data["developerId"]
52+
elif company_exists and not developer_exists:
53+
owner = args._app_data["companyName"]
54+
else:
55+
return {"failed": True, "error": f"Invalid owner for app {args._app_data['appId']}"}
56+
57+
owner_endpoint = "companies" if company_exists else "developers"
8358
app_name = args._app_data["name"]
84-
app_path = f"organizations/{args.organization}/developers/{developer['email']}/apps/{app_name}/attributes"
59+
app_path = f"organizations/{args.organization}/{owner_endpoint}/{owner}/apps/{app_name}/attributes"
8560

8661
if diff_mode:
8762
result["diff"] = [

0 commit comments

Comments
 (0)