Class: ForemanInventoryUpload::Async::ShellProcess
Instance Method Summary
collapse
#attempts_before_next_interval, #done!, #done?, #invoke_external_task, #poll_external_task, #poll_intervals
#hash_to_s
Instance Method Details
#command ⇒ Object
34
35
|
# File 'lib/foreman_inventory_upload/async/shell_process.rb', line 34
def command
end
|
#env ⇒ Object
44
45
46
|
# File 'lib/foreman_inventory_upload/async/shell_process.rb', line 44
def env
{}
end
|
#logger ⇒ Object
48
49
50
|
# File 'lib/foreman_inventory_upload/async/shell_process.rb', line 48
def logger
Foreman::Logging.logger('background')
end
|
#plan(instance_label, more_inputs = {}) ⇒ Object
9
10
11
12
|
# 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 ⇒ Object
37
38
39
40
41
42
|
# 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 ⇒ Object
52
53
54
|
# File 'lib/foreman_inventory_upload/async/shell_process.rb', line 52
def rescue_strategy_for_self
Dynflow::Action::Rescue::Fail
end
|
#try_execute ⇒ Object
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# 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
|