boutons 0.4.11 → 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/lib/boutons.rb +21 -2
- data/lib/boutons/event_sniffer.rb +15 -0
- data/lib/boutons/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6dad245837beb250fe94eb0ec089bff8dbb76d6
|
4
|
+
data.tar.gz: e32d5ab3f794eb32902476781bfa134d44c997c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f2ccb79ab61da50579d5155cc9489253e1cb6ad50999b5ae83c83360f1769bc272d0f0a65082a27984a5931376ff459ca6b9e0098809fa7ca12ea97d9331279
|
7
|
+
data.tar.gz: fc863697467cbd46153ffae597898539d2523af97a1a132c698ab7423865f23e39942830a29205b58a33f9ba4764aff5a6ae9bf0b171b23e94eec310fa932075
|
data/lib/boutons.rb
CHANGED
@@ -10,6 +10,7 @@ require "boutons/synapse"
|
|
10
10
|
require "synapse/logging/interchangeable"
|
11
11
|
require "boutons/uri"
|
12
12
|
require "boutons/resource"
|
13
|
+
require "boutons/event_sniffer"
|
13
14
|
|
14
15
|
module Boutons
|
15
16
|
class UnknownSynapse < Exception; end
|
@@ -36,6 +37,19 @@ module Boutons
|
|
36
37
|
params[:name] = service.to_sym
|
37
38
|
add Synapse::Easy::Service.new params
|
38
39
|
end
|
40
|
+
def notify event, callback
|
41
|
+
@callbacks ||= {}
|
42
|
+
@callbacks[event] ||= []
|
43
|
+
@callbacks[event] << callback
|
44
|
+
end
|
45
|
+
def emit event
|
46
|
+
@callbacks ||= {}
|
47
|
+
@callbacks[event] ||= []
|
48
|
+
return if @callbacks[event].empty?
|
49
|
+
@callbacks[event].each do |callback|
|
50
|
+
callback.call
|
51
|
+
end
|
52
|
+
end
|
39
53
|
def remove name
|
40
54
|
services[mapping[name]] = nil
|
41
55
|
start
|
@@ -73,6 +87,9 @@ module Boutons
|
|
73
87
|
Boutons::Config.services.keys.map{|k|k.to_s} rescue []
|
74
88
|
end
|
75
89
|
private
|
90
|
+
def event_dispatcher target=nil
|
91
|
+
@dispatcher ||= EventSniffer.new target
|
92
|
+
end
|
76
93
|
def mapping
|
77
94
|
@@mapping ||= {}
|
78
95
|
end
|
@@ -91,7 +108,9 @@ module Boutons
|
|
91
108
|
def start
|
92
109
|
return if @started
|
93
110
|
services.map{|n,s|s.active=true}
|
94
|
-
|
111
|
+
event_dispatcher synapse
|
112
|
+
event_dispatcher.add_callback -> {self.emit(:restart)}
|
113
|
+
haproxy.inform event_dispatcher
|
95
114
|
at_exit do
|
96
115
|
pf = haproxy.pid_file_path
|
97
116
|
cf = haproxy.config_file_path
|
@@ -103,7 +122,7 @@ module Boutons
|
|
103
122
|
File.unlink(cf)
|
104
123
|
logger.debug "Boutons shut down"
|
105
124
|
end
|
106
|
-
services.inform
|
125
|
+
services.inform event_dispatcher
|
107
126
|
synapse.services = services
|
108
127
|
@@synapse_thread = Thread.new do
|
109
128
|
synapse.run
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Boutons
|
2
|
+
class EventSniffer
|
3
|
+
def initialize target
|
4
|
+
@target = target
|
5
|
+
end
|
6
|
+
def add_callback callback
|
7
|
+
@callbacks ||= []
|
8
|
+
@callbacks << callback
|
9
|
+
end
|
10
|
+
def reconfigure!
|
11
|
+
@target.reconfigure!
|
12
|
+
@callbacks.map{|callback| callback.call}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/boutons/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boutons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mathias Kaufmann
|
@@ -170,6 +170,7 @@ files:
|
|
170
170
|
- boutons.gemspec
|
171
171
|
- lib/boutons.rb
|
172
172
|
- lib/boutons/config.rb
|
173
|
+
- lib/boutons/event_sniffer.rb
|
173
174
|
- lib/boutons/resource.rb
|
174
175
|
- lib/boutons/synapse.rb
|
175
176
|
- lib/boutons/uri.rb
|