class Dynamocli::AWS::Stack
Constants
- CLOUDFORMARTION
- DEPLOY_COMPLETED_KEY
- LOGGER
Attributes
cloudformation[R]
logger[R]
name[R]
original_template[R]
policy_body[R]
resources[R]
stack_on_aws[R]
table_name[R]
table_resource[R]
template_body[R]
template_without_table[R]
Public Class Methods
new(table_name:, table_resource:, cloudformation: nil, logger: nil)
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 17 def initialize(table_name:, table_resource:, cloudformation: nil, logger: nil) @table_name = table_name @table_resource = table_resource @cloudformation = cloudformation || CLOUDFORMARTION.new @logger = logger || LOGGER.new set_attributes_now_because_they_will_change end
Public Instance Methods
deploying?()
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 26 def deploying? current_status != DEPLOY_COMPLETED_KEY end
Private Instance Methods
current_status()
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 94 def current_status cloudformation.describe_stacks(stack_name: name)[0][0].stack_status end
parse_template(template)
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 84 def parse_template(template) JSON.parse(template) rescue JSON::ParserError YAML.load(template) end
set_attributes_now_because_they_will_change()
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 39 def set_attributes_now_because_they_will_change set_name set_stack_on_aws set_resources set_template_body set_original_template set_template_without_table set_policy_body end
set_name()
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 49 def set_name @name ||= table_resource[:stack_name] end
set_original_template()
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 65 def set_original_template @original_template ||= parse_template(template_body) end
set_policy_body()
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 90 def set_policy_body @policy_body ||= cloudformation.get_stack_policy(stack_name: name).stack_policy_body end
set_resources()
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 57 def set_resources @resources ||= cloudformation.describe_stack_resources(physical_resource_id: table_name).to_h end
set_stack_on_aws()
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 53 def set_stack_on_aws @stack_on_aws ||= cloudformation.describe_stacks(stack_name: name)[0][0] end
set_template_body()
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 61 def set_template_body @template_body ||= cloudformation.get_template(stack_name: name).to_h[:template_body] end
set_template_without_table()
click to toggle source
# File lib/dynamocli/aws/stack.rb, line 69 def set_template_without_table @template_without_table ||= parse_template(template_body).tap do |template_without_table| tables = original_template["Resources"].select { |_, v| v["Type"] == "AWS::DynamoDB::Table" } table = tables.find { |_, v| v["Properties"]["TableName"] == table_name } if tables.nil? logger.error("table #{table_name} not found in the #{@name} stack") exit(42) end logical_resource_id = table.first template_without_table["Resources"].delete(logical_resource_id) end end