class Dendrite::ServiceGraph

Attributes

services[R]

Public Class Methods

new() click to toggle source
# File lib/dendrite/service_graph.rb, line 14
def initialize
  @services = {}
end

Public Instance Methods

<<(service) click to toggle source
# File lib/dendrite/service_graph.rb, line 18
def <<(service)
  raise KeyError unless service.name
  raise DuplicateService, service.name if services.keys.include?(service.name)
  services[service.name] = service
end
[](name) click to toggle source
# File lib/dendrite/service_graph.rb, line 24
def [](name)
  services.fetch(name)
end
collisions() click to toggle source
# File lib/dendrite/service_graph.rb, line 28
def collisions
  services.values.group_by(&:loadbalancer_port)
                 .reject {|port, svc| port == nil}
                 .select {|port, svc| svc.length > 1}
                 .each do |port, svc|
    errors.add("port_collisions_#{port}", "collision between #{svc.collect(&:name).join(',')}")
  end
end
validate_nodes() click to toggle source
# File lib/dendrite/service_graph.rb, line 37
def validate_nodes
  services.each do |name, service|
    errors.add(name, service.errors.messages) unless service.valid?
  end
end