Sha256: e6c2268f4f0c8bd72af8d66648938e066a7115a9131e696624e08942d26dd43b

Contents?: true

Size: 1.4 KB

Versions: 8

Compression:

Stored size: 1.4 KB

Contents

class Ufo::Cfn::Stack::Builder::Resources
  class Listener < Base
    def build
      {
        Type: "AWS::ElasticLoadBalancingV2::Listener",
        Condition: "CreateElbIsTrue",
        Properties: properties,
      }
    end

    def properties
      {
        DefaultActions: default_actions,
        LoadBalancerArn: {Ref: "Elb"},
        Port: port,
        Protocol: protocol,
      }
    end

    def protocol
      vars[:default_listener_protocol]
    end

    def port
      80
    end

    def default_actions
      elb = Ufo.config.elb
      default_actions = elb.default_actions # allow use to override for full control like redirection support
      return default_actions if default_actions

      redirect = elb.redirect
      if redirect.enabled
        [redirect_action(redirect)]
      else
        [default_action]
      end
    end

    def redirect_action(redirect)
      {
        Type: "redirect",
        RedirectConfig: {
          Protocol: redirect.protocol,
          StatusCode: "HTTP_#{redirect.code}", # HTTP_301 and HTTP_302 are valid
          Port: redirect.port,
        }
      }
    end

    def default_action
      {
        Type: "forward",
        TargetGroupArn: {
          "Fn::If": [
            "ElbTargetGroupIsBlank",
            {Ref: "TargetGroup"},   # UFO managed
            {Ref: "ElbTargetGroup"} # Managed by user outside of UFO
          ]
        }
      }
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ufo-6.3.9 lib/ufo/cfn/stack/builder/resources/listener.rb
ufo-6.3.8 lib/ufo/cfn/stack/builder/resources/listener.rb
ufo-6.3.7 lib/ufo/cfn/stack/builder/resources/listener.rb
ufo-6.3.6 lib/ufo/cfn/stack/builder/resources/listener.rb
ufo-6.3.5 lib/ufo/cfn/stack/builder/resources/listener.rb
ufo-6.3.4 lib/ufo/cfn/stack/builder/resources/listener.rb
ufo-6.3.3 lib/ufo/cfn/stack/builder/resources/listener.rb
ufo-6.3.2 lib/ufo/cfn/stack/builder/resources/listener.rb