okcomputer 1.13.0 → 1.14.0
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/ok_computer/built_in_checks/ping_check.rb +1 -1
- data/lib/ok_computer/check.rb +8 -0
- data/lib/ok_computer/check_collection.rb +65 -9
- data/lib/ok_computer/registry.rb +28 -13
- data/lib/ok_computer/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 772de60494a5720e23c186c4fc990e17e4457391
|
4
|
+
data.tar.gz: 70f52075d802e604aa84580aee2a50b2eb563060
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8996e1acb30679e1ec535a82415bbdf05560d3823fc6dfc59d62a6367c481da6e8965d46cc37d8dfb3647d8eb79c6694f13451da65211b98ab7f621e9de60e83
|
7
|
+
data.tar.gz: 3708ef0ded13c99216a1d00befcba8e3e33011526df7fd3030d4e4bb71544a9511310fbade738bf507ec1ff44a28dc498f45c46c99c493c0614a4d0d7eff7c73
|
@@ -42,7 +42,7 @@ module OkComputer
|
|
42
42
|
rescue SocketError => e
|
43
43
|
addl_message = "connection to #{host} on port #{port} failed with '#{e.message}': "
|
44
44
|
raise ConnectionFailed, addl_message + e.message
|
45
|
-
rescue
|
45
|
+
rescue Timeout::Error => e
|
46
46
|
addl_message = "#{host} did not respond on port #{port} within #{request_timeout} seconds: "
|
47
47
|
raise ConnectionFailed, addl_message + e.message
|
48
48
|
rescue => e
|
data/lib/ok_computer/check.rb
CHANGED
@@ -45,6 +45,14 @@ module OkComputer
|
|
45
45
|
{registrant_name => {:message => message, :success => success?, :time => time}}.to_json
|
46
46
|
end
|
47
47
|
|
48
|
+
def <=>(check)
|
49
|
+
if check.is_a?(CheckCollection)
|
50
|
+
-1
|
51
|
+
else
|
52
|
+
registrant_name <=> check.registrant_name
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
48
56
|
# Public: Whether the check passed
|
49
57
|
#
|
50
58
|
# Returns a boolean
|
@@ -1,32 +1,88 @@
|
|
1
1
|
module OkComputer
|
2
2
|
class CheckCollection
|
3
|
-
attr_accessor :
|
3
|
+
attr_accessor :collection, :registrant_name, :display
|
4
4
|
|
5
5
|
# Public: Initialize a new CheckCollection
|
6
6
|
#
|
7
|
-
#
|
8
|
-
|
9
|
-
|
10
|
-
self.
|
7
|
+
# display - the display name for the Check Collection
|
8
|
+
def initialize(display)
|
9
|
+
self.display = display
|
10
|
+
self.collection = {}
|
11
11
|
end
|
12
12
|
|
13
|
-
# Public: Run the
|
13
|
+
# Public: Run the collection's checks
|
14
14
|
def run
|
15
15
|
OkComputer.check_in_parallel ? check_in_parallel : check_in_sequence
|
16
16
|
end
|
17
17
|
|
18
|
+
# Public: Returns a check or collection if it's in the check collection
|
19
|
+
#
|
20
|
+
# key - a check or collection name
|
21
|
+
# throws a KeyError when the key is not found
|
22
|
+
def fetch(key, default=nil)
|
23
|
+
found_in = self_and_sub_collections.detect{ |c| c[key] }
|
24
|
+
raise KeyError unless found_in
|
25
|
+
found_in[key]
|
26
|
+
end
|
27
|
+
|
28
|
+
# Public: Returns a check or collection if it's in the check collection
|
29
|
+
#
|
30
|
+
# key - a check or collection name
|
31
|
+
def [](key)
|
32
|
+
fetch(key)
|
33
|
+
rescue KeyError
|
34
|
+
end
|
35
|
+
|
18
36
|
# Public: The list of checks in the collection
|
19
37
|
#
|
20
|
-
# Returns an Array of the
|
38
|
+
# Returns an Array of the collection's values
|
21
39
|
def checks
|
22
|
-
|
40
|
+
collection.values
|
41
|
+
end
|
42
|
+
|
43
|
+
def <=>(check)
|
44
|
+
if check.is_a?(CheckCollection)
|
45
|
+
registrant_name <=> check.registrant_name
|
46
|
+
else
|
47
|
+
1
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
alias_method :values, :checks
|
52
|
+
|
53
|
+
def check_names
|
54
|
+
collection.keys
|
55
|
+
end
|
56
|
+
|
57
|
+
alias_method :keys, :check_names
|
58
|
+
|
59
|
+
def sub_collections
|
60
|
+
checks.select{ |c| c.is_a?(CheckCollection)}
|
61
|
+
end
|
62
|
+
|
63
|
+
def self_and_sub_collections
|
64
|
+
[collection] + sub_collections
|
65
|
+
end
|
66
|
+
|
67
|
+
# Public: Registers a check into the collection
|
68
|
+
#
|
69
|
+
# Returns the check
|
70
|
+
def register(name, check)
|
71
|
+
collection[name] = check
|
72
|
+
end
|
73
|
+
|
74
|
+
# Public: Deregisters a check from the collection
|
75
|
+
#
|
76
|
+
# Returns the check
|
77
|
+
def deregister(name)
|
78
|
+
check = collection.delete(name)
|
23
79
|
end
|
24
80
|
|
25
81
|
# Public: The text of each check in the collection
|
26
82
|
#
|
27
83
|
# Returns a String
|
28
84
|
def to_text
|
29
|
-
checks.map(
|
85
|
+
"#{display}\n#{checks.sort.map{ |c| "#{"\s\s" unless c.is_a?(CheckCollection)}#{c.to_text}"}.join("\n")}"
|
30
86
|
end
|
31
87
|
|
32
88
|
# Public: The JSON of each check in the collection
|
data/lib/ok_computer/registry.rb
CHANGED
@@ -9,43 +9,58 @@ module OkComputer
|
|
9
9
|
# check_name - The name of the check to retrieve
|
10
10
|
#
|
11
11
|
# Returns the registered check or raises Registry::CheckNotFound
|
12
|
-
def self.fetch(
|
13
|
-
|
12
|
+
def self.fetch(name)
|
13
|
+
default_collection.fetch(name)
|
14
14
|
rescue KeyError
|
15
15
|
raise CheckNotFound, "No matching check"
|
16
16
|
end
|
17
17
|
|
18
18
|
# Public: Return an object containing all the registered checks
|
19
19
|
#
|
20
|
-
# Returns
|
20
|
+
# Returns the default_collection CheckCollection instance
|
21
21
|
def self.all
|
22
|
-
|
22
|
+
default_collection
|
23
|
+
end
|
24
|
+
|
25
|
+
# Private: The list of registered checks, keyed by their unique names
|
26
|
+
#
|
27
|
+
# Returns a Hash
|
28
|
+
singleton_class.send(:alias_method, :registry, :all)
|
29
|
+
|
30
|
+
# Public: The default collection of checks
|
31
|
+
#
|
32
|
+
# Returns @default_collection
|
33
|
+
def self.default_collection
|
34
|
+
@default_collection ||= CheckCollection.new('Default Collection')
|
23
35
|
end
|
24
36
|
|
25
37
|
# Public: Register the given check with OkComputer
|
26
38
|
#
|
27
39
|
# check_name - The name of the check to retrieve
|
28
40
|
# check_object - Instance of Checker to register
|
29
|
-
|
41
|
+
# collection_name - The name of the check collection the check should be registered to
|
42
|
+
def self.register(check_name, check_object, collection_name=nil)
|
30
43
|
check_object.registrant_name = check_name
|
31
|
-
|
44
|
+
find_collection(collection_name).register(check_name, check_object)
|
32
45
|
end
|
33
46
|
|
34
47
|
# Public: Remove the check of the given name being checked
|
35
48
|
#
|
36
49
|
# check_name - The name of the check to retrieve
|
37
|
-
|
38
|
-
|
50
|
+
# collection_name - The name of the check collection the check should be deregistered from
|
51
|
+
def self.deregister(check_name, collection_name=nil)
|
52
|
+
find_collection(collection_name).deregister(check_name)
|
39
53
|
end
|
40
54
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
@registry ||= {}
|
55
|
+
private_class_method def self.find_collection(collection_name=nil)
|
56
|
+
collection_name ? default_collection.fetch(collection_name) : default_collection
|
57
|
+
rescue KeyError
|
58
|
+
raise CollectionNotFound
|
46
59
|
end
|
47
60
|
|
61
|
+
|
48
62
|
# used when fetching a check that has not been registered
|
49
63
|
CheckNotFound = Class.new(StandardError)
|
64
|
+
CollectionNotFound = Class.new(StandardError)
|
50
65
|
end
|
51
66
|
end
|
data/lib/ok_computer/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: okcomputer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrick Byrne
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2017-01-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: sqlite3
|
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
version: '0'
|
125
125
|
requirements: []
|
126
126
|
rubyforge_project:
|
127
|
-
rubygems_version: 2.
|
127
|
+
rubygems_version: 2.4.8
|
128
128
|
signing_key:
|
129
129
|
specification_version: 4
|
130
130
|
summary: A simple, extensible health-check monitor
|