dendrite 0.4.9 → 0.5.0
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 +4 -4
- data/conf/services/service.yml +10 -0
- data/lib/dendrite/generators/synapse.rb +23 -4
- data/lib/dendrite/io.rb +2 -2
- data/lib/dendrite/service_graph.rb +3 -1
- data/lib/dendrite/service_node.rb +15 -6
- data/lib/dendrite/version.rb +1 -1
- data/lib/dendrite.rb +1 -0
- metadata +3 -3
- /data/conf/{config.yaml → config.yml} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 25e1151220355a93c5ea94be65e31f3a287fb287
|
|
4
|
+
data.tar.gz: 55550e682e1632b91ff3ac2a7fcc3345b27fe26b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ed661d13ec78fde86266ae46fd665f21ef7b9257fb0289de972680c851e4849ca30e2ed1fcbb2feff9002bfabf1b31d14f14ba4389c6771b305180cffd9aaf6c
|
|
7
|
+
data.tar.gz: 644975f47dda7346f6039c18c188e8c3e98e6b89d9ce6b0ff51d1f8169afa22d36b3f83e4527a45e37587229c2a4cfafac049854e02d200f5ab1f516f29c8529
|
data/conf/services/service.yml
CHANGED
|
@@ -2,9 +2,15 @@ organization: sd
|
|
|
2
2
|
component: cams
|
|
3
3
|
lead_email: vp@foobar.com
|
|
4
4
|
team_email: team@foobar.com
|
|
5
|
+
users: &users
|
|
6
|
+
name1:
|
|
7
|
+
name2:
|
|
5
8
|
subcomponents:
|
|
6
9
|
- name: foobar
|
|
7
10
|
type: tomcat
|
|
11
|
+
users:
|
|
12
|
+
<<: *users
|
|
13
|
+
name3:
|
|
8
14
|
deploy:
|
|
9
15
|
repository: git@github.com:yagnik/dendrite
|
|
10
16
|
package: dendrite
|
|
@@ -28,9 +34,13 @@ subcomponents:
|
|
|
28
34
|
- component: cams
|
|
29
35
|
subcomponent: cat
|
|
30
36
|
latency: foo
|
|
37
|
+
identifier: barbaz
|
|
31
38
|
- component: cams
|
|
32
39
|
subcomponent: foobar
|
|
33
40
|
latency: foo
|
|
41
|
+
identifier: barbas3
|
|
42
|
+
metadata:
|
|
43
|
+
foo: bar
|
|
34
44
|
- name: cat
|
|
35
45
|
type: tomcat
|
|
36
46
|
deploy:
|
|
@@ -79,14 +79,33 @@ module Dendrite
|
|
|
79
79
|
{
|
|
80
80
|
haproxy: {
|
|
81
81
|
port: service.loadbalancer_port,
|
|
82
|
-
bind_address:
|
|
82
|
+
bind_address: bind_address,
|
|
83
83
|
server_options: 'check inter 2s rise 3 fall 2',
|
|
84
|
-
listen:
|
|
85
|
-
'mode tcp'
|
|
86
|
-
]
|
|
84
|
+
listen: mode
|
|
87
85
|
}
|
|
88
86
|
}
|
|
89
87
|
end
|
|
88
|
+
|
|
89
|
+
def mode
|
|
90
|
+
if metadata && metadata.sticky_session
|
|
91
|
+
[
|
|
92
|
+
'mode http',
|
|
93
|
+
'stick-table type string len 200 size 500m expire 30m',
|
|
94
|
+
"stick store-response res.cook(#{metadata.sticky_session})",
|
|
95
|
+
"stick match req.cook(#{metadata.sticky_session})"
|
|
96
|
+
]
|
|
97
|
+
else
|
|
98
|
+
['mode tcp']
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def bind_address
|
|
103
|
+
if metadata && metadata.bind_address
|
|
104
|
+
metadata.bind_address
|
|
105
|
+
else
|
|
106
|
+
'127.0.0.1'
|
|
107
|
+
end
|
|
108
|
+
end
|
|
90
109
|
end
|
|
91
110
|
end
|
|
92
111
|
end
|
data/lib/dendrite/io.rb
CHANGED
|
@@ -16,7 +16,7 @@ module Dendrite
|
|
|
16
16
|
if service[:dependencies]
|
|
17
17
|
service[:dependencies].each do |deps|
|
|
18
18
|
dependency_name = "#{service[:organization]}_#{deps[:component]}_#{deps[:subcomponent]}"
|
|
19
|
-
graph[node.name].add_dependency(service: graph[dependency_name], latency: deps[:latency])
|
|
19
|
+
graph[node.name].add_dependency(service: graph[dependency_name], latency: deps[:latency], identifier: deps[:identifier])
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
end
|
|
@@ -47,7 +47,7 @@ module Dendrite
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def services_from_folder(source:)
|
|
50
|
-
Dir["#{source}
|
|
50
|
+
Dir["#{source}/**/*.yml"].collect {|file| services_from_file(source: file)}
|
|
51
51
|
.flatten
|
|
52
52
|
end
|
|
53
53
|
end
|
|
@@ -5,6 +5,8 @@ module Dendrite
|
|
|
5
5
|
|
|
6
6
|
attr_reader :services
|
|
7
7
|
def_delegators :services, :each, :each
|
|
8
|
+
def_delegators :services, :keys, :keys
|
|
9
|
+
def_delegators :services, :values, :values
|
|
8
10
|
|
|
9
11
|
validate :validate_nodes
|
|
10
12
|
validate :collisions
|
|
@@ -15,7 +17,7 @@ module Dendrite
|
|
|
15
17
|
|
|
16
18
|
def <<(service)
|
|
17
19
|
raise KeyError unless service.name
|
|
18
|
-
raise DuplicateService if services.keys.include?(service.name)
|
|
20
|
+
raise DuplicateService, service.name if services.keys.include?(service.name)
|
|
19
21
|
services[service.name] = service
|
|
20
22
|
end
|
|
21
23
|
|
|
@@ -79,7 +79,7 @@ module Dendrite
|
|
|
79
79
|
validates :port, numericality: { only_integer: true }
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
Dependency = Struct.new(:service, :latency) do
|
|
82
|
+
Dependency = Struct.new(:service, :latency, :identifier) do
|
|
83
83
|
include ActiveModel::Validations
|
|
84
84
|
validates_presence_of :service
|
|
85
85
|
validates_presence_of :latency
|
|
@@ -92,12 +92,15 @@ module Dendrite
|
|
|
92
92
|
end
|
|
93
93
|
end
|
|
94
94
|
|
|
95
|
-
Scale = Struct.new(:max_instance_count, :min_instance_count) do
|
|
95
|
+
Scale = Struct.new(:max_instance_count, :min_instance_count, :min_memory, :min_cpu) do
|
|
96
96
|
include ActiveModel::Validations
|
|
97
97
|
validates_presence_of :max_instance_count
|
|
98
98
|
validates_presence_of :min_instance_count
|
|
99
|
+
# @TODO add validation for max and min
|
|
99
100
|
validates :max_instance_count, numericality: { only_integer: true }
|
|
100
101
|
validates :min_instance_count, numericality: { only_integer: true }
|
|
102
|
+
# validates :min_memory, numericality: { only_integer: true }
|
|
103
|
+
# validates :min_cpu, numericality: { only_integer: true }
|
|
101
104
|
end
|
|
102
105
|
|
|
103
106
|
Deploy = Struct.new(:repository, :package) do
|
|
@@ -106,9 +109,11 @@ module Dendrite
|
|
|
106
109
|
validates_presence_of :package
|
|
107
110
|
end
|
|
108
111
|
|
|
112
|
+
Metadata = OpenStruct
|
|
113
|
+
|
|
109
114
|
attr_reader :organization, :component, :lead_email, :team_email,
|
|
110
115
|
:type, :deploy, :scale, :ports, :dependencies, :telemetry,
|
|
111
|
-
:default_servers
|
|
116
|
+
:default_servers, :metadata, :users
|
|
112
117
|
# :name is set but magically
|
|
113
118
|
|
|
114
119
|
validates_presence_of :organization, :component, :lead_email, :team_email,
|
|
@@ -134,7 +139,7 @@ module Dendrite
|
|
|
134
139
|
when :deploy
|
|
135
140
|
@deploy = Deploy.new(v[:repository], v[:package]) if v != nil
|
|
136
141
|
when :scale
|
|
137
|
-
@scale = Scale.new(v[:max_instance_count], v[:min_instance_count]) if v != nil
|
|
142
|
+
@scale = Scale.new(v[:max_instance_count], v[:min_instance_count], v[:min_memory], v[:min_cpu]) if v != nil
|
|
138
143
|
when :telemetry
|
|
139
144
|
@telemetry = Telemetry.new(v[:health_url], v[:notification_email]) if v != nil
|
|
140
145
|
when :default_servers
|
|
@@ -142,6 +147,10 @@ module Dendrite
|
|
|
142
147
|
@default_servers[node[:environment]] ||= []
|
|
143
148
|
@default_servers[node[:environment]] << DefaultServer.new(node[:environment], node[:host], node[:port])
|
|
144
149
|
end
|
|
150
|
+
when :metadata
|
|
151
|
+
@metadata = Metadata.new(v)
|
|
152
|
+
when :users
|
|
153
|
+
@users = v.keys
|
|
145
154
|
else
|
|
146
155
|
instance_variable_set("@#{k}", v)
|
|
147
156
|
end
|
|
@@ -165,8 +174,8 @@ module Dendrite
|
|
|
165
174
|
ports[:loadbalancer_port].port if ports[:loadbalancer_port]
|
|
166
175
|
end
|
|
167
176
|
|
|
168
|
-
def add_dependency(service:, latency:)
|
|
169
|
-
@dependencies[service.name] = Dependency.new(service, latency)
|
|
177
|
+
def add_dependency(service:, latency:, identifier:)
|
|
178
|
+
@dependencies[service.name] = Dependency.new(service, latency, identifier)
|
|
170
179
|
end
|
|
171
180
|
|
|
172
181
|
def to_h
|
data/lib/dendrite/version.rb
CHANGED
data/lib/dendrite.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dendrite
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yagnik
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-09-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -99,7 +99,7 @@ files:
|
|
|
99
99
|
- bin/add_proxy
|
|
100
100
|
- bin/metadata
|
|
101
101
|
- bin/register
|
|
102
|
-
- conf/config.
|
|
102
|
+
- conf/config.yml
|
|
103
103
|
- conf/services/service.yml
|
|
104
104
|
- dendrite.gemspec
|
|
105
105
|
- lib/dendrite.rb
|
|
File without changes
|