class ForemanInventoryUpload::Async::ShellProcess
Public Instance Methods
command()
click to toggle source
# File lib/foreman_inventory_upload/async/shell_process.rb, line 34 def command end
env()
click to toggle source
# File lib/foreman_inventory_upload/async/shell_process.rb, line 44 def env {} end
logger()
click to toggle source
# File lib/foreman_inventory_upload/async/shell_process.rb, line 48 def logger Foreman::Logging.logger('background') end
plan(instance_label, more_inputs = {})
click to toggle source
# File lib/foreman_inventory_upload/async/shell_process.rb, line 9 def plan(instance_label, more_inputs = {}) inputs = more_inputs.merge(instance_label: instance_label) plan_self(inputs) end
progress_output() { |progress_output| ... }
click to toggle source
# File lib/foreman_inventory_upload/async/shell_process.rb, line 37 def progress_output progress_output = ProgressOutput.register(instance_label) yield(progress_output) ensure progress_output.close end
rescue_strategy_for_self()
click to toggle source
# File lib/foreman_inventory_upload/async/shell_process.rb, line 52 def rescue_strategy_for_self Dynflow::Action::Rescue::Fail end
try_execute()
click to toggle source
# File lib/foreman_inventory_upload/async/shell_process.rb, line 14 def try_execute klass_name = self.class.name logger.debug("Starting #{klass_name} with label #{instance_label}") progress_output do |progress_output| Open3.popen2e(hash_to_s(env), *preprocess_command(command)) do |_stdin, stdout_stderr, wait_thread| progress_output.status = "Running in pid #{wait_thread.pid}" stdout_stderr.each do |out_line| progress_output.write_line(out_line) end progress_output.status = wait_thread.value.to_s end end logger.debug("Finished job #{klass_name} with label #{instance_label}") assert_task_status(ProgressOutput.get(instance_label).status) done! end
Private Instance Methods
assert_task_status(status)
click to toggle source
# File lib/foreman_inventory_upload/async/shell_process.rb, line 66 def assert_task_status(status) raise Foreman::Exception.new('Process exited with an unknown status: %{status}', status: status) unless status.match?(/pid \d+ exit 0/) end
instance_label()
click to toggle source
# File lib/foreman_inventory_upload/async/shell_process.rb, line 62 def instance_label input[:instance_label] end
preprocess_command(command)
click to toggle source
# File lib/foreman_inventory_upload/async/shell_process.rb, line 58 def preprocess_command(command) command.kind_of?(Array) ? command : [command] end