class Kelbim::ELBWrapper::LoadBalancerCollection::LoadBalancer::ListenerCollection::Listener

Public Class Methods

new(listener, options) click to toggle source
# File lib/kelbim/wrapper/listener.rb, line 14
def initialize(listener, options)
  @listener = listener
  @options = options
end

Public Instance Methods

delete() click to toggle source
# File lib/kelbim/wrapper/listener.rb, line 74
def delete
  log(:info, 'Delete Listener', :red, log_id)

  related_policies = self.policies

  unless @options.dry_run
    @listener.delete
    @options.updated = true
  end

  unless @options.without_deleting_policy
    related_policies.each do |plcy|
      plcy.delete
    end
  end
end
eql?(dsl) click to toggle source
# File lib/kelbim/wrapper/listener.rb, line 23
def eql?(dsl)
  not has_difference_protocol_port?(dsl) and compare_server_certificate(dsl) and compare_ssl_certificate_id(dsl)
end
has_difference_protocol_port?(dsl) click to toggle source
# File lib/kelbim/wrapper/listener.rb, line 91
def has_difference_protocol_port?(dsl)
  not (
    @listener.protocol          == dsl.protocol          &&
    @listener.port              == dsl.port              &&
    @listener.instance_protocol == dsl.instance_protocol &&
    @listener.instance_port     == dsl.instance_port
  )
end
log_id() click to toggle source
# File lib/kelbim/wrapper/listener.rb, line 100
def log_id
  log_id = [[@listener.protocol, @listener.port], [@listener.instance_protocol, @listener.instance_port]].map {|i| i.inspect }.join(' => ')
  "#{@listener.load_balancer.vpc_id || :classic} > #{@listener.load_balancer.name} > #{log_id}"
end
policies() click to toggle source
# File lib/kelbim/wrapper/listener.rb, line 19
def policies
  PolicyCollection.new(@listener.policies, self, @options)
end
update(dsl) click to toggle source
# File lib/kelbim/wrapper/listener.rb, line 27
def update(dsl)
  log(:info, 'Update Listener', :green, log_id)

  compare_server_certificate(dsl) do |old_data, new_data|
    log(:info, "  server_certificate:", :green)
    log(:info, Kelbim::Utils.diff(old_data, new_data, :color => @options[:color], :indent => '    '), false)

    unless @options.dry_run
      ss = @options.iam.server_certificates[dsl.server_certificate]

      unless ss
        raise "Can't find ServerCertificate: #{ss_name} in #{log_id}"
      end

      @listener.server_certificate = ss
      @options.updated = true
    end
  end

  compare_ssl_certificate_id(dsl) do |old_data, new_data|
    log(:info, "  ssl_certificate_id:", :green)
    log(:info, Kelbim::Utils.diff(old_data, new_data, :color => @options[:color], :indent => '    '), false)

    unless @options.dry_run
      @listener.ssl_certificate_id = dsl.ssl_certificate_id
      @options.updated = true
    end
  end
end
update_policies(policy_list, old_policy_list) click to toggle source
# File lib/kelbim/wrapper/listener.rb, line 57
def update_policies(policy_list, old_policy_list)
  old_data = old_policy_list.map {|i| i.name }.sort
  new_data = policy_list.map {|i| i.name }.sort
  log(:info, 'Update Listener Policies', :green, log_id)
  log(:info, Kelbim::Utils.diff(old_data, new_data, :color => @options[:color], :indent => '    '), false)

  unless @options.dry_run
    @options.elb.client.set_load_balancer_policies_of_listener({
      :load_balancer_name => @listener.load_balancer.name,
      :load_balancer_port => @listener.port,
      :policy_names       => policy_list.map {|i| i.name },
    })

    @options.updated = true
  end
end

Private Instance Methods

compare_server_certificate(dsl) { |aws_server_certificate, server_certificate| ... } click to toggle source
# File lib/kelbim/wrapper/listener.rb, line 106
def compare_server_certificate(dsl)
  aws_server_certificate = @listener.server_certificate
  aws_server_certificate = aws_server_certificate.name if aws_server_certificate

  # XXX:
  if not aws_server_certificate.nil? and dsl.server_certificate.nil?
    return true
  end

  same = (aws_server_certificate == dsl.server_certificate)
  yield(aws_server_certificate, dsl.server_certificate) if !same && block_given?
  return same
end
compare_ssl_certificate_id(dsl) { |ssl_certificate_id, ssl_certificate_id| ... } click to toggle source
# File lib/kelbim/wrapper/listener.rb, line 120
def compare_ssl_certificate_id(dsl)
  # XXX:
  if not @listener.ssl_certificate_id.nil? and dsl.ssl_certificate_id.nil?
    return true
  end

  same = (@listener.ssl_certificate_id == dsl.ssl_certificate_id)
  yield(@listener.ssl_certificate_id, dsl.ssl_certificate_id) if !same && block_given?
  return same
end