Better error handling in supervisorctl module.

If execution of supervisorctl was not successful (exit code > 0),
module silently supress this error and returns changed = false,
which turns to OK task state.
This is very confusing, when supervisorctl needs authentication,
and credentials are not specified in module or are incorrect,
services are not restarted/started/stopped without raising an error.
pull/18777/head
Kamil Madac 10 years ago committed by Matt Clay
parent 574bcac277
commit 1ae799f361

@ -183,14 +183,14 @@ def main():
if module.check_mode: if module.check_mode:
module.exit_json(changed=True) module.exit_json(changed=True)
for process_name in to_take_action_on: for process_name in to_take_action_on:
rc, out, err = run_supervisorctl(action, process_name) rc, out, err = run_supervisorctl(action, process_name, check_rc=True)
if '%s: %s' % (process_name, expected_result) not in out: if '%s: %s' % (process_name, expected_result) not in out:
module.fail_json(msg=out) module.fail_json(msg=out)
module.exit_json(changed=True, name=name, state=state, affected=to_take_action_on) module.exit_json(changed=True, name=name, state=state, affected=to_take_action_on)
if state == 'restarted': if state == 'restarted':
rc, out, err = run_supervisorctl('update') rc, out, err = run_supervisorctl('update', check_rc=True)
processes = get_matched_processes() processes = get_matched_processes()
take_action_on_processes(processes, lambda s: True, 'restart', 'started') take_action_on_processes(processes, lambda s: True, 'restart', 'started')

Loading…
Cancel
Save