Sha256: 7f586cfcdb3364e71cc5549f937f9d1b9f35ff5bd1515633cdc47eb93fd32928
Contents?: true
Size: 1.19 KB
Versions: 8
Compression:
Stored size: 1.19 KB
Contents
require 'bora/cfn/stack' class Bora module Resolver class Cfn StackDoesNotExist = Class.new(StandardError) ValueNotFound = Class.new(StandardError) InvalidParameter = Class.new(StandardError) def initialize(stack) @stack = stack @stack_cache = {} end def resolve(uri) stack_name = uri.host section, name = uri.path.split("/").reject(&:empty?) if !stack_name || !section || !name || section != 'outputs' raise InvalidParameter, "Invalid parameter substitution: #{uri}" end stack_name, uri_region = stack_name.split(".") region = uri_region || @stack.region param_stack = @stack_cache[stack_name] || Bora::Cfn::Stack.new(stack_name, region) if !param_stack.exists? raise StackDoesNotExist, "Output #{name} not found in stack #{stack_name} as the stack does not exist" end outputs = param_stack.outputs || [] matching_output = outputs.find { |output| output.key == name } if !matching_output raise ValueNotFound, "Output #{name} not found in stack #{stack_name}" end matching_output.value end end end end
Version data entries
8 entries across 8 versions & 1 rubygems