class Proxy::Dynflow::Action::Runner
Public Instance Methods
failed_run?()
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 84 def failed_run? output[:exit_status] != 0 end
finalize()
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 32 def finalize # To mark the task as a whole as failed error! 'Script execution failed' if on_proxy? && failed_run? end
finish_run(update)
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 60 def finish_run(update) output[:exit_status] = update.exit_status output[:result] = output_result drop_output_chunks! end
init_run()
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 45 def init_run output[:result] = [] output[:runner_id] = runner_dispatcher.start(suspended_action, initiate_runner) suspend end
initiate_runner()
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 41 def initiate_runner raise NotImplementedError end
kill_run()
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 55 def kill_run runner_dispatcher.kill(output[:runner_id]) suspend end
output_result()
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 88 def output_result (stored_output_chunks + (@pending_output_chunks || [])).map { |c| c[:chunk] }.reduce([], &:concat) end
poll()
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 80 def poll runner_dispatcher.refresh_output(output[:runner_id]) end
process_external_event(event)
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 66 def process_external_event(event) runner_dispatcher.external_event(output[:runner_id], event) suspend end
process_update(update)
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 71 def process_update(update) output_chunk(update.continuous_output.raw_outputs) unless update.continuous_output.raw_outputs.empty? if update.exit_status finish_run(update) else suspend end end
rescue_strategy_for_self()
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 37 def rescue_strategy_for_self ::Dynflow::Action::Rescue::Fail end
run(event = nil)
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 11 def run(event = nil) case event when nil init_run when Proxy::Dynflow::Runner::Update process_update(event) when Proxy::Dynflow::Runner::ExternalEvent process_external_event(event) when ::Dynflow::Action::Cancellable::Cancel kill_run when ::Proxy::Dynflow::Action::WithExternalPolling::Poll poll suspend else raise "Unexpected event #{event.inspect}" end rescue => e action_logger.error(e) process_update(Proxy::Dynflow::Runner::Update.encode_exception('Proxy error', e)) end
runner_dispatcher()
click to toggle source
# File lib/smart_proxy_dynflow/action/runner.rb, line 51 def runner_dispatcher Proxy::Dynflow::Runner::Dispatcher.instance end