Sha256: 5921d08654e5c41e5f06a71f7e1b75500414d26061a43669ea251f535bb70516

Contents?: true

Size: 1.74 KB

Versions: 12

Compression:

Stored size: 1.74 KB

Contents

module Ufo
  class Task
    include Default
    include AwsService

    def initialize(task_definition, options)
      @task_definition = task_definition
      @options = options
      @cluster = @options[:cluster] || default_cluster
    end

    def run
      puts "Running task_definition: #{@task_definition}".colorize(:green) unless @options[:mute]
      return if @options[:noop]
      task_options = {
        cluster: @cluster,
        task_definition: @task_definition
      }
      if @options[:command]
        task_options.merge!(overrides: overrides)
        puts "Running task with container overrides."
        puts "Command: #{@options[:command].join(' ')}"
      end
      resp = ecs.run_task(task_options)
      puts "Task ARN: #{resp.tasks[0].task_arn}" unless @options[:mute]
    end

  private
    # only using the overrides to override the container command
    def overrides
      command = @options[:command] # Thor parser ensure this is always an array
      container_definition = get_original_container_definition
      {
        container_overrides: [
          {
            name: container_definition[:name],
            command: command,
            environment: container_definition[:environment],
          },
        ]
      }
    end

    def get_original_container_definition
      resp = ecs.list_task_definitions(
        family_prefix: @task_definition,
        sort: "DESC"
      )
      # "arn:aws:ecs:us-east-1:<aws_account_id>:task-definition/wordpress:6",
      last_definition_arn = resp.task_definition_arns.first
      task_name = last_definition_arn.split("/").last
      resp = ecs.describe_task_definition(task_definition: task_name)
      container_definition = resp.task_definition.container_definitions[0].to_h
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
ufo-3.3.2 lib/ufo/task.rb
ufo-3.3.1 lib/ufo/task.rb
ufo-3.3.0 lib/ufo/task.rb
ufo-3.2.2 lib/ufo/task.rb
ufo-3.2.1 lib/ufo/task.rb
ufo-3.2.0 lib/ufo/task.rb
ufo-3.1.2 lib/ufo/task.rb
ufo-3.1.1 lib/ufo/task.rb
ufo-3.1.0 lib/ufo/task.rb
ufo-3.0.1 lib/ufo/task.rb
ufo-3.0.0 lib/ufo/task.rb
ufo-2.3.0 lib/ufo/task.rb