class ForemanTasksCore::Runner::Dispatcher::RunnerActor
Public Class Methods
new(dispatcher, suspended_action, runner, clock, logger, options = {})
click to toggle source
# File lib/foreman_tasks_core/runner/dispatcher.rb, line 11 def initialize(dispatcher, suspended_action, runner, clock, logger, options = {}) @dispatcher = dispatcher @clock = clock @logger = logger @suspended_action = suspended_action @runner = runner @finishing = false @refresh_interval = options[:refresh_interval] || 1 end
Public Instance Methods
finish()
click to toggle source
# File lib/foreman_tasks_core/runner/dispatcher.rb, line 53 def finish @logger.debug("finish runner #{@runner.id}") @finishing = true @dispatcher.finish(@runner.id) end
kill()
click to toggle source
# File lib/foreman_tasks_core/runner/dispatcher.rb, line 46 def kill @logger.debug("kill runner #{@runner.id}") @runner.kill rescue => e handle_exception(e, false) end
on_envelope(*args)
click to toggle source
Calls superclass method
# File lib/foreman_tasks_core/runner/dispatcher.rb, line 21 def on_envelope(*args) super rescue => e handle_exception(e) end
refresh_runner()
click to toggle source
# File lib/foreman_tasks_core/runner/dispatcher.rb, line 35 def refresh_runner @logger.debug("refresh runner #{@runner.id}") if update = @runner.run_refresh @suspended_action << update finish if update.exit_status end ensure @refresh_planned = false plan_next_refresh end
start_runner()
click to toggle source
# File lib/foreman_tasks_core/runner/dispatcher.rb, line 27 def start_runner @logger.debug("start runner #{@runner.id}") @runner.start refresh_runner ensure plan_next_refresh end
start_termination(*args)
click to toggle source
Calls superclass method
# File lib/foreman_tasks_core/runner/dispatcher.rb, line 59 def start_termination(*args) @logger.debug("terminate #{@runner.id}") super @runner.close finish_termination end
Private Instance Methods
handle_exception(exception, fatal = true)
click to toggle source
# File lib/foreman_tasks_core/runner/dispatcher.rb, line 76 def handle_exception(exception, fatal = true) @dispatcher.handle_command_exception(@runner.id, exception, fatal) end
plan_next_refresh()
click to toggle source
# File lib/foreman_tasks_core/runner/dispatcher.rb, line 68 def plan_next_refresh if !@finishing && !@refresh_planned @logger.debug("planning to refresh #{@runner.id}") @clock.ping(reference, Time.now + @refresh_interval, :refresh_runner) @refresh_planned = true end end