class K8sInternalLb::Services::TCP
Attributes
addresses[RW]
timeout[RW]
Public Class Methods
new(addresses:, timeout: 1, **params)
click to toggle source
Calls superclass method
K8sInternalLb::Service::new
# File lib/k8s_internal_lb/services/tcp.rb, line 11 def initialize(addresses:, timeout: 1, **params) super @addresses = addresses @timeout = timeout end
Public Instance Methods
update()
click to toggle source
# File lib/k8s_internal_lb/services/tcp.rb, line 18 def update raise 'No TCP ports provided' if ports.select(&:tcp?).empty? @endpoints = addresses.map do |addr| ports.select(&:tcp?).map do |port| available = \ begin Timeout.timeout(timeout) do begin TCPSocket.new(addr.ip.to_s, port.port).close true rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH false end end rescue Timeout::Error false end Endpoint.new address: addr, port: port, status: available end end.flatten true end