Sha256: 2d1bc073ecf8406be207169f938d1ce34554e310075fed0530d72bbef4244f67

Contents?: true

Size: 1.61 KB

Versions: 36

Compression:

Stored size: 1.61 KB

Contents

# Use to automatically create the CloudWatch group.
# For some reason creating ECS does do this by default.
module Ufo
  class LogGroup < Ufo::CLI::Base
    include Ufo::AwsServices

    def create
      logger.debug "Ensuring log group for #{@task_definition.name.color(:green)} task definition exists"
      return if @options[:noop]
      return if @options[:rollback] # dont need to create log group because previously deployed

      check_task_definition_exists!
      task_def = JSON.load(IO.read(task_def_path))
      task_def["containerDefinitions"].each do |container_def|
        begin
          log_group_name = container_def["logConfiguration"]["options"]["awslogs-group"]
          logger.debug "Log group name: #{log_group_name}"
        rescue NoMethodError
          # silence when the logConfiguration is not specified
        end

        create_log_group(log_group_name) if log_group_name
      end
    end

    def create_log_group(log_group_name)
      resp = cloudwatchlogs.describe_log_groups(log_group_name_prefix: log_group_name)
      exists = resp.log_groups.find { |lg| lg.log_group_name == log_group_name }
      cloudwatchlogs.create_log_group(log_group_name: log_group_name) unless exists
    end

    def task_def_path
      "#{Ufo.root}/.ufo/output/task_definition.json"
    end

    def check_task_definition_exists!
      return if File.exist?(task_def_path)
      logger.error "ERROR: Unable to find the task definition at #{task_def_path}.".color(:red)
      logger.error <<~EOL
          Please double check that it was built correctly with:

              ufo build

      EOL
      exit 1
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
ufo-6.3.13 lib/ufo/log_group.rb
ufo-6.3.12 lib/ufo/log_group.rb
ufo-6.3.11 lib/ufo/log_group.rb
ufo-6.3.10 lib/ufo/log_group.rb
ufo-6.3.9 lib/ufo/log_group.rb
ufo-6.3.8 lib/ufo/log_group.rb
ufo-6.3.7 lib/ufo/log_group.rb
ufo-6.3.6 lib/ufo/log_group.rb
ufo-6.3.5 lib/ufo/log_group.rb
ufo-6.3.4 lib/ufo/log_group.rb
ufo-6.3.3 lib/ufo/log_group.rb
ufo-6.3.2 lib/ufo/log_group.rb
ufo-6.3.1 lib/ufo/log_group.rb
ufo-6.3.0 lib/ufo/log_group.rb
ufo-6.2.5 lib/ufo/log_group.rb
ufo-6.2.4 lib/ufo/log_group.rb
ufo-6.2.3 lib/ufo/log_group.rb
ufo-6.2.2 lib/ufo/log_group.rb
ufo-6.2.1 lib/ufo/log_group.rb
ufo-6.2.0 lib/ufo/log_group.rb