Sha256: 0b09ec28a9a318e3b14ee077e8517d5a118654789c0f143c3c494357c716aa0f

Contents?: true

Size: 1.83 KB

Versions: 8

Compression:

Stored size: 1.83 KB

Contents

require "yaml"

class Lono::Cfn::Create < Lono::Cfn::Base
  # save_stack is the interface method
  def save_stack(params)
    create_stack(params)
  end

  # aws cloudformation create-stack --stack-name prod-hi-123456789 --parameters file://output/params/prod-hi-123456789.json --template-body file://output/prod-hi.json
  def create_stack(params)
    message = "Creating #{@stack_name} stack."
    if @options[:noop]
      puts "NOOP #{message}"
      return
    end

    if stack_exists?(@stack_name)
      puts "Cannot create '#{@stack_name}' stack because it already exists.".colorize(:red)
      return
    end

    unless File.exist?(@template_path)
      puts "Cannot create '#{@stack_name}' template not found: #{@template_path}."
      return
    end

    template_body = IO.read(@template_path)
    params = {
      stack_name: @stack_name,
      template_body: template_body,
      parameters: params,
      capabilities: capabilities, # ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"]
      disable_rollback: !@options[:rollback],
    }
    show_parameters(params, "cfn.create_stack")
    cfn.create_stack(params)
    puts message unless @options[:mute]
  end

  # Appends a short random string at the end of a stack name.
  # Later we will strip this same random string from the template name.
  # Very makes it convenient.  We can just type:
  #
  #   lono cfn create main --randomize-stack-name
  #
  # instead of:
  #
  #   lono cfn create main-[RANDOM] --template main
  #
  # The randomize_stack_name can be specified at the CLI but can also be saved as a
  # preference.
  #
  # It is not a default setting because it might confuse new lono users.
  def randomize(stack_name)
    if randomize_stack_name?
      random = (0...3).map { (65 + rand(26)).chr }.join.downcase # Ex: jhx
      [stack_name, random].join('-')
    else
      stack_name
    end
  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
lono-4.1.0 lib/lono/cfn/create.rb
lono-4.0.6 lib/lono/cfn/create.rb
lono-4.0.5 lib/lono/cfn/create.rb
lono-4.0.4 lib/lono/cfn/create.rb
lono-4.0.3 lib/lono/cfn/create.rb
lono-4.0.2 lib/lono/cfn/create.rb
lono-4.0.1 lib/lono/cfn/create.rb
lono-4.0.0 lib/lono/cfn/create.rb