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