nagira 0.3.1 → 0.3.2
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/History.md +4 -0
- data/config/nagira.defaults.erb +98 -0
- data/spec/get/endpoints_spec.rb +3 -88
- data/spec/get/get_helper.rb +50 -0
- data/spec/get/objects/data_spec.rb +25 -0
- data/spec/get/objects/endpoints_spec.rb +33 -0
- data/spec/get/status/endpoints_spec.rb +103 -0
- data/version.txt +1 -1
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0d1159c3f0f60f42147bc66a3274f02b499087c
|
4
|
+
data.tar.gz: fa0384885a832cff96e1124ba14426799fbc34f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c8f272cd12b05e72fa09794ecc170b447a6ae2135d1d814f9ef2f71c7313a21386a85a25f11defad0c2fd2deff91458c5a285371edcf51e8bcf32f61a24dd3e
|
7
|
+
data.tar.gz: 90ba66335e2715eb62784600967a432bbf076246c6f715ff7d3cf524ee046d5f9f9265c67f6f52b26da6e8b158ebc540d5ef44385f69d41ea7d68bad3c7b0115
|
data/History.md
CHANGED
@@ -0,0 +1,98 @@
|
|
1
|
+
#
|
2
|
+
# Defaults configuration file for Nagira
|
3
|
+
# --------------------------------------------
|
4
|
+
<% %w{ NAGIRA_PORT NAGIRA_BIND RACK_ENV NAGIRA_USER RVM_STRING NAGIRA_LOG NAGIRA_TTL NAGIRA_BG_PARSING NAGIOS_CFG_FILE NAGIOS_HOST_CUSTOM_REGEX}.each do |env| -%>
|
5
|
+
<% if env.downcase.to_sym -%>
|
6
|
+
<%= env -%>=<%="#{env}" -%>
|
7
|
+
<% end -%>
|
8
|
+
<% end -%>
|
9
|
+
#
|
10
|
+
# Examples below are default values.
|
11
|
+
#
|
12
|
+
# ----------------------
|
13
|
+
# Port. Default 4567
|
14
|
+
# ----------------------
|
15
|
+
# NAGIRA_PORT=
|
16
|
+
#
|
17
|
+
# ----------------------
|
18
|
+
# BIND
|
19
|
+
# ----------------------
|
20
|
+
# String specifying the hostname or IP address of the interface to
|
21
|
+
# listen on when the :run setting is enabled. The default value –
|
22
|
+
# '0.0.0.0' – causes the server to listen on all available
|
23
|
+
# interfaces. To listen on the loopback interface only, use: 'localhost'
|
24
|
+
#
|
25
|
+
# NAGIRA_BIND=localhost
|
26
|
+
#
|
27
|
+
# ----------------------
|
28
|
+
# Environment
|
29
|
+
# ----------------------
|
30
|
+
# Usually needs to be production
|
31
|
+
#
|
32
|
+
# RACK_ENV=production
|
33
|
+
#
|
34
|
+
# ----------------------
|
35
|
+
# Nagira user
|
36
|
+
# ----------------------
|
37
|
+
# Usually nagira process should be run by same user ID as Nagios. In
|
38
|
+
# many cases this is nagios user.
|
39
|
+
#
|
40
|
+
# NAGIRA_USER=nagios
|
41
|
+
#
|
42
|
+
# ----------------------
|
43
|
+
# RVM
|
44
|
+
# ----------------------
|
45
|
+
# RVM_STRING="rvm use default"
|
46
|
+
#
|
47
|
+
# ----------------------
|
48
|
+
# Log file
|
49
|
+
# ----------------------
|
50
|
+
# NAGIRA_LOG=/var/log/nagios/nagira.log
|
51
|
+
#
|
52
|
+
# ----------------------
|
53
|
+
# TTL for data
|
54
|
+
# ----------------------
|
55
|
+
# Number of seconds between re-parses. All Nagios file are parsed no
|
56
|
+
# more often than this. Default is 5 sec. Setting this to 0 or
|
57
|
+
# negative number disables TTL and backgroiund prser as well.
|
58
|
+
#
|
59
|
+
# NAGIRA_TTL=20
|
60
|
+
#
|
61
|
+
# ----------------------
|
62
|
+
# Background parsing
|
63
|
+
# ----------------------
|
64
|
+
# Set this to 0, to disable background parsing.
|
65
|
+
# NAGIRA_BG_PARSING=1
|
66
|
+
#
|
67
|
+
# ----------------------
|
68
|
+
# Nagios configuration file
|
69
|
+
# ----------------------
|
70
|
+
# Where main Nagios configuration file is located. usually this does
|
71
|
+
# not need to change.
|
72
|
+
#
|
73
|
+
# NAGIOS_CFG_FILE=/etc/nagios/nagios.cfg
|
74
|
+
#
|
75
|
+
# ----------------------
|
76
|
+
# Custom regex for hostnames
|
77
|
+
# ----------------------
|
78
|
+
#
|
79
|
+
# By default hostname regular expression accepts alpha-numerics,
|
80
|
+
# dashes and dots, as specified by http://tools.ietf.org/html/rfc952
|
81
|
+
# for hostnames. Extended to accept dots in the middle for FQHN's.
|
82
|
+
#
|
83
|
+
# Possible settings:
|
84
|
+
#
|
85
|
+
# - default: '\w([\w\-\.]+)?\w' FQHN
|
86
|
+
# - short hostname: '\w([\w\-]+)?\w'
|
87
|
+
# - FQHN allow space in hostname: '\w([\w\-\.(%20)]+)?\w'
|
88
|
+
#
|
89
|
+
# Explanation regarding spaces:
|
90
|
+
# ---------------------------------
|
91
|
+
#
|
92
|
+
# Nagios works OK with hostnames with spaces. This is against RFC's
|
93
|
+
# and can't really used for real hosts, but for aggregated checks
|
94
|
+
# (like cluster name for example), you might want to consider this
|
95
|
+
# option.
|
96
|
+
#
|
97
|
+
# NAGIOS_HOST_CUSTOM_REGEX='\w([\w\-\.]+)?\w'
|
98
|
+
#
|
data/spec/get/endpoints_spec.rb
CHANGED
@@ -1,45 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
# Specs for implemetned API endpoints. Only check response: OK or 404.
|
5
|
-
#
|
6
|
-
|
7
|
-
shared_examples_for :fail_on_random_url do |base|
|
8
|
-
RANDOM.each do |url|
|
9
|
-
ep = "#{base}/#{url}"
|
10
|
-
it "fails on '#{ep}' string" do
|
11
|
-
get ep
|
12
|
-
last_response.status.should be 404
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
shared_examples_for :respond_to_valid_url do |base, urls, custom_regex|
|
18
|
-
|
19
|
-
case urls
|
20
|
-
when Array
|
21
|
-
urls.each do |url|
|
22
|
-
ep = "#{base}/#{url}"
|
23
|
-
it "responds to #{ep}" do
|
24
|
-
get ep
|
25
|
-
last_response.should be_ok
|
26
|
-
end
|
27
|
-
end
|
28
|
-
when nil
|
29
|
-
ep = "#{base}"
|
30
|
-
it "responds to #{ep}" do
|
31
|
-
get ep
|
32
|
-
last_response.should be_ok
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
shared_examples_for :fail_on_bad_url do |url|
|
38
|
-
before { get url }
|
39
|
-
it "fails on #{url}" do
|
40
|
-
last_response.status.should be 404
|
41
|
-
end
|
42
|
-
end
|
1
|
+
require_relative 'get_helper'
|
43
2
|
|
44
3
|
describe Nagira do
|
45
4
|
|
@@ -51,53 +10,9 @@ describe Nagira do
|
|
51
10
|
|
52
11
|
context "API endpoints" do
|
53
12
|
|
54
|
-
host = IMPLEMENTED[:hosts].first
|
55
|
-
spaces = "host%20with%20space"
|
56
|
-
|
57
|
-
|
58
13
|
context :top do
|
59
14
|
it_should_behave_like :respond_to_valid_url, '', IMPLEMENTED[:top]
|
60
15
|
it_should_behave_like :fail_on_random_url, ''
|
61
16
|
end
|
62
|
-
|
63
|
-
|
64
|
-
context "/_status" do
|
65
|
-
it_should_behave_like :respond_to_valid_url, "/_status", IMPLEMENTED[:hosts]
|
66
|
-
it_should_behave_like :respond_to_valid_url, "/_status", IMPLEMENTED[:output] + ["_hosts"]
|
67
|
-
it_should_behave_like :fail_on_random_url, '/_status'
|
68
|
-
end
|
69
|
-
|
70
|
-
context "/_status/:host" do
|
71
|
-
it_should_behave_like :respond_to_valid_url, "/_status/#{host}", IMPLEMENTED[:status]
|
72
|
-
it_should_behave_like :fail_on_random_url, "/_status/#{host}"
|
73
|
-
|
74
|
-
context "hostname with space" do
|
75
|
-
it_should_behave_like :fail_on_bad_url, "/_status/#{spaces}"
|
76
|
-
end
|
77
|
-
|
78
|
-
context :unknown_host do
|
79
|
-
it_should_behave_like :fail_on_bad_url, '/_status/unknown_host'
|
80
|
-
it_should_behave_like :fail_on_random_url, "/_status/unknown_host"
|
81
|
-
end
|
82
|
-
end # /_status/:host
|
83
|
-
|
84
|
-
context "/_status/:host/_services" do
|
85
|
-
it_should_behave_like :respond_to_valid_url, "/_status/#{host}/_services"
|
86
|
-
it_should_behave_like :respond_to_valid_url, "/_status/#{host}/_services", ["SSH", "PING"]
|
87
|
-
|
88
|
-
context "hostname with space" do
|
89
|
-
it_should_behave_like :fail_on_bad_url, "/_status/#{spaces}/_services"
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
|
94
|
-
context "custom hostname regex - host with spaces" do
|
95
|
-
|
96
|
-
it { pending "Need to figure out how to change hostname regex on the fly" }
|
97
|
-
#it_should_behave_like :respond_to_valid_url, "/_status/#{spaces}", nil, '\w[(%20)\w\-\.]+'
|
98
|
-
#it_should_behave_like :respond_to_valid_url, "/_status/#{spaces}/_services"
|
99
|
-
end # custom hostname regex
|
100
|
-
|
101
|
-
end # API endpoints
|
102
|
-
|
103
|
-
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
IMPLEMENTED = {
|
4
|
+
top: %w{ _api _status _objects _config _runtime},
|
5
|
+
output: %w{ _list _state _full }, # Type of requests as in varaible @output
|
6
|
+
hosts: %w{ archive tv },
|
7
|
+
status: %w{ _services _servicecomments _hostcomments },
|
8
|
+
objects: %w{ timeperiod command contactgroup hostgroup contact host service }
|
9
|
+
}
|
10
|
+
|
11
|
+
#
|
12
|
+
# Specs for implemetned API endpoints. Only check response: OK or 404.
|
13
|
+
#
|
14
|
+
|
15
|
+
shared_examples_for :fail_on_random_url do |base|
|
16
|
+
RANDOM.each do |url|
|
17
|
+
ep = "#{base}/#{url}"
|
18
|
+
it "fails on '#{ep}' string" do
|
19
|
+
get ep
|
20
|
+
last_response.status.should be 404
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
shared_examples_for :respond_to_valid_url do |base, urls, custom_regex|
|
26
|
+
|
27
|
+
case urls
|
28
|
+
when Array
|
29
|
+
urls.each do |url|
|
30
|
+
ep = "#{base}/#{url}"
|
31
|
+
it "responds to #{ep}" do
|
32
|
+
get ep
|
33
|
+
last_response.should be_ok
|
34
|
+
end
|
35
|
+
end
|
36
|
+
when nil
|
37
|
+
ep = "#{base}"
|
38
|
+
it "responds to #{ep}" do
|
39
|
+
get ep
|
40
|
+
last_response.should be_ok
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
shared_examples_for :fail_on_bad_url do |url|
|
46
|
+
before { get url }
|
47
|
+
it "fails on #{url}" do
|
48
|
+
last_response.status.should be 404
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative '../get_helper'
|
2
|
+
|
3
|
+
describe Nagira do
|
4
|
+
|
5
|
+
set :environment, :test # This should run only in test mode as it uses hardcoded host names
|
6
|
+
include Rack::Test::Methods
|
7
|
+
def app
|
8
|
+
@app ||= Nagira
|
9
|
+
end
|
10
|
+
|
11
|
+
subject { JSON.parse last_response.body }
|
12
|
+
|
13
|
+
context "Data structure" do
|
14
|
+
context "/_objects" do
|
15
|
+
|
16
|
+
let (:host) { IMPLEMENTED[:hosts].first }
|
17
|
+
|
18
|
+
it { get "/_objects" ; should be_a_kind_of Hash }
|
19
|
+
it { get "/_objects/_list" ; should be_a_kind_of Array }
|
20
|
+
it { get "/_objects/host" ; should be_a_kind_of Hash }
|
21
|
+
it { get "/_objects/host/#{host}" ; should be_a_kind_of Hash }
|
22
|
+
|
23
|
+
end
|
24
|
+
end # Data structure
|
25
|
+
end # describe Nagira
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require_relative '../get_helper'
|
2
|
+
|
3
|
+
describe Nagira do
|
4
|
+
|
5
|
+
set :environment, :test # This should run only in test mode as it uses hardcoded host names
|
6
|
+
include Rack::Test::Methods
|
7
|
+
def app
|
8
|
+
@app ||= Nagira
|
9
|
+
end
|
10
|
+
|
11
|
+
context "API endpoints" do
|
12
|
+
context "/_objects" do
|
13
|
+
it_should_behave_like :respond_to_valid_url, "/_objects"
|
14
|
+
it_should_behave_like :respond_to_valid_url, "/_objects/_list"
|
15
|
+
|
16
|
+
|
17
|
+
it_should_behave_like :respond_to_valid_url, "/_objects", IMPLEMENTED[:objects]
|
18
|
+
it_should_behave_like :fail_on_random_url, "/_objects"
|
19
|
+
# AR- compatibility
|
20
|
+
it_should_behave_like :respond_to_valid_url, "/_objects", IMPLEMENTED[:objects].map(&:pluralize)
|
21
|
+
|
22
|
+
context :host do
|
23
|
+
host = IMPLEMENTED[:hosts].first
|
24
|
+
spaces = "host%20with%20space"
|
25
|
+
|
26
|
+
it_should_behave_like :respond_to_valid_url, "/_objects/host/#{host}"
|
27
|
+
it_should_behave_like :fail_on_bad_url, "/_objects/host/#{spaces}"
|
28
|
+
it_should_behave_like :respond_to_valid_url, "/_objects/host/#{host}/_list"
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end # API endpoints
|
33
|
+
end # describe Nagira
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
#
|
4
|
+
# Specs for implemetned API endpoints. Only check response: OK or 404.
|
5
|
+
#
|
6
|
+
|
7
|
+
shared_examples_for :fail_on_random_url do |base|
|
8
|
+
RANDOM.each do |url|
|
9
|
+
ep = "#{base}/#{url}"
|
10
|
+
it "fails on '#{ep}' string" do
|
11
|
+
get ep
|
12
|
+
last_response.status.should be 404
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
shared_examples_for :respond_to_valid_url do |base, urls, custom_regex|
|
18
|
+
|
19
|
+
case urls
|
20
|
+
when Array
|
21
|
+
urls.each do |url|
|
22
|
+
ep = "#{base}/#{url}"
|
23
|
+
it "responds to #{ep}" do
|
24
|
+
get ep
|
25
|
+
last_response.should be_ok
|
26
|
+
end
|
27
|
+
end
|
28
|
+
when nil
|
29
|
+
ep = "#{base}"
|
30
|
+
it "responds to #{ep}" do
|
31
|
+
get ep
|
32
|
+
last_response.should be_ok
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
shared_examples_for :fail_on_bad_url do |url|
|
38
|
+
before { get url }
|
39
|
+
it "fails on #{url}" do
|
40
|
+
last_response.status.should be 404
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe Nagira do
|
45
|
+
|
46
|
+
set :environment, :test # This should run only in test mode as it uses hardcoded host names
|
47
|
+
include Rack::Test::Methods
|
48
|
+
def app
|
49
|
+
@app ||= Nagira
|
50
|
+
end
|
51
|
+
|
52
|
+
context "API endpoints" do
|
53
|
+
|
54
|
+
host = IMPLEMENTED[:hosts].first
|
55
|
+
spaces = "host%20with%20space"
|
56
|
+
|
57
|
+
|
58
|
+
context :top do
|
59
|
+
it_should_behave_like :respond_to_valid_url, '', IMPLEMENTED[:top]
|
60
|
+
it_should_behave_like :fail_on_random_url, ''
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
context "/_status" do
|
65
|
+
it_should_behave_like :respond_to_valid_url, "/_status", IMPLEMENTED[:hosts]
|
66
|
+
it_should_behave_like :respond_to_valid_url, "/_status", IMPLEMENTED[:output] + ["_hosts"]
|
67
|
+
it_should_behave_like :fail_on_random_url, '/_status'
|
68
|
+
end
|
69
|
+
|
70
|
+
context "/_status/:host" do
|
71
|
+
it_should_behave_like :respond_to_valid_url, "/_status/#{host}", IMPLEMENTED[:status]
|
72
|
+
it_should_behave_like :fail_on_random_url, "/_status/#{host}"
|
73
|
+
|
74
|
+
context "hostname with space" do
|
75
|
+
it_should_behave_like :fail_on_bad_url, "/_status/#{spaces}"
|
76
|
+
end
|
77
|
+
|
78
|
+
context :unknown_host do
|
79
|
+
it_should_behave_like :fail_on_bad_url, '/_status/unknown_host'
|
80
|
+
it_should_behave_like :fail_on_random_url, "/_status/unknown_host"
|
81
|
+
end
|
82
|
+
end # /_status/:host
|
83
|
+
|
84
|
+
context "/_status/:host/_services" do
|
85
|
+
it_should_behave_like :respond_to_valid_url, "/_status/#{host}/_services"
|
86
|
+
it_should_behave_like :respond_to_valid_url, "/_status/#{host}/_services", ["SSH", "PING"]
|
87
|
+
|
88
|
+
context "hostname with space" do
|
89
|
+
it_should_behave_like :fail_on_bad_url, "/_status/#{spaces}/_services"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
context "custom hostname regex - host with spaces" do
|
95
|
+
|
96
|
+
it { pending "Need to figure out how to change hostname regex on the fly" }
|
97
|
+
#it_should_behave_like :respond_to_valid_url, "/_status/#{spaces}", nil, '\w[(%20)\w\-\.]+'
|
98
|
+
#it_should_behave_like :respond_to_valid_url, "/_status/#{spaces}/_services"
|
99
|
+
end # custom hostname regex
|
100
|
+
|
101
|
+
end # API endpoints
|
102
|
+
|
103
|
+
end
|
data/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nagira
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmytro Kovalov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -303,8 +303,12 @@ files:
|
|
303
303
|
- spec/01_data_format/03_api_spec.rb
|
304
304
|
- spec/get/comments_spec.rb
|
305
305
|
- spec/get/endpoints_spec.rb
|
306
|
+
- spec/get/get_helper.rb
|
306
307
|
- spec/get/hosts_spec.rb
|
308
|
+
- spec/get/objects/data_spec.rb
|
309
|
+
- spec/get/objects/endpoints_spec.rb
|
307
310
|
- spec/get/services_spec.rb
|
311
|
+
- spec/get/status/endpoints_spec.rb
|
308
312
|
- spec/put/host_spec.rb
|
309
313
|
- spec/put/status_spec.rb
|
310
314
|
- spec/put/support.rb
|
@@ -312,6 +316,7 @@ files:
|
|
312
316
|
- config/defaults.rb
|
313
317
|
- config/environment.rb
|
314
318
|
- config/nagira.defaults
|
319
|
+
- config/nagira.defaults.erb
|
315
320
|
- config/nagira.init_d
|
316
321
|
- test/benchmark.rb
|
317
322
|
- test/data/bad/nagios.cfg
|
@@ -343,7 +348,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
343
348
|
requirements:
|
344
349
|
- - '>='
|
345
350
|
- !ruby/object:Gem::Version
|
346
|
-
version:
|
351
|
+
version: 1.9.1
|
347
352
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
348
353
|
requirements:
|
349
354
|
- - '>='
|