Class: Stacker::Stack::Parameters

Inherits:
Component
  • Object
show all
Extended by:
Memoist
Defined in:
lib/stacker/stack/parameters.rb

Instance Attribute Summary

Attributes inherited from Component

#stack

Instance Method Summary collapse

Methods inherited from Component

#initialize

Constructor Details

This class inherits a constructor from Stacker::Stack::Component

Instance Method Details

#diff(*args) ⇒ Object



61
62
63
# File 'lib/stacker/stack/parameters.rb', line 61

def diff *args
  Differ.yaml_diff Hash[resolved.sort], Hash[remote.sort], *args
end

#localObject

template defaults merged with region and stack-specific overrides



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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

#missingObject



42
43
44
# File 'lib/stacker/stack/parameters.rb', line 42

def missing
  template_definitions.keys - local.keys
end

#region_defaultsObject



17
18
19
# File 'lib/stacker/stack/parameters.rb', line 17

def region_defaults
  stack.region.defaults.fetch 'parameters', {}
end

#remoteObject



46
47
48
# File 'lib/stacker/stack/parameters.rb', line 46

def remote
  client.parameters
end

#resolvedObject



51
52
53
# File 'lib/stacker/stack/parameters.rb', line 51

def resolved
  resolver.resolved
end

#resolverObject



56
57
58
# File 'lib/stacker/stack/parameters.rb', line 56

def resolver
  Resolver.new stack.region, local
end

#template_definitionsObject

everything required by the template



13
14
15
# File 'lib/stacker/stack/parameters.rb', line 13

def template_definitions
  stack.template.local.fetch 'Parameters', {}
end