class Kelbim::ELBWrapper::LoadBalancerCollection::LoadBalancer::ListenerCollection
Public Class Methods
create_listener_options(dsl, iam)
click to toggle source
# File lib/kelbim/wrapper/listener-collection.rb, line 30 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 if dsl.ssl_certificate_id lstnr_opts[:ssl_certificate_id] = dsl.ssl_certificate_id end return lstnr_opts end
create_mock_listener(dsl, load_balancer)
click to toggle source
# File lib/kelbim/wrapper/listener-collection.rb, line 9 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 if dsl.ssl_certificate_id lstnr.ssl_certificate_id = dsl.ssl_certificate_id end return lstnr end
new(listeners, load_balancer, options)
click to toggle source
# File lib/kelbim/wrapper/listener-collection.rb, line 56 def initialize(listeners, load_balancer, options) @listeners = listeners @load_balancer = load_balancer @options = options end
Public Instance Methods
create(dsl)
click to toggle source
# File lib/kelbim/wrapper/listener-collection.rb, line 68 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
each() { |listener| ... }
click to toggle source
# File lib/kelbim/wrapper/listener-collection.rb, line 62 def each @listeners.each do |lstnr| yield(Listener.new(lstnr, @options)) end end
Private Instance Methods
fix_new_listener(lstnr, lstnr_opts)
click to toggle source
# File lib/kelbim/wrapper/listener-collection.rb, line 92 def fix_new_listener(lstnr, lstnr_opts) lstnr.instance_variable_set(:@__server_certificate__, lstnr_opts[:server_certificate]) def lstnr.server_certificate if @__server_certificate__ OpenStruct.new(:name => @__server_certificate__) else nil end end def lstnr.policy_names; []; end end