class CloudFormer::Template
Attributes
conditions[R]
mappings[R]
outputs[R]
parameters[R]
resources[R]
Public Class Methods
new()
click to toggle source
# File lib/cloud_former/template.rb, line 9 def initialize @resources = [] @parameters = [] @outputs = [] @conditions = [] @mappings = {} end
Public Instance Methods
add_condition(condition)
click to toggle source
# File lib/cloud_former/template.rb, line 53 def add_condition(condition) raise "Overwriting condition with name #{condition.get_name}" if @conditions.any? { |c| c.get_name == condition.get_name } @conditions << condition end
add_mapping(name, hash)
click to toggle source
# File lib/cloud_former/template.rb, line 64 def add_mapping(name, hash) @mappings[name] = hash end
add_output(key, value)
click to toggle source
# File lib/cloud_former/template.rb, line 49 def add_output(key, value) @outputs << { key: key, value: value } end
add_parameter(parameter)
click to toggle source
# File lib/cloud_former/template.rb, line 17 def add_parameter(parameter) raise "Overwriting parameter with name #{parameter.get_name}" if @parameters.any? { |p| p.get_name == parameter.get_name } @parameters << parameter end
add_resource(*args, &block)
click to toggle source
# File lib/cloud_former/template.rb, line 28 def add_resource(*args, &block) if args.size == 1 resource = args.first elsif args.size == 2 type, name = *args klass = CloudFormer.type_to_class(type) resource = klass.new(name, &block) else raise ArgumentErrror, "wrong number of args (#{args.size} for 1..2)" end raise "Overwriting resource with name #{resource.get_name}" if @resources.any? { |r| r.get_name == resource.get_name } @resources << resource resource end
condition(name)
click to toggle source
# File lib/cloud_former/template.rb, line 58 def condition(name) cond = @conditions.find { |c| c.get_name == name } raise "Condition #{name} not found" unless cond cond end
dump_json()
click to toggle source
# File lib/cloud_former/template.rb, line 68 def dump_json res = { 'AWSTemplateFormatVersion' => '2010-09-09' } if @parameters.any? parameter_res = {} @parameters.each do |param| parameter_res[param.get_name] = param.dump_json end res['Parameters'] = parameter_res end if @conditions.any? condition_res = {} @conditions.each do |condition| condition_res[condition.get_name] = condition.dump_json end res['Conditions'] = condition_res end if @mappings.any? res['Mappings'] = @mappings end if @resources.any? resource_res = {} @resources.each do |resource| resource.resource_tree.flatten.each do |r| resource_res[r.get_name] = r.dump_json end end res['Resources'] = resource_res end if @outputs.any? output_res = {} @outputs.each do |output| if output[:value].is_a?(Resource) || output[:value].is_a?(Parameter) output_res[output[:key]] = { 'Value' => { 'Ref' => output[:value].get_name } } elsif output[:value].is_a?(Function) output_res[output[:key]] = { 'Value' => output[:value].dump_json } else output_res[output[:key]] = { 'Value' => output[:value] } end end res['Outputs'] = output_res end res end
parameter(name)
click to toggle source
# File lib/cloud_former/template.rb, line 22 def parameter(name) param = @parameters.find { |p| p.get_name == name } raise "Parameter #{name} not found" unless param param end
resource(name)
click to toggle source
# File lib/cloud_former/template.rb, line 43 def resource(name) res = @resources.find { |r| r.get_name == name } raise "Resource #{name} not found" unless res res end