class ContainerShip::TaskDefinition

Attributes

build_number[R]
cluster_name[R]
environment[R]
name[R]

Public Class Methods

new(cluster_name, type, name, environment, build_number) click to toggle source
# File lib/container_ship/task_definition.rb, line 7
def initialize(cluster_name, type, name, environment, build_number)
  @cluster_name = cluster_name
  @type = type
  @name = name
  @environment = environment
  @build_number = build_number
end

Public Instance Methods

full_cluster_name() click to toggle source
# File lib/container_ship/task_definition.rb, line 27
def full_cluster_name
  "#{@cluster_name}-#{@environment}"
end
full_name() click to toggle source
# File lib/container_ship/task_definition.rb, line 31
def full_name
  "#{@cluster_name}-#{@name}-#{@environment}"
end
image_name() click to toggle source
# File lib/container_ship/task_definition.rb, line 35
def image_name
  ENV.fetch('ECR_REPOSITORY') + full_cluster_name
end
log_group_name() click to toggle source
# File lib/container_ship/task_definition.rb, line 39
def log_group_name
  return nil unless main_container_definition.dig(:log_configuration, :log_driver).to_s == 'awslogs'

  main_container_definition.dig(:log_configuration, :options, :'awslogs-group')
end
log_stream_name(task_arn) click to toggle source
# File lib/container_ship/task_definition.rb, line 45
def log_stream_name(task_arn)
  return nil unless main_container_definition.dig(:log_configuration, :log_driver).to_s == 'awslogs'

  prefix = main_container_definition.dig(:log_configuration, :options, :'awslogs-stream-prefix')
  "#{prefix}/#{full_name}/#{task_arn.split('/').last}"
end
to_h() click to toggle source
# File lib/container_ship/task_definition.rb, line 15
def to_h
  task_definition_hash
    .merge(
      family: full_name,
      container_definitions: task_definition_hash[:container_definitions].map do |d|
        next d unless d[:essential]

        d.merge(name: full_name, image: "#{image_name}:#{@build_number}")
      end
    )
end

Private Instance Methods

main_container_definition() click to toggle source
# File lib/container_ship/task_definition.rb, line 62
def main_container_definition
  task_definition_hash[:container_definitions].find { |definition| definition[:essential] }
end
task_definition_hash() click to toggle source
# File lib/container_ship/task_definition.rb, line 54
def task_definition_hash
  @task_definition_hash ||= JSON.parse(File.read(task_definition_path), symbolize_names: true)
end
task_definition_path() click to toggle source
# File lib/container_ship/task_definition.rb, line 58
def task_definition_path
  File.join('.container_ship', @cluster_name, @type, @name, @environment, 'task_definition.json')
end