nagios_analyzer 0.0.3 → 0.0.4
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.
- data/.gitignore +1 -0
- data/LICENSE +20 -0
- data/README.textile +7 -0
- data/lib/nagios_analyzer/section.rb +14 -3
- data/lib/nagios_analyzer/status.rb +79 -16
- data/lib/nagios_analyzer/version.rb +1 -1
- data/spec/data/morestatus.dat +35 -0
- data/spec/section_spec.rb +26 -0
- data/spec/status_spec.rb +105 -39
- metadata +14 -8
- data/Gemfile.lock +0 -26
data/.gitignore
CHANGED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Jean-Baptiste Barth <jeanbaptiste.barth@gmail.com>
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.textile
CHANGED
@@ -41,6 +41,9 @@ pp status.host_problems
|
|
41
41
|
# and can be accessed as a Hash
|
42
42
|
pp status.items.first[:current_state]
|
43
43
|
|
44
|
+
# or directly
|
45
|
+
pp status.items.first.current_state
|
46
|
+
|
44
47
|
# get all sections, even those where status is OK
|
45
48
|
status = NagiosAnalyzer::Status.new("/path/to/status.dat", :include_ok => true)
|
46
49
|
|
@@ -55,3 +58,7 @@ status.scopes << lambda{|s| s.start_with?("hoststatus") } #only host statuses
|
|
55
58
|
# reset cached results (if you changed scopes!)
|
56
59
|
status.reset_cache!
|
57
60
|
</pre>
|
61
|
+
|
62
|
+
h2. License
|
63
|
+
|
64
|
+
This gem is distributed under the MIT license, see LICENSE file for more details.
|
@@ -5,7 +5,12 @@ module NagiosAnalyzer
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def method_missing(method, *args)
|
8
|
-
|
8
|
+
begin
|
9
|
+
hash.send(method, *args)
|
10
|
+
rescue NoMethodError => e
|
11
|
+
raise e if args.size > 0
|
12
|
+
hash[method]
|
13
|
+
end
|
9
14
|
end
|
10
15
|
|
11
16
|
def hash
|
@@ -13,10 +18,16 @@ module NagiosAnalyzer
|
|
13
18
|
@hash = {}
|
14
19
|
@section.each_line do |line|
|
15
20
|
line.strip!
|
16
|
-
if line.match(
|
21
|
+
if line.match(/^\s*([a-zA-Z0-9]*)\s*\{/)
|
17
22
|
@hash[:type] = $1
|
18
23
|
elsif line.match(/(\S+)=(.*)/) #more efficient than include?+split+join..
|
19
|
-
|
24
|
+
property, value = ["#{$1}", "#{$2}"]
|
25
|
+
@hash[property.to_sym] =
|
26
|
+
case
|
27
|
+
when value.strip =~ /^[0-9]+$/ then value.to_i
|
28
|
+
when value.strip =~ /^[0-9.]+$/ then value.to_f
|
29
|
+
else value
|
30
|
+
end
|
20
31
|
end
|
21
32
|
end
|
22
33
|
if @hash[:type] == "servicestatus"
|
@@ -17,7 +17,7 @@ module NagiosAnalyzer
|
|
17
17
|
4 => 3,
|
18
18
|
0 => 4
|
19
19
|
}
|
20
|
-
|
20
|
+
|
21
21
|
def initialize(statusfile, options = {})
|
22
22
|
@file = statusfile
|
23
23
|
sections #loads section at this point so we raise immediatly if file has a item
|
@@ -27,39 +27,67 @@ module NagiosAnalyzer
|
|
27
27
|
@scopes << lambda { |section| !section.include?("current_state=#{STATE_OK}") } unless options[:include_ok]
|
28
28
|
@scopes << options[:scope] if options[:scope].is_a?(Proc)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
def sections
|
32
32
|
# don't try to instanciate each section ! on my conf (85hosts/700services),
|
33
33
|
# it makes the script more 10 times slower (0.25s => >3s)
|
34
|
-
@sections ||= File.read(@file).split(
|
34
|
+
@sections ||= File.read(@file).split(/\}\s*\n/).map(&:strip)
|
35
35
|
end
|
36
36
|
|
37
37
|
def host_items
|
38
|
-
|
39
|
-
Section.new(s) if s =~ /^hoststatus/ && in_scope?(s)
|
40
|
-
end.compact
|
38
|
+
section_items(:hoststatus)
|
41
39
|
end
|
42
40
|
|
43
41
|
def service_items
|
44
|
-
|
45
|
-
Section.new(s) if s =~ /^servicestatus/ && in_scope?(s)
|
46
|
-
end.compact
|
42
|
+
section_items(:servicestatus)
|
47
43
|
end
|
48
44
|
|
49
45
|
def items
|
50
46
|
@items ||= (host_items + service_items)
|
51
47
|
end
|
52
48
|
|
49
|
+
def contactstatus_items
|
50
|
+
section_items(:contactstatus)
|
51
|
+
end
|
52
|
+
|
53
|
+
def hostcomment_items
|
54
|
+
section_items(:hostcomment)
|
55
|
+
end
|
56
|
+
|
57
|
+
def hostdowntime_items
|
58
|
+
section_items(:hostdowntime)
|
59
|
+
end
|
60
|
+
|
61
|
+
def hoststatus_items
|
62
|
+
section_items(:hoststatus)
|
63
|
+
end
|
64
|
+
|
65
|
+
def info_items
|
66
|
+
section_items(:info)
|
67
|
+
end
|
68
|
+
|
69
|
+
def programstatus_items
|
70
|
+
section_items(:programstatus)
|
71
|
+
end
|
72
|
+
|
73
|
+
def servicecomment_items
|
74
|
+
section_items(:servicecomment)
|
75
|
+
end
|
76
|
+
|
77
|
+
def servicedowntime_items
|
78
|
+
section_items(:servicedowntime)
|
79
|
+
end
|
80
|
+
|
81
|
+
def servicestatus_items
|
82
|
+
section_items(:servicestatus)
|
83
|
+
end
|
84
|
+
|
53
85
|
def host_problems
|
54
|
-
|
55
|
-
Section.new(s) if s =~ /^hoststatus/ && in_scope?(s) && problem?(s)
|
56
|
-
end.compact
|
86
|
+
section_items(:hoststatus, true)
|
57
87
|
end
|
58
88
|
|
59
89
|
def service_problems
|
60
|
-
|
61
|
-
Section.new(s) if s =~ /^servicestatus/ && in_scope?(s) && problem?(s)
|
62
|
-
end.compact
|
90
|
+
section_items(:servicestatus, true)
|
63
91
|
end
|
64
92
|
|
65
93
|
def in_scope?(section)
|
@@ -73,7 +101,42 @@ module NagiosAnalyzer
|
|
73
101
|
end
|
74
102
|
|
75
103
|
def reset_cache!
|
76
|
-
@items =
|
104
|
+
@items = nil
|
105
|
+
[
|
106
|
+
:contactstatus,
|
107
|
+
:hostcomment,
|
108
|
+
:hostdowntime,
|
109
|
+
:hoststatus,
|
110
|
+
:info,
|
111
|
+
:programstatus,
|
112
|
+
:servicecomment,
|
113
|
+
:servicedowntime,
|
114
|
+
:servicestatus,
|
115
|
+
].each do |name|
|
116
|
+
self.instance_variable_set(section_var_sym(name, true), nil)
|
117
|
+
self.instance_variable_set(section_var_sym(name, false), nil)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
private
|
122
|
+
|
123
|
+
def section_items(name, filter_problems = false)
|
124
|
+
var_sym = section_var_sym(name, filter_problems)
|
125
|
+
if !self.instance_variable_get(var_sym)
|
126
|
+
map = sections.map do |s|
|
127
|
+
Section.new(s) if s =~ regexp_for_section(name) && in_scope?(s) && (!filter_problems || problem?(s))
|
128
|
+
end.compact
|
129
|
+
self.instance_variable_set(var_sym, map)
|
130
|
+
end
|
131
|
+
self.instance_variable_get(var_sym)
|
132
|
+
end
|
133
|
+
|
134
|
+
def regexp_for_section(name)
|
135
|
+
Regexp.new("^\\s*#{name}\\s*{")
|
136
|
+
end
|
137
|
+
|
138
|
+
def section_var_sym(name, filter_problems)
|
139
|
+
"@#{name}_#{filter_problems}".to_sym
|
77
140
|
end
|
78
141
|
end
|
79
142
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
contactstatus {
|
2
|
+
id_for_testing=1
|
3
|
+
}
|
4
|
+
|
5
|
+
hostcomment {
|
6
|
+
id_for_testing=2
|
7
|
+
}
|
8
|
+
|
9
|
+
hostdowntime {
|
10
|
+
id_for_testing=3
|
11
|
+
}
|
12
|
+
|
13
|
+
hoststatus {
|
14
|
+
id_for_testing=4
|
15
|
+
}
|
16
|
+
|
17
|
+
info {
|
18
|
+
id_for_testing=5
|
19
|
+
}
|
20
|
+
|
21
|
+
programstatus {
|
22
|
+
id_for_testing=6
|
23
|
+
}
|
24
|
+
|
25
|
+
servicecomment {
|
26
|
+
id_for_testing=7
|
27
|
+
}
|
28
|
+
|
29
|
+
servicedowntime {
|
30
|
+
id_for_testing=8
|
31
|
+
}
|
32
|
+
|
33
|
+
servicestatus {
|
34
|
+
id_for_testing=9
|
35
|
+
}
|
data/spec/section_spec.rb
CHANGED
@@ -34,6 +34,32 @@ describe NA::Section do
|
|
34
34
|
NA::Section.new("hoststatus {\ncurrent_state=42\n}")[:status].should == "CRITICAL"
|
35
35
|
end
|
36
36
|
|
37
|
+
it "properly parses sections with free text" do
|
38
|
+
section = NA::Section.new("somethinghere {\n\tcomment_data=Free Text here. Possibly even with characters like } or = or even {.\n\nhello_prop=789321\n}")
|
39
|
+
section.type.should == "somethinghere"
|
40
|
+
section.comment_data.should == "Free Text here. Possibly even with characters like } or = or even {."
|
41
|
+
section.hello_prop.should == 789321
|
42
|
+
end
|
43
|
+
|
44
|
+
it "properly parses sections with decimal values" do
|
45
|
+
section = NA::Section.new("somethinghere {\n\nnumerical_value=3.141529\n}")
|
46
|
+
section.type.should == "somethinghere"
|
47
|
+
section.numerical_value.should == 3.141529
|
48
|
+
end
|
49
|
+
|
50
|
+
context "direct access" do
|
51
|
+
it "allows direct access to properties" do
|
52
|
+
section = NA::Section.new("servicestatus {\ncurrent_state=2\n}")
|
53
|
+
section.current_state.should == 2
|
54
|
+
section.something_else.should be_nil
|
55
|
+
end
|
56
|
+
|
57
|
+
it "properly bubbles a NoMethodError when using inexistant methods" do
|
58
|
+
section = NA::Section.new("servicestatus {\ncurrent_state=2\n}")
|
59
|
+
lambda { section.weird_inexistent_method(1) }.should raise_error NoMethodError
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
37
63
|
context "#sort" do
|
38
64
|
it "places servicestatus'es after hoststatus'es" do
|
39
65
|
a = NA::Section.new("servicestatus {\ncurrent_state=0\n}")
|
data/spec/status_spec.rb
CHANGED
@@ -3,84 +3,150 @@ require File.expand_path('../spec_helper',__FILE__)
|
|
3
3
|
describe NagiosAnalyzer::Status do
|
4
4
|
before(:each) do
|
5
5
|
@file = File.expand_path('../data/status.dat',__FILE__)
|
6
|
-
@status = NagiosAnalyzer::Status.new(@file, :include_ok => true)
|
7
6
|
end
|
8
7
|
|
8
|
+
let(:status) { NagiosAnalyzer::Status.new(@file, :include_ok => true) }
|
9
|
+
|
9
10
|
it "creates a NagiosAnalyzer::Status object" do
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
status.should be
|
12
|
+
status.sections.should be_a(Array)
|
13
|
+
status.sections.first.should include("created=")
|
14
|
+
status.should have(6).sections
|
14
15
|
end
|
15
16
|
|
16
17
|
it "provides a last_updated attribute" do
|
17
|
-
|
18
|
+
status.last_updated.should be_a(Time)
|
18
19
|
end
|
19
20
|
|
20
21
|
context "#scopes" do
|
21
22
|
it "provides scopes to filter sections" do
|
22
|
-
|
23
|
-
|
23
|
+
status.should have(6).sections
|
24
|
+
status.should have(0).scopes
|
24
25
|
end
|
25
26
|
|
26
27
|
it "tells if a section is in the scopes" do
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
status.scopes << lambda{|s|s.include?("host_name=server-web")}
|
29
|
+
status.in_scope?(status.sections[2]).should be_true
|
30
|
+
status.in_scope?(status.sections[3]).should be_false
|
30
31
|
end
|
31
|
-
|
32
|
+
|
32
33
|
it "defines scope in the initialization" do
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
status = NagiosAnalyzer::Status.new(@file, :include_ok => true,
|
35
|
+
:scope => lambda{|s|s.include?("host_name=server-web")})
|
36
|
+
status.in_scope?(status.sections[2]).should be_true
|
37
|
+
status.in_scope?(status.sections[3]).should be_false
|
37
38
|
end
|
38
39
|
end
|
39
40
|
|
40
|
-
context "#items, #service_items, #host_items" do
|
41
|
+
context "#items, #service_items, #host_items, #hostcomment_items" do
|
41
42
|
it "returns all items" do
|
42
|
-
|
43
|
-
|
44
|
-
|
43
|
+
status.should have(6).sections
|
44
|
+
status.should have(4).items #don't return info{} and programstatus{} sections
|
45
|
+
status.items.first.should be_a(NagiosAnalyzer::Section)
|
45
46
|
end
|
46
47
|
|
47
48
|
it "returns host items" do
|
48
|
-
|
49
|
-
|
49
|
+
status.should have(2).host_items #4 = 2 host_items
|
50
|
+
status.host_items.first[:type].should == "hoststatus"
|
50
51
|
end
|
51
52
|
|
52
53
|
it "returns service items" do
|
53
|
-
|
54
|
-
|
54
|
+
status.should have(2).service_items # ... + 2 service_items
|
55
|
+
status.service_items.first[:type].should == "servicestatus"
|
55
56
|
end
|
56
57
|
|
57
58
|
it "returns only service problems, keeping scopes on every items" do
|
58
|
-
|
59
|
-
|
59
|
+
status.should have(1).service_problems
|
60
|
+
status.should have(2).service_items
|
60
61
|
end
|
61
62
|
|
62
63
|
it "returns host problems, currently none" do
|
63
|
-
|
64
|
+
status.should have(0).host_problems
|
64
65
|
end
|
65
66
|
|
66
67
|
it "resets cached attributes" do
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
68
|
+
status.should have(4).items
|
69
|
+
status.scopes << lambda{|s| s.start_with?("servicestatus")}
|
70
|
+
status.should have(4).items
|
71
|
+
status.reset_cache!
|
72
|
+
status.should have(2).items
|
73
|
+
status.should have(0).host_items
|
74
|
+
status.should have(2).service_items
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
77
78
|
context "without :include_ok option" do
|
78
79
|
it "should filter items" do
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
80
|
+
status = NagiosAnalyzer::Status.new(@file)
|
81
|
+
status.should have(1).items #don't return info{} and programstatus{} sections
|
82
|
+
status.should have(0).host_items #4 = 2 host_items
|
83
|
+
status.should have(1).service_items # ... + 2 service_items
|
84
|
+
status.service_items.first.should_not include("current_state=0")
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context "more status" do
|
89
|
+
before(:each) do
|
90
|
+
@file = File.expand_path('../data/morestatus.dat',__FILE__)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "sould have lists for all kinds of nagios sections" do
|
94
|
+
status.contactstatus_items.should have(1).items
|
95
|
+
status.hostcomment_items.should have(1).items
|
96
|
+
status.hostdowntime_items.should have(1).items
|
97
|
+
status.hoststatus_items.should have(1).items
|
98
|
+
status.info_items.should have(1).items
|
99
|
+
status.programstatus_items.should have(1).items
|
100
|
+
status.servicecomment_items.should have(1).items
|
101
|
+
status.servicedowntime_items.should have(1).items
|
102
|
+
status.servicestatus_items.should have(1).items
|
103
|
+
end
|
104
|
+
|
105
|
+
it "sould properly classify each kind of nagios sections" do
|
106
|
+
status.contactstatus_items.first.id_for_testing.should == 1
|
107
|
+
status.hostcomment_items.first.id_for_testing.should == 2
|
108
|
+
status.hostdowntime_items.first.id_for_testing.should == 3
|
109
|
+
status.hoststatus_items.first.id_for_testing.should == 4
|
110
|
+
status.info_items.first.id_for_testing.should == 5
|
111
|
+
status.programstatus_items.first.id_for_testing.should == 6
|
112
|
+
status.servicecomment_items.first.id_for_testing.should == 7
|
113
|
+
status.servicedowntime_items.first.id_for_testing.should == 8
|
114
|
+
status.servicestatus_items.first.id_for_testing.should == 9
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
context "parsing sections" do
|
119
|
+
it "parses sections when they are appart" do
|
120
|
+
status = status_for_data <<-DAT
|
121
|
+
hoststatus {
|
122
|
+
host_name=abc
|
123
|
+
}
|
124
|
+
|
125
|
+
|
126
|
+
hoststatus {
|
127
|
+
host_name=abc
|
128
|
+
}
|
129
|
+
DAT
|
130
|
+
status.hoststatus_items.size.should == 2
|
131
|
+
end
|
132
|
+
|
133
|
+
it "parses when sections are close by" do
|
134
|
+
status = status_for_data <<-DAT
|
135
|
+
hoststatus {
|
136
|
+
host_name=abc
|
137
|
+
}
|
138
|
+
hoststatus {
|
139
|
+
host_name=abc
|
140
|
+
}
|
141
|
+
DAT
|
142
|
+
status.hoststatus_items.size.should == 2
|
143
|
+
end
|
144
|
+
|
145
|
+
def status_for_data(data)
|
146
|
+
filename = "fixture.dat"
|
147
|
+
File.stub(:mtime).with(filename).and_return(Time.now)
|
148
|
+
File.stub(:read).with(filename).and_return(data)
|
149
|
+
NagiosAnalyzer::Status.new(filename, :include_ok => true)
|
84
150
|
end
|
85
151
|
end
|
86
152
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nagios_analyzer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-07-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,12 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
description: Helps you parse a status.dat file produced by nagios or shinken. It aims
|
26
31
|
at being performant for big status.dat files. Take a look at nagios_parser too if
|
27
32
|
you want, looks very cool too !
|
@@ -34,7 +39,7 @@ files:
|
|
34
39
|
- .gitignore
|
35
40
|
- .travis.yml
|
36
41
|
- Gemfile
|
37
|
-
-
|
42
|
+
- LICENSE
|
38
43
|
- README.textile
|
39
44
|
- Rakefile
|
40
45
|
- lib/nagios_analyzer.rb
|
@@ -42,6 +47,7 @@ files:
|
|
42
47
|
- lib/nagios_analyzer/status.rb
|
43
48
|
- lib/nagios_analyzer/version.rb
|
44
49
|
- nagios_analyzer.gemspec
|
50
|
+
- spec/data/morestatus.dat
|
45
51
|
- spec/data/status.dat
|
46
52
|
- spec/section_spec.rb
|
47
53
|
- spec/spec_helper.rb
|
@@ -60,7 +66,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
60
66
|
version: '0'
|
61
67
|
segments:
|
62
68
|
- 0
|
63
|
-
hash:
|
69
|
+
hash: 458145368960384668
|
64
70
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
71
|
none: false
|
66
72
|
requirements:
|
@@ -69,10 +75,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
75
|
version: '0'
|
70
76
|
segments:
|
71
77
|
- 0
|
72
|
-
hash:
|
78
|
+
hash: 458145368960384668
|
73
79
|
requirements: []
|
74
80
|
rubyforge_project: nagios_analyzer
|
75
|
-
rubygems_version: 1.8.
|
81
|
+
rubygems_version: 1.8.25
|
76
82
|
signing_key:
|
77
83
|
specification_version: 3
|
78
84
|
summary: Parses a nagios/shinken status.dat file
|
data/Gemfile.lock
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
nagios_analyzer (0.0.3)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: http://rubygems.org/
|
8
|
-
specs:
|
9
|
-
diff-lcs (1.1.2)
|
10
|
-
rake (0.8.7)
|
11
|
-
rspec (2.4.0)
|
12
|
-
rspec-core (~> 2.4.0)
|
13
|
-
rspec-expectations (~> 2.4.0)
|
14
|
-
rspec-mocks (~> 2.4.0)
|
15
|
-
rspec-core (2.4.0)
|
16
|
-
rspec-expectations (2.4.0)
|
17
|
-
diff-lcs (~> 1.1.2)
|
18
|
-
rspec-mocks (2.4.0)
|
19
|
-
|
20
|
-
PLATFORMS
|
21
|
-
ruby
|
22
|
-
|
23
|
-
DEPENDENCIES
|
24
|
-
nagios_analyzer!
|
25
|
-
rake
|
26
|
-
rspec
|