Sha256: aee7b1172485aba548d52c9ab3608dc369df48ab4e93fb6c0aa0b139fa31122f

Contents?: true

Size: 1.84 KB

Versions: 15

Compression:

Stored size: 1.84 KB

Contents

module Jets::Cfn::Resource::ApiGateway
  class Deployment < Jets::Cfn::Base
    def definition
      {
        deployment_logical_id => {
          Type: "AWS::ApiGateway::Deployment",
          Properties: {
            Description: "Version #{timestamp} deployed by jets",
            RestApiId: "!Ref #{RestApi.logical_id}",
            StageName: stage_name,
          }
        }
      }
    end

    def parameters
      {
        RestApi: "RestApi",
      }
    end

    def outputs(internal=false)
      rest_api = internal ? RestApi.internal_logical_id : "RestApi"
      {
        RestApiUrl: "!Sub 'https://${#{rest_api}}.execute-api.${AWS::Region}.amazonaws.com/#{stage_name}/'",
      }
    end

    def depends_on
      expression = "#{Jets::Names.templates_folder}/*_controller*"
      controller_logical_ids = []
      Dir.glob(expression).each do |path|
        next unless File.file?(path)

        controller_name = path.sub("#{Jets::Names.templates_folder}/", '').sub('.yml', '')
        # map the path to a camelized logical_id. Example:
        #   /tmp/jets/demo/templates/demo-dev-2-posts_controller.yml to
        #   PostsController
        controller_logical_id = controller_name.underscore.camelize

        controller_logical_ids << controller_logical_id
      end
      controller_logical_ids
    end

    # stage_name: dev, dev-1, dev-2, etc
    def stage_name
      self.class.stage_name
    end

    def self.stage_name
      # Stage name only allows a-zA-Z0-9_
      [Jets.short_env, Jets.extra].compact.join('_').gsub('-','_')
    end

    def timestamp
      self.class.timestamp
    end

    @@timestamp = nil
    def self.timestamp
      @@timestamp ||= Time.now.strftime("%Y%m%d%H%M%S")
    end

    def deployment_logical_id
      self.class.logical_id.underscore
    end

    def self.logical_id
      "ApiDeployment#{timestamp}"
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
jets-5.0.13 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.12 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.11 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.10 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.9 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.8 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.7 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.6 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.5 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.4 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.3 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.2 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.1 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.0 lib/jets/cfn/resource/api_gateway/deployment.rb
jets-5.0.0.beta1 lib/jets/cfn/resource/api_gateway/deployment.rb