Method: Wrapbox::Runner::Ecs#initialize

Defined in:
lib/wrapbox/runner/ecs.rb

#initialize(options) ⇒ Ecs

Returns a new instance of Ecs.



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/wrapbox/runner/ecs.rb', line 49

def initialize(options)
  @name = options[:name]
  @task_definition_name = options[:task_definition_name]
  @revision = options[:revision]
  @cluster = options[:cluster]
  @region = options[:region]
  @volumes = options[:volumes]
  @placement_constraints = options[:placement_constraints]
  @placement_strategy = options[:placement_strategy]
  @launch_type = options[:launch_type]
  @requires_compatibilities = options[:requires_compatibilities]
  @network_mode = options[:network_mode]
  @network_configuration = options[:network_configuration]
  @cpu = options[:cpu]
  @memory = options[:memory]

  @container_definitions = options[:container_definition] ? [options[:container_definition]] : options[:container_definitions] || []
  @container_definitions.concat(options[:additional_container_definitions]) if options[:additional_container_definitions] # deprecated

  if !@container_definitions.empty? && options[:task_definition]
    raise "Please set only one of `container_definition` and `task_definition`"
  end

  if options[:additional_container_definitions] && !options[:additional_container_definitions].empty?
    warn "`additional_container_definitions` is deprecated parameter, Use `container_definitions` instead of it"
  end

  @task_definition_info = options[:task_definition]

  if !@container_definitions.empty?
    @task_definition_name ||= "wrapbox_#{@name}"
    @main_container_name = @container_definitions[0][:name] || @task_definition_name
  elsif @task_definition_info
    @task_definition_name = @task_definition_info[:task_definition_name]
    @main_container_name = @task_definition_info[:main_container_name]
    unless @main_container_name
      raise "Please set `task_definition[:main_container_name]`"
    end
  end

  @container_definitions.each do |d|
    d[:docker_labels]&.stringify_keys!
    d.dig(:log_configuration, :options)&.stringify_keys!
  end

  @task_role_arn = options[:task_role_arn]
  @execution_role_arn = options[:execution_role_arn]
  $stdout.sync = true
  @logger = Logger.new($stdout)
  if options[:log_fetcher]
    type = options[:log_fetcher].delete(:type)
    @log_fetcher = LogFetcher.new(type, options[:log_fetcher])
  end
end