Sha256: c76fce252fa6d3766d47597cdb94f51cd77d64aeb5ba0d49197ff8cdb4a21476

Contents?: true

Size: 1.27 KB

Versions: 16

Compression:

Stored size: 1.27 KB

Contents

require "aws-sdk-cloudformation"

module Lono::Cfn::AwsService
  def cfn
    @cfn ||= Aws::CloudFormation::Client.new
  end

  def stack_exists?(stack_name)
    return true if testing_update?
    return false if @options[:noop]

    exist = nil
    begin
      # When the stack does not exist an exception is raised. Example:
      # Aws::CloudFormation::Errors::ValidationError: Stack with id blah does not exist
      resp = cfn.describe_stacks(stack_name: stack_name)
      exist = true
    rescue Aws::CloudFormation::Errors::ValidationError => e
      if e.message =~ /does not exist/
        exist = false
      elsif e.message.include?("'stackName' failed to satisfy constraint")
        # Example of e.message when describe_stack with invalid stack name
        # "1 validation error detected: Value 'instance_and_route53' at 'stackName' failed to satisfy constraint: Member must satisfy regular expression pattern: [a-zA-Z][-a-zA-Z0-9]*|arn:[-a-zA-Z0-9:/._+]*"
        puts "Invalid stack name: #{stack_name}"
        puts "Full error message: #{e.message}"
        exit 1
      else
        raise # re-raise exception  because unsure what other errors can happen
      end
    end
    exist
  end

  def testing_update?
    ENV['TEST'] && self.class.name == "LonoCfn::Update"
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
lono-4.2.7 lib/lono/cfn/aws_service.rb
lono-4.2.6 lib/lono/cfn/aws_service.rb
lono-4.2.5 lib/lono/cfn/aws_service.rb
lono-4.2.4 lib/lono/cfn/aws_service.rb
lono-4.2.3 lib/lono/cfn/aws_service.rb
lono-4.2.2 lib/lono/cfn/aws_service.rb
lono-4.2.1 lib/lono/cfn/aws_service.rb
lono-4.2.0 lib/lono/cfn/aws_service.rb
lono-4.1.0 lib/lono/cfn/aws_service.rb
lono-4.0.6 lib/lono/cfn/aws_service.rb
lono-4.0.5 lib/lono/cfn/aws_service.rb
lono-4.0.4 lib/lono/cfn/aws_service.rb
lono-4.0.3 lib/lono/cfn/aws_service.rb
lono-4.0.2 lib/lono/cfn/aws_service.rb
lono-4.0.1 lib/lono/cfn/aws_service.rb
lono-4.0.0 lib/lono/cfn/aws_service.rb