community.general/plugins/module_utils
Mark Armstrong af0118278b
Keycloak modules retry request on authentication error, support refresh token parameter (#9494)
* feat: begin refactor to support refresh token in keycloak modules

* chore: add start of tests for shared token usage

* feat: progress towards supporting refresh token; token introspection not yet working [8857]

* chore: reset to main branch previous state; a different approach is needed [8857]

* feat: add request methods to keycloak class, which will be expanded with retry logic [8857]

* feat: all requests to keycloak use request methods instead of open_url [8857]

* fix: data argument is optional in keycloak request methods [8857]

* feat: add integration test for keycloak module authentication methods [8857]

* chore: refactor get token logic to separate logic using username/pass credentials [8857]

* chore: refactor token request logic further to isolate request logic [8857]

* chore: fix minor lint issues [8857]

* test: add (currently failing) test for request with invalid auth token, valid refresh token [8857]

* chore: allow realm to be provided to role module with refresh_token, without username/pass [8857]

* feat: add retry logic to requests in keycloak module utils [8857]

* chore: rename keycloak module fail_open_url method to fail_request [8857]

* chore: update all keycloak modules to support refresh token param [8857]

* chore: add refresh_token param to keycloak doc_fragments [8857]

* chore: restore dependency between auth_realm and auth_username,auth_password params [8857]

* chore: rearrange module param checks to reduce future pr size [8857]

* chore: remove extra comma [8857]

* chore: update version added for refresh token param [8857]

* chore: add changelog fragment [8857]

* chore: re-add fail_open_url to keycloak module utils for backward compatability [8857]

* fix: do not make a new request to keycloak without reauth when refresh token not provided (#8857)

* fix: only make final auth attempt if username/pass provided, and return exception on failure (#8857)

* fix: make re-auth and retry code more consistent, ensure final exceptions are thrown (#8857)

* test: fix arguments for invalid token, valid refresh token test (#8857)

* feat: catch invalid refresh token errors during re-auth attempt (#8857)

Add test to verify this behaviour works.

* test: improve test coverage, including some unhappy path tests for authentication failures (#8857)

* chore: store auth errors from token request in backwards compatible way (#8857)

* fix: ensure method is still specified for all requests (#8857)

* chore: simplify token request logic (#8857)

* chore: rename functions to request tokens using refresh token or username/password (#8857)

To emphasize their difference from the `get_token` function,
which either gets the token from the module params
*or* makes a request for it.

* doc: add docstrings for new or significantly modified functions (#8857)

* test: repair unit test following change to exception message upon key error during auth request (#8857)
2025-01-26 15:23:39 +01:00
..
identity/keycloak Keycloak modules retry request on authentication error, support refresh token parameter (#9494) 2025-01-26 15:23:39 +01:00
mh module helper: delegate debug() to AnsibleModule (#9577) 2025-01-20 19:38:14 +01:00
net_tools/pritunl Fix more typos (#7439) 2023-10-29 18:04:44 +01:00
oracle Use isinstance() instead of type() (#7501) 2023-11-08 13:20:19 +01:00
remote_management/lxca Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
source_control Remove deprecated features, bump version to 6.0.0 (#5326) 2022-10-25 08:07:21 +02:00
storage Fix copyright lines (make sure 'Copyright' is there). (#5083) 2022-08-05 22:12:10 +02:00
_filelock.py Docs: fix its vs. it's (#9442) 2024-12-29 13:29:58 +01:00
_mount.py Add remaining copyright statements, add licenses sanity test (#5098) 2022-08-08 23:23:08 +02:00
_stormssh.py Removes dependency on StormSSH (#6117) 2023-03-12 12:39:42 +01:00
alicloud_ecs.py multiple modules: removed unused imports (#5240) 2022-09-09 22:23:48 +02:00
android_sdkmanager.py Add android sdk module (#9236) 2024-12-20 22:55:12 +01:00
btrfs.py New modules btrfs_subvolume / btrfs_info (#5832) 2023-04-20 06:35:29 +02:00
cloud.py Fix copyright lines (make sure 'Copyright' is there). (#5083) 2022-08-05 22:12:10 +02:00
cmd_runner.py cmd_runner_fmt: refactor out to its own file (#8964) 2024-10-02 21:24:24 +03:00
cmd_runner_fmt.py cmd_runner_fmt: refactor out to its own file (#8964) 2024-10-02 21:24:24 +03:00
consul.py Consul implement agent service and check (#7989) 2024-06-16 09:32:55 +02:00
csv.py Use dict comprehension in plugins (#8814) 2024-09-01 20:22:53 +02:00
database.py Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
datetime.py Avoid deprecated utcnow() (#8222) 2024-04-20 09:26:08 +02:00
deps.py deps module utils: unit tests + minor improvement (#9179) 2024-11-24 22:09:53 +01:00
dimensiondata.py Fix more typos (#7439) 2023-10-29 18:04:44 +01:00
django.py django_command/django_check/django_createcachetable: add return value version (#9063) 2024-10-27 09:36:38 +01:00
gandi_livedns_api.py feat(gandi_livedns): support personal access tokens (#8337) 2024-05-18 15:42:11 +02:00
gconftool2.py gconftool2/gconftool2_info: add return value version (#9064) 2024-10-27 09:36:52 +01:00
gio_mime.py gio_mime: fix bug when looking for version (#9171) 2024-11-23 15:03:56 +01:00
gitlab.py feat(gitlab modules): remove basic auth (#8405) 2024-06-01 22:45:51 +02:00
heroku.py Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
homebrew.py homebrew: Add support for services functions (#8329) 2024-08-01 17:11:23 +02:00
hwc_utils.py Fix more typos (#7439) 2023-10-29 18:04:44 +01:00
ibm_sa_utils.py Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
ilo_redfish_utils.py Fix pylint and pep8 issues exposed by latest ansible-core's ansible-test sanity checks (#8720) 2024-08-07 15:18:58 +02:00
influxdb.py Remove unneccessary imports (#5940) 2023-02-12 19:48:39 +01:00
ipa.py module_utils/ipa.py: fix regex when parsing version (#8175) 2024-04-09 07:40:10 +02:00
jenkins.py jenkins_plugin: fix sanity checks (#5565) 2022-11-17 06:55:46 +01:00
known_hosts.py use open() as context manager (#9579) 2025-01-21 20:50:44 +01:00
ldap.py Simplify regex for identifying order number in DN (#7646) (#7697) 2024-01-29 19:08:34 +01:00
linode.py Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
locale_gen.py locale_gen: refactor module to use CmdRunner (#6820) 2023-07-06 21:05:34 +02:00
lxd.py plugins/inventory/lxd: add server_cert option (#7392) 2023-10-25 08:47:48 +02:00
manageiq.py manageiq_tags_info: new module (#5368) 2022-10-23 11:33:07 +02:00
memset.py Fix more typos (#7439) 2023-10-29 18:04:44 +01:00
module_helper.py MH: deprecate features (#8280) 2024-04-29 17:27:06 +02:00
ocapi_utils.py use dict comprehension in plugins, part 3 (#8833) 2024-09-08 14:22:37 +02:00
oneandone.py Fix more copyright lines, add more default copyright lines (#5095) 2022-08-08 14:24:58 +02:00
onepassword.py Fix more copyright lines, add more default copyright lines (#5095) 2022-08-08 14:24:58 +02:00
oneview.py Remove unneccessary imports (#5940) 2023-02-12 19:48:39 +01:00
online.py Fix more copyright lines, add more default copyright lines (#5095) 2022-08-08 14:24:58 +02:00
opennebula.py one_image/one_image_info: refactor (#8889) 2024-10-05 15:02:01 +02:00
pipx.py pipx/pipx_info: add return value version (#9180) 2024-11-24 22:10:19 +01:00
proxmox.py proxmox_template: Add optional checksum validation (#9601) 2025-01-25 10:21:20 +01:00
puppet.py 8281: puppet waitforlock (#8282) 2024-05-04 15:26:56 +02:00
pure.py Remove unneccessary imports (#5940) 2023-02-12 19:48:39 +01:00
python_runner.py python_runner/django_command: bugfixes (#8944) 2024-09-30 09:45:32 +03:00
redfish_utils.py Redfish: implement obtaining AccountService config (#9403) 2025-01-02 16:26:31 +01:00
redis.py Add TLS certs params to redis (#8654) 2024-07-23 18:01:37 +02:00
rundeck.py Added parameter to select Content-Type when accessing the Rundeck API (#7684) 2024-05-12 09:21:39 +02:00
saslprep.py Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
scaleway.py use dict comprehension in plugins, part 3 (#8833) 2024-09-08 14:22:37 +02:00
snap.py snap: add RV version (#9598) 2025-01-22 20:04:38 +01:00
ssh.py ssh_config: fixed sanity (#5720) 2022-12-22 21:34:21 +01:00
univention_umc.py Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
utm_utils.py Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
vardict.py Use dict comprehension in plugins (#8814) 2024-09-01 20:22:53 +02:00
version.py Drop support for ansible-core 2.11 and 2.12 (#7269) 2023-10-11 16:13:14 +02:00
vexata.py Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
wdc_redfish_utils.py Fix to handle Redfish Gen2 Firmware upgrade (#8444) 2024-07-08 09:45:09 +02:00
xenserver.py Move licenses to LICENSES/, run add-license.py, add LICENSES/MIT.txt (#5065) 2022-08-05 12:28:29 +02:00
xfconf.py xfconf/xfconf_info: add return value version (#9226) 2024-12-24 12:00:24 +01:00