sudocmdgroup: Reduce addition and deletion of members to changed only

Use gen_add_list and gen_intersection_list for sudocmd member handling,
to reduce the add lists to only the new and del lists only to existing
entries.

This enables to remove the ignores for "already a member" and
"not a member" errors.
This commit is contained in:
Rafael Guterres Jeffman
2021-09-14 10:39:47 -03:00
parent ae2f452c60
commit 8723aafd4f

View File

@@ -100,7 +100,8 @@ RETURN = """
""" """
from ansible.module_utils.ansible_freeipa_module import \ from ansible.module_utils.ansible_freeipa_module import \
IPAAnsibleModule, compare_args_ipa, gen_add_del_lists, ipalib_errors IPAAnsibleModule, compare_args_ipa, gen_add_del_lists, \
gen_add_list, gen_intersection_list, ipalib_errors
def find_sudocmdgroup(module, name): def find_sudocmdgroup(module, name):
@@ -255,7 +256,9 @@ def main():
ansible_module.fail_json( ansible_module.fail_json(
msg="No sudocmdgroup '%s'" % name) msg="No sudocmdgroup '%s'" % name)
# Ensure members are present sudocmd = gen_add_list(
sudocmd, res_find.get("member_sudocmd") or [])
if sudocmd:
commands.append([name, "sudocmdgroup_add_member", commands.append([name, "sudocmdgroup_add_member",
{"sudocmd": sudocmd} {"sudocmd": sudocmd}
]) ])
@@ -270,6 +273,9 @@ def main():
msg="No sudocmdgroup '%s'" % name) msg="No sudocmdgroup '%s'" % name)
# Ensure members are absent # Ensure members are absent
sudocmd = gen_intersection_list(
sudocmd, res_find.get("member_sudocmd") or [])
if sudocmd:
commands.append([name, "sudocmdgroup_remove_member", commands.append([name, "sudocmdgroup_remove_member",
{"sudocmd": sudocmd} {"sudocmd": sudocmd}
]) ])
@@ -303,8 +309,6 @@ def main():
failed = result["failed"]["member"] failed = result["failed"]["member"]
for member_type in failed: for member_type in failed:
for member, failure in failed[member_type]: for member, failure in failed[member_type]:
if "already a member" not in failure \
and "not a member" not in failure:
errors.append("%s: %s %s: %s" % ( errors.append("%s: %s %s: %s" % (
command, member_type, member, failure)) command, member_type, member, failure))
if len(errors) > 0: if len(errors) > 0: