Sha256: c49d658f1dfe5e242a372431b2d5717241eab1100a0393e10bcc912729e13801

Contents?: true

Size: 1.62 KB

Versions: 14

Compression:

Stored size: 1.62 KB

Contents

module Ufo
  class Task
    include Defaults
    include AwsServices

    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
      }
      task_options.merge!(overrides: overrides) if @options[:command]
      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

14 entries across 14 versions & 1 rubygems

Version Path
ufo-2.1.0 lib/ufo/task.rb
ufo-2.0.3 lib/ufo/task.rb
ufo-2.0.2 lib/ufo/task.rb
ufo-2.0.1 lib/ufo/task.rb
ufo-2.0.0 lib/ufo/task.rb
ufo-1.7.1 lib/ufo/task.rb
ufo-1.7.0 lib/ufo/task.rb
ufo-1.6.2 lib/ufo/task.rb
ufo-1.6.1 lib/ufo/task.rb
ufo-1.6.0 lib/ufo/task.rb
ufo-1.5.0 lib/ufo/task.rb
ufo-1.2.0 lib/ufo/task.rb
ufo-1.1.0 lib/ufo/task.rb
ufo-1.0.1 lib/ufo/task.rb