Class: Actions::ForemanPipeline::Job::WaitUntilProvisioned

Inherits:
Base
  • Object
show all
Includes:
Dynflow::Action::Cancellable, Dynflow::Action::Polling
Defined in:
app/lib/actions/foreman_pipeline/job/wait_until_provisioned.rb

Instance Method Summary collapse

Instance Method Details

#build_status(host = nil) ⇒ Object



36
37
38
39
40
41
42
# File 'app/lib/actions/foreman_pipeline/job/wait_until_provisioned.rb', line 36

def build_status(host = nil)
  info = "Cannot find host by id" if host.nil?
  info = "Host not yet created, no reports received" if !host.nil? && host.reports.count < 1
  info = "Host has invalid configuration" if !host.nil? && (host.reports.count > 1) && host.reports.last.error?
  status = (!host.nil? && (host.reports.count > 1) && !host.reports.last.error?)
  { :build => status, :info => info }
end

#create_output(host) ⇒ Object



32
33
34
# File 'app/lib/actions/foreman_pipeline/job/wait_until_provisioned.rb', line 32

def create_output(host)
  output[:host] = host
end

#done?Boolean

Returns:

  • (Boolean)


8
9
10
# File 'app/lib/actions/foreman_pipeline/job/wait_until_provisioned.rb', line 8

def done?
  external_task[:build]
end

#invoke_external_taskObject



16
17
18
19
# File 'app/lib/actions/foreman_pipeline/job/wait_until_provisioned.rb', line 16

def invoke_external_task
  schedule_timeout(timeout) unless timeout <= 0
  build_status
end

#poll_external_taskObject



21
22
23
24
25
26
# File 'app/lib/actions/foreman_pipeline/job/wait_until_provisioned.rb', line 21

def poll_external_task
  fail(_("'%s' is a required parameter") % 'host_id') unless input.key?(:host_id)
  host = Host.find(input[:host_id])
  create_output(host)
  build_status(host)
end

#poll_intervalObject



28
29
30
# File 'app/lib/actions/foreman_pipeline/job/wait_until_provisioned.rb', line 28

def poll_interval
  30
end

#timeoutObject



12
13
14
# File 'app/lib/actions/foreman_pipeline/job/wait_until_provisioned.rb', line 12

def timeout
  input[:timeout] || 2 * 60 * 60 # 2 hours default
end