Sha256: 17a626e227b0f6e8aca816b1a733e99961c2a0d2ff62c757d0151bfe259335e0

Contents?: true

Size: 1.47 KB

Versions: 16

Compression:

Stored size: 1.47 KB

Contents

# Implements:
#
#   definition
#   template_filename
#
module Jets::Resource::ChildStack
  class ApiResource < Base
    def initialize(*)
      super
      @page = @options[:page]
    end

    def definition
      {
        "api_resources_#{@page}" =>  {
          type: "AWS::CloudFormation::Stack",
          # depends_on: "ApiGateway", # CloudFormation seems to be smart enough
          properties: {
            template_url: template_url,
            parameters: parameters,
          }
        }
      }
    end

    def parameters
      params = {}
      # Since dont have all the info required.
      # Read the template back to find the parameters required.
      # Actually might be easier to rationalize this approach.
      template_path = Jets::Naming.api_resources_template_path(@page)
      template = Jets::Cfn::BuiltTemplate.get(template_path)
      template['Parameters'].keys.each do |p|
        case p
        when "RestApi"
          params[p] = "!GetAtt ApiGateway.Outputs.RestApi"
        when "RootResourceId"
          params[p] = "!GetAtt ApiGateway.Outputs.RootResourceId"
        else
          params[p] = "!GetAtt #{api_resource_page(p)}.Outputs.#{p}"
        end
      end
      params
    end

    def api_resource_page(parameter)
      Page.logical_id(parameter)
    end

    def outputs
      {
        logical_id => "!Ref #{logical_id}",
      }
    end

    def template_filename
      "#{Jets.config.project_namespace}-api-resources-#{@page}.yml"
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
jets-2.3.3 lib/jets/resource/child_stack/api_resource.rb
jets-2.3.2 lib/jets/resource/child_stack/api_resource.rb
jets-2.3.1 lib/jets/resource/child_stack/api_resource.rb
jets-2.3.0 lib/jets/resource/child_stack/api_resource.rb
jets-2.2.5 lib/jets/resource/child_stack/api_resource.rb
jets-2.2.4 lib/jets/resource/child_stack/api_resource.rb
jets-2.2.3 lib/jets/resource/child_stack/api_resource.rb
jets-2.2.2 lib/jets/resource/child_stack/api_resource.rb
jets-2.2.1 lib/jets/resource/child_stack/api_resource.rb
jets-2.2.0 lib/jets/resource/child_stack/api_resource.rb
jets-2.1.7 lib/jets/resource/child_stack/api_resource.rb
jets-2.1.6 lib/jets/resource/child_stack/api_resource.rb
jets-2.1.5 lib/jets/resource/child_stack/api_resource.rb
jets-2.1.4 lib/jets/resource/child_stack/api_resource.rb
jets-2.1.3 lib/jets/resource/child_stack/api_resource.rb
jets-2.1.2 lib/jets/resource/child_stack/api_resource.rb