Method: StackMaster::Stack.find

Defined in:
lib/stack_master/stack.rb

.find(region, stack_name) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/stack_master/stack.rb', line 35

def self.find(region, stack_name)
  cf = StackMaster.cloud_formation_driver
  cf_stack = cf.describe_stacks(stack_name: stack_name).stacks.first
  return unless cf_stack
  parameters = cf_stack.parameters.inject({}) do |params_hash, param_struct|
    params_hash[param_struct.parameter_key] = param_struct.parameter_value
    params_hash
  end
  template_body ||= cf.get_template(stack_name: stack_name).template_body
  template_format = TemplateUtils.identify_template_format(template_body)
  stack_policy_body ||= cf.get_stack_policy(stack_name: stack_name).stack_policy_body
  outputs = cf_stack.outputs

  new(region: region,
      stack_name: stack_name,
      stack_id: cf_stack.stack_id,
      parameters: parameters,
      template_body: template_body,
      template_format: template_format,
      outputs: outputs,
      notification_arns: cf_stack.notification_arns,
      stack_policy_body: stack_policy_body,
      stack_status: cf_stack.stack_status)
rescue Aws::CloudFormation::Errors::ValidationError
  nil
end