module StackMaster
Constants
- DEBUG_DEFAULT
- NON_INTERACTIVE_DEFAULT
- QUIET_DEFAULT
- SKIP_ACCOUNT_CHECK_DEFAULT
- VERSION
Attributes
non_interactive_answer[RW]
Public Class Methods
new(config, base_dir)
click to toggle source
# File lib/stack_master/config.rb, line 39 def initialize(config, base_dir) @config = config @base_dir = base_dir @template_dir = config.fetch('template_dir', nil) @parameters_dir = config.fetch('parameters_dir', nil) @stack_defaults = config.fetch('stack_defaults', {}) @region_aliases = Utils.underscore_keys_to_hyphen(config.fetch('region_aliases', {})) @region_to_aliases = @region_aliases.inject({}) do |hash, (key, value)| hash[value] ||= [] hash[value] << key hash end @region_defaults = normalise_region_defaults(config.fetch('region_defaults', {})) @stacks = [] load_template_compilers(config) load_config end
Public Instance Methods
base_dir()
click to toggle source
# File lib/stack_master.rb, line 166 def base_dir File.expand_path(File.join(File.dirname(__FILE__), "..")) end
cloud_formation_driver()
click to toggle source
# File lib/stack_master.rb, line 170 def cloud_formation_driver @cloud_formation_driver ||= AwsDriver::CloudFormation.new end
cloud_formation_driver=(value)
click to toggle source
# File lib/stack_master.rb, line 174 def cloud_formation_driver=(value) @cloud_formation_driver = value end
colorize(text, color)
click to toggle source
# File lib/stack_master.rb, line 206 def colorize(text, color) if colorize? Rainbow(text).color(color) else text end end
colorize?()
click to toggle source
# File lib/stack_master.rb, line 214 def colorize? ENV.fetch('COLORIZE') { 'true' } == 'true' end
debug(message)
click to toggle source
# File lib/stack_master.rb, line 135 def debug(message) return unless debug? stderr.puts Rainbow("[DEBUG] #{message}").color(:green) end
debug!()
click to toggle source
# File lib/stack_master.rb, line 126 def debug! @debug = true end
debug?()
click to toggle source
# File lib/stack_master.rb, line 131 def debug? @debug end
filter(region = nil, stack_name = nil)
click to toggle source
# File lib/stack_master/config.rb, line 57 def filter(region = nil, stack_name = nil) @stacks.select do |s| (region.blank? || s.region == region || s.region == region.gsub('_', '-')) && (stack_name.blank? || s.stack_name == stack_name || s.stack_name == stack_name.gsub('_', '-')) end end
find_stack(region, stack_name)
click to toggle source
# File lib/stack_master/config.rb, line 64 def find_stack(region, stack_name) filter(region, stack_name).first end
interactive?()
click to toggle source
# File lib/stack_master.rb, line 113 def interactive? !non_interactive? end
non_interactive!()
click to toggle source
# File lib/stack_master.rb, line 122 def non_interactive! @non_interactive = true end
non_interactive?()
click to toggle source
# File lib/stack_master.rb, line 117 def non_interactive? @non_interactive end
quiet!()
click to toggle source
# File lib/stack_master.rb, line 140 def quiet! @quiet = true end
quiet?()
click to toggle source
# File lib/stack_master.rb, line 145 def quiet? @quiet end
reset_flags()
click to toggle source
# File lib/stack_master.rb, line 149 def reset_flags @quiet = QUIET_DEFAULT @skip_account_check = SKIP_ACCOUNT_CHECK_DEFAULT end
s3_driver()
click to toggle source
# File lib/stack_master.rb, line 178 def s3_driver @s3_driver ||= AwsDriver::S3.new end
s3_driver=(value)
click to toggle source
# File lib/stack_master.rb, line 182 def s3_driver=(value) @s3_driver = value end
skip_account_check!()
click to toggle source
# File lib/stack_master.rb, line 154 def skip_account_check! @skip_account_check = true end
skip_account_check?()
click to toggle source
# File lib/stack_master.rb, line 159 def skip_account_check? @skip_account_check end
stderr()
click to toggle source
# File lib/stack_master.rb, line 198 def stderr @stderr || $stderr end
stderr=(io)
click to toggle source
# File lib/stack_master.rb, line 202 def stderr=(io) @stderr = io end
stdin()
click to toggle source
# File lib/stack_master.rb, line 194 def stdin $stdin end
stdout()
click to toggle source
# File lib/stack_master.rb, line 186 def stdout @stdout || $stdout end
stdout=(io)
click to toggle source
# File lib/stack_master.rb, line 190 def stdout=(io) @stdout = io end
unalias_region(region)
click to toggle source
# File lib/stack_master/config.rb, line 68 def unalias_region(region) @region_aliases.fetch(region) { region } end
Private Instance Methods
build_stack_defaults(region)
click to toggle source
# File lib/stack_master/config.rb, line 129 def build_stack_defaults(region) region_defaults = @region_defaults.fetch(region, {}).deep_dup @stack_defaults.deep_dup.deeper_merge(region_defaults) end
default_template_compilers()
click to toggle source
# File lib/stack_master/config.rb, line 89 def default_template_compilers { rb: :sparkle_formation, json: :json, yml: :yaml, yaml: :yaml, erb: :yaml_erb, } end
load_config()
click to toggle source
# File lib/stack_master/config.rb, line 99 def load_config unaliased_stacks = resolve_region_aliases(@config.fetch('stacks')) load_stacks(unaliased_stacks) end
load_stacks(stacks)
click to toggle source
# File lib/stack_master/config.rb, line 111 def load_stacks(stacks) stacks.each do |region, stacks_for_region| region = Utils.underscore_to_hyphen(region) stacks_for_region.each do |stack_name, attributes| stack_name = Utils.underscore_to_hyphen(stack_name) stack_attributes = build_stack_defaults(region).deeper_merge!(attributes).merge( 'region' => region, 'stack_name' => stack_name, 'base_dir' => @base_dir, 'template_dir' => @template_dir, 'parameters_dir' => @parameters_dir, 'additional_parameter_lookup_dirs' => @region_to_aliases[region]) stack_attributes['allowed_accounts'] = attributes['allowed_accounts'] if attributes['allowed_accounts'] @stacks << StackDefinition.new(stack_attributes) end end end
load_template_compilers(config)
click to toggle source
# File lib/stack_master/config.rb, line 73 def load_template_compilers(config) @template_compilers = {} populate_template_compilers(config.fetch('template_compilers', {})) merge_defaults_to_user_defined_compilers end
merge_defaults_to_user_defined_compilers()
click to toggle source
# File lib/stack_master/config.rb, line 79 def merge_defaults_to_user_defined_compilers @template_compilers = default_template_compilers.merge(@template_compilers) end
normalise_region_defaults(region_defaults)
click to toggle source
# File lib/stack_master/config.rb, line 134 def normalise_region_defaults(region_defaults) region_defaults.inject({}) do |normalised_aliases, (region_or_alias, value)| region = unalias_region(region_or_alias) normalised_aliases[Utils.underscore_to_hyphen(region)] = value normalised_aliases end end
populate_template_compilers(user_defined_compilers)
click to toggle source
# File lib/stack_master/config.rb, line 83 def populate_template_compilers user_defined_compilers user_defined_compilers.each do |key, val| @template_compilers[key.to_sym] = val.to_sym end end
resolve_region_aliases(stacks)
click to toggle source
# File lib/stack_master/config.rb, line 104 def resolve_region_aliases(stacks) stacks.inject({}) do |hash, (region, attributes)| hash[unalias_region(region)] = attributes hash end end