nagios_parser 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.md +9 -0
- data/lib/nagios_parser/status/parser.rb +37 -77
- data/lib/nagios_parser/status/parser.y +3 -7
- data/lib/nagios_parser/version.rb +1 -1
- data/nagios_parser.gemspec +1 -4
- data/spec/nagios_parser/object/parser_spec.rb +15 -13
- data/spec/nagios_parser/status/parser_spec.rb +8 -11
- metadata +8 -7
data/CHANGES.md
ADDED
@@ -12,7 +12,7 @@ module NagiosParser
|
|
12
12
|
module Status
|
13
13
|
class Parser < Racc::Parser
|
14
14
|
|
15
|
-
module_eval(<<'...end parser.y/module_eval...', 'parser.y',
|
15
|
+
module_eval(<<'...end parser.y/module_eval...', 'parser.y', 35)
|
16
16
|
|
17
17
|
def create_token(string)
|
18
18
|
result = []
|
@@ -26,7 +26,7 @@ def create_token(string)
|
|
26
26
|
when scanner.scan(/#[^\n]*/)
|
27
27
|
# ignore comments
|
28
28
|
when (!inside and match = scanner.scan(/\w+/))
|
29
|
-
result << [
|
29
|
+
result << [:TYPE, match]
|
30
30
|
when match = scanner.scan(/\{/)
|
31
31
|
inside = true
|
32
32
|
result << [:OPEN, nil]
|
@@ -67,74 +67,55 @@ end
|
|
67
67
|
##### State transition tables begin ###
|
68
68
|
|
69
69
|
racc_action_table = [
|
70
|
-
|
71
|
-
10, 1, 2, 6, 7, 8, 9, 10, 1, 2,
|
72
|
-
14 ]
|
70
|
+
5, 8, 1, 13, 8, 4, 10, 11, 1 ]
|
73
71
|
|
74
72
|
racc_action_check = [
|
75
|
-
|
76
|
-
3, 3, 3, 0, 0, 0, 0, 0, 0, 0,
|
77
|
-
11 ]
|
73
|
+
2, 4, 2, 9, 9, 1, 5, 8, 0 ]
|
78
74
|
|
79
75
|
racc_action_pointer = [
|
80
|
-
|
81
|
-
nil,
|
82
|
-
nil ]
|
76
|
+
6, 2, 0, nil, -4, 6, nil, nil, 1, -1,
|
77
|
+
nil, nil, nil, nil ]
|
83
78
|
|
84
79
|
racc_action_default = [
|
85
|
-
|
86
|
-
|
87
|
-
-12 ]
|
80
|
+
-8, -8, -8, -1, -8, -8, -2, -4, -6, -8,
|
81
|
+
14, -7, -5, -3 ]
|
88
82
|
|
89
83
|
racc_goto_table = [
|
90
|
-
|
84
|
+
7, 3, 9, 6, 2, 12 ]
|
91
85
|
|
92
86
|
racc_goto_check = [
|
93
|
-
|
87
|
+
4, 2, 3, 2, 1, 4 ]
|
94
88
|
|
95
89
|
racc_goto_pointer = [
|
96
|
-
nil,
|
90
|
+
nil, 4, 1, -2, -4 ]
|
97
91
|
|
98
92
|
racc_goto_default = [
|
99
|
-
nil, nil, nil,
|
93
|
+
nil, nil, nil, nil, nil ]
|
100
94
|
|
101
95
|
racc_reduce_table = [
|
102
96
|
0, 0, :racc_error,
|
103
|
-
1,
|
104
|
-
2,
|
105
|
-
4,
|
106
|
-
1,
|
107
|
-
|
108
|
-
1,
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
2, 17, :_reduce_12,
|
115
|
-
1, 18, :_reduce_13,
|
116
|
-
2, 18, :_reduce_14 ]
|
117
|
-
|
118
|
-
racc_reduce_n = 15
|
119
|
-
|
120
|
-
racc_shift_n = 21
|
97
|
+
1, 8, :_reduce_none,
|
98
|
+
2, 8, :_reduce_none,
|
99
|
+
4, 9, :_reduce_3,
|
100
|
+
1, 10, :_reduce_none,
|
101
|
+
2, 10, :_reduce_5,
|
102
|
+
1, 11, :_reduce_6,
|
103
|
+
2, 11, :_reduce_7 ]
|
104
|
+
|
105
|
+
racc_reduce_n = 8
|
106
|
+
|
107
|
+
racc_shift_n = 14
|
121
108
|
|
122
109
|
racc_token_table = {
|
123
110
|
false => 0,
|
124
111
|
:error => 1,
|
125
|
-
:
|
126
|
-
:
|
127
|
-
:
|
128
|
-
:
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
"programstatus" => 9,
|
133
|
-
"hoststatus" => 10,
|
134
|
-
"contactstatus" => 11,
|
135
|
-
"servicecomment" => 12 }
|
136
|
-
|
137
|
-
racc_nt_base = 13
|
112
|
+
:TYPE => 2,
|
113
|
+
:OPEN => 3,
|
114
|
+
:CLOSE => 4,
|
115
|
+
:KEY => 5,
|
116
|
+
:VALUE => 6 }
|
117
|
+
|
118
|
+
racc_nt_base = 7
|
138
119
|
|
139
120
|
racc_use_result_var = true
|
140
121
|
|
@@ -157,21 +138,14 @@ Racc_arg = [
|
|
157
138
|
Racc_token_to_s_table = [
|
158
139
|
"$end",
|
159
140
|
"error",
|
141
|
+
"TYPE",
|
160
142
|
"OPEN",
|
161
143
|
"CLOSE",
|
162
144
|
"KEY",
|
163
145
|
"VALUE",
|
164
|
-
"\"hostcomment\"",
|
165
|
-
"\"servicestatus\"",
|
166
|
-
"\"info\"",
|
167
|
-
"\"programstatus\"",
|
168
|
-
"\"hoststatus\"",
|
169
|
-
"\"contactstatus\"",
|
170
|
-
"\"servicecomment\"",
|
171
146
|
"$start",
|
172
147
|
"types",
|
173
148
|
"type",
|
174
|
-
"type_names",
|
175
149
|
"assignments",
|
176
150
|
"assignment" ]
|
177
151
|
|
@@ -196,22 +170,8 @@ module_eval(<<'.,.,', 'parser.y', 11)
|
|
196
170
|
|
197
171
|
# reduce 4 omitted
|
198
172
|
|
199
|
-
|
200
|
-
|
201
|
-
# reduce 6 omitted
|
202
|
-
|
203
|
-
# reduce 7 omitted
|
204
|
-
|
205
|
-
# reduce 8 omitted
|
206
|
-
|
207
|
-
# reduce 9 omitted
|
208
|
-
|
209
|
-
# reduce 10 omitted
|
210
|
-
|
211
|
-
# reduce 11 omitted
|
212
|
-
|
213
|
-
module_eval(<<'.,.,', 'parser.y', 22)
|
214
|
-
def _reduce_12(val, _values, result)
|
173
|
+
module_eval(<<'.,.,', 'parser.y', 18)
|
174
|
+
def _reduce_5(val, _values, result)
|
215
175
|
val[1].each do |key, value|
|
216
176
|
val[0][key] = value
|
217
177
|
end
|
@@ -221,15 +181,15 @@ module_eval(<<'.,.,', 'parser.y', 22)
|
|
221
181
|
end
|
222
182
|
.,.,
|
223
183
|
|
224
|
-
module_eval(<<'.,.,', 'parser.y',
|
225
|
-
def
|
184
|
+
module_eval(<<'.,.,', 'parser.y', 25)
|
185
|
+
def _reduce_6(val, _values, result)
|
226
186
|
result = {val[0] => nil}
|
227
187
|
result
|
228
188
|
end
|
229
189
|
.,.,
|
230
190
|
|
231
|
-
module_eval(<<'.,.,', 'parser.y',
|
232
|
-
def
|
191
|
+
module_eval(<<'.,.,', 'parser.y', 26)
|
192
|
+
def _reduce_7(val, _values, result)
|
233
193
|
result = {val[0] => val[1]}
|
234
194
|
result
|
235
195
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class NagiosParser::Status::Parser
|
2
2
|
token
|
3
|
-
OPEN CLOSE KEY VALUE
|
3
|
+
TYPE OPEN CLOSE KEY VALUE
|
4
4
|
|
5
5
|
rule
|
6
6
|
types
|
@@ -8,15 +8,11 @@ class NagiosParser::Status::Parser
|
|
8
8
|
| types type
|
9
9
|
;
|
10
10
|
type
|
11
|
-
:
|
11
|
+
: TYPE OPEN assignments CLOSE {
|
12
12
|
@result[val[0]] ||= []
|
13
13
|
@result[val[0]] << val[2]
|
14
14
|
}
|
15
15
|
;
|
16
|
-
type_names
|
17
|
-
: 'hostcomment' | 'servicestatus' | 'info' | 'programstatus'
|
18
|
-
| 'hoststatus' | 'contactstatus' | 'servicecomment'
|
19
|
-
;
|
20
16
|
assignments
|
21
17
|
: assignment
|
22
18
|
| assignments assignment {
|
@@ -49,7 +45,7 @@ def create_token(string)
|
|
49
45
|
when scanner.scan(/#[^\n]*/)
|
50
46
|
# ignore comments
|
51
47
|
when (!inside and match = scanner.scan(/\w+/))
|
52
|
-
result << [
|
48
|
+
result << [:TYPE, match]
|
53
49
|
when match = scanner.scan(/\{/)
|
54
50
|
inside = true
|
55
51
|
result << [:OPEN, nil]
|
data/nagios_parser.gemspec
CHANGED
@@ -10,10 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.email = ["bernd@tuneafish.de"]
|
11
11
|
s.homepage = "http://rubygems.org/gems/nagios_parser"
|
12
12
|
s.summary = %q{parser lib for parsing Nagios status and config files}
|
13
|
-
s.description = %q{
|
14
|
-
The nagios_parser gem provides parsers for Nagios config
|
15
|
-
and status files.
|
16
|
-
}
|
13
|
+
s.description = %q{The nagios_parser gem provides parsers for Nagios config and status files.}
|
17
14
|
|
18
15
|
#s.rubyforge_project = "nagios_parser"
|
19
16
|
|
@@ -5,7 +5,7 @@ describe NagiosParser::Object::Parser do
|
|
5
5
|
let(:parser) { NagiosParser::Object::Parser.new }
|
6
6
|
|
7
7
|
describe ".parse" do
|
8
|
-
it "returns a hash of
|
8
|
+
it "returns a hash of object definitions" do
|
9
9
|
data = parser.parse('define host { host_name foo }')
|
10
10
|
data['host'].first['host_name'].should == 'foo'
|
11
11
|
end
|
@@ -58,7 +58,7 @@ describe NagiosParser::Object::Parser do
|
|
58
58
|
|
59
59
|
describe "#parse" do
|
60
60
|
context "with a valid string" do
|
61
|
-
it "returns a hash of
|
61
|
+
it "returns a hash of object definitions" do
|
62
62
|
string = <<-RUBY
|
63
63
|
define host {
|
64
64
|
host_name foo.example.com
|
@@ -72,19 +72,21 @@ describe NagiosParser::Object::Parser do
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
-
context "with an invalid
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
75
|
+
context "with an invalid object definition" do
|
76
|
+
describe "example: FooBar { info test }" do
|
77
|
+
it "will raise an exception" do
|
78
|
+
expect {
|
79
|
+
parser.parse('FooBar { info test }')
|
80
|
+
}.to raise_error
|
81
|
+
end
|
80
82
|
end
|
81
|
-
end
|
82
83
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
84
|
+
describe "example: define host { =test }" do
|
85
|
+
it "will raise an exception" do
|
86
|
+
expect {
|
87
|
+
parser.parse('define host { =test }')
|
88
|
+
}.to raise_error
|
89
|
+
end
|
88
90
|
end
|
89
91
|
end
|
90
92
|
end
|
@@ -31,7 +31,7 @@ describe NagiosParser::Status::Parser do
|
|
31
31
|
RUBY
|
32
32
|
|
33
33
|
parser.create_token(string).should == [
|
34
|
-
[
|
34
|
+
[:TYPE, 'hoststatus'],
|
35
35
|
[:OPEN, nil],
|
36
36
|
[:KEY, 'bar'], [:VALUE, 'baz'],
|
37
37
|
[:KEY, 'hello'], [:VALUE, 'world'],
|
@@ -39,11 +39,11 @@ describe NagiosParser::Status::Parser do
|
|
39
39
|
[:KEY, 'foo'], [:VALUE, 'bar baz hello world'],
|
40
40
|
[:KEY, 'eek'], [:VALUE, 1],
|
41
41
|
[:CLOSE, nil],
|
42
|
-
[
|
42
|
+
[:TYPE, 'info'],
|
43
43
|
[:OPEN, nil],
|
44
44
|
[:KEY, 'version'], [:VALUE, '3.2.0'],
|
45
45
|
[:CLOSE, nil],
|
46
|
-
[
|
46
|
+
[:TYPE, 'programstatus'],
|
47
47
|
[:OPEN, nil],
|
48
48
|
[:KEY, 'last_command_check'], [:VALUE, 1291408262],
|
49
49
|
[:KEY, 'global_service_event_handler'],
|
@@ -72,20 +72,17 @@ describe NagiosParser::Status::Parser do
|
|
72
72
|
version = 1
|
73
73
|
}
|
74
74
|
info { version=3.2.0 }
|
75
|
+
|
76
|
+
program {
|
77
|
+
version=2.x.x
|
78
|
+
}
|
75
79
|
RUBY
|
76
80
|
|
77
81
|
data = parser.parse(string)
|
78
82
|
data['info'].first['version'].should == '3.2.0'
|
79
83
|
data['hoststatus'].first['bar'].should == 'baz'
|
80
84
|
data['hoststatus'].first['version'].should == 1
|
81
|
-
|
82
|
-
end
|
83
|
-
|
84
|
-
context "with an invalid status type" do
|
85
|
-
it "will raise an exception" do
|
86
|
-
expect {
|
87
|
-
parser.parse('FooBar { info=test }')
|
88
|
-
}.to raise_error
|
85
|
+
data['program'].first['version'].should == '2.x.x'
|
89
86
|
end
|
90
87
|
end
|
91
88
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nagios_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 19
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 1.0.0
|
10
|
+
version: 1.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Bernd Ahlers
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-01-09 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -60,7 +60,7 @@ dependencies:
|
|
60
60
|
version: "0"
|
61
61
|
type: :development
|
62
62
|
version_requirements: *id003
|
63
|
-
description:
|
63
|
+
description: The nagios_parser gem provides parsers for Nagios config and status files.
|
64
64
|
email:
|
65
65
|
- bernd@tuneafish.de
|
66
66
|
executables: []
|
@@ -71,6 +71,7 @@ extra_rdoc_files: []
|
|
71
71
|
|
72
72
|
files:
|
73
73
|
- .gitignore
|
74
|
+
- CHANGES.md
|
74
75
|
- Gemfile
|
75
76
|
- LICENSE
|
76
77
|
- README.md
|
@@ -115,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
116
|
requirements: []
|
116
117
|
|
117
118
|
rubyforge_project:
|
118
|
-
rubygems_version: 1.
|
119
|
+
rubygems_version: 1.4.2
|
119
120
|
signing_key:
|
120
121
|
specification_version: 3
|
121
122
|
summary: parser lib for parsing Nagios status and config files
|