Sha256: 2dc89eaf2f32e7d97b7b269cdf5c78571f63ab8455698351010fc43e73049851

Contents?: true

Size: 1.77 KB

Versions: 10

Compression:

Stored size: 1.77 KB

Contents

class Jets::Cfn::TemplateBuilders
  class BaseChildBuilder
    include Interface

    # The app_klass is can be a controller, job or anonymous function class.
    # IE: PostsController, HardJob
    def initialize(app_klass)
      @app_klass = app_klass
      @template = ActiveSupport::HashWithIndifferentAccess.new(Resources: {})
    end

    # template_path is an interface method for Interface module
    def template_path
      Jets::Naming.template_path(@app_klass)
    end

    def add_common_parameters
      add_parameter("IamRole", Description: "Iam Role that Lambda function uses.")
      add_parameter("S3Bucket", Description: "S3 Bucket for source code.")
    end

    def add_functions
      add_class_iam_policy if @app_klass.class_iam_policy
      @app_klass.tasks.each do |task|
        add_function(task)
        add_iam_policy(task) if task.iam_policy
      end
    end

    def add_function(task)
      # Examples:
      #   FunctionProperties::RubyBuilder
      #   FunctionProperties::PythonBuilder
      builder_class = "Jets::Cfn::TemplateBuilders::FunctionProperties::#{task.lang.to_s.classify}Builder".constantize
      builder = builder_class.new(task)
      logical_id = builder.map.logical_id
      add_resource(logical_id, "AWS::Lambda::Function", builder.properties)
    end

    def add_class_iam_policy
      map = Jets::Cfn::TemplateMappers::IamPolicy::ClassPolicyMapper.new(@app_klass)
      logical_id = map.logical_id
      properties = map.properties
      add_resource(logical_id, "AWS::IAM::Role", properties)
    end

    def add_iam_policy(task)
      map = Jets::Cfn::TemplateMappers::IamPolicy::FunctionPolicyMapper.new(task)
      logical_id = map.logical_id
      properties = map.properties
      add_resource(logical_id, "AWS::IAM::Role", properties)
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
jets-0.6.9 lib/jets/cfn/template_builders/base_child_builder.rb
jets-0.6.8 lib/jets/cfn/template_builders/base_child_builder.rb
jets-0.6.7 lib/jets/cfn/template_builders/base_child_builder.rb
jets-0.6.6 lib/jets/cfn/template_builders/base_child_builder.rb
jets-0.6.5 lib/jets/cfn/template_builders/base_child_builder.rb
jets-0.6.4 lib/jets/cfn/template_builders/base_child_builder.rb
jets-0.6.3 lib/jets/cfn/template_builders/base_child_builder.rb
jets-0.6.2 lib/jets/cfn/template_builders/base_child_builder.rb
jets-0.6.1 lib/jets/cfn/template_builders/base_child_builder.rb
jets-0.6.0 lib/jets/cfn/template_builders/base_child_builder.rb