class Dendrite::ServiceNode
Constants
- DefaultServer
- Dependency
- Deploy
- DomainName
- Metadata
- Port
- Scale
- Telemetry
- VALID_EMAIL_REGEX
Attributes
component[R]
default_servers[R]
dependencies[R]
deploy[R]
domain_names[R]
lead_email[R]
metadata[R]
organization[R]
ports[R]
scale[R]
team_email[R]
telemetry[R]
type[R]
users[R]
Public Class Methods
new(**args)
click to toggle source
# File lib/dendrite/service_node.rb, line 146 def initialize(**args) @ports = {} @default_servers = {} @domain_names = {} args.each do |k,v| case k when :ports v.each do |name, port| @ports[name] = Port.new(name, port) end when :deploy @deploy = Deploy.new(v[:repository], v[:package]) if v != nil when :scale @scale = Scale.new(v[:max_instance_count], v[:min_instance_count], v[:min_memory], v[:min_cpu]) if v != nil when :telemetry @telemetry = Telemetry.new(v[:health_url], v[:notification_email]) if v != nil when :default_servers v.each do |node| @default_servers[node[:environment]] ||= [] @default_servers[node[:environment]] << DefaultServer.new(node[:environment], node[:host], node[:port]) end when :domain_names v.each do |dns| @domain_names[dns[:environment]] ||= [] @domain_names[dns[:environment]] << DomainName.new(dns[:environment], dns[:domain_name]) end when :metadata @metadata = Metadata.new(v) when :users @users = v.keys else instance_variable_set("@#{k}", v) end end @dependencies = {} end
Public Instance Methods
add_dependency(service:, latency:, identifier:, read_only: false)
click to toggle source
# File lib/dendrite/service_node.rb, line 199 def add_dependency(service:, latency:, identifier:, read_only: false) @dependencies[service.name] = Dependency.new(service, latency, identifier, read_only == true) end
loadbalancer_port()
click to toggle source
# File lib/dendrite/service_node.rb, line 195 def loadbalancer_port ports[:loadbalancer_port].port if ports[:loadbalancer_port] end
name()
click to toggle source
# File lib/dendrite/service_node.rb, line 187 def name "#{organization}_#{component}_#{@name}" if @name end
real_name()
click to toggle source
# File lib/dendrite/service_node.rb, line 183 def real_name @name end
service_port()
click to toggle source
# File lib/dendrite/service_node.rb, line 191 def service_port ports[:service_port].port if ports[:service_port] end
to_h()
click to toggle source
# File lib/dendrite/service_node.rb, line 203 def to_h data = { organization: organization, component: component, name: real_name, complete_name: name, lead_email: lead_email, team_email: team_email, type: type, ports: ports.values.collect(&:to_h), dependencies: dependencies.keys } data.merge!({deploy: deploy ? deploy.to_h : {}}) data.merge!({scale: scale ? scale.to_h : {}}) data.merge!({telemetry: telemetry ? telemetry.to_h : {}}) data.merge!({default_servers: default_servers.values.flatten.collect(&:to_h)}) end