Sha256: f4d0e20b98fbfbf8d5466cbeafd11072e904eb59beda8855652a9e0db3df0545

Contents?: true

Size: 989 Bytes

Versions: 7

Compression:

Stored size: 989 Bytes

Contents

module EbDeployer
  class CloudFormationDriver

    def stack_exists?(name)
      stack(name).exists?
    end

    def create_stack(name, template, opts)
      cloud_formation.stacks.create(name, template, opts)
    end

    def update_stack(name, template, opts)
      begin
        stack(name).update(opts.merge(:template => template))
      rescue AWS::CloudFormation::Errors::ValidationError => e
        if e.message =~ /No updates are to be performed/
          log(e.message)
        else
          raise
        end
      end
    end

    def stack_status(name)
      stack(name).status.downcase.to_sym
    end

    def query_output(name, key)
      output = stack(name).outputs.find { |o| o.key == key }
      output && output.value
    end

    private

    def cloud_formation
      AWS::CloudFormation.new
    end

    def stack(name)
      cloud_formation.stacks[name]
    end

    def log(msg)
      puts "[#{Time.now.utc}][cloud_formation_driver] #{msg}"
    end
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
eb_deployer-0.3.6 lib/eb_deployer/cloud_formation_driver.rb
eb_deployer-0.3.5 lib/eb_deployer/cloud_formation_driver.rb
eb_deployer-0.3.4 lib/eb_deployer/cloud_formation_driver.rb
eb_deployer-0.3.3 lib/eb_deployer/cloud_formation_driver.rb
eb_deployer-0.3.2 lib/eb_deployer/cloud_formation_driver.rb
eb_deployer-0.3.1 lib/eb_deployer/cloud_formation_driver.rb
eb_deployer-0.3.0 lib/eb_deployer/cloud_formation_driver.rb