Sha256: 1f7c4cdddfa5efd24a1503e8e175525485f8b9d2a873a3298d9b70110a2665a8

Contents?: true

Size: 1.51 KB

Versions: 11

Compression:

Stored size: 1.51 KB

Contents

module Shipit
  class TasksController < ShipitController
    include Pagination

    before_action :stack

    self.default_page_size = 20

    def index
      paginator = paginate(stack.tasks)
      @tasks = paginator.to_a
      @links = paginator.links
    end

    def new
      @definition = stack.find_task_definition(params[:definition_id])
      @task = stack.tasks.build(definition: @definition)
    end

    def show
      task
      respond_to do |format|
        format.html
        format.text { render plain: @task.chunk_output }
      end
    end

    def create
      @definition = stack.find_task_definition(params[:definition_id])

      if @definition.allow_concurrency? || params[:force] || !@stack.active_task?
        @task = stack.trigger_task(params[:definition_id], current_user, env: task_params[:env])
        redirect_to [stack, @task]
      else
        redirect_to new_stack_tasks_path(stack, @definition)
      end
    end

    def abort
      task.abort!(rollback_once_aborted: params[:rollback].present?)
      head :ok
    end

    def tail
      render json: TailTaskSerializer.new(task, context: params)
    end

    private

    def task
      @task ||= stack.tasks.find(params[:id])
    end

    def stack
      @stack ||= Stack.from_param!(params[:stack_id])
    end

    def task_params
      return {} unless params[:task]
      @definition = stack.find_task_definition(params[:definition_id])
      @task_params ||= params.require(:task).permit(env: @definition.variables.map(&:name))
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
shipit-engine-0.18.0 app/controllers/shipit/tasks_controller.rb
shipit-engine-0.17.0 app/controllers/shipit/tasks_controller.rb
shipit-engine-0.16.0 app/controllers/shipit/tasks_controller.rb
shipit-engine-0.15.0 app/controllers/shipit/tasks_controller.rb
shipit-engine-0.14.0 app/controllers/shipit/tasks_controller.rb
shipit-engine-0.13.0 app/controllers/shipit/tasks_controller.rb
shipit-engine-0.12.1 app/controllers/shipit/tasks_controller.rb
shipit-engine-0.12.0 app/controllers/shipit/tasks_controller.rb
shipit-engine-0.11.0 app/controllers/shipit/tasks_controller.rb
shipit-engine-0.10.0 app/controllers/shipit/tasks_controller.rb
shipit-engine-0.9.0 app/controllers/shipit/tasks_controller.rb