lib/convection/model/template.rb in convection-2.1.2 vs lib/convection/model/template.rb in convection-2.2.0
- old
+ new
@@ -249,11 +249,11 @@
group.run_definition
group.execute
end
end
- def render(stack_ = nil)
+ def render(stack_ = nil, retain: false)
## Instantiate a new template with the definition block and an other stack
return clone(stack_).render unless stack_.nil?
execute ## Process the template document
@@ -261,11 +261,16 @@
'AWSTemplateFormatVersion' => version,
'Description' => description,
'Parameters' => parameters.map(&:render),
'Mappings' => mappings.map(&:render),
'Conditions' => conditions.map(&:render),
- 'Resources' => all_resources.map(&:render),
+ 'Resources' => all_resources.map do |resource|
+ if retain && resource.deletion_policy.nil?
+ resource.deletion_policy('Retain')
+ end
+ resource.render
+ end,
'Outputs' => outputs.map(&:render),
'Metadata' => metadata.map(&:render)
}
end
@@ -273,15 +278,15 @@
resource_collections.reduce(resources) do |result, (_name, resource_collection)|
result.merge(resource_collection.resources)
end
end
- def diff(other, stack_ = nil)
- render(stack_).diff(other).map { |diff| Diff.new(diff[0], *diff[1]) }
+ def diff(other, stack_ = nil, retain: false)
+ render(stack_, retain: retain).diff(other).map { |diff| Diff.new(diff[0], *diff[1]) }
end
- def to_json(stack_ = nil, pretty = false)
- rendered_stack = render(stack_)
+ def to_json(stack_ = nil, pretty = false, retain: false)
+ rendered_stack = render(stack_, retain: retain)
validate(rendered_stack)
return JSON.generate(rendered_stack) unless pretty
JSON.pretty_generate(rendered_stack)
end