dendrite 0.4.9 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|