Skip to content
Snippets Groups Projects
Commit dc1027c3 authored by Thomas Woerner's avatar Thomas Woerner
Browse files

service: 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 06e53823
No related branches found
No related tags found
No related merge requests found
...@@ -409,6 +409,23 @@ def init_ansible_module(): ...@@ -409,6 +409,23 @@ def init_ansible_module():
return ansible_module return ansible_module
# pylint: disable=unused-argument
def result_handler(module, result, command, name, args, errors):
# Get all errors
# All "already a member" and "not a member" failures in the
# result are ignored. All others are reported.
if "failed" in result and len(result["failed"]) > 0:
for item in result["failed"]:
failed_item = result["failed"][item]
for member_type in failed_item:
for member, failure in failed_item[member_type]:
if "already a member" in failure \
or "not a member" in failure:
continue
errors.append("%s: %s %s: %s" % (
command, member_type, member, failure))
def main(): def main():
ansible_module = init_ansible_module() ansible_module = init_ansible_module()
...@@ -831,34 +848,8 @@ def main(): ...@@ -831,34 +848,8 @@ def main():
ansible_module.exit_json(changed=len(commands) > 0, **exit_args) ansible_module.exit_json(changed=len(commands) > 0, **exit_args)
# Execute commands # Execute commands
errors = []
for name, command, args in commands:
try:
result = ansible_module.ipa_command(command, name, args)
if "completed" in result: changed = ansible_module.execute_ipa_commands(commands, result_handler)
if result["completed"] > 0:
changed = True
else:
changed = True
except Exception as ex:
ansible_module.fail_json(msg="%s: %s: %s" % (command, name,
str(ex)))
# Get all errors
# All "already a member" and "not a member" failures in the
# result are ignored. All others are reported.
if "failed" in result and len(result["failed"]) > 0:
for item in result["failed"]:
failed_item = result["failed"][item]
for member_type in failed_item:
for member, failure in failed_item[member_type]:
if "already a member" in failure \
or "not a member" in failure:
continue
errors.append("%s: %s %s: %s" % (
command, member_type, member, failure))
if len(errors) > 0:
ansible_module.fail_json(msg=", ".join(errors))
# Done # Done
ansible_module.exit_json(changed=changed, **exit_args) ansible_module.exit_json(changed=changed, **exit_args)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment