class Terraform::StackElement
Defines a single terraform stack element, subclass for any element defined in terraform DSL
Attributes
fields[R]
Public Class Methods
new(stack_module, &block)
click to toggle source
# File lib/terraform_dsl/stack_element.rb, line 9 def initialize(stack_module, &block) @module = stack_module @fields = {} instance_eval(&block) end
Private Instance Methods
add_field(symbol, value)
click to toggle source
# File lib/terraform_dsl/stack_element.rb, line 51 def add_field(symbol, value) existing = @fields[symbol] if existing # If it's already an array, just push to it @fields[symbol] = [existing] unless existing.is_a?(Array) @fields[symbol] << value else @fields[symbol] = value end end
get(variable_name)
click to toggle source
Get the runtime value of a variable
# File lib/terraform_dsl/stack_element.rb, line 32 def get(variable_name) @module.get(variable_name) end
id_of(resource_type, resource_name)
click to toggle source
Shorthand to interpolate the ID of another resource
# File lib/terraform_dsl/stack_element.rb, line 47 def id_of(resource_type, resource_name) value_of(resource_type, resource_name, :id) end
method_missing(method_name, *args, &block)
click to toggle source
Allows resource attributes to be specified with a nice syntax If the method is implemented, it will be treated as a nested resource
# File lib/terraform_dsl/stack_element.rb, line 19 def method_missing(method_name, *args, &block) symbol = method_name.to_sym if args.length == 1 if args[0].nil? fail "Passed nil to '#{method_name}'. Generally disallowed, subclass StackElement if you need this." end add_field(symbol, args[0]) else add_field(symbol, Terraform::StackElement.new(@module, &block).fields) end end
value_of(resource_type, resource_name, value_type)
click to toggle source
Syntax to handle interpolation of resource variables
# File lib/terraform_dsl/stack_element.rb, line 42 def value_of(resource_type, resource_name, value_type) "${#{resource_type}.#{resource_name}.#{value_type}}" end
var(variable_name)
click to toggle source
Reference a variable
# File lib/terraform_dsl/stack_element.rb, line 37 def var(variable_name) "${var.#{variable_name}}" end