Sha256: 6f73c19ae569244fa41033efb840accd67558536f6dcf0b60a01ddb5897614a5

Contents?: true

Size: 1.74 KB

Versions: 13

Compression:

Stored size: 1.74 KB

Contents

module Jets::Cfn::Builders
  class ApiDeploymentBuilder
    include Interface
    include Jets::AwsServices

    def initialize(options={})
      @options = options
      @template = ActiveSupport::HashWithIndifferentAccess.new(Resources: {})
    end

    # compose is an interface method
    def compose
      deployment = Jets::Resource::ApiGateway::Deployment.new
      add_resource(deployment)
      add_parameters(deployment.parameters)
      add_outputs(deployment.outputs)

      add_base_path_mapping
    end

    # Because Jets generates a new timestamped logical id for the API Deployment
    # resource it also creates a new root base path mapping and fails.  Additionally,
    # the base path mapping depends on the API Deploy for the stage name.
    #
    # We resolve this by using a custom resource that does an in-place update.
    #
    # Note, also tried to change the domain name of to something like demo-dev-[random].mydomain.com
    # but that does not work because the domain name has to match the route53 record exactly.
    #
    def add_base_path_mapping
      return unless Jets.custom_domain?

      function = Jets::Resource::ApiGateway::BasePath::Function.new
      add_resource(function)
      add_outputs(function.outputs)

      mapping = Jets::Resource::ApiGateway::BasePath::Mapping.new
      add_resource(mapping)
      add_outputs(mapping.outputs)

      iam_role = Jets::Resource::ApiGateway::BasePath::Role.new
      add_resource(iam_role)
      add_outputs(iam_role.outputs)
    end

    # template_path is an interface method
    def template_path
      Jets::Names.api_deployment_template_path
    end

    # do not bother writing a template if routes are empty
    def write
      super unless Jets::Router.routes.empty?
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
jets-4.0.12 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.11 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.10 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.9 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.8 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.7 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.6 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.5 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.4 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.3 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.2 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.1 lib/jets/cfn/builders/api_deployment_builder.rb
jets-4.0.0 lib/jets/cfn/builders/api_deployment_builder.rb