nagios_nrdp 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +15 -0
- data/Rakefile +11 -1
- data/lib/nagios/nrdp.rb +51 -0
- metadata +20 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MjZmYWQzYzA2N2JiNzJiNmI2MmI0NDIxOTVlYjNjNjc0ZjQ4NmZhOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NzcwM2ZlYjMwZDVkYTNmOTVhZTg1Nzc1MzNhYzQ4OGRlNzNhYTRlOQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZWI5NTNmODJhYzkzNDEyMDBhYzEyNDcwYTkzNmM3ZDhiMDZiMzZjZTRmY2M2
|
10
|
+
MThkY2ZmNmFiMGQxZjk2MzQ3OTg3YTlhOThlNzE1YTg0OTkxMTY1N2RjZmI4
|
11
|
+
MmQ3MmNjMzE0ZWY2NzFmZDhkZTcyMGM5MDMzMTdhMjkxMjljZjI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MjNlZmM1ZWVjZWU3MjE5NmQxYjEyMzY5YTBkNjhmYzZjYmI1ZjlmYzJhYmVi
|
14
|
+
Y2NhYjA3ZjhiMGI2ZDExOTYxY2EzNDBlYmJjMThlZDJhZmU4NWNmNTk3MTdi
|
15
|
+
ZTM2NWFlYmIxMTg0ZmEyMmQ3MzNhOTIxNmI2NDU5ZTllNmRjMGU=
|
data/README.md
CHANGED
@@ -44,6 +44,21 @@ nrdp = Nagios::Nrdp.new(url: url, token: token)
|
|
44
44
|
nrdp.submit_check(hostname: hostname, servicename: servicename, state: state.to_i, output: output)
|
45
45
|
```
|
46
46
|
|
47
|
+
* Send multiple passive checks:
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
require 'nagios_nrdp'
|
51
|
+
|
52
|
+
url = 'http://some.host/nrdp'
|
53
|
+
token = 'your token'
|
54
|
+
checks = [{ hostname: 'host1', state: 1, output: 'DOWN' },
|
55
|
+
{ hostname: 'host2', state: 0, output: 'UP' }]
|
56
|
+
|
57
|
+
nrdp = Nagios::Nrdp.new(url: url, token: token)
|
58
|
+
nrdp.submit_checks(checks)
|
59
|
+
```
|
60
|
+
|
61
|
+
|
47
62
|
* Send a command:
|
48
63
|
|
49
64
|
```ruby
|
data/Rakefile
CHANGED
@@ -3,6 +3,7 @@ require 'rake'
|
|
3
3
|
require 'rspec/core/rake_task'
|
4
4
|
require 'bundler/gem_tasks'
|
5
5
|
require 'rubocop/rake_task'
|
6
|
+
require 'yard'
|
6
7
|
|
7
8
|
task :default => :test
|
8
9
|
|
@@ -19,7 +20,7 @@ begin
|
|
19
20
|
Jeweler::Tasks.new do |gem|
|
20
21
|
gem.name = 'nagios_nrdp'
|
21
22
|
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.description = 'A pure ruby implementation of an NRDP client for submitting passive checks and commands to Nagios through NRDP.'
|
23
24
|
gem.email = 'stjeanp@pat-st-jean.com'
|
24
25
|
gem.homepage = 'http://github.com/stjeanp/nrdp'
|
25
26
|
gem.authors = ['stjeanp']
|
@@ -27,12 +28,21 @@ begin
|
|
27
28
|
gem.files = %w(README.md Rakefile) + Dir['lib/**/*'] + Dir['spec/**/*']
|
28
29
|
gem.test_files = Dir['spec/**/*']
|
29
30
|
gem.licenses = ['MIT']
|
31
|
+
gem.required_ruby_version = '>= 1.9.3'
|
30
32
|
end
|
31
33
|
Jeweler::GemcutterTasks.new
|
32
34
|
rescue LoadError
|
33
35
|
puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler'
|
34
36
|
end
|
35
37
|
|
38
|
+
# Include Yard tasks for rake yard
|
39
|
+
YARDOC_LOCATION = "doc"
|
40
|
+
YARD::Rake::YardocTask.new do |t|
|
41
|
+
t.files = ['lib/**/*.rb', "README"]
|
42
|
+
t.options = ["--output-dir", YARDOC_LOCATION, "--title", "nagios_nrdp "]
|
43
|
+
#t.stats_options = ["--list-undoc"]
|
44
|
+
end
|
45
|
+
|
36
46
|
desc "Run syntax, lint, and rspec tests..."
|
37
47
|
task :test => [
|
38
48
|
:rubocop,
|
data/lib/nagios/nrdp.rb
CHANGED
@@ -2,13 +2,29 @@ require 'net/http'
|
|
2
2
|
require 'uri'
|
3
3
|
require 'nokogiri'
|
4
4
|
|
5
|
+
# The parent, trying to keep the class tree clean
|
5
6
|
module Nagios
|
6
7
|
# Implements an interface to Nagios NRDP to facilitate submitting check
|
7
8
|
# results and commands
|
9
|
+
#
|
10
|
+
# @see https://assets.nagios.com/downloads/nrdp/docs/NRDP_Overview.pdf
|
8
11
|
class Nrdp
|
12
|
+
# @!attribute [rw] url
|
13
|
+
# The URL of the NRDP endpoint
|
14
|
+
# @return [String] the URL of the NRDP endpoint
|
9
15
|
attr_accessor :url
|
16
|
+
# @!attribute [rw] token
|
17
|
+
# The authentication token
|
18
|
+
# @return [String] the authentication token
|
10
19
|
attr_accessor :token
|
11
20
|
|
21
|
+
# Create a new instance of Nagios::Nrdp and set the URL and token
|
22
|
+
#
|
23
|
+
# @param [Hash] args parameters for this instance
|
24
|
+
# @option args [String] :url the URL of the NRDP endpoint
|
25
|
+
# @option args [String] :token the authentication token
|
26
|
+
#
|
27
|
+
# @raise [ArgumentError] when the args fail validation
|
12
28
|
def initialize(args = {})
|
13
29
|
@url = args[:url] || nil
|
14
30
|
@token = args[:token] || nil
|
@@ -23,6 +39,17 @@ module Nagios
|
|
23
39
|
fail ArgumentError, 'The token supplied is invalid!' unless @token && !@token.empty?
|
24
40
|
end
|
25
41
|
|
42
|
+
# @overload submit_check(the_check)
|
43
|
+
# Submit a single passive check result
|
44
|
+
# @param [Hash] the_check the passive check result data
|
45
|
+
# @option the_check [String] :hostname The hostname for this passive check
|
46
|
+
# @option the_check [String] :servicename The optional service name for this passive check
|
47
|
+
# @option the_check [Integer] :state The state of this passive check
|
48
|
+
# @option the_check [String] :output The output of this passive check
|
49
|
+
# @raise [RuntimeError] when the submission fails
|
50
|
+
# @overload submit_check(the_checks)
|
51
|
+
# @param [Array<Hash>] the_checks an array of passive check results
|
52
|
+
# @raise [RuntimeError] when the submission fails
|
26
53
|
def submit_check(*args)
|
27
54
|
if args[0].is_a? Hash
|
28
55
|
the_checks = [args[0]]
|
@@ -66,6 +93,12 @@ module Nagios
|
|
66
93
|
end
|
67
94
|
alias_method :submit_checks, :submit_check
|
68
95
|
|
96
|
+
# Submit a Nagios command
|
97
|
+
#
|
98
|
+
# @param [String] the_command the command to be submitted
|
99
|
+
#
|
100
|
+
# @raise [ArgumentError] when the args fail validation
|
101
|
+
# @raise [RuntimeError] when the submission fails
|
69
102
|
def submit_command(the_command = '')
|
70
103
|
if !the_command || !the_command.is_a?(String) || the_command.empty?
|
71
104
|
fail ArgumentError, 'Invalid command supplied!'
|
@@ -98,6 +131,17 @@ module Nagios
|
|
98
131
|
|
99
132
|
private
|
100
133
|
|
134
|
+
# Validate the supplied check's data
|
135
|
+
#
|
136
|
+
# @api private
|
137
|
+
#
|
138
|
+
# @param [Hash] the_check the passive check result data
|
139
|
+
# @option the_check [String] :hostname The hostname for this passive check
|
140
|
+
# @option the_check [String] :servicename The optional service name for this passive check
|
141
|
+
# @option the_check [Integer] :state The state of this passive check
|
142
|
+
# @option the_check [String] :output The output of this passive check
|
143
|
+
#
|
144
|
+
# @raise [ArgumentError] when validation fails
|
101
145
|
def validate_check(the_check = {})
|
102
146
|
fail ArgumentError, 'Unknown parameters in check!' unless the_check.keys.all? { |key| [:hostname, :servicename, :state, :output].include? key }
|
103
147
|
if [:hostname, :state, :output].any? { |key| !the_check.key?(key) }
|
@@ -106,6 +150,13 @@ module Nagios
|
|
106
150
|
fail ArgumentError, "Check's state must be an integer!" unless the_check[:state].is_a? Integer
|
107
151
|
end
|
108
152
|
|
153
|
+
# Create the XML document containing the passive check results
|
154
|
+
#
|
155
|
+
# @param [Array<Hash>] the_checks the array of passive check results
|
156
|
+
#
|
157
|
+
# @return [String] the XML document to be submitted
|
158
|
+
#
|
159
|
+
# @raise [ArgumentError] when the checks aren't valid
|
109
160
|
def build_xml(the_checks = [])
|
110
161
|
if the_checks.nil? || the_checks.count < 1
|
111
162
|
fail ArgumentError, 'You must send at least one check!'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nagios_nrdp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- stjeanp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -138,7 +138,23 @@ dependencies:
|
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: !binary |-
|
140
140
|
MC44
|
141
|
-
|
141
|
+
- !ruby/object:Gem::Dependency
|
142
|
+
name: yard
|
143
|
+
requirement: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - ~>
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: !binary |-
|
148
|
+
MC44
|
149
|
+
type: :development
|
150
|
+
prerelease: false
|
151
|
+
version_requirements: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ~>
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: !binary |-
|
156
|
+
MC44
|
157
|
+
description: A pure ruby implementation of an NRDP client for submitting passive checks
|
142
158
|
and commands to Nagios through NRDP.
|
143
159
|
email: stjeanp@pat-st-jean.com
|
144
160
|
executables: []
|
@@ -165,7 +181,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
165
181
|
requirements:
|
166
182
|
- - ! '>='
|
167
183
|
- !ruby/object:Gem::Version
|
168
|
-
version:
|
184
|
+
version: 1.9.3
|
169
185
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
186
|
requirements:
|
171
187
|
- - ! '>='
|