Sha256: 4e45cbf6ec0d8f04e48542adde7645b3cdde4d34f37934a3128e3b17f1fc668d

Contents?: true

Size: 1.11 KB

Versions: 6

Compression:

Stored size: 1.11 KB

Contents

module OpenStax::Aws
  class Alarm
    attr_reader :raw_alarm

    delegate_missing_to :@raw_alarm

    def self.physical_resource_id_attribute
      :name
    end

    def initialize(region:, name:)
      @raw_alarm = ::Aws::CloudWatch::Alarm.new(
        name: name,
        client: Aws::CloudWatch::Client.new(region: region)
      )
    end

    def tags
      client.list_tags_for_resource(resource_arn: raw_alarm.alarm_arn).tags
    end

    def tag_resource(new_tags)
      client.tag_resource resource_arn: raw_alarm.alarm_arn, tags: new_tags
    end

    def logger
      OpenStax::Aws.configuration.logger
    end

    def add_tags_not_handled_by_cloudformation(stack_tags)
      missing_tags = stack_tags.map(&:to_h) - tags.map(&:to_h)

      return if missing_tags.empty?

      logger.debug "Tagging #{name}..."
      attempt = 1
      begin
        tag_resource missing_tags
      rescue Aws::CloudWatch::Errors::Throttling
        retry_in = attempt**2
        logger.debug "Tagging #{name} failed... retrying in #{retry_in} seconds"
        sleep retry_in
        attempt += 1
        retry
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
openstax_aws-2.1.0 lib/openstax/aws/alarm.rb
openstax_aws-2.0.1 lib/openstax/aws/alarm.rb
openstax_aws-2.0.0 lib/openstax/aws/alarm.rb
openstax_aws-1.6.1 lib/openstax/aws/alarm.rb
openstax_aws-1.6.0 lib/openstax/aws/alarm.rb
openstax_aws-1.5.0 lib/openstax/aws/alarm.rb