Class: Actions::ForemanPatch::Invocation::WaitForHost
- Inherits:
-
EntryAction
- Object
- EntryAction
- Actions::ForemanPatch::Invocation::WaitForHost
- Includes:
- Helpers::WithContinuousOutput, Dynflow::Action::Polling
- Defined in:
- app/lib/actions/foreman_patch/invocation/wait_for_host.rb
Instance Method Summary collapse
- #continuous_output_providers ⇒ Object
- #done? ⇒ Boolean
- #fill_continuous_output(continuous_output) ⇒ Object
- #invoke_external_task ⇒ Object
- #live_output ⇒ Object
- #on_finish ⇒ Object
- #plan(host) ⇒ Object
- #poll_external_task ⇒ Object
- #poll_intervals ⇒ Object
- #process_timeout ⇒ Object
Instance Method Details
#continuous_output_providers ⇒ Object
63 64 65 |
# File 'app/lib/actions/foreman_patch/invocation/wait_for_host.rb', line 63 def continuous_output_providers super << self end |
#done? ⇒ Boolean
14 15 16 |
# File 'app/lib/actions/foreman_patch/invocation/wait_for_host.rb', line 14 def done? ['available', 'timeout'].include? external_task end |
#fill_continuous_output(continuous_output) ⇒ Object
67 68 69 70 71 |
# File 'app/lib/actions/foreman_patch/invocation/wait_for_host.rb', line 67 def fill_continuous_output(continuous_output) output.fetch('result', []).each do |raw_output| continuous_output.add_raw_output(raw_output) end end |
#invoke_external_task ⇒ Object
18 19 20 21 22 |
# File 'app/lib/actions/foreman_patch/invocation/wait_for_host.rb', line 18 def invoke_external_task schedule_timeout(Setting[:host_max_wait_for_up]) if Setting[:host_max_wait_for_up] 'waiting' end |
#live_output ⇒ Object
58 59 60 61 |
# File 'app/lib/actions/foreman_patch/invocation/wait_for_host.rb', line 58 def live_output continuous_output.sort! continuous_output.raw_outputs end |
#on_finish ⇒ Object
48 49 50 |
# File 'app/lib/actions/foreman_patch/invocation/wait_for_host.rb', line 48 def on_finish add_output(_('Host is up'), 'stdout') if external_task == 'available' end |
#plan(host) ⇒ Object
8 9 10 11 12 |
# File 'app/lib/actions/foreman_patch/invocation/wait_for_host.rb', line 8 def plan(host) action_subject(host) plan_self end |
#poll_external_task ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/lib/actions/foreman_patch/invocation/wait_for_host.rb', line 24 def poll_external_task return status = external_task if external_task == 'timeout' socket = TCPSocket.new(host.ip, Setting[:remote_execution_ssh_port]) status = starting? ? 'available' : 'waiting' rescue status = 'starting' ensure socket.close if socket add_output("Poll result: #{status}") end |
#poll_intervals ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'app/lib/actions/foreman_patch/invocation/wait_for_host.rb', line 37 def poll_intervals case external_task when 'waiting' [1] when 'starting' [10] else super end end |
#process_timeout ⇒ Object
52 53 54 55 56 |
# File 'app/lib/actions/foreman_patch/invocation/wait_for_host.rb', line 52 def process_timeout add_output(_('Server did not respond withing alloted time after restart.'), 'stderr') self.external_task = 'timeout' end |