Skip to content

Commit

Permalink
keycloak_realm: add normalizations for enabledEventTypes, and support…
Browse files Browse the repository at this point in the history
…edLocales (#8224)

keycloak_realm: add nomalizations for enabledEventTypes, and supportedLocales

Signed-off-by: Eike Waldt <[email protected]>
  • Loading branch information
yeoldegrove authored Apr 20, 2024
1 parent f55342d commit 9d66a1d
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bugfixes:
- keycloak_realm - add normalizations for ``enabledEventTypes`` and ``supportedLocales`` (https://github.com/ansible-collections/community.general/pull/8224).
29 changes: 26 additions & 3 deletions plugins/modules/keycloak_realm.py
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,27 @@
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):
""" Removes probably sensitive details from a realm representation.
Expand All @@ -595,7 +616,7 @@ def sanitize_cr(realmrep):
if 'saml.signing.private.key' in result['attributes']:
result['attributes'] = result['attributes'].copy()
result['attributes']['saml.signing.private.key'] = '********'
return result
return normalise_cr(result)


def main():
Expand Down Expand Up @@ -777,9 +798,11 @@ def main():
result['changed'] = True
if module.check_mode:
# 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:
result['diff'] = dict(before=before_realm_sanitized,
after=sanitize_cr(desired_realm))
result['diff'] = dict(before=sanitize_cr(before_norm),
after=sanitize_cr(desired_norm))
result['changed'] = (before_realm != desired_realm)

module.exit_json(**result)
Expand Down

0 comments on commit 9d66a1d

Please sign in to comment.