xymonclient 0.1.1 → 0.3.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/Gemfile.lock +7 -8
- data/README.md +4 -6
- data/lib/xymonclient/service.rb +62 -58
- data/lib/xymonclient/serviceitem.rb +77 -51
- data/lib/xymonclient/version.rb +1 -1
- data/spec/service_spec.rb +75 -3
- data/spec/serviceitem_spec.rb +23 -3
- metadata +18 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 433597de8de574da85cec7099ff4829917da96e5
|
4
|
+
data.tar.gz: 2ff97c778a0827001f3ccb53765b9f154ca544ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4251c26893977fa16afc8497c977c57d4ab78e1e6433896b05e7c01213ea4c6c933a18b12c61b8b8b2530a8290598ebed210f61ab03c90a08fb1378ce187ef8e
|
7
|
+
data.tar.gz: bf3be7509dd5129d42dbb1d9fa1ad6600433e573c69f472c71ed89e1814b6b318707f59914611d9551ec38baf6fba106a2ae4f37b6fd0acd678b3a457ed85144
|
data/Gemfile.lock
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
xymonclient (0.
|
4
|
+
xymonclient (0.3.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
ast (2.3.0)
|
10
|
-
codeclimate-test-reporter (1.0.
|
10
|
+
codeclimate-test-reporter (1.0.5)
|
11
11
|
simplecov
|
12
|
-
diff-lcs (1.
|
12
|
+
diff-lcs (1.3)
|
13
13
|
docile (1.1.5)
|
14
14
|
json (2.0.2-java)
|
15
|
-
parser (2.3.1
|
15
|
+
parser (2.3.3.1)
|
16
16
|
ast (~> 2.2)
|
17
17
|
powerpack (0.1.1)
|
18
|
-
rainbow (2.1
|
18
|
+
rainbow (2.2.1)
|
19
19
|
rake (10.5.0)
|
20
20
|
rspec (3.5.0)
|
21
21
|
rspec-core (~> 3.5.0)
|
@@ -42,13 +42,12 @@ GEM
|
|
42
42
|
json (>= 1.8, < 3)
|
43
43
|
simplecov-html (~> 0.10.0)
|
44
44
|
simplecov-html (0.10.0)
|
45
|
-
unicode-display_width (1.1.
|
45
|
+
unicode-display_width (1.1.3)
|
46
46
|
|
47
47
|
PLATFORMS
|
48
48
|
java
|
49
49
|
|
50
50
|
DEPENDENCIES
|
51
|
-
bundler (~> 1.13)
|
52
51
|
codeclimate-test-reporter (~> 1.0)
|
53
52
|
rake (~> 10.0)
|
54
53
|
rspec (~> 3.0)
|
@@ -57,4 +56,4 @@ DEPENDENCIES
|
|
57
56
|
xymonclient!
|
58
57
|
|
59
58
|
BUNDLED WITH
|
60
|
-
1.
|
59
|
+
1.14.2
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
[](https://badge.fury.io/rb/xymonclient)
|
2
|
-
[](https://travis-ci.org/Orange-OpenSource/ruby-xymonclient)
|
3
|
+
[](https://codeclimate.com/github/Orange-OpenSource/ruby-xymonclient)
|
4
|
+
<a href="https://codeclimate.com/github/Orange-OpenSource/ruby-xymonclient/coverage"><img src="https://codeclimate.com/github/Orange-OpenSource/ruby-xymonclient/badges/coverage.svg" /></a>
|
5
5
|
# XymonClient
|
6
6
|
|
7
7
|
XymonClient is a ruby library for interacting with Xymon
|
@@ -46,8 +46,6 @@ require 'xymonclient/service'
|
|
46
46
|
service = XymonClient::Service.new(['localhost:1984'],
|
47
47
|
'name' => 'service1',
|
48
48
|
'host' => 'myhost',
|
49
|
-
'header' => 'A sample header',
|
50
|
-
'footer' => 'A sample footer',
|
51
49
|
'items' => {
|
52
50
|
'ITEM1' => {
|
53
51
|
'label' => 'Gauge Item 1',
|
@@ -82,4 +80,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
82
80
|
|
83
81
|
## Contributing
|
84
82
|
|
85
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
83
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/Orange-OpenSource/ruby-xymonclient.
|
data/lib/xymonclient/service.rb
CHANGED
@@ -8,101 +8,104 @@ module XymonClient
|
|
8
8
|
# Manage a Service, can contains multiple items to monitor
|
9
9
|
class Service < XymonClient::Client
|
10
10
|
attr_reader :name
|
11
|
-
|
12
|
-
attr_reader :
|
13
|
-
|
14
|
-
|
11
|
+
attr_reader :status
|
12
|
+
attr_reader :items
|
13
|
+
attr_accessor :enabled
|
14
|
+
attr_accessor :lifetime
|
15
|
+
|
16
|
+
DEFAULT_DETAILS_TEMPLATE = \
|
17
|
+
"Generated at <%= @timestamp %> for <%= @lifetime %> \n" \
|
15
18
|
'<% @items.each do |item| %>' \
|
16
19
|
"&<%= item['status'] %> <%= item['label'] %>: <%= item['value'] %>\n" \
|
17
|
-
"<% end %>\n"
|
18
|
-
"<%= @footer %>\n".freeze
|
20
|
+
"<% end %>\n".freeze
|
19
21
|
|
20
22
|
def initialize(servers, config)
|
21
23
|
super(servers)
|
22
|
-
@
|
24
|
+
@items = {}
|
25
|
+
@current_state = 'purple'
|
23
26
|
update_config(config)
|
24
27
|
end
|
25
28
|
|
26
29
|
def update_config(config)
|
27
30
|
raise InvalidService if config.fetch('name', '') == ''
|
28
31
|
raise InvalidService if config.fetch('host', '') == ''
|
29
|
-
@
|
30
|
-
@
|
31
|
-
@
|
32
|
+
@name = config['name']
|
33
|
+
@host = config['host']
|
34
|
+
@details_template = config.fetch(
|
32
35
|
'details_template',
|
33
36
|
DEFAULT_DETAILS_TEMPLATE
|
34
37
|
)
|
35
|
-
@
|
36
|
-
@
|
37
|
-
@info['header'] = config.fetch('header', '')
|
38
|
-
@info['footer'] = config.fetch('footer', '')
|
38
|
+
@lifetime = config.fetch('lifetime', '30m')
|
39
|
+
@enabled = config.fetch('enabled', true)
|
39
40
|
if config.fetch('items', {}).empty?
|
40
|
-
@
|
41
|
+
@items = {}
|
41
42
|
else
|
42
|
-
_update_items_config(config)
|
43
|
+
_update_items_config(config['items'])
|
43
44
|
end
|
44
|
-
@
|
45
|
-
@info['status'] = @info.fetch('status', config.fetch('status', 'purple'))
|
45
|
+
@purple_item_status = config.fetch('purple_item_status', 'red')
|
46
46
|
end
|
47
47
|
|
48
|
-
def update_item(name, value)
|
49
|
-
raise InvalidServiceItem unless @
|
50
|
-
@
|
48
|
+
def update_item(name, value, attrs = {})
|
49
|
+
raise InvalidServiceItem unless @items.include?(name)
|
50
|
+
@items[name].value = value
|
51
|
+
@items[name].attributes.merge!(attrs)
|
51
52
|
end
|
52
53
|
|
53
54
|
def status
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
@timestamp = Time.now
|
56
|
+
return 'clear' unless @enabled
|
57
|
+
items_status = @items.map do |_key, value|
|
58
|
+
if value.status == 'purple'
|
59
|
+
@purple_item_status
|
58
60
|
else
|
59
|
-
value.
|
61
|
+
value.status
|
60
62
|
end
|
61
63
|
end
|
62
|
-
@
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
64
|
+
@current_state = unless items_status.empty?
|
65
|
+
if items_status.include?('red')
|
66
|
+
'red'
|
67
|
+
elsif items_status.include?('yellow') && \
|
68
|
+
@current_state != 'red'
|
69
|
+
'yellow'
|
70
|
+
else
|
71
|
+
'green'
|
72
|
+
end
|
73
|
+
end
|
72
74
|
details = _details
|
73
|
-
super(
|
74
|
-
|
75
|
-
@info['name'],
|
76
|
-
@info['status'],
|
77
|
-
details,
|
78
|
-
@info['lifetime']
|
79
|
-
)
|
80
|
-
[@info['status'], details]
|
75
|
+
super(@host, @name, @current_state, details, @lifetime)
|
76
|
+
[@current_state, details]
|
81
77
|
end
|
82
78
|
|
83
79
|
def enable
|
84
|
-
super(@
|
80
|
+
super(@host, @name)
|
85
81
|
end
|
86
82
|
|
87
83
|
def disable(duration, message)
|
88
|
-
super(@
|
84
|
+
super(@host, @name, duration, message)
|
89
85
|
end
|
90
86
|
|
91
87
|
def board(fields = [])
|
92
|
-
super(@
|
88
|
+
super(@host, @name, fields)
|
93
89
|
end
|
94
90
|
|
95
91
|
def ack(duration, message)
|
96
|
-
super(@
|
92
|
+
super(@host, @name, duration, message)
|
97
93
|
end
|
98
94
|
|
99
95
|
private
|
100
96
|
|
101
97
|
def _details
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
98
|
+
context = {
|
99
|
+
'name' => @name,
|
100
|
+
'host' => @host,
|
101
|
+
'status' => @current_state,
|
102
|
+
'items' => {},
|
103
|
+
'enabled' => @enabled,
|
104
|
+
'lifetime' => @lifetime,
|
105
|
+
'timestamp' => @timestamp
|
106
|
+
}
|
107
|
+
context['items'] = @items.map { |_name, item| item.context }
|
108
|
+
ERB.new(@details_template).result(
|
106
109
|
XymonClient::ERBContext.new(context).context
|
107
110
|
)
|
108
111
|
end
|
@@ -118,15 +121,16 @@ module XymonClient
|
|
118
121
|
end
|
119
122
|
end
|
120
123
|
|
121
|
-
def _update_items_config(
|
124
|
+
def _update_items_config(items)
|
122
125
|
# cleanup old items and update old items
|
123
|
-
@
|
124
|
-
@
|
125
|
-
item_value.update_config(
|
126
|
+
@items.keep_if { |key, _value| items.key?(key) }
|
127
|
+
@items.each do |item_name, item_value|
|
128
|
+
item_value.update_config(items[item_name])
|
126
129
|
end
|
127
130
|
# add new items
|
128
|
-
|
129
|
-
@
|
131
|
+
items.each do |item_name, item_config|
|
132
|
+
@items[item_name] = _create_serviceitem(item_config) \
|
133
|
+
unless @items.keys.include?(item_name)
|
130
134
|
end
|
131
135
|
end
|
132
136
|
end
|
@@ -6,67 +6,87 @@ module XymonClient
|
|
6
6
|
# Manage an item to monitor
|
7
7
|
class ServiceItem
|
8
8
|
attr_accessor :value
|
9
|
-
|
9
|
+
attr_accessor :attributes
|
10
|
+
attr_accessor :enabled
|
11
|
+
attr_accessor :description
|
12
|
+
attr_accessor :lifetime
|
13
|
+
attr_accessor :label
|
14
|
+
attr_reader :status
|
15
|
+
attr_reader :time
|
10
16
|
|
11
17
|
def initialize(config)
|
12
18
|
raise InvalidServiceItemName if config.fetch('label', '') == ''
|
13
|
-
@
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
'enabled' => config.fetch('enabled', true),
|
18
|
-
'status' => 'purple',
|
19
|
-
'lifetime' => config.fetch('lifetime', '30m'),
|
20
|
-
'time' => Time.at(0)
|
21
|
-
}
|
19
|
+
@time = Time.at(0)
|
20
|
+
@threshold = config.fetch('threshold', {})
|
21
|
+
@attributes = config.fetch('attributes', {})
|
22
|
+
update_config(config)
|
22
23
|
end
|
23
24
|
|
24
25
|
def value=(value)
|
25
|
-
@
|
26
|
-
@
|
26
|
+
@value = value
|
27
|
+
@time = Time.now
|
27
28
|
status
|
28
29
|
end
|
29
30
|
|
30
|
-
def value
|
31
|
-
@info['value']
|
32
|
-
end
|
33
|
-
|
34
31
|
def status
|
35
|
-
@
|
36
|
-
if !@
|
32
|
+
@status = \
|
33
|
+
if !@enabled
|
37
34
|
'clear'
|
38
|
-
elsif Time.now - @
|
39
|
-
XymonClient.timestring_to_time(@
|
35
|
+
elsif Time.now - @time > \
|
36
|
+
XymonClient.timestring_to_time(@lifetime)
|
40
37
|
'purple'
|
41
|
-
elsif XymonClient.valid_status?(@
|
42
|
-
@
|
38
|
+
elsif XymonClient.valid_status?(@value)
|
39
|
+
@value
|
43
40
|
else
|
44
41
|
'red'
|
45
42
|
end
|
46
43
|
end
|
44
|
+
|
45
|
+
def update_config(config)
|
46
|
+
raise InvalidServiceItemName if config.fetch('label', '') == ''
|
47
|
+
@label = config['label']
|
48
|
+
@description = config.fetch('description', '')
|
49
|
+
@enabled = config.fetch('enabled', true)
|
50
|
+
@lifetime = config.fetch('lifetime', '30m')
|
51
|
+
@threshold = config.fetch('threshold', {})
|
52
|
+
@attributes.merge!(config.fetch('attributes', {}))
|
53
|
+
end
|
54
|
+
|
55
|
+
def context
|
56
|
+
{
|
57
|
+
'label' => @label,
|
58
|
+
'description' => @description,
|
59
|
+
'enabled' => @enabled,
|
60
|
+
'lifetime' => @lifetime,
|
61
|
+
'timestamp' => @timestamp,
|
62
|
+
'threshold' => @threshold,
|
63
|
+
'attributes' => @attributes,
|
64
|
+
'status' => @status,
|
65
|
+
'value' => @value
|
66
|
+
}
|
67
|
+
end
|
47
68
|
end
|
48
69
|
|
49
70
|
##
|
50
71
|
class ServiceItemGauge < ServiceItem
|
51
72
|
def initialize(config)
|
52
73
|
super(config)
|
53
|
-
|
54
|
-
@info['nan_status'] = config.fetch('nan_status', 'green')
|
74
|
+
update_config(config)
|
55
75
|
end
|
56
76
|
|
57
77
|
def status
|
58
|
-
@
|
59
|
-
if !@
|
78
|
+
@status = \
|
79
|
+
if !@enabled
|
60
80
|
'clear'
|
61
|
-
elsif Time.now - @
|
62
|
-
XymonClient.timestring_to_time(@
|
81
|
+
elsif Time.now - @time > \
|
82
|
+
XymonClient.timestring_to_time(@lifetime)
|
63
83
|
'purple'
|
64
84
|
elsif value.instance_of?(Float) && value.nan?
|
65
|
-
@
|
66
|
-
elsif @
|
85
|
+
@threshold.fetch('nan_status', 'red')
|
86
|
+
elsif @threshold.key?('critical') && \
|
67
87
|
_threshold_reached?('critical')
|
68
88
|
'red'
|
69
|
-
elsif @
|
89
|
+
elsif @threshold.key?('warning') && \
|
70
90
|
_threshold_reached?('warning')
|
71
91
|
'yellow'
|
72
92
|
else
|
@@ -74,40 +94,46 @@ module XymonClient
|
|
74
94
|
end
|
75
95
|
end
|
76
96
|
|
97
|
+
def update_config(config)
|
98
|
+
super(config)
|
99
|
+
@nan_status = config.fetch('nan_status', 'green')
|
100
|
+
end
|
101
|
+
|
102
|
+
def context
|
103
|
+
{
|
104
|
+
'nan_status' => @nan_status
|
105
|
+
}.merge(super)
|
106
|
+
end
|
107
|
+
|
77
108
|
private
|
78
109
|
|
79
110
|
def _threshold_reached?(threshold)
|
80
|
-
case @
|
111
|
+
case @threshold.fetch('order', '<')
|
81
112
|
when '<'
|
82
|
-
@
|
113
|
+
@value < @threshold[threshold]
|
83
114
|
when '>'
|
84
|
-
@
|
115
|
+
@value > @threshold[threshold]
|
85
116
|
when '<='
|
86
|
-
@
|
117
|
+
@value <= @threshold[threshold]
|
87
118
|
when '>='
|
88
|
-
@
|
119
|
+
@value >= @threshold[threshold]
|
89
120
|
end
|
90
121
|
end
|
91
122
|
end
|
92
123
|
|
93
124
|
##
|
94
125
|
class ServiceItemString < ServiceItem
|
95
|
-
def initialize(config)
|
96
|
-
super(config)
|
97
|
-
@info['threshold'] = config.fetch('threshold', {})
|
98
|
-
end
|
99
|
-
|
100
126
|
def status
|
101
|
-
@
|
102
|
-
if !@
|
127
|
+
@status = \
|
128
|
+
if !@enabled
|
103
129
|
'clear'
|
104
|
-
elsif Time.now - @
|
105
|
-
XymonClient.timestring_to_time(@
|
130
|
+
elsif Time.now - @time > \
|
131
|
+
XymonClient.timestring_to_time(@lifetime)
|
106
132
|
'purple'
|
107
|
-
elsif @
|
133
|
+
elsif @threshold.key?('critical') && \
|
108
134
|
_threshold_reached?('critical')
|
109
135
|
'red'
|
110
|
-
elsif @
|
136
|
+
elsif @threshold.key?('warning') && \
|
111
137
|
_threshold_reached?('warning')
|
112
138
|
'yellow'
|
113
139
|
else
|
@@ -118,14 +144,14 @@ module XymonClient
|
|
118
144
|
private
|
119
145
|
|
120
146
|
def _threshold_reached?(threshold)
|
121
|
-
inclusive = @
|
122
|
-
values = @
|
147
|
+
inclusive = @threshold.fetch('inclusive', true)
|
148
|
+
values = @value
|
123
149
|
if values.instance_of?(Array)
|
124
150
|
value_is_included = values.any? do |value|
|
125
|
-
@
|
151
|
+
@threshold[threshold].include?(value)
|
126
152
|
end
|
127
153
|
else
|
128
|
-
value_is_included = @
|
154
|
+
value_is_included = @threshold[threshold].include?(values)
|
129
155
|
end
|
130
156
|
(inclusive && value_is_included) || (!inclusive && !value_is_included)
|
131
157
|
end
|
data/lib/xymonclient/version.rb
CHANGED
data/spec/service_spec.rb
CHANGED
@@ -9,8 +9,6 @@ describe XymonClient do
|
|
9
9
|
['localhost'],
|
10
10
|
'name' => 'service1',
|
11
11
|
'host' => 'myhost',
|
12
|
-
'header' => 'A sample header',
|
13
|
-
'footer' => 'A sample footer',
|
14
12
|
'items' => {
|
15
13
|
'ITEM1' => {
|
16
14
|
'label' => 'Gauge Item 1',
|
@@ -41,9 +39,83 @@ describe XymonClient do
|
|
41
39
|
# rubocop:disable LineLength
|
42
40
|
expect(service.status[0]).to eq('red')
|
43
41
|
expect(service.status[1]).to match(
|
44
|
-
/Generated at .* for 30m \
|
42
|
+
/Generated at .* for 30m \n&red Gauge Item 1: 3\n&green String Item 2: all is Ok !\n\n/
|
45
43
|
)
|
46
44
|
# rubocop:enable LineLength
|
47
45
|
end
|
46
|
+
|
47
|
+
context 'update config' do
|
48
|
+
let(:service_update) do
|
49
|
+
{
|
50
|
+
'name' => 'service1',
|
51
|
+
'host' => 'myhost',
|
52
|
+
'items' => {
|
53
|
+
'ITEM1' => {
|
54
|
+
'label' => 'Gauge Item 1',
|
55
|
+
'type' => 'gauge',
|
56
|
+
'threshold' => {
|
57
|
+
'order' => '<',
|
58
|
+
'critical' => 2,
|
59
|
+
'warning' => 10,
|
60
|
+
'nan_status' => 'red'
|
61
|
+
}
|
62
|
+
},
|
63
|
+
'ITEM3' => {
|
64
|
+
'label' => 'String Item 3',
|
65
|
+
'type' => 'string',
|
66
|
+
'threshold' => {
|
67
|
+
'inclusive' => false,
|
68
|
+
'critical' => ['all is KO !']
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
72
|
+
}
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'should update config with new item and delete olds' do
|
76
|
+
service.update_item('ITEM1', 3)
|
77
|
+
service.update_item('ITEM2', 'all is Ok !')
|
78
|
+
service.update_config(service_update)
|
79
|
+
allow(service).to receive(:_send) { '' }
|
80
|
+
# rubocop:disable LineLength
|
81
|
+
expect(service.status[0]).to eq('red')
|
82
|
+
expect(service.status[1]).to match(
|
83
|
+
/Generated at .* for 30m \n&yellow Gauge Item 1: 3\n&purple String Item 3: \n\n/
|
84
|
+
)
|
85
|
+
# rubocop:enable LineLength
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'use attributes' do
|
90
|
+
let(:service) do
|
91
|
+
XymonClient::Service.new(
|
92
|
+
['localhost'],
|
93
|
+
'name' => 'service1',
|
94
|
+
'host' => 'myhost',
|
95
|
+
'details_template' => '<% @items.each do |item| %>' \
|
96
|
+
"&<%= item['status'] %> " \
|
97
|
+
"<%= item['label'] %>: <%= item['value'] %>\n" \
|
98
|
+
"foo : <%= item['attributes']['foo'] %>\n" \
|
99
|
+
"<% end %>\n",
|
100
|
+
'items' => {
|
101
|
+
'ITEM1' => {
|
102
|
+
'label' => 'String Item 2',
|
103
|
+
'type' => 'string',
|
104
|
+
'threshold' => {
|
105
|
+
'inclusive' => false,
|
106
|
+
'critical' => ['all is Ok !']
|
107
|
+
}
|
108
|
+
}
|
109
|
+
}
|
110
|
+
)
|
111
|
+
end
|
112
|
+
it 'should access item\'s attributes from template' do
|
113
|
+
service.update_item('ITEM1', 'all is KO !', 'foo' => 'bar')
|
114
|
+
allow(service).to receive(:_send) { '' }
|
115
|
+
expect(service.status[1]).to match(
|
116
|
+
/&red String Item 2: all is KO !\nfoo : bar\n/
|
117
|
+
)
|
118
|
+
end
|
119
|
+
end
|
48
120
|
end
|
49
121
|
end
|
data/spec/serviceitem_spec.rb
CHANGED
@@ -50,7 +50,17 @@ describe XymonClient do
|
|
50
50
|
|
51
51
|
describe XymonClient::ServiceItemString do
|
52
52
|
describe 'inclusive' do
|
53
|
-
let(:config)
|
53
|
+
let(:config) do
|
54
|
+
{
|
55
|
+
'label' => 'Item 1',
|
56
|
+
'threshold' => {
|
57
|
+
'inclusive' => true,
|
58
|
+
'critical' => ['foo'],
|
59
|
+
'warning' => ['bar']
|
60
|
+
}
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
54
64
|
it 'should return red status when value is included in critical threshold' do
|
55
65
|
item = described_class.new(config)
|
56
66
|
item.value = 'foo'
|
@@ -71,7 +81,17 @@ describe XymonClient do
|
|
71
81
|
end
|
72
82
|
|
73
83
|
describe 'exclusive' do
|
74
|
-
let(:config)
|
84
|
+
let(:config) do
|
85
|
+
{
|
86
|
+
'label' => 'Item 1',
|
87
|
+
'threshold' => {
|
88
|
+
'inclusive' => false,
|
89
|
+
'critical' => ['foo'],
|
90
|
+
'warning' => ['bar']
|
91
|
+
}
|
92
|
+
}
|
93
|
+
end
|
94
|
+
|
75
95
|
it 'should return red status when "foo" is not included in critical threshold' do
|
76
96
|
item = described_class.new(config)
|
77
97
|
item.value = ['bar']
|
@@ -86,7 +106,7 @@ describe XymonClient do
|
|
86
106
|
|
87
107
|
it 'should return green status when all values are included in critical/warning threshold' do
|
88
108
|
item = described_class.new(config)
|
89
|
-
item.value =
|
109
|
+
item.value = %w(foo bar)
|
90
110
|
expect(item.status).to eq('green')
|
91
111
|
end
|
92
112
|
end
|
metadata
CHANGED
@@ -1,94 +1,80 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xymonclient
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Chauviere
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.13'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.13'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
14
|
requirement: !ruby/object:Gem::Requirement
|
30
15
|
requirements:
|
31
16
|
- - "~>"
|
32
17
|
- !ruby/object:Gem::Version
|
33
18
|
version: '10.0'
|
34
|
-
|
19
|
+
name: rake
|
35
20
|
prerelease: false
|
21
|
+
type: :development
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
24
|
- - "~>"
|
39
25
|
- !ruby/object:Gem::Version
|
40
26
|
version: '10.0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec
|
43
28
|
requirement: !ruby/object:Gem::Requirement
|
44
29
|
requirements:
|
45
30
|
- - "~>"
|
46
31
|
- !ruby/object:Gem::Version
|
47
32
|
version: '3.0'
|
48
|
-
|
33
|
+
name: rspec
|
49
34
|
prerelease: false
|
35
|
+
type: :development
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '3.0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
|
-
name: rubocop
|
57
42
|
requirement: !ruby/object:Gem::Requirement
|
58
43
|
requirements:
|
59
44
|
- - '='
|
60
45
|
- !ruby/object:Gem::Version
|
61
46
|
version: '0.40'
|
62
|
-
|
47
|
+
name: rubocop
|
63
48
|
prerelease: false
|
49
|
+
type: :development
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - '='
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '0.40'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
|
-
name: simplecov
|
71
56
|
requirement: !ruby/object:Gem::Requirement
|
72
57
|
requirements:
|
73
58
|
- - "~>"
|
74
59
|
- !ruby/object:Gem::Version
|
75
60
|
version: 0.12.0
|
76
|
-
|
61
|
+
name: simplecov
|
77
62
|
prerelease: false
|
63
|
+
type: :development
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: 0.12.0
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
|
-
name: codeclimate-test-reporter
|
85
70
|
requirement: !ruby/object:Gem::Requirement
|
86
71
|
requirements:
|
87
72
|
- - "~>"
|
88
73
|
- !ruby/object:Gem::Version
|
89
74
|
version: '1.0'
|
90
|
-
|
75
|
+
name: codeclimate-test-reporter
|
91
76
|
prerelease: false
|
77
|
+
type: :development
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - "~>"
|
@@ -119,11 +105,11 @@ files:
|
|
119
105
|
- spec/serviceitem_spec.rb
|
120
106
|
- spec/spec_helper.rb
|
121
107
|
- spec/xymonclient_spec.rb
|
122
|
-
homepage: https://github.com/
|
108
|
+
homepage: https://github.com/Orange-OpenSource/ruby-xymonclient
|
123
109
|
licenses:
|
124
110
|
- Apache-2.0
|
125
111
|
metadata: {}
|
126
|
-
post_install_message:
|
112
|
+
post_install_message:
|
127
113
|
rdoc_options: []
|
128
114
|
require_paths:
|
129
115
|
- lib
|
@@ -138,10 +124,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
124
|
- !ruby/object:Gem::Version
|
139
125
|
version: '0'
|
140
126
|
requirements: []
|
141
|
-
rubyforge_project:
|
142
|
-
rubygems_version: 2.
|
143
|
-
signing_key:
|
127
|
+
rubyforge_project:
|
128
|
+
rubygems_version: 2.4.8
|
129
|
+
signing_key:
|
144
130
|
specification_version: 4
|
145
131
|
summary: Xymon client library
|
146
132
|
test_files: []
|
147
|
-
has_rdoc:
|