Sha256: dbb2be09fee46430b9988bab8be4b48aa18a6a2d52171308179203738db4aa4c

Contents?: true

Size: 1.26 KB

Versions: 4

Compression:

Stored size: 1.26 KB

Contents

class Ufo::Cfn::Stack::Builder::Resources
  class ListenerSsl < Listener
    def build
      return unless vars[:create_listener_ssl]
      {
        Type: "AWS::ElasticLoadBalancingV2::Listener",
        Condition: "CreateElbIsTrue",
        Properties: properties,
      }
    end

    def properties
      props = super
      # CloudFormation has weird interface
      # Only one cert allowed at the AWS::ElasticLoadBalancingV2::Listener
      # https://stackoverflow.com/questions/54447250/how-to-set-multiple-certificates-for-awselasticloadbalancingv2listener
      props[:Certificates] = [certificates.first] # first one only
      props
    end

    def protocol
      vars[:default_listener_ssl_protocol]
    end

    def port
      Ufo.config.elb.ssl.port
    end

    # Do not use redirect settings. Only use by normal http listener
    def default_actions
      [default_action]
    end

    # nil on purpose
    def certificates
      ssl = Ufo.config.elb.ssl
      normalize(ssl.certificates) if ssl.certificates
    end

    def normalize(*certs)
      certs = certs.flatten.compact
      certs.map do |cert|
        if cert.is_a?(String)
          {CertificateArn: cert}
        else # Assume correct Hash structure
          cert
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ufo-6.3.13 lib/ufo/cfn/stack/builder/resources/listener_ssl.rb
ufo-6.3.12 lib/ufo/cfn/stack/builder/resources/listener_ssl.rb
ufo-6.3.11 lib/ufo/cfn/stack/builder/resources/listener_ssl.rb
ufo-6.3.10 lib/ufo/cfn/stack/builder/resources/listener_ssl.rb