mamiya 0.0.1.alpha23 → 0.0.1.alpha24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mamiya/agent.rb +3 -1
- data/lib/mamiya/agent/task_queue.rb +1 -0
- data/lib/mamiya/logger.rb +11 -2
- data/lib/mamiya/master/agent_monitor.rb +9 -6
- data/lib/mamiya/version.rb +1 -1
- data/spec/master/agent_monitor_spec.rb +91 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cff88034ce82da05b6bbef3f14e01c3d64a0106
|
4
|
+
data.tar.gz: 955b085f2d2ad3911608daf3356569b072c37af1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 09ac1bd2fa42fe80d9c7c0c253b387987f1bd65d73036447c1ebe76b3a7b0a35a442652dea295d6c210d8ad8a5ee8311c004822db6adb2315a1824fc1da6551c
|
7
|
+
data.tar.gz: 231d431e2a6ab44a47843712edff9b9389aa0594b87915ef308ee08b7ffe914ba3abb4007cbe772c85ae9f4ceecdde43ec9f4a129bb7020ff82a3c02e51538f5
|
data/lib/mamiya/agent.rb
CHANGED
@@ -218,7 +218,9 @@ module Mamiya
|
|
218
218
|
if handler.respond_to?(meth)
|
219
219
|
handler.send meth
|
220
220
|
else
|
221
|
-
|
221
|
+
if config.debug_all_events
|
222
|
+
logger.debug "Handler #{class_name} doesn't respond to #{meth}, skipping"
|
223
|
+
end
|
222
224
|
end
|
223
225
|
else
|
224
226
|
#logger.warn("Discarded event[#{event.user_event}] because we don't handle it")
|
data/lib/mamiya/logger.rb
CHANGED
@@ -55,6 +55,16 @@ module Mamiya
|
|
55
55
|
@logdev.remove_output(*outputs)
|
56
56
|
end
|
57
57
|
|
58
|
+
alias orig_dup dup
|
59
|
+
|
60
|
+
def dup
|
61
|
+
self.orig_dup.tap do |new_logger|
|
62
|
+
new_logger.instance_eval do
|
63
|
+
@logger = @logger.dup
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
58
68
|
def with_clean_progname
|
59
69
|
self.dup.tap do |new|
|
60
70
|
new.progname = nil
|
@@ -64,9 +74,8 @@ module Mamiya
|
|
64
74
|
def [](progname)
|
65
75
|
self.dup.tap do |new_logger|
|
66
76
|
new_logger.instance_eval do
|
67
|
-
@logger = @logger.dup
|
68
77
|
if @logger.progname && !@logger.progname.empty?
|
69
|
-
@logger.progname
|
78
|
+
@logger.progname = "#{@logger.progname}/#{progname}"
|
70
79
|
else
|
71
80
|
@logger.progname = progname
|
72
81
|
end
|
@@ -113,6 +113,12 @@ module Mamiya
|
|
113
113
|
end
|
114
114
|
|
115
115
|
@commit_lock.synchronize {
|
116
|
+
if kwargs[:node]
|
117
|
+
new_statuses = statuses.reject do |name, status|
|
118
|
+
kwargs[:node].include?(name)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
116
122
|
status_query_th = Thread.new { @master.serf.query(STATUS_QUERY, '', **kwargs) }
|
117
123
|
packages_query_th = Thread.new { @master.serf.query(PACKAGES_QUERY, '', **kwargs) }
|
118
124
|
status_response = status_query_th.value
|
@@ -133,12 +139,9 @@ module Mamiya
|
|
133
139
|
|
134
140
|
begin
|
135
141
|
resp = JSON.parse(json)
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
else # TODO: Compatibility; should remove soon
|
140
|
-
new_statuses[name]['packages'] = resp
|
141
|
-
end
|
142
|
+
|
143
|
+
new_statuses[name]['packages'] = resp['packages']
|
144
|
+
new_statuses[name]['prereleases'] = resp['prereleases']
|
142
145
|
rescue JSON::ParserError => e
|
143
146
|
logger.warn "Failed to parse packages from #{name}: #{e.message}"
|
144
147
|
next
|
data/lib/mamiya/version.rb
CHANGED
@@ -121,7 +121,6 @@ describe Mamiya::Master::AgentMonitor do
|
|
121
121
|
}
|
122
122
|
end
|
123
123
|
|
124
|
-
|
125
124
|
it "updates status .packages by packages query" do
|
126
125
|
expect {
|
127
126
|
agent_monitor.refresh
|
@@ -233,6 +232,97 @@ describe Mamiya::Master::AgentMonitor do
|
|
233
232
|
agent_monitor.refresh(node: 'foo')
|
234
233
|
end
|
235
234
|
end
|
235
|
+
|
236
|
+
context "with nodes list" do
|
237
|
+
before do
|
238
|
+
stub_serf_queries()
|
239
|
+
agent_monitor.refresh
|
240
|
+
|
241
|
+
allow(serf).to receive(:query) do |query, payload, kwargs={}|
|
242
|
+
expect(payload).to eq ''
|
243
|
+
#expect(kwargs).to eq(node: ['b'])
|
244
|
+
expect(%w(mamiya:status mamiya:packages)).to include(query)
|
245
|
+
|
246
|
+
{'mamiya:status' => status_query_response_part, 'mamiya:packages' => packages_query_response_part}[query]
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
let(:status_query_response) do
|
251
|
+
{
|
252
|
+
"Acks" => ['a'],
|
253
|
+
"Responses" => {
|
254
|
+
'a' => {"foo" => "bar"}.to_json,
|
255
|
+
},
|
256
|
+
}
|
257
|
+
end
|
258
|
+
|
259
|
+
let(:packages_query_response) do
|
260
|
+
{
|
261
|
+
"Acks" => ['a'],
|
262
|
+
"Responses" => {
|
263
|
+
'a' => {"packages" => {"app" => ['pkg1','pkg2']}, "prereleases" => {"app" => ['pkg2']}}.to_json,
|
264
|
+
},
|
265
|
+
}
|
266
|
+
end
|
267
|
+
|
268
|
+
let(:status_query_response_part) do
|
269
|
+
{
|
270
|
+
"Acks" => ['a'],
|
271
|
+
"Responses" => {
|
272
|
+
'b' => {"foo" => "bar"}.to_json,
|
273
|
+
},
|
274
|
+
}
|
275
|
+
end
|
276
|
+
|
277
|
+
let(:packages_query_response_part) do
|
278
|
+
{
|
279
|
+
"Acks" => ['a'],
|
280
|
+
"Responses" => {
|
281
|
+
'b' => {"packages" => {"app" => ['pkg1']}, "prereleases" => {"app" => ['pkg2']}}.to_json,
|
282
|
+
},
|
283
|
+
}
|
284
|
+
end
|
285
|
+
|
286
|
+
let(:members) do
|
287
|
+
[
|
288
|
+
{
|
289
|
+
"name"=>"a", "status"=>"alive",
|
290
|
+
"addr"=>"x.x.x.x:7676", "port"=>7676,
|
291
|
+
"protocol"=>{"max"=>4, "min"=>2, "version"=>4},
|
292
|
+
"tags"=>{},
|
293
|
+
},
|
294
|
+
{
|
295
|
+
"name"=>"b", "status"=>"alive",
|
296
|
+
"addr"=>"x.x.y.y:7676", "port"=>7676,
|
297
|
+
"protocol"=>{"max"=>4, "min"=>2, "version"=>4},
|
298
|
+
"tags"=>{},
|
299
|
+
},
|
300
|
+
]
|
301
|
+
end
|
302
|
+
|
303
|
+
it "updates partially" do
|
304
|
+
expect(agent_monitor.statuses['b']).to be_nil
|
305
|
+
|
306
|
+
expect {
|
307
|
+
agent_monitor.refresh(node: ['b'])
|
308
|
+
}.not_to change {
|
309
|
+
[agent_monitor.statuses['a'], agent_monitor.agents['a']]
|
310
|
+
}
|
311
|
+
|
312
|
+
expect(agent_monitor.failed_agents).to eq []
|
313
|
+
expect(agent_monitor.statuses['b']).to eq(
|
314
|
+
{"foo" => "bar", "packages" => {"app" => ['pkg1']}, "prereleases" => {"app" => ['pkg2']}}
|
315
|
+
)
|
316
|
+
expect(agent_monitor.agents['b']).to eq(
|
317
|
+
{
|
318
|
+
"name"=>"b", "status"=>"alive",
|
319
|
+
"addr"=>"x.x.y.y:7676", "port"=>7676,
|
320
|
+
"protocol"=>{"max"=>4, "min"=>2, "version"=>4},
|
321
|
+
"tags"=>{},
|
322
|
+
}
|
323
|
+
)
|
324
|
+
end
|
325
|
+
end
|
236
326
|
end
|
237
327
|
|
238
328
|
describe "(commiting events)" do
|