From f4a8cf4ec7cc6782e8d5e3729941aef3229d4550 Mon Sep 17 00:00:00 2001 From: Rafael Guterres Jeffman <rjeffman@redhat.com> Date: Tue, 13 Apr 2021 19:16:39 -0300 Subject: [PATCH] Fix creation of privilege with permissions. Module was raising exceptions when trying to create a new privilege with permissions. This change fixes the behavior and ensuure idempotence with trying to create a privilege with the same values. Tests for this behavior have been appended to: tests/privilege/test_privilege.yml --- plugins/modules/ipaprivilege.py | 12 ++++++++++-- tests/privilege/test_privilege.yml | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/plugins/modules/ipaprivilege.py b/plugins/modules/ipaprivilege.py index 18074f58..66af01e5 100644 --- a/plugins/modules/ipaprivilege.py +++ b/plugins/modules/ipaprivilege.py @@ -234,14 +234,22 @@ def main(): if action == "privilege": # Found the privilege if res_find is not None: + res_cmp = { + k: v for k, v in res_find.items() + if k not in [ + "objectclass", "cn", "dn", + "memberof_permisssion" + ] + } # For all settings is args, check if there are # different settings in the find result. # If yes: modify - if not compare_args_ipa(ansible_module, args, - res_find): + if args and not compare_args_ipa(ansible_module, args, + res_cmp): commands.append([name, "privilege_mod", args]) else: commands.append([name, "privilege_add", args]) + res_find = {} member_args = {} if permission: diff --git a/tests/privilege/test_privilege.yml b/tests/privilege/test_privilege.yml index 2a13187d..0f6a29d7 100644 --- a/tests/privilege/test_privilege.yml +++ b/tests/privilege/test_privilege.yml @@ -140,6 +140,30 @@ register: result failed_when: result.changed or result.failed + - name: Ensure "Broad Privilege" is absent. + ipaprivilege: + ipaadmin_password: SomeADMINpassword + name: Broad Privilege + state: absent + + - name: Ensure privilege Broad Privilege is created with permission. (issue 529) + ipaprivilege: + ipaadmin_password: SomeADMINpassword + name: Broad Privilege + permission: + - "Write IPA Configuration" + register: result + failed_when: not result.changed or result.failed + + - name: Ensure privilege Broad Privilege is created with permission, again. (issue 529) + ipaprivilege: + ipaadmin_password: SomeADMINpassword + name: Broad Privilege + permission: + - "Write IPA Configuration" + register: result + failed_when: result.changed or result.failed + # CLEANUP TEST ITEMS - name: Ensure privilege testing privileges are absent -- GitLab