diff --git a/lib/smart_proxy_ansible/runner/ansible_runner.rb b/lib/smart_proxy_ansible/runner/ansible_runner.rb index 943c48a..f0a3af0 100644 --- a/lib/smart_proxy_ansible/runner/ansible_runner.rb +++ b/lib/smart_proxy_ansible/runner/ansible_runner.rb @@ -68,7 +68,7 @@ def close def publish_exit_status(status) process_artifacts super - @targets.each_key { |host| publish_exit_status_for(host, status) } if status != 0 + @targets.each_key { |host| publish_exit_status_for(host, @exit_statuses[host]) } if status != 0 end def initialize_command(*command) @@ -156,6 +156,13 @@ def handle_broadcast_data(event) else broadcast_data(event['stdout'] + "\n", 'stdout') end + + # If the run ends early due to an error - fail all other tasks + if event['event'] == 'error' + @outputs.keys.select { |key| key.is_a? String }.each do |host| + @exit_statuses[host] = 4 if @exit_statuses[host].to_i == 0 + end + end end def write_inventory