diff options
-rwxr-xr-x | cloud.rb | 20 |
1 files changed, 15 insertions, 5 deletions
@@ -8,6 +8,10 @@ require 'fileutils' require 'parseconfig' require 'open3' +# Don't buffer output to the client +STDOUT.sync = true +STDERR.sync = true + SCRIPT_DIR = File.expand_path(File.dirname(__FILE__)) module OpenShift @@ -102,6 +106,10 @@ module OpenShift @pipelining = true end + def all_eof(files) + files.find { |f| !f.eof }.nil? + end + def run_playbook(playbook) @inventory = 'inventory/hosts' if @inventory.nil? @@ -123,13 +131,15 @@ module OpenShift cmd = cmds.join(' ; ') - stdout, stderr, status = Open3.capture3(cmd) - if 0 != status.exitstatus - raise %Q[Following command failed with exit code: #{status.exitstatus} + pid = spawn(cmd, :out => $stdout, :err => $stderr, :close_others => true) + _, state = Process.wait2(pid) + + if 0 != state.exitstatus + raise %Q[Warning failed with exit code: #{state.exitstatus} + #{cmd} + extra_vars: #{@extra_vars.to_json} -stdout: #{stdout} -stderr: #{stderr} ] end ensure |