dendrite 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 97c0e4e5c8c44bdb148bfb82e0e6ac7bf5d95c91
4
- data.tar.gz: b0216b867e76656fc2eba3681726fcb17181341a
3
+ metadata.gz: 32f0e0b81539879488b8bb9c181911fa8c925e60
4
+ data.tar.gz: 068446bf6601e65ed4d4da4761c1cde480527a2c
5
5
  SHA512:
6
- metadata.gz: 5260ce9237afcc363e5abd6e604e1fb9cfb71a8a8324e143191f146356dbbc378e91b322605fb5c71e3e3a69633ad252df981a8db41f89c74858158d846d6295
7
- data.tar.gz: 8897fd44daec5e7cda853b2b8914c2022f0c8d8900f74880032bd4b7f1400f857e15c716c79d42fd3efd18159558665e92828976be547adde9750e3ebab7c659
6
+ metadata.gz: 09746c3effb3492c2e464d75cc238a47a1c319c1bf6d2e83fd48ae437190d2c9ed9c19a4b2cd40e0b79330818a6ea57f7a2ef0ee72a60456f21b2cca68e150b6
7
+ data.tar.gz: 5adc3ce5ed43baee7567926ff6f6f50333e91ea4413f7378060ea9b59a1f407a487a209dbe93193ff3bddd2d0b51da93be9520fd630ff8d3b871098cb91e8d08
@@ -14,7 +14,7 @@ services:
14
14
  ports:
15
15
  advertised_port: 8082
16
16
  listening_port: 8080
17
- dependancies:
17
+ dependencies:
18
18
  - namespace: cams
19
19
  name: cat
20
20
  latency: foo
@@ -32,7 +32,7 @@ services:
32
32
  ports:
33
33
  advertised_port: 8081
34
34
  listening_port: 8080
35
- dependancies:
35
+ dependencies:
36
36
  - namespace: cams
37
37
  name: foobar
38
38
  latency: foo
@@ -45,6 +45,6 @@ services:
45
45
  min_instance_count: 1
46
46
  max_instance_count: 5
47
47
  ports:
48
- advertised_port: 8081
48
+ advertised_port: 8083
49
49
  listening_port: 8080
50
- dependancies: []
50
+ dependencies: []
@@ -6,7 +6,7 @@ module Dendrite
6
6
  super
7
7
  @services.group_by { |service| service.listening_port }.each do |port, services|
8
8
  if services.length > 1
9
- raise PortCollission, "Port collission between #{services.collect(&:name).join(',')}"
9
+ raise PortCollision, "Port collission between #{services.collect(&:name).join(',')}"
10
10
  end
11
11
  end
12
12
  @services = @services.collect { |service| ServiceConfig.new(service)}
@@ -5,14 +5,14 @@ module Dendrite
5
5
  super
6
6
  dep = []
7
7
  @services.each do |service|
8
- service.dependancies.each do |_, dependancy|
9
- dep << dependancy.service
8
+ service.dependencies.each do |_, dependency|
9
+ dep << dependency.service
10
10
  end
11
11
  end
12
12
  @services = dep.uniq
13
13
  @services.group_by { |service| service.advertised_port }.each do |port, services|
14
14
  if services.length > 1
15
- raise PortCollission, "Port collission between #{services.collect(&:name).join(',')}"
15
+ raise PortCollision, "Port collission between #{services.collect(&:name).join(',')}"
16
16
  end
17
17
  end
18
18
  @services = @services.collect { |service| ServiceConfig.new(service)}
data/lib/dendrite/io.rb CHANGED
@@ -13,10 +13,16 @@ module Dendrite
13
13
 
14
14
  services.each do |service|
15
15
  node = ServiceNode.new(service)
16
+ if service[:dependencies]
17
+ service[:dependencies].each do |deps|
18
+ dependency_name = "#{service[:organization]}_#{deps[:namespace]}_#{deps[:name]}"
19
+ graph[node.name].add_dependency(service: graph[dependency_name], latency: deps[:latency])
20
+ end
21
+ end
16
22
  if service[:dependancies]
