From 5fd97399b03921bdab2452c771e10b1acab8d1d7 Mon Sep 17 00:00:00 2001 From: "patchback[bot]" <45432694+patchback[bot]@users.noreply.github.com> Date: Sun, 3 Nov 2024 11:30:16 +0100 Subject: [PATCH] [PR #9093/8fc11fe8 backport][stable-9] keycloak_clientscope_type fix checkmode (#9095) keycloak_clientscope_type fix checkmode (#9093) * fix check_mode on set keycloak client scope type (#9092) * add changelog fragment (#9092) * update changelog fragment (#9092) * compact code: make one line conditions with list comprehension and any() Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> * fix syntax error: remove extra ')' * fix changelog fragment type Co-authored-by: Felix Fontein * add issue's link in changelog fragment Co-authored-by: Felix Fontein --------- Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> Co-authored-by: Felix Fontein (cherry picked from commit 8fc11fe88f8093d5304cb88ae80d57d930fe1527) Co-authored-by: witrdotnet --- ...keycloak-clientscope-type-fix-check-mode.yml | 2 ++ plugins/modules/keycloak_clientscope_type.py | 17 +++++++---------- 2 files changed, 9 insertions(+), 10 deletions(-) create mode 100644 changelogs/fragments/9092-keycloak-clientscope-type-fix-check-mode.yml diff --git a/changelogs/fragments/9092-keycloak-clientscope-type-fix-check-mode.yml b/changelogs/fragments/9092-keycloak-clientscope-type-fix-check-mode.yml new file mode 100644 index 0000000000..b51eb24136 --- /dev/null +++ b/changelogs/fragments/9092-keycloak-clientscope-type-fix-check-mode.yml @@ -0,0 +1,2 @@ +bugfixes: + - keycloak_clientscope_type - fix detect changes in check mode (https://github.com/ansible-collections/community.general/issues/9092, https://github.com/ansible-collections/community.general/pull/9093). diff --git a/plugins/modules/keycloak_clientscope_type.py b/plugins/modules/keycloak_clientscope_type.py index 37a5d3be94..0c919afdad 100644 --- a/plugins/modules/keycloak_clientscope_type.py +++ b/plugins/modules/keycloak_clientscope_type.py @@ -246,15 +246,19 @@ def main(): if module._diff: result['diff'] = dict(before=result['existing'], after=result['proposed']) - if module.check_mode: - module.exit_json(**result) - default_clientscopes_add = clientscopes_to_add(default_clientscopes_existing, default_clientscopes_real) optional_clientscopes_add = clientscopes_to_add(optional_clientscopes_existing, optional_clientscopes_real) default_clientscopes_delete = clientscopes_to_delete(default_clientscopes_existing, default_clientscopes_real) optional_clientscopes_delete = clientscopes_to_delete(optional_clientscopes_existing, optional_clientscopes_real) + result["changed"] = any(len(x) > 0 for x in [ + default_clientscopes_add, optional_clientscopes_add, default_clientscopes_delete, optional_clientscopes_delete + ]) + + if module.check_mode: + module.exit_json(**result) + # first delete so clientscopes can change type for clientscope in default_clientscopes_delete: kc.delete_default_clientscope(clientscope['id'], realm, client_id) @@ -266,13 +270,6 @@ def main(): for clientscope in optional_clientscopes_add: kc.add_optional_clientscope(clientscope['id'], realm, client_id) - result["changed"] = ( - len(default_clientscopes_add) > 0 - or len(optional_clientscopes_add) > 0 - or len(default_clientscopes_delete) > 0 - or len(optional_clientscopes_delete) > 0 - ) - result['end_state'].update({ 'default_clientscopes': extract_field(kc.get_default_clientscopes(realm, client_id)), 'optional_clientscopes': extract_field(kc.get_optional_clientscopes(realm, client_id))