Sha256: 304cf610adb43dac91df20896a81beba64d446feb531bb56dcb0a35e55de29a7

Contents?: true

Size: 1.67 KB

Versions: 66

Compression:

Stored size: 1.67 KB

Contents

require "aws-sdk-cloudformation"

class CfnStatus
  module AwsService
    def cfn
      @cfn ||= Aws::CloudFormation::Client.new
    end

    def stack_exists?(stack_name)
      return true if ENV['TEST']
      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
        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 find_stack(stack_name)
      resp = cfn.describe_stacks(stack_name: stack_name)
      resp.stacks.first
    rescue Aws::CloudFormation::Errors::ValidationError => e
      # example: Stack with id demo-web does not exist
      if e.message =~ /Stack with/ && e.message =~ /does not exist/
        nil
      else
        raise
      end
    end

    def rollback_complete?(stack)
      stack&.stack_status == 'ROLLBACK_COMPLETE'
    end
  end
end

Version data entries

66 entries across 66 versions & 3 rubygems

Version Path
cfn-status-0.4.4 lib/cfn_status/aws_service.rb
lono-7.5.2 vendor/cfn-status/lib/cfn_status/aws_service.rb
cfn-status-0.4.3 lib/cfn_status/aws_service.rb
lono-7.5.1 vendor/cfn-status/lib/cfn_status/aws_service.rb
jets-2.3.19 vendor/cfn-status/lib/cfn_status/aws_service.rb
jets-2.3.18 vendor/cfn-status/lib/cfn_status/aws_service.rb
jets-2.3.17 vendor/cfn-status/lib/cfn_status/aws_service.rb
lono-7.5.0 vendor/cfn-status/lib/cfn_status/aws_service.rb
lono-7.4.11 vendor/cfn-status/lib/cfn_status/aws_service.rb
jets-2.3.16 vendor/cfn-status/lib/cfn_status/aws_service.rb
lono-7.4.10 vendor/cfn-status/lib/cfn_status/aws_service.rb
lono-7.4.9 vendor/cfn-status/lib/cfn_status/aws_service.rb
lono-7.4.8 vendor/cfn-status/lib/cfn_status/aws_service.rb
lono-7.4.7 vendor/cfn-status/lib/cfn_status/aws_service.rb
lono-7.4.6 vendor/cfn-status/lib/cfn_status/aws_service.rb
lono-7.4.5 vendor/cfn-status/lib/cfn_status/aws_service.rb
lono-7.4.4 vendor/cfn-status/lib/cfn_status/aws_service.rb
lono-7.4.3 vendor/cfn-status/lib/cfn_status/aws_service.rb
lono-7.4.2 vendor/cfn-status/lib/cfn_status/aws_service.rb
jets-2.3.15 vendor/cfn-status/lib/cfn_status/aws_service.rb