Class: Kelbim::ELBWrapper::LoadBalancerCollection::LoadBalancer::ListenerCollection

Inherits:
Object
  • Object
show all
Includes:
Logger::ClientHelper
Defined in:
lib/kelbim/wrapper/policy.rb,
lib/kelbim/wrapper/listener.rb,
lib/kelbim/wrapper/policy-collection.rb,
lib/kelbim/wrapper/listener-collection.rb

Defined Under Namespace

Classes: Listener

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Logger::ClientHelper

#log

Constructor Details

#initialize(listeners, load_balancer, options) ⇒ ListenerCollection

of class methods



53
54
55
56
57
# File 'lib/kelbim/wrapper/listener-collection.rb', line 53

def initialize(listeners, load_balancer, options)
  @listeners = listeners
  @load_balancer = load_balancer
  @options = options
end

Class Method Details

.create_listener_options(dsl, iam) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/kelbim/wrapper/listener-collection.rb', line 31

def create_listener_options(dsl, iam)
  lstnr_opts = {
    :protocol          => dsl.protocol,
    :port              => dsl.port,
    :instance_protocol => dsl.instance_protocol,
    :instance_port     => dsl.instance_port,
  }

  if (ss_name = dsl.server_certificate)
    ss = iam.server_certificates[ss_name]

    unless ss
      raise "Can't find ServerCertificate: #{ss_name} in #{load_balancer.vpc_id || :classic} > #{@load_balancer.name}"
    end

    lstnr_opts[:server_certificate] = ss.arn
  end

  return lstnr_opts
end

.create_mock_listener(dsl, load_balancer) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/kelbim/wrapper/listener-collection.rb', line 14

def create_mock_listener(dsl, load_balancer)
  lstnr = OpenStruct.new({
    :protocol          => dsl.protocol,
    :port              => dsl.port,
    :instance_protocol => dsl.instance_protocol,
    :instance_port     => dsl.instance_port,
    :policies          => [], # Listener作成時に同時にPolicyを作成することはできない
    :load_balancer     => load_balancer,
  })

  if dsl.server_certificate
    lstnr.server_certificate = OpenStruct.new(:name => dsl.server_certificate)
  end

  return lstnr
end

Instance Method Details

#create(dsl) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/kelbim/wrapper/listener-collection.rb', line 65

def create(dsl)
  log_id = [[dsl.protocol, dsl.port], [dsl.instance_protocol, dsl.instance_port]].map {|i| i.inspect }.join(' => ')
  log_id = "#{@load_balancer.vpc_id || :classic} > #{@load_balancer.name} > #{log_id}"
  log(:info, 'Create Listener', :cyan, log_id)

  lstnr = nil

  if @options.dry_run
    lstnr = self.class.create_mock_listener(dsl, @load_balancer)
  else
    lstnr_opts = self.class.create_listener_options(dsl, @options.iam)

    # lstnr_optsは破壊的に更新される
    lstnr = @listeners.create(lstnr_opts.dup)
    @options.updated = true

    # XXX: 新規作成後、_descriptionはセットされない
    fix_new_listener(lstnr, lstnr_opts)
  end

  Listener.new(lstnr, @options)
end

#eachObject



59
60
61
62
63
# File 'lib/kelbim/wrapper/listener-collection.rb', line 59

def each
  @listeners.each do |lstnr|
    yield(Listener.new(lstnr, @options))
  end
end