Sha256: 8ff9e06d7990982d7121561ad396fb8f31c342f28219600ebdc664515f7171c4

Contents?: true

Size: 1.46 KB

Versions: 20

Compression:

Stored size: 1.46 KB

Contents

class Jets::Resource::ApiGateway::RestApi
  class LogicalId
    extend Memoist
    include Jets::AwsServices

    def get
      return default if ENV['JETS_BUILD_NO_INTERNET']
      return default unless stack_exists?(parent_stack_name) && api_gateway_exists?

      if changed?
        new_id
      else
        current
      end
    end

    def changed?
      change_detection = ChangeDetection.new
      change_detection.changed?
    end

    # Takes current logical id and increments the number that is appended to it.
    #
    # Examples:
    #
    #   RestApi => RestApi1
    #   RestApi1 => RestApi2
    #   RestApi2 => RestApi3
    #   RestApi7 => RestApi8
    def new_id
      regexp = /(\d+)/
      md = current.match(regexp)
      if md
        current.gsub(regexp,'') + (md[1].to_i + 1).to_s
      else
        current + "1"
      end
    end

    def current
      resources = cfn.describe_stack_resources(stack_name: api_gateway_stack_arn).stack_resources
      rest_api = resources.find { |r| r.resource_type == 'AWS::ApiGateway::RestApi' }
      rest_api.logical_resource_id
    end
    memoize :current

    def api_gateway_stack_arn
      stack = cfn.describe_stacks(stack_name: parent_stack_name).stacks.first
      lookup(stack[:outputs], "ApiGateway") # api_gateway_stack_arn
    end

    def api_gateway_exists?
      !!api_gateway_stack_arn
    end

    def parent_stack_name
      Jets::Naming.parent_stack_name
    end

    def default
      "RestApi"
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
jets-2.3.19 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.18 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.17 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.16 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.15 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.14 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.13 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.12 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.11 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.10 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.9 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.8 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.7 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.6 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.5 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.4 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.3 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.2 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.1 lib/jets/resource/api_gateway/rest_api/logical_id.rb
jets-2.3.0 lib/jets/resource/api_gateway/rest_api/logical_id.rb