Sha256: 59dea93ba3547ede760b1c6d67dcaf8897149f2c6078e477580ed566306e0130

Contents?: true

Size: 1.7 KB

Versions: 3

Compression:

Stored size: 1.7 KB

Contents

module ForemanTasks
  class Task::DynflowTask < ForemanTasks::Task

    def update_from_dynflow(data, planned)
      self.external_id = data[:id]
      self.started_at  = data[:started_at]
      self.ended_at    = data[:ended_at]
      self.state       = data[:state].to_s
      self.result      = data[:result].to_s

      if planned
        # for now, this part needs to laod the execution_plan to
        # load extra data, there is place for optimization on Dynflow side
        # if needed (getting more keys into the data value)
        unless self.label
          self.label = main_action.class.name
        end
        update_progress
      end
      self.save!
    end

    def update_progress
      self.progress = execution_plan.progress
    end

    def execution_plan
      @execution_plan ||= ForemanTasks.dynflow.world.persistence.load_execution_plan(external_id)
    end

    def input
      main_action.respond_to?(:task_input) && main_action.task_input
    end

    def output
      main_action.respond_to?(:task_output) && main_action.task_output
    end

    def humanized
      { action: main_action.respond_to?(:humanized_name) && main_action.humanized_name,
        input:  main_action.respond_to?(:humanized_input) && main_action.humanized_input,
        output: main_action.respond_to?(:humanized_output) && main_action.humanized_output }
    end

    def cli_example
      if main_action.respond_to?(:cli_example)
        main_action.cli_example
      end
    end

    protected

    def main_action
      return @main_action if @main_action
      main_action_id = execution_plan.root_plan_step.action_id
      @main_action = execution_plan.actions.find { |action| action.id == main_action_id }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
foreman-tasks-0.2.2 app/models/foreman_tasks/task/dynflow_task.rb
foreman-tasks-0.2.1 app/models/foreman_tasks/task/dynflow_task.rb
foreman-tasks-0.2.0 app/models/foreman_tasks/task/dynflow_task.rb