nagios_nrdp 0.0.1

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ODQ2MGU1NTlhMzNkOTMyZDg2OTZkNjAzZmRhYzUyZjI3Y2I0NjYxOQ==
5
+ data.tar.gz: !binary |-
6
+ YjhmMzI1OGY4ZjE1YjJhZWZmZTZiZjM2ZWQ3NzNkYmQwMDQ5MDNjNg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ YTJkNzUxZGVmNmJjZDhmNzgyZDc1YmZjOWRmNmZlNDI0YmE0MGRkMmU0Njg5
10
+ YzMyZWZkNjRkYTRlMjk0NzM2NTc3NzRiZDdmYTMzMGU1ODgxZjAzMDMwMmM4
11
+ Y2UyMTg5NDk5MWE4NWEzOTIxMGU3N2IxZGI3ODEyZDliMTM5YTM=
12
+ data.tar.gz: !binary |-
13
+ ODcyOTEzMGU3MzFmNTI2MmQ2NDE0OWI3Y2JhOGJkZDE2MjE5NTJkYzljMjBl
14
+ NDkzZjU5ZjU1ODUwNDdjZGFhYTQzZTgxYzAyOTdmYzljODU5MDExMTcwODY1
15
+ ZmJlZjY4NzUxYjRkZjkwYjIxNzIzMTNhOWY5NWYwYmZiYmY4MDg=
@@ -0,0 +1,66 @@
1
+ # Nagios::Nrdp
2
+
3
+ [![Build Status](https://travis-ci.org/stjeanp/nagios_nrdp.svg?branch=master)](https://travis-ci.org/stjeanp/nagios_nrdp) [![Coverage Status](https://coveralls.io/repos/stjeanp/nagios_nrdp/badge.svg?branch=master&service=github)](https://coveralls.io/github/stjeanp/nagios_nrdp?branch=master)
4
+
5
+ ## About
6
+
7
+ The Nagios::Nrdp module provides the ability to submit passive check results and commands to a Nagios server using [NRDP](https://exchange.nagios.org/directory/Addons/Passive-Checks/NRDP--2D-Nagios-Remote-Data-Processor/details). It currenly only supports token based authentication.
8
+
9
+ ## Installation Instructions
10
+
11
+ 1. Install and configure [NRDP](https://exchange.nagios.org/directory/Addons/Passive-Checks/NRDP--2D-Nagios-Remote-Data-Processor/details).
12
+ 2. `gem install nagios_nrdp`
13
+
14
+ ## Basic Usage
15
+
16
+ * Send a host passive check
17
+
18
+ ```ruby
19
+ require 'nagios_nrdp'
20
+
21
+ url = 'http://some.host/nrdp'
22
+ token = 'your token'
23
+ hostname = 'hostname'
24
+ state = 1
25
+ output = 'DOWN'
26
+
27
+ nrdp = Nagios::Nrdp.new(url: url, token: token)
28
+ nrdp.submit_check(hostname: hostname, state: state.to_i, output: output)
29
+ ```
30
+
31
+ * Send a service passive check:
32
+
33
+ ```ruby
34
+ require 'nagios_nrdp'
35
+
36
+ url = 'http://some.host/nrdp'
37
+ token = 'your token'
38
+ hostname = 'hostname'
39
+ servicename = 'service'
40
+ state = 1
41
+ output = 'DOWN'
42
+
43
+ nrdp = Nagios::Nrdp.new(url: url, token: token)
44
+ nrdp.submit_check(hostname: hostname, servicename: servicename, state: state.to_i, output: output)
45
+ ```
46
+
47
+ * Send a command:
48
+
49
+ ```ruby
50
+ require 'nagios_nrdp'
51
+
52
+ url = 'http://some.host/nrdp'
53
+ token = 'your token'
54
+ command = 'COMMAND;hostname'
55
+
56
+ nrdp = Nagios::Nrdp.new(url: url, token: token)
57
+ nrdp.submit_command(command)
58
+ ```
59
+
60
+ ## Contributing
61
+
62
+ 1. Fork it ( https://github.com/stjeanp/nagios_nrdp/fork )
63
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
64
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
65
+ 4. Push to the branch (`git push origin my-new-feature`)
66
+ 5. Create a new Pull Request
@@ -0,0 +1,40 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rspec/core/rake_task'
4
+ require 'bundler/gem_tasks'
5
+ require 'rubocop/rake_task'
6
+
7
+ task :default => :test
8
+
9
+ RSpec::Core::RakeTask.new(:spec)
10
+
11
+ RuboCop::RakeTask.new(:rubocop) do |task|
12
+ task.patterns = ['lib/**/*.rb', 'examples/**/*.rb']
13
+ task.formatters = ['files']
14
+ task.fail_on_error = true
15
+ end
16
+
17
+ begin
18
+ require 'jeweler'
19
+ Jeweler::Tasks.new do |gem|
20
+ gem.name = 'nagios_nrdp'
21
+ gem.summary = 'A ruby gem for submitting passive checks and commands to Nagios through NRDP.'
22
+ gem.description = 'A pure ruby implementation an NRDP client for submitting passive checks and commands to Nagios through NRDP.'
23
+ gem.email = 'stjeanp@pat-st-jean.com'
24
+ gem.homepage = 'http://github.com/stjeanp/nrdp'
25
+ gem.authors = ['stjeanp']
26
+ gem.require_path = 'lib'
27
+ gem.files = %w(README.md Rakefile) + Dir['lib/**/*'] + Dir['spec/**/*']
28
+ gem.test_files = Dir['spec/**/*']
29
+ gem.licenses = ['MIT']
30
+ end
31
+ Jeweler::GemcutterTasks.new
32
+ rescue LoadError
33
+ puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler'
34
+ end
35
+
36
+ desc "Run syntax, lint, and rspec tests..."
37
+ task :test => [
38
+ :rubocop,
39
+ :spec,
40
+ ]
@@ -0,0 +1,132 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'nokogiri'
4
+
5
+ module Nagios
6
+ # Implements an interface to Nagios NRDP to facilitate submitting check
7
+ # results and commands
8
+ class Nrdp
9
+ attr_accessor :url
10
+ attr_accessor :token
11
+
12
+ def initialize(args = {})
13
+ @url = args[:url] || nil
14
+ @token = args[:token] || nil
15
+
16
+ fail ArgumentError, 'The URL supplied is invalid!' unless @url && !@url.empty?
17
+ begin
18
+ the_uri = URI.parse(url)
19
+ fail ArgumentError, 'The URL supplied is invalid!' unless the_uri.is_a? URI::HTTP
20
+ rescue URI::InvalidURIError
21
+ raise ArgumentError, 'The URL supplied is invalid!'
22
+ end
23
+ fail ArgumentError, 'The token supplied is invalid!' unless @token && !@token.empty?
24
+ end
25
+
26
+ def submit_check(*args)
27
+ if args[0].is_a? Hash
28
+ the_checks = [args[0]]
29
+ else
30
+ the_checks = args[0]
31
+ end
32
+
33
+ payload = build_xml(the_checks)
34
+
35
+ the_uri = URI.parse(@url)
36
+ http = Net::HTTP.new(the_uri.host, the_uri.port)
37
+ if the_uri.scheme == 'https'
38
+ http.use_ssl = true
39
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
40
+ end
41
+ request = Net::HTTP::Post.new(the_uri.request_uri + '/')
42
+ request.set_form_data(token: token, cmd: 'submitcheck', XMLDATA: payload)
43
+ request['Accept'] = 'text/*'
44
+ request['User-Agent'] = 'NrdpClient/1.0'
45
+ response = http.request(request)
46
+
47
+ if response.code != '200'
48
+ fail "Didn't get a 200 (" + response.code.to_s + ')'
49
+ end
50
+
51
+ doc = Nokogiri::XML(response.body)
52
+
53
+ status = doc.xpath('//status').first.content.to_i
54
+ message = doc.xpath('//message').first.content
55
+
56
+ fail "Status isn't 0 (" + message + ')' unless status == 0
57
+
58
+ count_agrees = false
59
+ doc.xpath('//output').each do |output|
60
+ if output.content == "#{the_checks.count} checks processed."
61
+ count_agrees = true
62
+ end
63
+ end
64
+ fail 'Not all notifications were processed!' unless count_agrees
65
+ true
66
+ end
67
+ alias_method :submit_checks, :submit_check
68
+
69
+ def submit_command(the_command = '')
70
+ if !the_command || !the_command.is_a?(String) || the_command.empty?
71
+ fail ArgumentError, 'Invalid command supplied!'
72
+ end
73
+
74
+ the_uri = URI.parse(@url)
75
+ http = Net::HTTP.new(the_uri.host, the_uri.port)
76
+ if the_uri.scheme == 'https'
77
+ http.use_ssl = true
78
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
79
+ end
80
+ query = "?token=#{token}&cmd=submitcmd&command=#{the_command}"
81
+ request = Net::HTTP::Get.new(the_uri.request_uri + '/' + query)
82
+ request['Accept'] = 'text/*'
83
+ request['User-Agent'] = 'NrdpClient/1.0'
84
+ response = http.request(request)
85
+
86
+ if response.code != '200'
87
+ fail "Didn't get a 200 (" + response.code.to_s + ')'
88
+ end
89
+
90
+ doc = Nokogiri::XML(response.body)
91
+
92
+ status = doc.xpath('//status').first.content.to_i
93
+ message = doc.xpath('//message').first.content
94
+
95
+ fail "Status isn't 0 (" + message + ')' unless status == 0
96
+ true
97
+ end
98
+
99
+ private
100
+
101
+ def validate_check(the_check = {})
102
+ fail ArgumentError, 'Unknown parameters in check!' unless the_check.keys.all? { |key| [:hostname, :servicename, :state, :output].include? key }
103
+ if [:hostname, :state, :output].any? { |key| !the_check.key?(key) }
104
+ fail ArgumentError, 'You must provide all check details!'
105
+ end
106
+ fail ArgumentError, "Check's state must be an integer!" unless the_check[:state].is_a? Integer
107
+ end
108
+
109
+ def build_xml(the_checks = [])
110
+ if the_checks.nil? || the_checks.count < 1
111
+ fail ArgumentError, 'You must send at least one check!'
112
+ end
113
+
114
+ the_xml = "<?xml version='1.0'?>\n"
115
+ the_xml += "<checkresults>\n"
116
+ the_checks.each do |check|
117
+ validate_check(check)
118
+ the_xml += " <checkresult type='"
119
+ the_xml += check[:servicename] ? 'service' : 'host'
120
+ the_xml += "'>\n"
121
+ the_xml += ' <hostname>' + check[:hostname] + "</hostname>\n"
122
+ if check[:servicename]
123
+ the_xml += ' <servicename>' + check[:servicename] + "</servicename>\n"
124
+ end
125
+ the_xml += ' <state>' + check[:state].to_s + "</state>\n"
126
+ the_xml += ' <output>' + check[:output] + "</output>\n"
127
+ the_xml += " </checkresult>\n"
128
+ end
129
+ the_xml += "</checkresults>\n"
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,4 @@
1
+ # Get our loading done correctly
2
+ module Nagios
3
+ autoload :Nrdp, 'nagios/nrdp'
4
+ end
@@ -0,0 +1,299 @@
1
+ require 'spec_helper'
2
+
3
+ describe Nagios::Nrdp do
4
+ it '#initialize should raise an error without no args' do
5
+ expect { Nagios::Nrdp.new }.to raise_error(ArgumentError)
6
+ end
7
+
8
+ it '#initialize should raise an error without a token' do
9
+ expect { Nagios::Nrdp.new(url: 'http://localhost/nrdp') }.to raise_error(ArgumentError)
10
+ end
11
+
12
+ it '#initialize should raise an error without a URL' do
13
+ expect { Nagios::Nrdp.new(token: 'foobar') }.to raise_error(ArgumentError)
14
+ end
15
+
16
+ it '#initialize should raise an error with an invalid URL' do
17
+ expect { Nagios::Nrdp.new(url: 'httq::\\/localhost/nrdp', token: 'foobar') }.to raise_error(ArgumentError)
18
+ end
19
+
20
+ it '#initialize should raise an error with an invalid token' do
21
+ expect { Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: '') }.to raise_error(ArgumentError)
22
+ end
23
+
24
+ it '#initialize' do
25
+ expect(Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')).to be_an_instance_of Nagios::Nrdp
26
+ end
27
+
28
+ it '#submit_check should alert on missing hostname parameter' do
29
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
30
+ expect { nrdp.submit_check(state: 0, output: 'UP') }.to raise_error(ArgumentError)
31
+ end
32
+
33
+ it '#submit_check should alert on missing state parameter' do
34
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
35
+ expect { nrdp.submit_check(hostname: 'foobar', output: 'UP') }.to raise_error(ArgumentError)
36
+ end
37
+
38
+ it '#submit_check should alert on missing output parameter' do
39
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
40
+ expect { nrdp.submit_check(hostname: 'foobar', state: 0) }.to raise_error(ArgumentError)
41
+ end
42
+
43
+ it '#submit_check should alert on unknown parameter' do
44
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
45
+ expect { nrdp.submit_check(hostname: 'foobar', state: 0, output: 'UP', blarg: 'blop') }.to raise_error(ArgumentError)
46
+ end
47
+
48
+ it '#submit_check should alert when called with no args' do
49
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
50
+ expect { nrdp.submit_check }.to raise_error(ArgumentError)
51
+ end
52
+
53
+ it '#submit_check should alert when called with an empty hash' do
54
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
55
+ expect { nrdp.submit_check({}) }.to raise_error(ArgumentError)
56
+ end
57
+
58
+ it '#submit_check should alert when called with an empty array' do
59
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
60
+ expect { nrdp.submit_check([]) }.to raise_error(ArgumentError)
61
+ end
62
+
63
+ it '#submit_check, single, host, successful' do
64
+ body = <<-EOXML
65
+ <result>
66
+ <status>0</status>
67
+ <message>OK</message>
68
+ <meta>
69
+ <output>1 checks processed.</output>
70
+ </meta>
71
+ </result>
72
+ EOXML
73
+ stub_request(:post, 'http://localhost/nrdp/').to_return(body: body, status: 200)
74
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
75
+ expect(nrdp.submit_check(hostname: 'foobar', state: 0, output: 'UP')).to eq(true)
76
+ WebMock.reset!
77
+ end
78
+
79
+ it '#submit_check, single, ssl, host, successful' do
80
+ body = <<-EOXML
81
+ <result>
82
+ <status>0</status>
83
+ <message>OK</message>
84
+ <meta>
85
+ <output>1 checks processed.</output>
86
+ </meta>
87
+ </result>
88
+ EOXML
89
+ stub_request(:post, 'https://localhost/nrdp/').to_return(body: body, status: 200)
90
+ nrdp = Nagios::Nrdp.new(url: 'https://localhost/nrdp', token: 'foobar')
91
+ expect(nrdp.submit_check(hostname: 'foobar', state: 0, output: 'UP')).to eq(true)
92
+ WebMock.reset!
93
+ end
94
+
95
+ it '#submit_check, 404 error' do
96
+ body = "404: NOT FOUND"
97
+ stub_request(:post, 'http://localhost/nrdp/').to_return(body: body, status: 404)
98
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
99
+ expect { nrdp.submit_check(hostname: 'foobar', state: 0, output: 'UP') }.to raise_error(RuntimeError)
100
+ WebMock.reset!
101
+ end
102
+
103
+ it '#submit_check, single, service, successful' do
104
+ body = <<-EOXML
105
+ <result>
106
+ <status>0</status>
107
+ <message>OK</message>
108
+ <meta>
109
+ <output>1 checks processed.</output>
110
+ </meta>
111
+ </result>
112
+ EOXML
113
+ stub_request(:post, 'http://localhost/nrdp/').to_return(body: body, status: 200)
114
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
115
+ expect(nrdp.submit_check(hostname: 'foobar', servicename: 'something', state: 0, output: 'UP')).to eq(true)
116
+ WebMock.reset!
117
+ end
118
+
119
+ it '#submit_check, single, host, failed' do
120
+ body = <<-EOXML
121
+ <result>
122
+ <status>-1</status>
123
+ <message>NO DATA</message>
124
+ </result>
125
+ EOXML
126
+ stub_request(:post, 'http://localhost/nrdp/').to_return(body: body, status: 200)
127
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
128
+ expect { nrdp.submit_check(hostname: 'foobar', state: 0, output: 'UP') }.to raise_error(RuntimeError)
129
+ WebMock.reset!
130
+ end
131
+
132
+ it '#submit_check, single, service, failed' do
133
+ body = <<-EOXML
134
+ <result>
135
+ <status>-1</status>
136
+ <message>NO DATA</message>
137
+ </result>
138
+ EOXML
139
+ stub_request(:post, 'http://localhost/nrdp/').to_return(body: body, status: 200)
140
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
141
+ expect { nrdp.submit_check(hostname: 'foobar', servicename: 'blarg', state: 0, output: 'UP') }.to raise_error(RuntimeError)
142
+ WebMock.reset!
143
+ end
144
+
145
+ it '#submit_check, single, wrong count' do
146
+ body = <<-EOXML
147
+ <result>
148
+ <status>0</status>
149
+ <message>OK</message>
150
+ <meta>
151
+ <output>2 checks processed.</output>
152
+ </meta>
153
+ </result>
154
+ EOXML
155
+ stub_request(:post, 'http://localhost/nrdp/').to_return(body: body, status: 200)
156
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
157
+ expect { nrdp.submit_check(hostname: 'foobar', state: 0, output: 'UP') }.to raise_error(RuntimeError)
158
+ WebMock.reset!
159
+ end
160
+
161
+ it '#submit_check, multiple, all host, successful' do
162
+ body = <<-EOXML
163
+ <result>
164
+ <status>0</status>
165
+ <message>OK</message>
166
+ <meta>
167
+ <output>2 checks processed.</output>
168
+ </meta>
169
+ </result>
170
+ EOXML
171
+ stub_request(:post, 'http://localhost/nrdp/').to_return(body: body, status: 200)
172
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
173
+ checks = [{ hostname: 'foobar', state: 1, output: 'testing' },
174
+ { hostname: 'foobarbaz', state: 0, output: 'moar testing' }]
175
+ expect(nrdp.submit_check(checks)).to eq(true)
176
+ WebMock.reset!
177
+ end
178
+
179
+ it '#submit_check, multiple, all service, successful' do
180
+ body = <<-EOXML
181
+ <result>
182
+ <status>0</status>
183
+ <message>OK</message>
184
+ <meta>
185
+ <output>2 checks processed.</output>
186
+ </meta>
187
+ </result>
188
+ EOXML
189
+ stub_request(:post, 'http://localhost/nrdp/').to_return(body: body, status: 200)
190
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
191
+ checks = [{ hostname: 'foobar', servicename: 'the_service', state: 1, output: 'testing' },
192
+ { hostname: 'foobarbaz', servicename: 'another_service', state: 0, output: 'moar testing' }]
193
+ expect(nrdp.submit_check(checks)).to eq(true)
194
+ WebMock.reset!
195
+ end
196
+
197
+ it '#submit_check, multiple, mixed host/service, successful' do
198
+ body = <<-EOXML
199
+ <result>
200
+ <status>0</status>
201
+ <message>OK</message>
202
+ <meta>
203
+ <output>2 checks processed.</output>
204
+ </meta>
205
+ </result>
206
+ EOXML
207
+ stub_request(:post, 'http://localhost/nrdp/').to_return(body: body, status: 200)
208
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
209
+ checks = [{ hostname: 'foobar', servicename: 'the_service', state: 1, output: 'testing' },
210
+ { hostname: 'foobarbaz', state: 0, output: 'moar testing' }]
211
+ expect(nrdp.submit_check(checks)).to eq(true)
212
+ WebMock.reset!
213
+ end
214
+
215
+ it '#submit_check, multiple, failed' do
216
+ body = <<-EOXML
217
+ <result>
218
+ <status>-1</status>
219
+ <message>BAD XML</message>
220
+ </result>
221
+ EOXML
222
+ stub_request(:post, 'http://localhost/nrdp/').to_return(body: body, status: 200)
223
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
224
+ checks = [{ hostname: 'foobar', servicename: 'the_service', state: 1, output: 'testing' },
225
+ { hostname: 'foobarbaz', state: 0, output: 'moar testing' }]
226
+ expect { nrdp.submit_check(checks) }.to raise_error(RuntimeError)
227
+ WebMock.reset!
228
+ end
229
+
230
+ it '#submit_check, multiple, wrong count' do
231
+ body = <<-EOXML
232
+ <result>
233
+ <status>0</status>
234
+ <message>OK</message>
235
+ <meta>
236
+ <output>3 checks processed.</output>
237
+ </meta>
238
+ </result>
239
+ EOXML
240
+ stub_request(:post, 'http://localhost/nrdp/').to_return(body: body, status: 200)
241
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
242
+ checks = [{ hostname: 'foobar', servicename: 'the_service', state: 1, output: 'testing' },
243
+ { hostname: 'foobarbaz', state: 0, output: 'moar testing' }]
244
+ expect { nrdp.submit_check(checks) }.to raise_error(RuntimeError)
245
+ WebMock.reset!
246
+ end
247
+
248
+ it '#submit_command should alert on missing command' do
249
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
250
+ expect { nrdp.submit_command }.to raise_error(ArgumentError)
251
+ end
252
+
253
+ it '#submit_command' do
254
+ body = <<-EOXML
255
+ <result>
256
+ <status>0</status>
257
+ <message>OK</message>
258
+ </result>
259
+ EOXML
260
+ stub_request(:get, 'http://localhost/nrdp/?cmd=submitcmd&command=DISABLE_HOST_NOTIFICATIONS%3Bfoobar&token=foobar').to_return(body: body, status: 200)
261
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
262
+ expect(nrdp.submit_command('DISABLE_HOST_NOTIFICATIONS;foobar')).to eq(true)
263
+ WebMock.reset!
264
+ end
265
+
266
+ it '#submit_command, ssl' do
267
+ body = <<-EOXML
268
+ <result>
269
+ <status>0</status>
270
+ <message>OK</message>
271
+ </result>
272
+ EOXML
273
+ stub_request(:get, 'https://localhost/nrdp/?cmd=submitcmd&command=DISABLE_HOST_NOTIFICATIONS%3Bfoobar&token=foobar').to_return(body: body, status: 200)
274
+ nrdp = Nagios::Nrdp.new(url: 'https://localhost/nrdp', token: 'foobar')
275
+ expect(nrdp.submit_command('DISABLE_HOST_NOTIFICATIONS;foobar')).to eq(true)
276
+ WebMock.reset!
277
+ end
278
+
279
+ it '#submit_command, failure' do
280
+ body = <<-EOXML
281
+ <result>
282
+ <status>-1</status>
283
+ <message>NO COMMAND</message>
284
+ </result>
285
+ EOXML
286
+ stub_request(:get, 'http://localhost/nrdp/?cmd=submitcmd&command=DISABLE_HOST_NOTIFICATIONS%3Bfoobar&token=foobar').to_return(body: body, status: 200)
287
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
288
+ expect { nrdp.submit_command('DISABLE_HOST_NOTIFICATIONS;foobar') }.to raise_error(RuntimeError)
289
+ WebMock.reset!
290
+ end
291
+
292
+ it '#submit_command, 404 error' do
293
+ body = "404: NOT FOUND"
294
+ stub_request(:get, 'http://localhost/nrdp/?cmd=submitcmd&command=DISABLE_HOST_NOTIFICATIONS%3Bfoobar&token=foobar').to_return(body: body, status: 404)
295
+ nrdp = Nagios::Nrdp.new(url: 'http://localhost/nrdp', token: 'foobar')
296
+ expect { nrdp.submit_command('DISABLE_HOST_NOTIFICATIONS;foobar') }.to raise_error(RuntimeError)
297
+ WebMock.reset!
298
+ end
299
+ end
@@ -0,0 +1,8 @@
1
+ --format
2
+ s
3
+ --colour
4
+ --loadby
5
+ mtime
6
+ --backtrace
7
+ --deprecation-out
8
+ /dev/null
@@ -0,0 +1,7 @@
1
+ require 'nagios_nrdp'
2
+ require 'webmock/rspec'
3
+ require 'coveralls'
4
+
5
+ if ENV['COVERAGE']
6
+ Coveralls.wear!
7
+ end
metadata ADDED
@@ -0,0 +1,183 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nagios_nrdp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - stjeanp
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: !binary |-
20
+ MS42
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: !binary |-
28
+ MS42
29
+ - !ruby/object:Gem::Dependency
30
+ name: rake
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: !binary |-
36
+ MTAuNA==
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: !binary |-
44
+ MTAuNA==
45
+ - !ruby/object:Gem::Dependency
46
+ name: rubocop
47
+ requirement: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ~>
50
+ - !ruby/object:Gem::Version
51
+ version: !binary |-
52
+ MC4zMA==
53
+ type: :development
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: !binary |-
60
+ MC4zMA==
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: !binary |-
68
+ My4z
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: !binary |-
76
+ My4z
77
+ - !ruby/object:Gem::Dependency
78
+ name: rspec-core
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: !binary |-
84
+ My4z
85
+ type: :development
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: !binary |-
92
+ My4z
93
+ - !ruby/object:Gem::Dependency
94
+ name: webmock
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ~>
98
+ - !ruby/object:Gem::Version
99
+ version: !binary |-
100
+ MS4yMQ==
101
+ type: :development
102
+ prerelease: false
103
+ version_requirements: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ~>
106
+ - !ruby/object:Gem::Version
107
+ version: !binary |-
108
+ MS4yMQ==
109
+ - !ruby/object:Gem::Dependency
110
+ name: jeweler
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ~>
114
+ - !ruby/object:Gem::Version
115
+ version: !binary |-
116
+ Mi4w
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ~>
122
+ - !ruby/object:Gem::Version
123
+ version: !binary |-
124
+ Mi4w
125
+ - !ruby/object:Gem::Dependency
126
+ name: coveralls
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: !binary |-
132
+ MC44
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: !binary |-
140
+ MC44
141
+ description: A pure ruby implementation an NRDP client for submitting passive checks
142
+ and commands to Nagios through NRDP.
143
+ email: stjeanp@pat-st-jean.com
144
+ executables: []
145
+ extensions: []
146
+ extra_rdoc_files:
147
+ - README.md
148
+ files:
149
+ - README.md
150
+ - Rakefile
151
+ - lib/nagios/nrdp.rb
152
+ - lib/nagios_nrdp.rb
153
+ - spec/lib/nrdp_spec.rb
154
+ - spec/spec.opts
155
+ - spec/spec_helper.rb
156
+ homepage: http://github.com/stjeanp/nrdp
157
+ licenses:
158
+ - MIT
159
+ metadata: {}
160
+ post_install_message:
161
+ rdoc_options: []
162
+ require_paths:
163
+ - lib
164
+ required_ruby_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ! '>='
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ required_rubygems_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ requirements: []
175
+ rubyforge_project:
176
+ rubygems_version: 2.4.8
177
+ signing_key:
178
+ specification_version: 4
179
+ summary: A ruby gem for submitting passive checks and commands to Nagios through NRDP.
180
+ test_files:
181
+ - spec/lib/nrdp_spec.rb
182
+ - spec/spec.opts
183
+ - spec/spec_helper.rb