class Stacker::Stack::Parameters

Public Instance Methods

dependencies() click to toggle source
# File lib/stacker/stack/parameters.rb, line 58
def dependencies
  parameters.map(&:last).map(&:dependencies).flatten
end
diff(*args) click to toggle source
# File lib/stacker/stack/parameters.rb, line 63
def diff *args
  Differ.yaml_diff Hash[resolved.sort], Hash[remote.sort], *args
end
local() click to toggle source

template defaults merged with region and stack-specific overrides

# File lib/stacker/stack/parameters.rb, line 22
def local
  region_defaults = stack.region.defaults.fetch 'parameters', {}

  template_defaults = Hash[
    template_definitions.select { |_, opts|
      opts.key?('Default')
    }.map { |name, opts|
      [name, opts['Default']]
    }
  ]

  available = template_defaults.merge(
    region_defaults
  ).merge(
    stack.options.fetch 'parameters', {}
  )

  available.slice(*template_definitions.keys)
end
missing() click to toggle source
# File lib/stacker/stack/parameters.rb, line 42
def missing
  template_definitions.keys - local.keys
end
region_defaults() click to toggle source
# File lib/stacker/stack/parameters.rb, line 17
def region_defaults
  stack.region.defaults.fetch 'parameters', {}
end
remote() click to toggle source
# File lib/stacker/stack/parameters.rb, line 46
def remote
  Hash[client.parameters.map do |p|
         [p.parameter_key, p.parameter_value]
       end]
end
resolved() click to toggle source
# File lib/stacker/stack/parameters.rb, line 53
def resolved
  Hash[parameters.map { |k, v| [ k, v.resolved ] }]
end
template_definitions() click to toggle source

everything required by the template

# File lib/stacker/stack/parameters.rb, line 13
def template_definitions
  stack.template.local.fetch 'Parameters', {}
end

Private Instance Methods

parameters() click to toggle source
# File lib/stacker/stack/parameters.rb, line 70
def parameters
  local.map { |k, v| [k, Parameter.new(v, stack.region)] }
end