class Stacker::Stack::Parameter
A Parameter
represents a stack parameter. A parameter can be either a literal value (e.g. a string, number, or array) or a reference, otherwise known as a dependency. References parameter values are represented as hashes with a single key indicating the reference type. There is one exception to this rule; references to stack outputs are expressed as hashes with two keys, “Stack” and “Output”.
Attributes
region[R]
value[R]
Public Class Methods
new(value, region)
click to toggle source
# File lib/stacker/stack/parameter.rb, line 20 def initialize value, region @region = region @value = if value.is_a?(Array) value.map { |v| Parameter.new v, region } else value end end
Public Instance Methods
==(parameter)
click to toggle source
# File lib/stacker/stack/parameter.rb, line 66 def ==(parameter) parameter.value == value && parameter.region == region end
dependencies()
click to toggle source
# File lib/stacker/stack/parameter.rb, line 33 def dependencies if dependency? [ to_s ] elsif value.is_a?(Array) value.map(&:dependencies).flatten else [ ] end end
dependency?()
click to toggle source
# File lib/stacker/stack/parameter.rb, line 29 def dependency? value.is_a?(Hash) end
resolved()
click to toggle source
# File lib/stacker/stack/parameter.rb, line 43 def resolved if dependency? begin resolver.resolve rescue => err raise ParameterResolutionError.new value, err end elsif value.is_a?(Array) value.map(&:resolved).join ',' else value end end
to_s()
click to toggle source
# File lib/stacker/stack/parameter.rb, line 58 def to_s if dependency? value.values.map(&:to_s).sort.join('.') else value.to_s end end
Private Instance Methods
reference_value()
click to toggle source
# File lib/stacker/stack/parameter.rb, line 88 def reference_value if stack_output? value else value.values.first end end
resolver()
click to toggle source
# File lib/stacker/stack/parameter.rb, line 96 def resolver resolver_class_name.constantize.new reference_value, region end
resolver_class_name()
click to toggle source
# File lib/stacker/stack/parameter.rb, line 76 def resolver_class_name type = if stack_output? 'StackOutput' elsif value.keys.size == 1 value.keys.first else raise ReferenceError.new 'Too many top-level keys in reference value.' end "Stacker::Resolvers::#{type}Resolver" end
stack_output?()
click to toggle source
# File lib/stacker/stack/parameter.rb, line 72 def stack_output? dependency? && value['Stack'] && value['Output'] end