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

Version Path
jets-5.0.13 lib/jets/stack/output/lookup.rb
jets-5.0.12 lib/jets/stack/output/lookup.rb
jets-5.0.11 lib/jets/stack/output/lookup.rb
jets-5.0.10 lib/jets/stack/output/lookup.rb
jets-5.0.9 lib/jets/stack/output/lookup.rb
jets-5.0.8 lib/jets/stack/output/lookup.rb
jets-5.0.7 lib/jets/stack/output/lookup.rb