class EcsDeployCli::Runners::Base

Public Class Methods

new(parser) click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 6
def initialize(parser)
  @parser = parser
end

Public Instance Methods

run!() click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 10
def run!
  raise NotImplementedError, 'abstract method'
end
update_task(definition) click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 14
def update_task(definition)
  _update_task(definition)
end

Protected Instance Methods

_create_cloudwatch_logs_if_needed(prefix) click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 32
def _create_cloudwatch_logs_if_needed(prefix)
  log_group = cwl_client.describe_log_groups(log_group_name_prefix: prefix, limit: 1).to_h[:log_groups]
  return if log_group.any?

  cwl_client.create_log_group(log_group_name: prefix)
  cwl_client.put_retention_policy(
    log_group_name: prefix,
    retention_in_days: 14
  )
end
_update_task(definition) click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 20
def _update_task(definition)
  definition[:container_definitions].each do |container|
    next unless container.dig(:log_configuration, :log_driver) == 'awslogs'

    _create_cloudwatch_logs_if_needed(container.dig(:log_configuration, :options, 'awslogs-group'))
  end

  ecs_client.register_task_definition(
    definition
  ).to_h[:task_definition]
end
cf_client() click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 90
def cf_client
  @cl_client ||= begin
    require 'aws-sdk-cloudformation'
    Aws::CloudFormation::Client.new(
      profile: ENV.fetch('AWS_PROFILE', 'default'),
      region: config[:aws_region]
    )
  end
end
config() click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 110
def config
  @parser.config
end
cwe_client() click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 60
def cwe_client
  @cwe_client ||= begin
    require 'aws-sdk-cloudwatchevents'
    Aws::CloudWatchEvents::Client.new(
      profile: ENV.fetch('AWS_PROFILE', 'default'),
      region: config[:aws_region]
    )
  end
end
cwl_client() click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 80
def cwl_client
  @cwl_client ||= begin
    require 'aws-sdk-cloudwatchlogs'
    Aws::CloudWatchLogs::Client.new(
      profile: ENV.fetch('AWS_PROFILE', 'default'),
      region: config[:aws_region]
    )
  end
end
ec2_client() click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 43
def ec2_client
  @ec2_client ||= begin
    require 'aws-sdk-ec2'
    Aws::EC2::Client.new(
      profile: ENV.fetch('AWS_PROFILE', 'default'),
      region: config[:aws_region]
    )
  end
end
ecs_client() click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 53
def ecs_client
  @ecs_client ||= Aws::ECS::Client.new(
    profile: ENV.fetch('AWS_PROFILE', 'default'),
    region: config[:aws_region]
  )
end
iam_client() click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 100
def iam_client
  @iam_client ||= begin
    require 'aws-sdk-iam'
    Aws::IAM::Client.new(
      profile: ENV.fetch('AWS_PROFILE', 'default'),
      region: config[:aws_region]
    )
  end
end
ssm_client() click to toggle source
# File lib/ecs_deploy_cli/runners/base.rb, line 70
def ssm_client
  @cwl_client ||= begin
    require 'aws-sdk-ssm'
    Aws::SSM::Client.new(
      profile: ENV.fetch('AWS_PROFILE', 'default'),
      region: config[:aws_region]
    )
  end
end