Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
3ff557b
Revert "APM-4363 changes to support ALB sharding"
harryhmc Jul 25, 2023
3ea647e
CCM-1179
Jul 21, 2023
6c8bbb8
Merge pull request #445 from NHSDigital/CCM-1179-release-process
almas-liaqat Jul 26, 2023
e6bed53
Merge branch 'master' into revert-442-APM-4363-implement-ALB-sharding
harryhmc Aug 11, 2023
334a6a6
Merge pull request #448 from NHSDigital/revert-442-APM-4363-implement…
harryhmc Aug 11, 2023
51238e7
ADZ-3279 handle company apps for add jwks plugin
sophieclayton12-nhs Sep 13, 2023
8d2856d
ADZ-3279 cleanup
sophieclayton12-nhs Sep 13, 2023
9e1b277
Use companies for teams in `get-developer-emails.yml`
Sep 14, 2023
8cfd805
CCM-981
Aug 14, 2023
461503d
ADZ-3280 handle company apps for product clean up
sophieclayton12-nhs Sep 14, 2023
acba799
ADZ-3280 bug fix
sophieclayton12-nhs Sep 14, 2023
447003c
Merge branch 'ADZ-3280_product_cleanup' into ADZ-3283_handle_company_…
sophieclayton12-nhs Sep 15, 2023
e2cd7be
Clean up
Sep 15, 2023
5fd95a4
Merge branch 'ADZ-3281-get-developer-emails' into ADZ-3283_handle_com…
Sep 15, 2023
e347a52
Merge fix
Sep 15, 2023
e173704
Merge pull request #457 from NHSDigital/CCM-981-proxy-deployment-retries
acarriedev Sep 18, 2023
9779418
Merge branch 'master' into ADZ-3283_handle_company_apps
lee-richardson-nhs Sep 21, 2023
fe733d4
Upgrade pyyaml to ^5.4.1
Sep 28, 2023
718dbcf
Update recorded schema version
Sep 28, 2023
d078307
Merge pull request #464 from NHSDigital/APM-4729_upgrade_pyyaml
lee-richardson-nhs Sep 29, 2023
57a1edf
Merge branch 'master' into ADZ-3283_handle_company_apps
acarriedev Oct 31, 2023
0150551
Merge pull request #460 from NHSDigital/ADZ-3283_handle_company_apps
acarriedev Oct 31, 2023
28e4ebd
Attempts to fix API deployments
Nov 13, 2023
54232c0
Don't create API Catalogue entries in NHSD-NONPROD Org
alexhawdon Nov 14, 2023
e09bfd5
Merge pull request #465 from NHSDigital/get-api-pagination
alexhawdon Nov 14, 2023
8b69562
APM-4807: Remove anything to do with the API Catalogue
alexhawdon Nov 15, 2023
002d158
fix version parsing's reliance on a loose glob
harryhmc Feb 16, 2024
3f5edc1
Merge branch 'master' into APM-000-fix-version-parsing
harryhmc Feb 16, 2024
4ebe754
Merge pull request #469 from NHSDigital/APM-000-fix-version-parsing
alexhawdon Feb 16, 2024
4f7ee0c
Merge branch 'master' of https://github.com/NHSDigital/api-management…
harryhmc Feb 16, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import requests
import json
import bisect
import copy

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

ATTRIBUTE_NAME = "jwks-resource-url"
DEVELOPER_DETAILS = "APIGEE_DEVELOPER_DETAILS"


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

developer_details = task_vars.get(DEVELOPER_DETAILS)
if not developer_details:
developer_details = []
params = {"expand": True}
url = (
constants.APIGEE_BASE_URL
+ f"organizations/{args.organization}/developers"
)
while True:
resp = utils.get(url, args.access_token, params=params)
if resp.get("failed"):
return resp
devs = resp["response"]["body"]["developer"]
developer_details.extend(devs)
if len(devs) == 1000:
# last developer's ID as startKey will be included
# in next request, so pop now to de-dupe.
last_dev = developer_details.pop()
params["startKey"] = last_dev["developerId"]
else:
break

try:
developer_id = args._app_data["developerId"]
developer_ids = [d["developerId"] for d in developer_details]
i = bisect.bisect_left(developer_ids, developer_id)
if i == len(developer_details):
raise RuntimeError(f"Unable to find developer with id {developer_id}")
except RuntimeError as e:
return {"failed": True, "error": str(e)}

developer = developer_details[i]

delta = utils.delta(before, after)
result = {
"changed": bool(delta),
"app": after,
"developer": developer,
"ansible_facts": {DEVELOPER_DETAILS: developer_details},
"app": after
}

company_exists = "companyName" in args._app_data.keys()
developer_exists = "developerId" in args._app_data.keys()
if developer_exists and not company_exists:
owner = args._app_data["developerId"]
elif company_exists and not developer_exists:
owner = args._app_data["companyName"]
else:
return {"failed": True, "error": f"Invalid owner for app {args._app_data['appId']}"}

owner_endpoint = "companies" if company_exists else "developers"
app_name = args._app_data["name"]
app_path = f"organizations/{args.organization}/developers/{developer['email']}/apps/{app_name}/attributes"
app_path = f"organizations/{args.organization}/{owner_endpoint}/{owner}/apps/{app_name}/attributes"

if diff_mode:
result["diff"] = [
Expand Down
Loading