Skip to content
Snippets Groups Projects
Commit 1615f59f authored by Rafael Guterres Jeffman's avatar Rafael Guterres Jeffman
Browse files

sudocmdgroup: Use execute_ipa_commands

execute_ipa_commands replces the check mode exit, the loop over the
generated commands and also in the member failure handling for modules
with member support.
parent 8723aafd
No related branches found
No related tags found
No related merge requests found
...@@ -256,6 +256,7 @@ def main(): ...@@ -256,6 +256,7 @@ 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 = gen_add_list(
sudocmd, res_find.get("member_sudocmd") or []) sudocmd, res_find.get("member_sudocmd") or [])
if sudocmd: if sudocmd:
...@@ -272,7 +273,6 @@ def main(): ...@@ -272,7 +273,6 @@ def main():
ansible_module.fail_json( ansible_module.fail_json(
msg="No sudocmdgroup '%s'" % name) msg="No sudocmdgroup '%s'" % name)
# Ensure members are absent
sudocmd = gen_intersection_list( sudocmd = gen_intersection_list(
sudocmd, res_find.get("member_sudocmd") or []) sudocmd, res_find.get("member_sudocmd") or [])
if sudocmd: if sudocmd:
...@@ -282,37 +282,8 @@ def main(): ...@@ -282,37 +282,8 @@ def main():
else: else:
ansible_module.fail_json(msg="Unkown state '%s'" % state) ansible_module.fail_json(msg="Unkown state '%s'" % state)
# Check mode exit changed = ansible_module.execute_ipa_commands(
if ansible_module.check_mode: commands, fail_on_member_errors=True)
ansible_module.exit_json(changed=len(commands) > 0, **exit_args)
# Execute commands
for name, command, args in commands:
try:
result = ansible_module.ipa_command(command, name, args)
if action == "member":
if "completed" in result and result["completed"] > 0:
changed = True
else:
if command == "sudocmdgroup_del":
changed |= "Deleted" in result['summary']
elif command == "sudocmdgroup_add":
changed |= "Added" in result['summary']
except Exception as e:
ansible_module.fail_json(msg="%s: %s: %s" % (command, name,
str(e)))
# Get all errors
# All "already a member" and "not a member" failures in the
# result are ignored. All others are reported.
errors = []
if "failed" in result and "member" in result["failed"]:
failed = result["failed"]["member"]
for member_type in failed:
for member, failure in failed[member_type]:
errors.append("%s: %s %s: %s" % (
command, member_type, member, failure))
if len(errors) > 0:
ansible_module.fail_json(msg=", ".join(errors))
# Done # Done
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment