Class: Dendrite::Generators::Synapse

Inherits:
Base
  • Object
show all
Defined in:
lib/dendrite/generators/synapse.rb

Defined Under Namespace

Classes: ServiceConfig

Instance Attribute Summary

Attributes inherited from Base

#graph, #services

Instance Method Summary collapse

Methods inherited from Base

#to_json, #to_yaml

Constructor Details

#initialize(graph:, service_names:, proxy: false, environment: :dev) ⇒ Synapse

Returns a new instance of Synapse.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/dendrite/generators/synapse.rb', line 4

def initialize(graph:, service_names:, proxy: false, environment: :dev)
  super(graph: graph, service_names: service_names)
  unless proxy
    dep = []
    @services.each do |service|
      service.dependencies.each do |_, dependency|
        dep << dependency.service
      end
    end
    @services = dep.uniq
  end
  @services.group_by { |service| service.loadbalancer_port }.each do |port, services|
    if services.length > 1
      raise PortCollision, "Port collission between #{services.collect(&:name).join(',')}"
    end
  end
  @services = @services.collect { |service| ServiceConfig.new(service, environment)}
end

Instance Method Details

#to_hObject



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/dendrite/generators/synapse.rb', line 23

def to_h
  service_list = services.inject({}) do |hash, service|
    hash[service.name] = service.to_h
    hash
  end

  {
    haproxy: Dendrite::Config.global_haproxy_config,
    file_output: {
      output_directory: '/tmp/synapse.config'
    }
  }.merge({services: service_list})
end