Sha256: f778e8861f5b6cb58d7dfc468babeef11c7d52dbebf8259dad7805c7023d564e

Contents?: true

Size: 1.82 KB

Versions: 15

Compression:

Stored size: 1.82 KB

Contents

module Jets::Cfn::Resource::One
  class Function < Jets::Cfn::Resource::Lambda::Function
    include Jets::Cfn::Resource::Lambda::Function::Environment

    # override to use the same function name for all controllers
    def initialize
    end

    # override
    def function_logical_id
      "JetsControllerLambdaFunction"
    end

    # override
    def combined_properties
      props = env_properties
        .deep_merge(global_properties)
        .deep_merge(application_controller_properties)
      finalize_properties!(props)
    end

    def application_controller_properties
      klass = ApplicationController
      return {} unless klass.build_class_iam?

      class_properties = lookup_class_properties(klass)
      iam_policy = Jets::Cfn::Resource::Iam::ClassRole.new(klass)
      class_properties[:Role] = "!GetAtt #{iam_policy.logical_id}.Arn"
      camelize(class_properties)
    end

    # Properties managed by Jets merged with finality.
    def finalize_properties!(props)
      handler = "handlers/controller.lambda_handler"
      runtime = get_runtime(props)
      description = "Jets Lambda function for all controllers"
      managed = {
        Handler: handler,
        Runtime: runtime,
        Description: description,
      }
      managed[:FunctionName] = function_name if function_name
      layers = get_layers(runtime)
      managed[:Layers] = layers if layers
      props.merge!(managed)
    end

    # override
    def get_runtime(props)
      props[:Runtime] || Jets.ruby_runtime
    end

    # Examples:
    #   "#{Jets.project_namespace}-sleep_job-perform"
    #   "demo-dev-sleep_job-perform"
    def function_name
      return if ENV['JETS_RESET'] # reset mode, let CloudFormation manage the function name
      "#{Jets.project_namespace}-controller"
    end

    # override
    def replacements
      {}
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

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