arborist 0.0.1.pre20160106113421
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.document +4 -0
- data/.simplecov +9 -0
- data/ChangeLog +417 -0
- data/Events.md +20 -0
- data/History.md +4 -0
- data/LICENSE +29 -0
- data/Manifest.txt +72 -0
- data/Monitors.md +141 -0
- data/Nodes.md +0 -0
- data/Observers.md +72 -0
- data/Protocol.md +214 -0
- data/README.md +75 -0
- data/Rakefile +81 -0
- data/TODO.md +24 -0
- data/bin/amanagerd +10 -0
- data/bin/amonitord +12 -0
- data/bin/aobserverd +12 -0
- data/lib/arborist.rb +182 -0
- data/lib/arborist/client.rb +191 -0
- data/lib/arborist/event.rb +61 -0
- data/lib/arborist/event/node_acked.rb +18 -0
- data/lib/arborist/event/node_delta.rb +20 -0
- data/lib/arborist/event/node_matching.rb +34 -0
- data/lib/arborist/event/node_update.rb +19 -0
- data/lib/arborist/event/sys_reloaded.rb +15 -0
- data/lib/arborist/exceptions.rb +21 -0
- data/lib/arborist/manager.rb +508 -0
- data/lib/arborist/manager/event_publisher.rb +97 -0
- data/lib/arborist/manager/tree_api.rb +207 -0
- data/lib/arborist/mixins.rb +363 -0
- data/lib/arborist/monitor.rb +377 -0
- data/lib/arborist/monitor/socket.rb +163 -0
- data/lib/arborist/monitor_runner.rb +217 -0
- data/lib/arborist/node.rb +700 -0
- data/lib/arborist/node/host.rb +87 -0
- data/lib/arborist/node/root.rb +60 -0
- data/lib/arborist/node/service.rb +112 -0
- data/lib/arborist/observer.rb +176 -0
- data/lib/arborist/observer/action.rb +125 -0
- data/lib/arborist/observer/summarize.rb +105 -0
- data/lib/arborist/observer_runner.rb +181 -0
- data/lib/arborist/subscription.rb +82 -0
- data/spec/arborist/client_spec.rb +282 -0
- data/spec/arborist/event/node_update_spec.rb +71 -0
- data/spec/arborist/event_spec.rb +64 -0
- data/spec/arborist/manager/event_publisher_spec.rb +66 -0
- data/spec/arborist/manager/tree_api_spec.rb +458 -0
- data/spec/arborist/manager_spec.rb +442 -0
- data/spec/arborist/mixins_spec.rb +195 -0
- data/spec/arborist/monitor/socket_spec.rb +195 -0
- data/spec/arborist/monitor_runner_spec.rb +152 -0
- data/spec/arborist/monitor_spec.rb +251 -0
- data/spec/arborist/node/host_spec.rb +104 -0
- data/spec/arborist/node/root_spec.rb +29 -0
- data/spec/arborist/node/service_spec.rb +98 -0
- data/spec/arborist/node_spec.rb +552 -0
- data/spec/arborist/observer/action_spec.rb +205 -0
- data/spec/arborist/observer/summarize_spec.rb +294 -0
- data/spec/arborist/observer_spec.rb +146 -0
- data/spec/arborist/subscription_spec.rb +71 -0
- data/spec/arborist_spec.rb +146 -0
- data/spec/data/monitors/pings.rb +80 -0
- data/spec/data/monitors/port_checks.rb +27 -0
- data/spec/data/monitors/system_resources.rb +30 -0
- data/spec/data/monitors/web_services.rb +17 -0
- data/spec/data/nodes/duir.rb +20 -0
- data/spec/data/nodes/localhost.rb +15 -0
- data/spec/data/nodes/sidonie.rb +29 -0
- data/spec/data/nodes/yevaud.rb +26 -0
- data/spec/data/observers/auditor.rb +23 -0
- data/spec/data/observers/webservices.rb +18 -0
- data/spec/spec_helper.rb +117 -0
- metadata +368 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
#encoding: utf-8
|
3
|
+
|
4
|
+
require 'arborist/monitor'
|
5
|
+
require 'arborist/mixins'
|
6
|
+
|
7
|
+
using Arborist::TimeRefinements
|
8
|
+
|
9
|
+
Arborist::Monitor 'disk space' do
|
10
|
+
match type: 'host'
|
11
|
+
every 5.minutes
|
12
|
+
exec ''
|
13
|
+
end
|
14
|
+
|
15
|
+
Arborist::Monitor 'media server disk space' do
|
16
|
+
# hostgroup :bennett
|
17
|
+
match type: 'host', tag: 'ldap'
|
18
|
+
exclude tag: 'infrastructure'
|
19
|
+
exclude type: 'host', name: ['havnor', 'torheven']
|
20
|
+
exec 'fping'
|
21
|
+
end
|
22
|
+
|
23
|
+
Arborist::Monitor "down check" do
|
24
|
+
match down: true
|
25
|
+
exec do |nodes|
|
26
|
+
nodes.map {|n| event :down_still, n.identifier }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
#encoding: utf-8
|
3
|
+
|
4
|
+
require 'net/http'
|
5
|
+
require 'arborist/monitor'
|
6
|
+
require 'arborist/mixins'
|
7
|
+
|
8
|
+
using Arborist::TimeRefinements
|
9
|
+
|
10
|
+
Arborist::Monitor 'web service check' do
|
11
|
+
match type: 'webservice'
|
12
|
+
exec do |nodes|
|
13
|
+
Net::HTTP
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
#encoding: utf-8
|
3
|
+
|
4
|
+
require 'arborist'
|
5
|
+
|
6
|
+
Arborist::Host 'duir' do
|
7
|
+
description "Router box"
|
8
|
+
address '192.168.16.1'
|
9
|
+
|
10
|
+
tags :infrastructure
|
11
|
+
|
12
|
+
# gateway_to 'Internet', interface: 'em0'
|
13
|
+
# gateway_to 'Internet', interface: 'em2'
|
14
|
+
|
15
|
+
service 'ssh'
|
16
|
+
|
17
|
+
service 'nat-pmp', port: 5351
|
18
|
+
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
#encoding: utf-8
|
3
|
+
|
4
|
+
require 'arborist'
|
5
|
+
|
6
|
+
|
7
|
+
Arborist::Host 'sidonie' do
|
8
|
+
parent 'duir'
|
9
|
+
description "NAS and media server"
|
10
|
+
address '192.168.16.3'
|
11
|
+
|
12
|
+
tags :infrastructure,
|
13
|
+
:storage,
|
14
|
+
:media,
|
15
|
+
:rip_status_check
|
16
|
+
|
17
|
+
service 'ssh'
|
18
|
+
service 'demon-http', port: 6666, protocol: 'http'
|
19
|
+
service 'postgresql'
|
20
|
+
|
21
|
+
service 'smtp'
|
22
|
+
|
23
|
+
service 'http'
|
24
|
+
service 'sabnzbd', port: 8080, type: 'http'
|
25
|
+
service 'sickbeard', port: 8081, type: 'http'
|
26
|
+
service 'pms', port: 32400, type: 'http'
|
27
|
+
service 'couchpotato', port: 5050, type: 'http'
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
#encoding: utf-8
|
3
|
+
|
4
|
+
require 'arborist'
|
5
|
+
|
6
|
+
|
7
|
+
Arborist::Host 'yevaud' do
|
8
|
+
parent 'duir'
|
9
|
+
address '192.168.16.10'
|
10
|
+
|
11
|
+
description "Laptop, running services for development."
|
12
|
+
|
13
|
+
tags :laptop,
|
14
|
+
:developer
|
15
|
+
|
16
|
+
service 'ssh'
|
17
|
+
service 'rabbitmq', app_protocol: 'amqp'
|
18
|
+
service 'postgresql'
|
19
|
+
|
20
|
+
service 'cozy_frontend', port: 3000, app_protocol: 'http'
|
21
|
+
service 'cozy_admin_frontend', port: 4331, app_protocol: 'http'
|
22
|
+
service 'cozy_services', port: 8888, app_protocol: 'http'
|
23
|
+
service 'cozy_admin_services', port: 8889, app_protocol: 'http'
|
24
|
+
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
#encoding: utf-8
|
3
|
+
|
4
|
+
require 'arborist'
|
5
|
+
|
6
|
+
|
7
|
+
Arborist::Observer "Audit Logger" do
|
8
|
+
subscribe to: 'node.update', on: 'localhost'
|
9
|
+
action do |uuid, event|
|
10
|
+
$stderr.puts "%s: %p" % [ uuid, event ]
|
11
|
+
end
|
12
|
+
summarize( every: 8 ) do |events|
|
13
|
+
$stderr.puts "Audit summary:"
|
14
|
+
events.each do |time, ev|
|
15
|
+
$stderr.puts " [%s] %s: %p" % [
|
16
|
+
time.strftime('%Y-%m-%d %H:%M:%S %z'),
|
17
|
+
ev['type'],
|
18
|
+
ev['data']
|
19
|
+
]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
#encoding: utf-8
|
3
|
+
|
4
|
+
require 'arborist'
|
5
|
+
|
6
|
+
|
7
|
+
Arborist::Observer "Webservers" do
|
8
|
+
subscribe to: 'node.delta',
|
9
|
+
where: { type: 'service', port: 80, status: ['up', 'down'] }
|
10
|
+
subscribe to: 'node.delta',
|
11
|
+
where: { type: 'service', port: 443, status: ['up', 'down'] }
|
12
|
+
|
13
|
+
action do |uuid, event|
|
14
|
+
$stderr.puts "Webserver %s is DOWN (%p)" % [ event['data']['identifier'], event['data'] ]
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
#encoding: utf-8
|
3
|
+
|
4
|
+
require 'pathname'
|
5
|
+
require 'simplecov' if ENV['COVERAGE']
|
6
|
+
require 'rspec'
|
7
|
+
require 'loggability/spechelpers'
|
8
|
+
require 'msgpack'
|
9
|
+
|
10
|
+
require 'arborist'
|
11
|
+
require 'arborist/manager'
|
12
|
+
require 'arborist/node'
|
13
|
+
require 'arborist/mixins'
|
14
|
+
|
15
|
+
|
16
|
+
class TestNode < Arborist::Node; end
|
17
|
+
|
18
|
+
class TestEvent < Arborist::Event; end
|
19
|
+
|
20
|
+
|
21
|
+
RSpec::Matchers.define( :match_criteria ) do |criteria|
|
22
|
+
match do |node|
|
23
|
+
criteria = Arborist::HashUtilities.stringify_keys( criteria )
|
24
|
+
node.matches?( criteria )
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
module Arborist::TestConstants
|
30
|
+
SPEC_DIR = Pathname( __FILE__ ).dirname
|
31
|
+
SPEC_DATA_DIR = SPEC_DIR + 'data'
|
32
|
+
|
33
|
+
TESTING_API_SOCK = "inproc://arborist-api"
|
34
|
+
TESTING_EVENT_SOCK = "inproc://arborist-events"
|
35
|
+
end
|
36
|
+
|
37
|
+
module Arborist::TestHelpers
|
38
|
+
|
39
|
+
include Arborist::TestConstants
|
40
|
+
|
41
|
+
def self::included( mod )
|
42
|
+
super
|
43
|
+
|
44
|
+
mod.around( :each ) do |example|
|
45
|
+
if example.metadata[:testing_manager]
|
46
|
+
Loggability[ Arborist ].info "Configuring the manager to use testing ports."
|
47
|
+
Arborist.configure({
|
48
|
+
tree_api_url: TESTING_API_SOCK,
|
49
|
+
event_api_url: TESTING_EVENT_SOCK,
|
50
|
+
})
|
51
|
+
|
52
|
+
example.run
|
53
|
+
|
54
|
+
Arborist.configure
|
55
|
+
|
56
|
+
File.unlink( TESTING_EVENT_SOCK ) if File.exist?( TESTING_EVENT_SOCK )
|
57
|
+
File.unlink( TESTING_API_SOCK ) if File.exist?( TESTING_API_SOCK )
|
58
|
+
else
|
59
|
+
example.run
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
def make_testing_manager
|
66
|
+
return Arborist.manager_for( SPEC_DATA_DIR + 'nodes' )
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
def pack_message( verb, *data )
|
71
|
+
body = data.pop
|
72
|
+
header = data.pop || {}
|
73
|
+
header.merge!( action: verb, version: 1 )
|
74
|
+
|
75
|
+
return MessagePack.pack([ header, body ])
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
def unpack_message( msg )
|
80
|
+
return MessagePack.unpack( msg )
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
#
|
85
|
+
# Fixture Functions
|
86
|
+
#
|
87
|
+
|
88
|
+
def node_subclass
|
89
|
+
@node_subclass ||= Class.new( Arborist::Node )
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
def testing_node( identifier, parent=nil, &block )
|
94
|
+
node = node_subclass.new( identifier, &block )
|
95
|
+
node.parent( parent ) if parent
|
96
|
+
return node
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
RSpec.configure do |config|
|
104
|
+
include Arborist::TestConstants
|
105
|
+
|
106
|
+
config.run_all_when_everything_filtered = true
|
107
|
+
config.filter_run :focus
|
108
|
+
config.order = 'random'
|
109
|
+
config.mock_with( :rspec ) do |mock|
|
110
|
+
mock.syntax = :expect
|
111
|
+
end
|
112
|
+
|
113
|
+
config.include( Loggability::SpecHelpers )
|
114
|
+
config.include( Arborist::TestHelpers )
|
115
|
+
end
|
116
|
+
|
117
|
+
|
metadata
ADDED
@@ -0,0 +1,368 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: arborist
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.pre20160106113421
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michael Granger
|
8
|
+
- Mahlon E. Smith
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain:
|
12
|
+
- |
|
13
|
+
-----BEGIN CERTIFICATE-----
|
14
|
+
MIIDbDCCAlSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MQwwCgYDVQQDDANnZWQx
|
15
|
+
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
16
|
+
HhcNMTUwNDAxMjEyNDEzWhcNMTYwMzMxMjEyNDEzWjA+MQwwCgYDVQQDDANnZWQx
|
17
|
+
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
18
|
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDb92mkyYwuGBg1oRxt2tkH
|
19
|
+
+Uo3LAsaL/APBfSLzy8o3+B3AUHKCjMUaVeBoZdWtMHB75X3VQlvXfZMyBxj59Vo
|
20
|
+
cDthr3zdao4HnyrzAIQf7BO5Y8KBwVD+yyXCD/N65TTwqsQnO3ie7U5/9ut1rnNr
|
21
|
+
OkOzAscMwkfQxBkXDzjvAWa6UF4c5c9kR/T79iA21kDx9+bUMentU59aCJtUcbxa
|
22
|
+
7kcKJhPEYsk4OdxR9q2dphNMFDQsIdRO8rywX5FRHvcb+qnXC17RvxLHtOjysPtp
|
23
|
+
EWsYoZMxyCDJpUqbwoeiM+tAHoz2ABMv3Ahie3Qeb6+MZNAtMmaWfBx3dg2u+/WN
|
24
|
+
AgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSZ0hCV
|
25
|
+
qoHr122fGKelqffzEQBhszAcBgNVHREEFTATgRFnZWRARmFlcmllTVVELm9yZzAc
|
26
|
+
BgNVHRIEFTATgRFnZWRARmFlcmllTVVELm9yZzANBgkqhkiG9w0BAQUFAAOCAQEA
|
27
|
+
lUKo3NXePpuvN3QGsOLJ6QhNd4+Q9Rz75GipuMrCl296V8QFkd2gg9EG44Pqtk+9
|
28
|
+
Zac8TkKc9bCSR0snakp+cCPplVvZF0/gMzkSTUJkDBHlNV16z73CyWpbQQa+iLJ4
|
29
|
+
uisI6gF2ZXK919MYLn2bFJfb7OsCvVfyTPqq8afPY+rq9vlf9ZPwU49AlD8bPRic
|
30
|
+
0LX0gO5ykvETIOv+WgGcqp96ceNi9XVuJMh20uWuw6pmv/Ub2RqAf82jQSbpz09G
|
31
|
+
G8LHR7EjtPPmqCCunfyecJ6MmCNaiJCBxq2NYzyNmluPyHT8+0fuB5kccUVZm6CD
|
32
|
+
xn3DzOkDE6NYbk8gC9rTsA==
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2016-01-06 00:00:00.000000000 Z
|
35
|
+
dependencies:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: schedulability
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0.1'
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0.1'
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: loggability
|
52
|
+
requirement: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - "~>"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0.11'
|
57
|
+
type: :runtime
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0.11'
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: configurability
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '2.2'
|
71
|
+
type: :runtime
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '2.2'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: pluggability
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0.4'
|
85
|
+
type: :runtime
|
86
|
+
prerelease: false
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - "~>"
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0.4'
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: state_machines
|
94
|
+
requirement: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - "~>"
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0.2'
|
99
|
+
type: :runtime
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - "~>"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0.2'
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: msgpack
|
108
|
+
requirement: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0.6'
|
113
|
+
type: :runtime
|
114
|
+
prerelease: false
|
115
|
+
version_requirements: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0.6'
|
120
|
+
- !ruby/object:Gem::Dependency
|
121
|
+
name: rbczmq
|
122
|
+
requirement: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - "~>"
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '1.7'
|
127
|
+
type: :runtime
|
128
|
+
prerelease: false
|
129
|
+
version_requirements: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - "~>"
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '1.7'
|
134
|
+
- !ruby/object:Gem::Dependency
|
135
|
+
name: hoe-mercurial
|
136
|
+
requirement: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - "~>"
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '1.4'
|
141
|
+
type: :development
|
142
|
+
prerelease: false
|
143
|
+
version_requirements: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - "~>"
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '1.4'
|
148
|
+
- !ruby/object:Gem::Dependency
|
149
|
+
name: hoe-deveiate
|
150
|
+
requirement: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - "~>"
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0.7'
|
155
|
+
type: :development
|
156
|
+
prerelease: false
|
157
|
+
version_requirements: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - "~>"
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0.7'
|
162
|
+
- !ruby/object:Gem::Dependency
|
163
|
+
name: hoe-highline
|
164
|
+
requirement: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - "~>"
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '0.2'
|
169
|
+
type: :development
|
170
|
+
prerelease: false
|
171
|
+
version_requirements: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - "~>"
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0.2'
|
176
|
+
- !ruby/object:Gem::Dependency
|
177
|
+
name: rdoc
|
178
|
+
requirement: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - "~>"
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '4.0'
|
183
|
+
type: :development
|
184
|
+
prerelease: false
|
185
|
+
version_requirements: !ruby/object:Gem::Requirement
|
186
|
+
requirements:
|
187
|
+
- - "~>"
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: '4.0'
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: rspec
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - "~>"
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '3.2'
|
197
|
+
type: :development
|
198
|
+
prerelease: false
|
199
|
+
version_requirements: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - "~>"
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: '3.2'
|
204
|
+
- !ruby/object:Gem::Dependency
|
205
|
+
name: simplecov
|
206
|
+
requirement: !ruby/object:Gem::Requirement
|
207
|
+
requirements:
|
208
|
+
- - "~>"
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: '0.9'
|
211
|
+
type: :development
|
212
|
+
prerelease: false
|
213
|
+
version_requirements: !ruby/object:Gem::Requirement
|
214
|
+
requirements:
|
215
|
+
- - "~>"
|
216
|
+
- !ruby/object:Gem::Version
|
217
|
+
version: '0.9'
|
218
|
+
- !ruby/object:Gem::Dependency
|
219
|
+
name: timecop
|
220
|
+
requirement: !ruby/object:Gem::Requirement
|
221
|
+
requirements:
|
222
|
+
- - "~>"
|
223
|
+
- !ruby/object:Gem::Version
|
224
|
+
version: '0.7'
|
225
|
+
type: :development
|
226
|
+
prerelease: false
|
227
|
+
version_requirements: !ruby/object:Gem::Requirement
|
228
|
+
requirements:
|
229
|
+
- - "~>"
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: '0.7'
|
232
|
+
- !ruby/object:Gem::Dependency
|
233
|
+
name: hoe
|
234
|
+
requirement: !ruby/object:Gem::Requirement
|
235
|
+
requirements:
|
236
|
+
- - "~>"
|
237
|
+
- !ruby/object:Gem::Version
|
238
|
+
version: '3.14'
|
239
|
+
type: :development
|
240
|
+
prerelease: false
|
241
|
+
version_requirements: !ruby/object:Gem::Requirement
|
242
|
+
requirements:
|
243
|
+
- - "~>"
|
244
|
+
- !ruby/object:Gem::Version
|
245
|
+
version: '3.14'
|
246
|
+
description: |-
|
247
|
+
Arborist is a monitoring framework that follows the UNIX philosophy
|
248
|
+
of small parts and loose coupling for stability, reliability, and
|
249
|
+
customizability.
|
250
|
+
email:
|
251
|
+
- ged@FaerieMUD.org
|
252
|
+
- mahlon@martini.nu
|
253
|
+
executables:
|
254
|
+
- amanagerd
|
255
|
+
- amonitord
|
256
|
+
- aobserverd
|
257
|
+
extensions: []
|
258
|
+
extra_rdoc_files:
|
259
|
+
- Events.md
|
260
|
+
- History.md
|
261
|
+
- Manifest.txt
|
262
|
+
- Monitors.md
|
263
|
+
- Nodes.md
|
264
|
+
- Observers.md
|
265
|
+
- Protocol.md
|
266
|
+
- README.md
|
267
|
+
- TODO.md
|
268
|
+
files:
|
269
|
+
- ".document"
|
270
|
+
- ".simplecov"
|
271
|
+
- ChangeLog
|
272
|
+
- Events.md
|
273
|
+
- History.md
|
274
|
+
- LICENSE
|
275
|
+
- Manifest.txt
|
276
|
+
- Monitors.md
|
277
|
+
- Nodes.md
|
278
|
+
- Observers.md
|
279
|
+
- Protocol.md
|
280
|
+
- README.md
|
281
|
+
- Rakefile
|
282
|
+
- TODO.md
|
283
|
+
- bin/amanagerd
|
284
|
+
- bin/amonitord
|
285
|
+
- bin/aobserverd
|
286
|
+
- lib/arborist.rb
|
287
|
+
- lib/arborist/client.rb
|
288
|
+
- lib/arborist/event.rb
|
289
|
+
- lib/arborist/event/node_acked.rb
|
290
|
+
- lib/arborist/event/node_delta.rb
|
291
|
+
- lib/arborist/event/node_matching.rb
|
292
|
+
- lib/arborist/event/node_update.rb
|
293
|
+
- lib/arborist/event/sys_reloaded.rb
|
294
|
+
- lib/arborist/exceptions.rb
|
295
|
+
- lib/arborist/manager.rb
|
296
|
+
- lib/arborist/manager/event_publisher.rb
|
297
|
+
- lib/arborist/manager/tree_api.rb
|
298
|
+
- lib/arborist/mixins.rb
|
299
|
+
- lib/arborist/monitor.rb
|
300
|
+
- lib/arborist/monitor/socket.rb
|
301
|
+
- lib/arborist/monitor_runner.rb
|
302
|
+
- lib/arborist/node.rb
|
303
|
+
- lib/arborist/node/host.rb
|
304
|
+
- lib/arborist/node/root.rb
|
305
|
+
- lib/arborist/node/service.rb
|
306
|
+
- lib/arborist/observer.rb
|
307
|
+
- lib/arborist/observer/action.rb
|
308
|
+
- lib/arborist/observer/summarize.rb
|
309
|
+
- lib/arborist/observer_runner.rb
|
310
|
+
- lib/arborist/subscription.rb
|
311
|
+
- spec/arborist/client_spec.rb
|
312
|
+
- spec/arborist/event/node_update_spec.rb
|
313
|
+
- spec/arborist/event_spec.rb
|
314
|
+
- spec/arborist/manager/event_publisher_spec.rb
|
315
|
+
- spec/arborist/manager/tree_api_spec.rb
|
316
|
+
- spec/arborist/manager_spec.rb
|
317
|
+
- spec/arborist/mixins_spec.rb
|
318
|
+
- spec/arborist/monitor/socket_spec.rb
|
319
|
+
- spec/arborist/monitor_runner_spec.rb
|
320
|
+
- spec/arborist/monitor_spec.rb
|
321
|
+
- spec/arborist/node/host_spec.rb
|
322
|
+
- spec/arborist/node/root_spec.rb
|
323
|
+
- spec/arborist/node/service_spec.rb
|
324
|
+
- spec/arborist/node_spec.rb
|
325
|
+
- spec/arborist/observer/action_spec.rb
|
326
|
+
- spec/arborist/observer/summarize_spec.rb
|
327
|
+
- spec/arborist/observer_spec.rb
|
328
|
+
- spec/arborist/subscription_spec.rb
|
329
|
+
- spec/arborist_spec.rb
|
330
|
+
- spec/data/monitors/pings.rb
|
331
|
+
- spec/data/monitors/port_checks.rb
|
332
|
+
- spec/data/monitors/system_resources.rb
|
333
|
+
- spec/data/monitors/web_services.rb
|
334
|
+
- spec/data/nodes/duir.rb
|
335
|
+
- spec/data/nodes/localhost.rb
|
336
|
+
- spec/data/nodes/sidonie.rb
|
337
|
+
- spec/data/nodes/yevaud.rb
|
338
|
+
- spec/data/observers/auditor.rb
|
339
|
+
- spec/data/observers/webservices.rb
|
340
|
+
- spec/spec_helper.rb
|
341
|
+
homepage: http://deveiate.org/projects/arborist
|
342
|
+
licenses:
|
343
|
+
- BSD-3-Clause
|
344
|
+
metadata: {}
|
345
|
+
post_install_message:
|
346
|
+
rdoc_options:
|
347
|
+
- "--main"
|
348
|
+
- README.md
|
349
|
+
require_paths:
|
350
|
+
- lib
|
351
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
352
|
+
requirements:
|
353
|
+
- - ">="
|
354
|
+
- !ruby/object:Gem::Version
|
355
|
+
version: 2.2.0
|
356
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
357
|
+
requirements:
|
358
|
+
- - ">"
|
359
|
+
- !ruby/object:Gem::Version
|
360
|
+
version: 1.3.1
|
361
|
+
requirements: []
|
362
|
+
rubyforge_project:
|
363
|
+
rubygems_version: 2.4.8
|
364
|
+
signing_key:
|
365
|
+
specification_version: 4
|
366
|
+
summary: Arborist is a monitoring framework that follows the UNIX philosophy of small
|
367
|
+
parts and loose coupling for stability, reliability, and customizability.
|
368
|
+
test_files: []
|