class K8sInternalLb::Service
Attributes
endpoints[RW]
interval[RW]
last_update[RW]
name[R]
namespace[RW]
ports[RW]
Public Class Methods
create(type: :TCP, **params)
click to toggle source
# File lib/k8s_internal_lb/service.rb, line 8 def self.create(type: :TCP, **params) raise ArgumentError, 'Must specify service type' if type.nil? klass = Services.const_get type raise ArgumentError, 'Unknown service type' if klass.nil? klass.new(**params) end
new(name:, namespace: nil, ports:, interval: 10, **_params)
click to toggle source
# File lib/k8s_internal_lb/service.rb, line 63 def initialize(name:, namespace: nil, ports:, interval: 10, **_params) raise ArgumentError, 'Ports must be a list of Port objects' unless ports.is_a?(Array) && ports.all? { |p| p.is_a? Port } raise ArgumentError, 'Interval must be a positive number' unless interval.is_a?(Numeric) && interval.positive? @name = name @namespace = namespace @ports = ports @interval = interval @last_update = Time.at(0) @endpoints = [] end
Public Instance Methods
logger()
click to toggle source
# File lib/k8s_internal_lb/service.rb, line 17 def logger @logger ||= Logging::Logger[self] end
to_subsets()
click to toggle source
# File lib/k8s_internal_lb/service.rb, line 25 def to_subsets grouped = endpoints.group_by(&:port) # TODO: Find all port combinations that result in the same list of ready # and not-ready addresses, and combine them into a single pair of # multiple ports. # # { # 1 => { active: [A, B], inactive: [C] }, # 2 => { active: [A, B], inactive: [C] } # } # => # { # [1,2] => { active: [A, B], inactive: [C] } # } grouped = grouped.map do |p, g| { addresses: g.select(&:ready?).map(&:address), notReadyAddresses: g.select(&:not_ready?).map(&:address), ports: [p] } end # grouped = grouped.group_by { |s| s[:addresses] + s[:notReadyAddresses] } # .map do |_, s| # v = s.first # # v[:ports] = s.reduce([]) { |sum, e| sum << e[:ports] } # # v # end grouped end
update()
click to toggle source
# File lib/k8s_internal_lb/service.rb, line 21 def update raise NotImplementedError end