17
23
  service[:dependancies].each do |deps|
18
- dependancy_name = "#{service[:organization]}_#{deps[:namespace]}_#{deps[:name]}"
19
- graph[node.name].add_dependancy(service: graph[dependancy_name], latency: deps[:latency])
24
+ dependency_name = "#{service[:organization]}_#{deps[:namespace]}_#{deps[:name]}"
25
+ graph[node.name].add_dependency(service: graph[dependency_name], latency: deps[:latency])
20
26
  end
21
27
  end
22
28
  end
@@ -20,14 +20,24 @@ module Dendrite
20
20
  end
21
21
 
22
22
  def valid?
23
- services.values.collect(&:valid?).all?
23
+ services.values.collect(&:valid?).all? &&
24
+ services.values.group_by(&:advertised_port).all? do |port, svc|
25
+ svc.length == 1
26
+ end
24
27
  end
25
28
 
26
29
  def errors
27
- services.inject({}) do |hash, (name, service)|
30
+ hash = services.inject({}) do |hash, (name, service)|
28
31
  hash[name] = service.errors.messages if service.errors.messages.length > 0
29
32
  hash
30
33
  end
34
+ services.values.group_by(&:advertised_port).each do |port, svc|
35
+ if svc.length > 1
36
+ hash[:port_collisions] ||= {}
37
+ hash[:port_collisions][port] = svc.collect(&:name)
38
+ end
39
+ end
40
+ return hash
31
41
  end
32
42
  end
33
43
  end
@@ -3,10 +3,10 @@ module Dendrite
3
3
  def valid?
4
4
  super
5
5
 
6
- dependancies.each do |depname, dep|
6
+ dependencies.each do |depname, dep|
7
7
  if dep.invalid?
8
8
  dep.errors.each do |key, value|
9
- errors.add "dependancy_#{key}", value
9
+ errors.add "dependency_#{key}", value
10
10
  end
11
11
  end
12
12
  end
@@ -46,7 +46,7 @@ module Dendrite
46
46
  validates :port, numericality: { only_integer: true }
47
47
  end
48
48
 
49
- Dependacy = Struct.new(:service, :latency) do
49
+ Dependency = Struct.new(:service, :latency) do
50
50
  include ActiveModel::Validations
51
51
  validates_presence_of :service
52
52
  validates_presence_of :latency
@@ -76,7 +76,7 @@ module Dendrite
76
76
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
77
77
 
78
78
  attr_reader :organization, :namespace, :lead_email, :team_email,
79
- :type, :deploy, :scale, :ports, :dependancies
79
+ :type, :deploy, :scale, :ports, :dependencies
80
80
  # :name is set but magically
81
81
 
82
82
  validates_presence_of :organization, :namespace, :lead_email, :team_email,
@@ -105,7 +105,7 @@ module Dendrite
105
105
  instance_variable_set("@#{k}", v)
106
106
  end
107
107
  end
108
- @dependancies = {}
108
+ @dependencies = {}
109
109
  end
110
110
 
111
111
  def real_name
@@ -124,8 +124,8 @@ module Dendrite
124
124
  ports[:advertised_port].port if ports[:advertised_port]
125
125
  end
126
126
 
127
- def add_dependancy(service:, latency:)
128
- @dependancies[service.name] = Dependacy.new(service, latency)
127
+ def add_dependency(service:, latency:)
128
+ @dependencies[service.name] = Dependency.new(service, latency)
129
129
  end
130
130
  end
131
131
  end
@@ -1,3 +1,3 @@
1
1
  module Dendrite
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.3"
3
3
  end
data/lib/dendrite.rb CHANGED
@@ -10,7 +10,7 @@ module Dendrite
10
10
  InvalidData = Class.new(Error)
11
11
  UnknownService = Class.new(Error)
12
12
  DuplicateService = Class.new(Error)
13
- PortCollission = Class.new(Error)
13
+ PortCollision = Class.new(Error)
14
14
 
15
15
  class Config
16
16
  class << self
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dendrite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yagnik