Sha256: 33a8f788beb22410ad5414a5e08be6093445db7af10bfd5661b69cafc98cc1b4

Contents?: true

Size: 1.82 KB

Versions: 72

Compression:

Stored size: 1.82 KB

Contents

class 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
      return unless @options[:templates] || @options[:stack_type] != :minimal

      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::Naming.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

72 entries across 72 versions & 2 rubygems

Version Path
jets-1.9.7 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.9.6 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.9.5 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.9.4 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.9.3 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.9.2 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.9.1 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.9.0 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.14 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.13 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.12 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.11 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.10 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.9 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.8 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.7 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.6 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.5 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.4 lib/jets/cfn/builders/api_deployment_builder.rb
jets-1.8.3 lib/jets/cfn/builders/api_deployment_builder.rb