Skip to content

Commit 4f7ee0c

Browse files
committed
Merge branch 'master' of https://github.com/NHSDigital/api-management-utils into edge
2 parents abc6f55 + 4ebe754 commit 4f7ee0c

17 files changed

Lines changed: 1513 additions & 1007 deletions

File tree

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

Lines changed: 12 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import requests
2-
import json
3-
import bisect
41
import copy
52

63
from ansible_collections.nhsd.apigee.plugins.module_utils.models.ansible.add_jwks_resource_url import (
@@ -13,7 +10,6 @@
1310
from ansible_collections.nhsd.apigee.plugins.module_utils import constants
1411

1512
ATTRIBUTE_NAME = "jwks-resource-url"
16-
DEVELOPER_DETAILS = "APIGEE_DEVELOPER_DETAILS"
1713

1814

1915
class ActionModule(ApigeeAction):
@@ -39,49 +35,24 @@ def run(self, tmp=None, task_vars=None):
3935
after["attributes"].append(jwks_attribute)
4036
after["attributes"] = sorted(after["attributes"], key=lambda attr: attr["name"])
4137

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-
7538
delta = utils.delta(before, after)
7639
result = {
7740
"changed": bool(delta),
78-
"app": after,
79-
"developer": developer,
80-
"ansible_facts": {DEVELOPER_DETAILS: developer_details},
41+
"app": after
8142
}
8243

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

8657
if diff_mode:
8758
result["diff"] = [

0 commit comments

Comments
 (0)