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
|