From fef16a66212a28b16aa4544122b184e24531538e Mon Sep 17 00:00:00 2001 From: Sergey Bahchissaraitsev Date: Wed, 2 Sep 2015 14:21:25 +0300 Subject: [PATCH] success code - allows to add acceptable exit codes to script commands --- lib/orchestrator/task.rb | 14 +++++++++++--- lib/orchestrator/version.rb | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/orchestrator/task.rb b/lib/orchestrator/task.rb index c47823a..606bd37 100644 --- a/lib/orchestrator/task.rb +++ b/lib/orchestrator/task.rb @@ -315,7 +315,7 @@ def notify ) if @options.sms and @options.sms_on_success end - def run_command(command,timeout) + def run_command(command,timeout,success_codes = [0]) result = "" error = "" @@ -331,7 +331,8 @@ def run_command(command,timeout) result = stdout.read.strip error = stderr.read.strip end - status = (status.nil? or status.exitstatus != 0) ? 'FAILED' : 'OK' + status = (status.nil? or !success_codes.include?(status.exitstatus)) ? 'FAILED' : 'OK' + puts command + " - STATUS: " + status if @verbose end rescue Timeout::Error status = 'TIMEOUT' @@ -383,10 +384,17 @@ def run_post_script_handlers(script,status) def run_script(script) timeout = script.has_key?('timeout') ? script['timeout'].to_i : @timeout + if script.has_key?('success_codes') + success_codes = (script['success_codes'].kind_of?(String) || script['success_codes'].kind_of?(Integer)) ? [script['success_codes'].to_i] : nil + success_codes ||= (script['success_codes'].kind_of?(Array) && script['success_codes'].all? {|i| i.kind_of?(Integer) }) ? script['success_codes'] : nil + bail("Bad success_codes. Expected String, Integer or Array of Integers for command:\n" + script['command']) unless success_codes + else + success_codes = [0] + end script['status'] = 'STARTED' save_state - script['status'] = run_command(script['command'],timeout) + script['status'] = run_command(script['command'], timeout, success_codes) save_state return script['status'] == 'OK' diff --git a/lib/orchestrator/version.rb b/lib/orchestrator/version.rb index 5bf9183..dfbf9fd 100644 --- a/lib/orchestrator/version.rb +++ b/lib/orchestrator/version.rb @@ -1,3 +1,3 @@ module Orchestrator - VERSION ||= '0.0.30' + VERSION ||= '0.0.31' end