class Kelbim::DSL::EC2::LoadBalancer::Listeners

Public Class Methods

new(context, load_balancer, &block) click to toggle source
# File lib/kelbim/dsl/listeners.rb, line 9
def initialize(context, load_balancer, &block)
  @error_identifier = "LoadBalancer `#{load_balancer}`"
  @context = context.dup
  @result = {}
  instance_eval(&block)
end

Public Instance Methods

result() click to toggle source
# File lib/kelbim/dsl/listeners.rb, line 16
def result
  required(:listener, @result)

  @result.map do |protocol_ports, listener|
    protocol, port, instance_protocol, instance_port = protocol_ports.first.flatten

    OpenStruct.new({
      :protocol           => protocol,
      :port               => port,
      :instance_protocol  => instance_protocol,
      :instance_port      => instance_port,
      :server_certificate => listener.server_certificate,
      :policies           => listener.policies,
      :ssl_certificate_id => listener.ssl_certificate_id,
    })
  end
end

Private Instance Methods

listener(protocol_ports, &block) click to toggle source
# File lib/kelbim/dsl/listeners.rb, line 35
def listener(protocol_ports, &block)
  expected_type(protocol_ports, Hash)
  expected_length(protocol_ports, 1)

  block = proc {} unless block

  protocol_ports.first.each do |protocol_port|
    protocol, port = protocol_port
    expected_type(protocol_port, Array)
    expected_length(protocol_port, 2)
    expected_value(protocol, :http, :https, :tcp, :ssl)
    expected_type(port, Integer)
  end

  @result[protocol_ports] = Listener.new(@context, @load_balancer, protocol_ports, &block).result
end