1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

keycloak_realm: add normalizations for enabledEventTypes, and supportedLocales (#8224)

keycloak_realm: add nomalizations for enabledEventTypes, and supportedLocales

Signed-off-by: Eike Waldt <waldt@b1-systems.de>
This commit is contained in:
Eike Waldt 2024-04-21 00:25:57 +02:00 committed by GitHub
parent f55342d8af
commit 9d66a1dc1e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 28 additions and 3 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- keycloak_realm - add normalizations for ``enabledEventTypes`` and ``supportedLocales`` (https://github.com/ansible-collections/community.general/pull/8224).

View file

@ -582,6 +582,27 @@ from ansible_collections.community.general.plugins.module_utils.identity.keycloa
from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import AnsibleModule
def normalise_cr(realmrep):
""" Re-sorts any properties where the order is important so that diff's is minimised and the change detection is more effective.
:param realmrep: the realmrep dict to be sanitized
:return: normalised realmrep dict
"""
# Avoid the dict passed in to be modified
realmrep = realmrep.copy()
if 'enabledEventTypes' in realmrep:
realmrep['enabledEventTypes'] = list(sorted(realmrep['enabledEventTypes']))
if 'otpSupportedApplications' in realmrep:
realmrep['otpSupportedApplications'] = list(sorted(realmrep['otpSupportedApplications']))
if 'supportedLocales' in realmrep:
realmrep['supportedLocales'] = list(sorted(realmrep['supportedLocales']))
return realmrep
def sanitize_cr(realmrep): def sanitize_cr(realmrep):
""" Removes probably sensitive details from a realm representation. """ Removes probably sensitive details from a realm representation.
@ -595,7 +616,7 @@ def sanitize_cr(realmrep):
if 'saml.signing.private.key' in result['attributes']: if 'saml.signing.private.key' in result['attributes']:
result['attributes'] = result['attributes'].copy() result['attributes'] = result['attributes'].copy()
result['attributes']['saml.signing.private.key'] = '********' result['attributes']['saml.signing.private.key'] = '********'
return result return normalise_cr(result)
def main(): def main():
@ -777,9 +798,11 @@ def main():
result['changed'] = True result['changed'] = True
if module.check_mode: if module.check_mode:
# We can only compare the current realm with the proposed updates we have # We can only compare the current realm with the proposed updates we have
before_norm = normalise_cr(before_realm)
desired_norm = normalise_cr(desired_realm)
if module._diff: if module._diff:
result['diff'] = dict(before=before_realm_sanitized, result['diff'] = dict(before=sanitize_cr(before_norm),
after=sanitize_cr(desired_realm)) after=sanitize_cr(desired_norm))
result['changed'] = (before_realm != desired_realm) result['changed'] = (before_realm != desired_realm)
module.exit_json(**result) module.exit_json(**result)