Sha256: 5e964d8335f282fa4dcc5904eeb2695b4e27c613296fc859f37edf7fe782e2c3

Contents?: true

Size: 1.42 KB

Versions: 7

Compression:

Stored size: 1.42 KB

Contents

module ForemanTasks

  # wrap the dynflow persistence to reflect the changes to execution plan
  # in the Task model. This is probably a temporary solution and
  # Dynflow will probably get more events-based API but it should be enought
  # for start, until the requiements on the API are clear enough.
  class Dynflow::Persistence < ::Dynflow::PersistenceAdapters::Sequel

    def save_execution_plan(execution_plan_id, value)
      super.tap do
        begin
          on_execution_plan_save(execution_plan_id, value)
        rescue => e
          ForemanTasks.dynflow.world.logger.error('Error on on_execution_plan_save event')
          ForemanTasks.dynflow.world.logger.error(e.message)
          ForemanTasks.dynflow.world.logger.error(e.backtrace.join("\n"))
        end
      end
    end

    def on_execution_plan_save(execution_plan_id, data)
      # We can load the data unless the execution plan was properly planned and saved
      # including its steps
      if data[:state] == :pending
        task = ::ForemanTasks::Task::DynflowTask.new
        task.update_from_dynflow(data, false)
        Lock.owner!(::User.current, task.id) if ::User.current
      elsif data[:state] != :planning
        if task = ::ForemanTasks::Task::DynflowTask.find_by_external_id(execution_plan_id)
          unless task.state.to_s == data[:state].to_s
            task.update_from_dynflow(data, true)
          end
        end
      end
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
foreman-tasks-0.6.4 lib/foreman_tasks/dynflow/persistence.rb
foreman-tasks-0.6.3 lib/foreman_tasks/dynflow/persistence.rb
foreman-tasks-0.6.2 lib/foreman_tasks/dynflow/persistence.rb
foreman-tasks-0.6.1 lib/foreman_tasks/dynflow/persistence.rb
foreman-tasks-0.6.0 lib/foreman_tasks/dynflow/persistence.rb
foreman-tasks-0.5.7 lib/foreman_tasks/dynflow/persistence.rb
foreman-tasks-0.5.6 lib/foreman_tasks/dynflow/persistence.rb