mamiya 0.0.1.alpha23 → 0.0.1.alpha24
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/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
|