Class: Actions::ForemanPatch::Invocation::WaitForHost

Inherits:
EntryAction
  • Object
show all
Includes:
Helpers::WithContinuousOutput, Dynflow::Action::Polling
Defined in:
app/lib/actions/foreman_patch/invocation/wait_for_host.rb

Instance Method Summary collapse

Instance Method Details

#continuous_output_providersObject



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

Returns:

  • (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_taskObject



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_outputObject



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_finishObject



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_taskObject



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_intervalsObject



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_timeoutObject



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