class Cloudspin::Stack::Rake::StackTask

Attributes

configuration_files[R]
environment[R]

Public Class Methods

new( environment = nil, definition_location: nil, base_folder: '.', configuration_files: nil ) click to toggle source
# File lib/cloudspin/stack/rake/stack_task.rb, line 11
def initialize(
    environment = nil,
    definition_location: nil,
    base_folder: '.',
    configuration_files: nil
)
  @environment = environment
  @base_folder = base_folder
  set_configuration_files(configuration_files)

  @definition_location = definition_location
  define
end

Public Instance Methods

default_configuration_files() click to toggle source
# File lib/cloudspin/stack/rake/stack_task.rb, line 41
def default_configuration_files
  [
    "#{@base_folder}/stack-instance-defaults.yaml",
    "#{@base_folder}/stack-instance-local.yaml"
  ]
end
define() click to toggle source
# File lib/cloudspin/stack/rake/stack_task.rb, line 56
def define

  desc "Create or update stack instance"
  task :up do
    puts terraform_runner.init_dry
    puts terraform_runner.up_dry
    instance.prepare
    puts terraform_runner.up
    instance.after
  end

  desc "Plan changes to stack instance"
  task :plan do
    puts terraform_runner.init_dry
    puts terraform_runner.plan_dry
    instance.prepare
    puts terraform_runner.plan
    instance.after
  end

  desc "Show command line to be run for stack instance"
  task :dry do
    puts terraform_runner.init_dry
    puts terraform_runner.up_dry
  end

  desc "Destroy stack instance"
  task :down do
    puts terraform_runner.init_dry
    puts terraform_runner.down_dry
    instance.prepare
    puts terraform_runner.down
    instance.after
  end

  task :refresh do
    instance.prepare
    puts terraform_runner.refresh
  end
end
environment_config_file() click to toggle source
# File lib/cloudspin/stack/rake/stack_task.rb, line 48
def environment_config_file
  "#{@base_folder}/environments/stack-instance-#{@environment}.yaml"
end
full_path_of(supplied_path) click to toggle source
# File lib/cloudspin/stack/rake/stack_task.rb, line 52
def full_path_of(supplied_path)
  Pathname.new(supplied_path).realdirpath.to_s
end
instance() click to toggle source
# File lib/cloudspin/stack/rake/stack_task.rb, line 97
def instance
  @instance ||= Cloudspin::Stack::Instance.from_folder(
    @configuration_files,
    definition_location: @definition_location,
    base_folder: @base_folder,
    base_working_folder: "#{@base_folder}/work"
  )
end
set_configuration_files(additional_configuration_files) click to toggle source
# File lib/cloudspin/stack/rake/stack_task.rb, line 25
def set_configuration_files(additional_configuration_files)
  @configuration_files = (the_usual_configuration_files << additional_configuration_files).flatten.compact
end
terraform_runner() click to toggle source
# File lib/cloudspin/stack/rake/stack_task.rb, line 106
def terraform_runner
  @terraform_runner ||= Cloudspin::Stack::Terraform.new(
    working_folder: instance.working_folder,
    terraform_variables: instance.terraform_variables,
    terraform_init_arguments: instance.terraform_init_arguments,
    terraform_command_arguments: instance.terraform_command_arguments
  )
end
the_usual_configuration_files() click to toggle source
# File lib/cloudspin/stack/rake/stack_task.rb, line 29
def the_usual_configuration_files
  file_list = default_configuration_files
  if @environment
    if File.exists? full_path_of(environment_config_file)
      file_list << environment_config_file
    else
      raise "Missing configuration file for environment #{@environment} (#{environment_config_file})"
    end
  end
  file_list
end