Sha256: 9a7d18ed57d93c56608648d92beb023cbe068044e142029151f061a6e1253ea5
Contents?: true
Size: 1.01 KB
Versions: 7
Compression:
Stored size: 1.01 KB
Contents
class Jets::Stack::Output class Lookup include Jets::AwsServices def initialize(stack_subclass) @stack_subclass = stack_subclass end @@cache = {} def output(logical_id) cache_key = "#{@stack_subclass}-#{logical_id}" return @@cache[cache_key] if @@cache[cache_key] child_stack_id = @stack_subclass.to_s.camelize stack_arn = shared_stack_arn(child_stack_id) resp = cfn.describe_stacks(stack_name: stack_arn) child = resp.stacks.first return unless child @@cache[cache_key] = output_value(child, logical_id) end # Shared child stack arn def shared_stack_arn(logical_id) parent_stack = Jets.project_namespace resp = cfn.describe_stacks(stack_name: parent_stack) parent = resp.stacks.first output_value(parent, logical_id) end def output_value(stack, key) key = key.to_s.camelize output = stack.outputs.find do |o| o.output_key == key end output&.output_value end end end
Version data entries
7 entries across 7 versions & 1 rubygems