Class: ForemanAnsibleDirector::Actions::Proxy::BuildExecutionEnvironment

Inherits:
Base::AnsibleDirectorAction show all
Includes:
Dynflow::Action::Polling
Defined in:
app/lib/foreman_ansible_director/actions/proxy/build_execution_environment.rb

Instance Method Summary collapse

Methods inherited from Base::AnsibleDirectorAction

#humanized_name, #queue, #task_output

Instance Method Details

#attempts_before_next_intervalObject



45
46
47
# File 'app/lib/foreman_ansible_director/actions/proxy/build_execution_environment.rb', line 45

def attempts_before_next_interval
  4
end

#done?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'app/lib/foreman_ansible_director/actions/proxy/build_execution_environment.rb', line 37

def done?
  output[:task]&.[](:progress) == 1
end

#finalizeObject



49
50
51
52
53
54
55
# File 'app/lib/foreman_ansible_director/actions/proxy/build_execution_environment.rb', line 49

def finalize
  env = ::ForemanAnsibleDirector::ExecutionEnvironment.find_by(id: input[:execution_environment_id])

  env.update!(
    build_status: (output[:task]&.[](:success) ? 'success' : 'failed')
  )
end

#invoke_external_taskObject



20
21
22
23
24
25
26
# File 'app/lib/foreman_ansible_director/actions/proxy/build_execution_environment.rb', line 20

def invoke_external_task
  ::ForemanAnsibleDirector::Proxy::Dynflow::SingleBatchAction.new(
    input[:proxy_task_id], 'meta', 'Proxy::AnsibleDirector::Actions::Meta::BuildPushEe',
    execution_environment: input[:execution_environment_definition]
  ).request
  nil
end

#poll_external_taskObject



28
29
30
31
32
33
34
35
# File 'app/lib/foreman_ansible_director/actions/proxy/build_execution_environment.rb', line 28

def poll_external_task
  task = ::ForemanAnsibleDirector::Proxy::Dynflow::TaskStatus.new(input[:proxy_task_id]).request
  task_status = ::ForemanAnsibleDirector::Parsers::Proxy::Dynflow::TaskStatusParser.new(task)

  { progress: task_status.progress,
    external_output: task_status.external_output,
    success: task_status.success? }
end

#poll_intervalsObject



41
42
43
# File 'app/lib/foreman_ansible_director/actions/proxy/build_execution_environment.rb', line 41

def poll_intervals
  [2, 4, 8, 16, 32, 64]
end