arborist 0.0.1.pre20160128152542 → 0.0.1.pre20160606141735
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -0
- data/ChangeLog +426 -1
- data/Manifest.txt +17 -2
- data/Nodes.md +70 -0
- data/Protocol.md +68 -9
- data/README.md +3 -5
- data/Rakefile +4 -1
- data/TODO.md +52 -20
- data/lib/arborist.rb +19 -6
- data/lib/arborist/cli.rb +39 -25
- data/lib/arborist/client.rb +97 -4
- data/lib/arborist/command/client.rb +2 -1
- data/lib/arborist/command/start.rb +51 -5
- data/lib/arborist/dependency.rb +286 -0
- data/lib/arborist/event.rb +7 -2
- data/lib/arborist/event/{node_matching.rb → node.rb} +11 -5
- data/lib/arborist/event/node_acked.rb +5 -7
- data/lib/arborist/event/node_delta.rb +30 -3
- data/lib/arborist/event/node_disabled.rb +16 -0
- data/lib/arborist/event/node_down.rb +10 -0
- data/lib/arborist/event/node_quieted.rb +11 -0
- data/lib/arborist/event/node_unknown.rb +10 -0
- data/lib/arborist/event/node_up.rb +10 -0
- data/lib/arborist/event/node_update.rb +2 -11
- data/lib/arborist/event/sys_node_added.rb +10 -0
- data/lib/arborist/event/sys_node_removed.rb +10 -0
- data/lib/arborist/exceptions.rb +4 -0
- data/lib/arborist/manager.rb +188 -18
- data/lib/arborist/manager/event_publisher.rb +1 -1
- data/lib/arborist/manager/tree_api.rb +92 -13
- data/lib/arborist/mixins.rb +17 -0
- data/lib/arborist/monitor.rb +10 -1
- data/lib/arborist/monitor/socket.rb +123 -2
- data/lib/arborist/monitor_runner.rb +6 -5
- data/lib/arborist/node.rb +420 -94
- data/lib/arborist/node/ack.rb +72 -0
- data/lib/arborist/node/host.rb +43 -8
- data/lib/arborist/node/resource.rb +73 -0
- data/lib/arborist/node/root.rb +6 -0
- data/lib/arborist/node/service.rb +89 -22
- data/lib/arborist/observer.rb +1 -1
- data/lib/arborist/subscription.rb +11 -6
- data/spec/arborist/client_spec.rb +93 -5
- data/spec/arborist/dependency_spec.rb +375 -0
- data/spec/arborist/event/node_delta_spec.rb +66 -0
- data/spec/arborist/event/node_down_spec.rb +84 -0
- data/spec/arborist/event/node_spec.rb +59 -0
- data/spec/arborist/event/node_update_spec.rb +14 -3
- data/spec/arborist/event_spec.rb +3 -3
- data/spec/arborist/manager/tree_api_spec.rb +295 -3
- data/spec/arborist/manager_spec.rb +240 -57
- data/spec/arborist/monitor_spec.rb +26 -3
- data/spec/arborist/node/ack_spec.rb +74 -0
- data/spec/arborist/node/host_spec.rb +79 -0
- data/spec/arborist/node/resource_spec.rb +56 -0
- data/spec/arborist/node/service_spec.rb +68 -2
- data/spec/arborist/node_spec.rb +288 -11
- data/spec/arborist/subscription_spec.rb +23 -14
- data/spec/arborist_spec.rb +0 -4
- data/spec/data/observers/webservices.rb +10 -2
- data/spec/spec_helper.rb +8 -0
- metadata +58 -15
- metadata.gz.sig +0 -0
- data/LICENSE +0 -29
@@ -3,6 +3,8 @@
|
|
3
3
|
require_relative '../spec_helper'
|
4
4
|
|
5
5
|
require 'arborist/subscription'
|
6
|
+
require 'arborist/node/host'
|
7
|
+
require 'arborist/node/service'
|
6
8
|
|
7
9
|
|
8
10
|
describe Arborist::Subscription do
|
@@ -16,11 +18,16 @@ describe Arborist::Subscription do
|
|
16
18
|
let( :service_node ) do
|
17
19
|
host_node.service( 'ssh' )
|
18
20
|
end
|
19
|
-
let( :
|
20
|
-
instance_double( Arborist::Manager::EventPublisher )
|
21
|
-
end
|
21
|
+
let( :published_events ) {[]}
|
22
22
|
let( :subscription ) do
|
23
|
-
described_class.new(
|
23
|
+
described_class.new( 'node.delta', type: 'host', &published_events.method(:push) )
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
it "raises an error if created without a callback block" do
|
28
|
+
expect {
|
29
|
+
described_class.new
|
30
|
+
}.to raise_error( LocalJumpError, /requires a callback block/i )
|
24
31
|
end
|
25
32
|
|
26
33
|
|
@@ -32,39 +39,41 @@ describe Arborist::Subscription do
|
|
32
39
|
it "publishes events which are of the desired type and have matching criteria" do
|
33
40
|
event = Arborist::Event.create( 'node_delta', host_node, status: ['up', 'down'] )
|
34
41
|
|
35
|
-
expect( publisher ).to receive( :publish ).with( subscription.id, event )
|
36
|
-
|
37
42
|
subscription.on_events( event )
|
43
|
+
|
44
|
+
expect( published_events ).to eq([ subscription.id, event ])
|
38
45
|
end
|
39
46
|
|
40
47
|
|
41
48
|
it "publishes events which are of any type if the specified type is `nil`" do
|
42
|
-
subscription = described_class.new(
|
49
|
+
subscription = described_class.new( &published_events.method(:push) )
|
43
50
|
event1 = Arborist::Event.create( 'node_delta', host_node, status: ['up', 'down'] )
|
44
51
|
event2 = Arborist::Event.create( 'sys_reloaded' )
|
45
52
|
|
46
|
-
expect( publisher ).to receive( :publish ).with( subscription.id, event1 )
|
47
|
-
expect( publisher ).to receive( :publish ).with( subscription.id, event2 )
|
48
|
-
|
49
53
|
subscription.on_events( event1, event2 )
|
54
|
+
|
55
|
+
expect( published_events ).to eq([
|
56
|
+
subscription.id, event1,
|
57
|
+
subscription.id, event2
|
58
|
+
])
|
50
59
|
end
|
51
60
|
|
52
61
|
|
53
62
|
it "doesn't publish events which are of the desired type but don't have matching criteria" do
|
54
63
|
event = Arborist::Event.create( 'node_delta', service_node, status: ['up', 'down'] )
|
55
64
|
|
56
|
-
expect( publisher ).to_not receive( :publish )
|
57
|
-
|
58
65
|
subscription.on_events( event )
|
66
|
+
|
67
|
+
expect( published_events ).to be_empty
|
59
68
|
end
|
60
69
|
|
61
70
|
|
62
71
|
it "doesn't publish events which have matching criteria but aren't of the desired type" do
|
63
72
|
event = Arborist::Event.create( 'node_update', host_node )
|
64
73
|
|
65
|
-
expect( publisher ).to_not receive( :publish )
|
66
|
-
|
67
74
|
subscription.on_events( event )
|
75
|
+
|
76
|
+
expect( published_events ).to be_empty
|
68
77
|
end
|
69
78
|
|
70
79
|
end
|
data/spec/arborist_spec.rb
CHANGED
@@ -6,9 +6,17 @@ require 'arborist'
|
|
6
6
|
|
7
7
|
Arborist::Observer "Webservers" do
|
8
8
|
subscribe to: 'node.delta',
|
9
|
-
where: {
|
9
|
+
where: {
|
10
|
+
type: 'service',
|
11
|
+
port: 80,
|
12
|
+
delta: { status: ['up', 'down'] }
|
13
|
+
}
|
10
14
|
subscribe to: 'node.delta',
|
11
|
-
where: {
|
15
|
+
where: {
|
16
|
+
type: 'service',
|
17
|
+
port: 443,
|
18
|
+
delta: { status: ['up', 'down'] }
|
19
|
+
}
|
12
20
|
|
13
21
|
action do |uuid, event|
|
14
22
|
$stderr.puts "Webserver %s is DOWN (%p)" % [ event['data']['identifier'], event['data'] ]
|
data/spec/spec_helper.rb
CHANGED
@@ -15,6 +15,10 @@ require 'arborist/mixins'
|
|
15
15
|
|
16
16
|
class TestNode < Arborist::Node; end
|
17
17
|
|
18
|
+
class TestSubNode < Arborist::Node
|
19
|
+
parent_type :test
|
20
|
+
end
|
21
|
+
|
18
22
|
class TestEvent < Arborist::Event; end
|
19
23
|
|
20
24
|
|
@@ -111,6 +115,10 @@ RSpec.configure do |config|
|
|
111
115
|
mock.syntax = :expect
|
112
116
|
end
|
113
117
|
|
118
|
+
config.after( :each ) do
|
119
|
+
Arborist::Node::Root.reset
|
120
|
+
end
|
121
|
+
|
114
122
|
config.filter_run_excluding( :no_ci ) if ENV['SEMAPHORE'] || ENV['CI']
|
115
123
|
|
116
124
|
config.include( Loggability::SpecHelpers )
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arborist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.pre20160606141735
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -11,9 +11,9 @@ bindir: bin
|
|
11
11
|
cert_chain:
|
12
12
|
- |
|
13
13
|
-----BEGIN CERTIFICATE-----
|
14
|
-
|
14
|
+
MIIDMDCCAhigAwIBAgIBAjANBgkqhkiG9w0BAQUFADA+MQwwCgYDVQQDDANnZWQx
|
15
15
|
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
16
|
-
|
16
|
+
HhcNMTYwNjAyMDE1NTQ2WhcNMTcwNjAyMDE1NTQ2WjA+MQwwCgYDVQQDDANnZWQx
|
17
17
|
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
18
18
|
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDb92mkyYwuGBg1oRxt2tkH
|
19
19
|
+Uo3LAsaL/APBfSLzy8o3+B3AUHKCjMUaVeBoZdWtMHB75X3VQlvXfZMyBxj59Vo
|
@@ -21,17 +21,16 @@ cert_chain:
|
|
21
21
|
OkOzAscMwkfQxBkXDzjvAWa6UF4c5c9kR/T79iA21kDx9+bUMentU59aCJtUcbxa
|
22
22
|
7kcKJhPEYsk4OdxR9q2dphNMFDQsIdRO8rywX5FRHvcb+qnXC17RvxLHtOjysPtp
|
23
23
|
EWsYoZMxyCDJpUqbwoeiM+tAHoz2ABMv3Ahie3Qeb6+MZNAtMmaWfBx3dg2u+/WN
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
xn3DzOkDE6NYbk8gC9rTsA==
|
24
|
+
AgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSZ0hCV
|
25
|
+
qoHr122fGKelqffzEQBhszANBgkqhkiG9w0BAQUFAAOCAQEAF2XCzjfTFxkcVvuj
|
26
|
+
hhBezFkZnMDYtWezg4QCkR0RHg4sl1LdXjpvvI59SIgD/evD1hOteGKsXqD8t0E4
|
27
|
+
OPAWWv/z+JRma72zeYsBZLSDRPIUvBoul6qCpvY0MiWTh496mFwOxT5lvSAUoh+U
|
28
|
+
pQ/MQeH/yC6hbGp7IYska6J8T4z5XkYqafYZ3eKQ8H+xPd/z+gYx+jd0PfkWf1Wk
|
29
|
+
QQdziL01SKBHf33OAH/p/puCpwS+ZDfgnNx5oMijWbc671UXkrt7zjD0kGakq+9I
|
30
|
+
hnfm736z8j1wvWddqf45++gwPpDr1E4zoAq2PgRl/WBNyR0hfoZLpi3TnHu3eC0x
|
31
|
+
uALKNA==
|
33
32
|
-----END CERTIFICATE-----
|
34
|
-
date: 2016-
|
33
|
+
date: 2016-06-06 00:00:00.000000000 Z
|
35
34
|
dependencies:
|
36
35
|
- !ruby/object:Gem::Dependency
|
37
36
|
name: schedulability
|
@@ -131,6 +130,34 @@ dependencies:
|
|
131
130
|
- - "~>"
|
132
131
|
- !ruby/object:Gem::Version
|
133
132
|
version: '1.7'
|
133
|
+
- !ruby/object:Gem::Dependency
|
134
|
+
name: gli
|
135
|
+
requirement: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '2.3'
|
140
|
+
type: :runtime
|
141
|
+
prerelease: false
|
142
|
+
version_requirements: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - "~>"
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '2.3'
|
147
|
+
- !ruby/object:Gem::Dependency
|
148
|
+
name: highline
|
149
|
+
requirement: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - "~>"
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '1.7'
|
154
|
+
type: :runtime
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - "~>"
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '1.7'
|
134
161
|
- !ruby/object:Gem::Dependency
|
135
162
|
name: hoe-mercurial
|
136
163
|
requirement: !ruby/object:Gem::Requirement
|
@@ -272,7 +299,6 @@ files:
|
|
272
299
|
- ChangeLog
|
273
300
|
- Events.md
|
274
301
|
- History.md
|
275
|
-
- LICENSE
|
276
302
|
- Manifest.txt
|
277
303
|
- Monitors.md
|
278
304
|
- Nodes.md
|
@@ -290,11 +316,19 @@ files:
|
|
290
316
|
- lib/arborist/command/config.rb
|
291
317
|
- lib/arborist/command/start.rb
|
292
318
|
- lib/arborist/command/watch.rb
|
319
|
+
- lib/arborist/dependency.rb
|
293
320
|
- lib/arborist/event.rb
|
321
|
+
- lib/arborist/event/node.rb
|
294
322
|
- lib/arborist/event/node_acked.rb
|
295
323
|
- lib/arborist/event/node_delta.rb
|
296
|
-
- lib/arborist/event/
|
324
|
+
- lib/arborist/event/node_disabled.rb
|
325
|
+
- lib/arborist/event/node_down.rb
|
326
|
+
- lib/arborist/event/node_quieted.rb
|
327
|
+
- lib/arborist/event/node_unknown.rb
|
328
|
+
- lib/arborist/event/node_up.rb
|
297
329
|
- lib/arborist/event/node_update.rb
|
330
|
+
- lib/arborist/event/sys_node_added.rb
|
331
|
+
- lib/arborist/event/sys_node_removed.rb
|
298
332
|
- lib/arborist/event/sys_reloaded.rb
|
299
333
|
- lib/arborist/exceptions.rb
|
300
334
|
- lib/arborist/loader.rb
|
@@ -307,7 +341,9 @@ files:
|
|
307
341
|
- lib/arborist/monitor/socket.rb
|
308
342
|
- lib/arborist/monitor_runner.rb
|
309
343
|
- lib/arborist/node.rb
|
344
|
+
- lib/arborist/node/ack.rb
|
310
345
|
- lib/arborist/node/host.rb
|
346
|
+
- lib/arborist/node/resource.rb
|
311
347
|
- lib/arborist/node/root.rb
|
312
348
|
- lib/arborist/node/service.rb
|
313
349
|
- lib/arborist/observer.rb
|
@@ -316,6 +352,10 @@ files:
|
|
316
352
|
- lib/arborist/observer_runner.rb
|
317
353
|
- lib/arborist/subscription.rb
|
318
354
|
- spec/arborist/client_spec.rb
|
355
|
+
- spec/arborist/dependency_spec.rb
|
356
|
+
- spec/arborist/event/node_delta_spec.rb
|
357
|
+
- spec/arborist/event/node_down_spec.rb
|
358
|
+
- spec/arborist/event/node_spec.rb
|
319
359
|
- spec/arborist/event/node_update_spec.rb
|
320
360
|
- spec/arborist/event_spec.rb
|
321
361
|
- spec/arborist/manager/event_publisher_spec.rb
|
@@ -325,7 +365,9 @@ files:
|
|
325
365
|
- spec/arborist/monitor/socket_spec.rb
|
326
366
|
- spec/arborist/monitor_runner_spec.rb
|
327
367
|
- spec/arborist/monitor_spec.rb
|
368
|
+
- spec/arborist/node/ack_spec.rb
|
328
369
|
- spec/arborist/node/host_spec.rb
|
370
|
+
- spec/arborist/node/resource_spec.rb
|
329
371
|
- spec/arborist/node/root_spec.rb
|
330
372
|
- spec/arborist/node/service_spec.rb
|
331
373
|
- spec/arborist/node_spec.rb
|
@@ -373,3 +415,4 @@ specification_version: 4
|
|
373
415
|
summary: Arborist is a monitoring toolkit that follows the UNIX philosophy of small
|
374
416
|
parts and loose coupling for stability, reliability, and customizability
|
375
417
|
test_files: []
|
418
|
+
has_rdoc:
|
metadata.gz.sig
ADDED
Binary file
|
data/LICENSE
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
Copyright (c) 2015, Michael Granger and Mahlon E. Smith
|
2
|
-
All rights reserved.
|
3
|
-
|
4
|
-
Redistribution and use in source and binary forms, with or without
|
5
|
-
modification, are permitted provided that the following conditions are met:
|
6
|
-
|
7
|
-
* Redistributions of source code must retain the above copyright notice,
|
8
|
-
this list of conditions and the following disclaimer.
|
9
|
-
|
10
|
-
* Redistributions in binary form must reproduce the above copyright notice,
|
11
|
-
this list of conditions and the following disclaimer in the documentation
|
12
|
-
and/or other materials provided with the distribution.
|
13
|
-
|
14
|
-
* Neither the name of the author/s, nor the names of the project's
|
15
|
-
contributors may be used to endorse or promote products derived from this
|
16
|
-
software without specific prior written permission.
|
17
|
-
|
18
|
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
19
|
-
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
20
|
-
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
21
|
-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
22
|
-
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
23
|
-
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
24
|
-
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
25
|
-
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
26
|
-
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
27
|
-
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
28
|
-
|
29
|
-
|