opennebula_nagios_probe 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +5 -0
  3. data/.rubocop.yml +6 -0
  4. data/.travis.yml +10 -0
  5. data/Gemfile +18 -0
  6. data/Gemfile.lock +87 -0
  7. data/README.md +36 -0
  8. data/Rakefile +65 -0
  9. data/bin/check_opennebula +70 -0
  10. data/conf/opennebula.cfg.erb +32 -0
  11. data/lib/opennebula_nagios_probe.rb +29 -0
  12. data/lib/probe/occi/client.rb +50 -0
  13. data/lib/probe/occi/nocci/compute.rb +20 -0
  14. data/lib/probe/occi/nocci/network.rb +21 -0
  15. data/lib/probe/occi/nocci/resource.rb +96 -0
  16. data/lib/probe/occi/nocci/storage.rb +22 -0
  17. data/lib/probe/occi/rocci/compute.rb +70 -0
  18. data/lib/probe/occi/rocci/network.rb +21 -0
  19. data/lib/probe/occi/rocci/resource.rb +62 -0
  20. data/lib/probe/occi/rocci/storage.rb +22 -0
  21. data/lib/probe/opennebula_econe_probe.rb +108 -0
  22. data/lib/probe/opennebula_occi_probe.rb +126 -0
  23. data/lib/probe/opennebula_oned_probe.rb +101 -0
  24. data/lib/probe/opennebula_probe.rb +97 -0
  25. data/lib/probe/optparse_nagios_probe.rb +174 -0
  26. data/opennebula_nagios_probe.gemspec +32 -0
  27. data/spec/probe/fixtures/cassettes/econe/econe_critical_existing_resources.yml +75 -0
  28. data/spec/probe/fixtures/cassettes/econe/econe_critical_no_resources.yml +75 -0
  29. data/spec/probe/fixtures/cassettes/econe/econe_critical_nonexisting_resources.yml +75 -0
  30. data/spec/probe/fixtures/cassettes/econe/econe_warning_existing_resources.yml +75 -0
  31. data/spec/probe/fixtures/cassettes/econe/econe_warning_nonexisting_resources.yml +40 -0
  32. data/spec/probe/fixtures/cassettes/occi/occi_critical_existing_resources.yml +143 -0
  33. data/spec/probe/fixtures/cassettes/occi/occi_critical_no_resources.yml +143 -0
  34. data/spec/probe/fixtures/cassettes/occi/occi_critical_nonexisting_resources.yml +143 -0
  35. data/spec/probe/fixtures/cassettes/occi/occi_warning_existing_resources.yml +230 -0
  36. data/spec/probe/fixtures/cassettes/occi/occi_warning_nonexisting_resources.yml +49 -0
  37. data/spec/probe/fixtures/cassettes/oned/oned_critical_existing_resources.yml +131 -0
  38. data/spec/probe/fixtures/cassettes/oned/oned_critical_no_resources.yml +131 -0
  39. data/spec/probe/fixtures/cassettes/oned/oned_critical_nonexisting_resources.yml +131 -0
  40. data/spec/probe/fixtures/cassettes/oned/oned_warning_existing_resources.yml +671 -0
  41. data/spec/probe/fixtures/cassettes/oned/oned_warning_nonexisting_resources.yml +130 -0
  42. data/spec/probe/fixtures/cassettes/rocci/rocci_critical_existing_resources.yml +1220 -0
  43. data/spec/probe/fixtures/cassettes/rocci/rocci_critical_no_resources.yml +1220 -0
  44. data/spec/probe/fixtures/cassettes/rocci/rocci_critical_nonexisting_resources.yml +1220 -0
  45. data/spec/probe/fixtures/cassettes/rocci/rocci_warning_existing_resources.yml +817 -0
  46. data/spec/probe/fixtures/cassettes/rocci/rocci_warning_no_resources.yml +591 -0
  47. data/spec/probe/fixtures/cassettes/rocci/rocci_warning_nonexisting_resources.yml +640 -0
  48. data/spec/probe/opennebula_econe_probe_spec.rb +150 -0
  49. data/spec/probe/opennebula_occi_probe_spec.rb +149 -0
  50. data/spec/probe/opennebula_oned_probe_spec.rb +154 -0
  51. data/spec/probe/opennebula_rocci_probe_spec.rb +156 -0
  52. metadata +280 -0
@@ -0,0 +1,156 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ ###########################################################################
5
+ ## Licensed under the Apache License, Version 2.0 (the "License");
6
+ ## you may not use this file except in compliance with the License.
7
+ ## You may obtain a copy of the License at
8
+ ##
9
+ ## http://www.apache.org/licenses/LICENSE-2.0
10
+ ##
11
+ ## Unless required by applicable law or agreed to in writing, software
12
+ ## distributed under the License is distributed on an "AS IS" BASIS,
13
+ ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ ## See the License for the specific language governing permissions and
15
+ ## limitations under the License.
16
+ ###########################################################################
17
+
18
+ $LOAD_PATH << File.expand_path('..', __FILE__) + '/../../lib/probe'
19
+
20
+ require 'bundler/setup'
21
+ require 'vcr'
22
+ require 'webmock'
23
+ require 'occi/client'
24
+ require 'log4r'
25
+ require 'ostruct'
26
+
27
+ require 'opennebula_occi_probe'
28
+
29
+ RSpec::Core::DSL.describe OpenNebulaOcciProbe do
30
+ before do
31
+ WebMock.disable_net_connect! allow: 'localhost'
32
+
33
+ VCR.configure do |c|
34
+ c.cassette_library_dir = 'spec/probe/fixtures/cassettes/rocci'
35
+ c.hook_into :webmock
36
+ c.allow_http_connections_when_no_cassette = true
37
+ end
38
+
39
+ @options = OpenStruct.new
40
+
41
+ @options.protocol = :https
42
+ @options.hostname = 'localhost'
43
+ @options.port = 2345
44
+ @options.service = 'rocci'
45
+ @options.path = '/'
46
+ @options.username = 'nagios-probes-test'
47
+ @options.password = 'nagios-probes-pass'
48
+
49
+ @logger = Log4r::Logger.new 'RocciTestLogger'
50
+ @logger.outputters = Log4r::Outputter.stderr
51
+ # @logger.level = Log4r::DEBUG
52
+ @logger.level = Log4r::INFO
53
+ end
54
+
55
+ context 'with no resources' do
56
+ before :each do
57
+ @probe = OpenNebulaOcciProbe.new(@options)
58
+ @probe.logger = @logger
59
+ end
60
+
61
+ it 'checks basic connectivity with cassette' do
62
+ VCR.use_cassette('rocci_critical_no_resources') do
63
+ @probe.check_crit.should be_false
64
+ end
65
+ end
66
+
67
+ # without a cassette the probe should report critical state
68
+ it 'checks basic connectivity without cassette' do
69
+ @probe.check_crit.should be_true
70
+ end
71
+
72
+ it 'checks for resource availability with cassette' do
73
+ VCR.use_cassette('rocci_warning_no_resources') do
74
+ @probe.check_warn.should be_false
75
+ end
76
+ end
77
+
78
+ # This must be true, bacause rOCCI has different behaviour
79
+ # than OCCI probe - rOCCI probe must be initialized first.
80
+ # If initialization fails, exception is thrown and true is returned.
81
+ # without a cassette the probe should report warning state
82
+ it 'checks for resource availability without cassette' do
83
+ @probe.check_warn.should be_true
84
+ end
85
+ end
86
+
87
+ context 'with resources' do
88
+ before :each do
89
+ # resources should not have an effect on check_crit results
90
+ @options.network = %w(1 61)
91
+ # Not supported yet
92
+ # @options.storage = []
93
+ @options.compute = %w(4016)
94
+
95
+ @probe = OpenNebulaOcciProbe.new(@options)
96
+ @probe.logger = @logger
97
+ end
98
+
99
+ it 'checks basic connectivity with cassette' do
100
+ VCR.use_cassette('rocci_critical_existing_resources') do
101
+ @probe.check_crit.should be_false
102
+ end
103
+ end
104
+
105
+ # without a cassette the probe should report critical state
106
+ it 'checks basic connectivity without cassette' do
107
+ @probe.check_crit.should be_true
108
+ end
109
+
110
+ it 'checks for resource availability with cassette' do
111
+ VCR.use_cassette('rocci_warning_existing_resources') do
112
+ @probe.check_warn.should be_false
113
+ end
114
+ end
115
+
116
+ # without a cassette the probe should report warning state
117
+ it 'checks for resource availability without cassette' do
118
+ @probe.check_warn.should be_true
119
+ end
120
+ end
121
+
122
+ context 'with nonexisting resources' do
123
+ before :each do
124
+ # resources should not have an effect on check_crit results
125
+ @options.network = %w(10 11)
126
+ # Not supported yet
127
+ # @options.storage = ['126', '127']
128
+ @options.compute = %w(8192)
129
+
130
+ @probe = OpenNebulaOcciProbe.new(@options)
131
+ @probe.logger = @logger
132
+ end
133
+
134
+ it 'checks basic connectivity with cassette' do
135
+ VCR.use_cassette('rocci_critical_nonexisting_resources') do
136
+ @probe.check_crit.should be_false
137
+ end
138
+ end
139
+
140
+ # without a cassette the probe should report critical state
141
+ it 'checks basic connectivity without cassette' do
142
+ @probe.check_crit.should be_true
143
+ end
144
+
145
+ it 'checks for resource availability with cassette' do
146
+ VCR.use_cassette('rocci_warning_nonexisting_resources') do
147
+ @probe.check_warn.should be_true
148
+ end
149
+ end
150
+
151
+ # without a cassette the probe should report warning state
152
+ it 'checks for resource availability without cassette' do
153
+ @probe.check_warn.should be_true
154
+ end
155
+ end
156
+ end
metadata ADDED
@@ -0,0 +1,280 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: opennebula_nagios_probe
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Boris Parak
8
+ - Filip Hubik
9
+ - Michal Kimle
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-03-03 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: nagios-probe
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '0.1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ version: '0.1'
29
+ - !ruby/object:Gem::Dependency
30
+ name: log4r
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: '1.1'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ version: '1.1'
43
+ - !ruby/object:Gem::Dependency
44
+ name: amazon-ec2
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: '0.9'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: '0.9'
57
+ - !ruby/object:Gem::Dependency
58
+ name: occi-cli
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: '4.2'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: '4.2'
71
+ - !ruby/object:Gem::Dependency
72
+ name: opennebula-oca
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '4.4'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ~>
83
+ - !ruby/object:Gem::Version
84
+ version: '4.4'
85
+ - !ruby/object:Gem::Dependency
86
+ name: occi-api
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: '4.2'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ version: '4.2'
99
+ - !ruby/object:Gem::Dependency
100
+ name: rspec
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ~>
104
+ - !ruby/object:Gem::Version
105
+ version: '2.14'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ~>
111
+ - !ruby/object:Gem::Version
112
+ version: '2.14'
113
+ - !ruby/object:Gem::Dependency
114
+ name: webmock
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ~>
118
+ - !ruby/object:Gem::Version
119
+ version: '1.9'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ version: '1.9'
127
+ - !ruby/object:Gem::Dependency
128
+ name: vcr
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: '2.8'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ~>
139
+ - !ruby/object:Gem::Version
140
+ version: '2.8'
141
+ - !ruby/object:Gem::Dependency
142
+ name: rake
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ~>
146
+ - !ruby/object:Gem::Version
147
+ version: '10.1'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ~>
153
+ - !ruby/object:Gem::Version
154
+ version: '10.1'
155
+ - !ruby/object:Gem::Dependency
156
+ name: bundler
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ~>
160
+ - !ruby/object:Gem::Version
161
+ version: '1.3'
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ~>
167
+ - !ruby/object:Gem::Version
168
+ version: '1.3'
169
+ description: This gem is collection of nagios probes (one, econe, occi, rocci) for
170
+ OpenNebula cloud platform
171
+ email:
172
+ - parak@cesnet.cz
173
+ - hubik@ics.muni.cz
174
+ - kimle.michal@gmail.com
175
+ executables:
176
+ - check_opennebula
177
+ extensions: []
178
+ extra_rdoc_files: []
179
+ files:
180
+ - .gitignore
181
+ - .rubocop.yml
182
+ - .travis.yml
183
+ - Gemfile
184
+ - Gemfile.lock
185
+ - README.md
186
+ - Rakefile
187
+ - bin/check_opennebula
188
+ - conf/opennebula.cfg.erb
189
+ - lib/opennebula_nagios_probe.rb
190
+ - lib/probe/occi/client.rb
191
+ - lib/probe/occi/nocci/compute.rb
192
+ - lib/probe/occi/nocci/network.rb
193
+ - lib/probe/occi/nocci/resource.rb
194
+ - lib/probe/occi/nocci/storage.rb
195
+ - lib/probe/occi/rocci/compute.rb
196
+ - lib/probe/occi/rocci/network.rb
197
+ - lib/probe/occi/rocci/resource.rb
198
+ - lib/probe/occi/rocci/storage.rb
199
+ - lib/probe/opennebula_econe_probe.rb
200
+ - lib/probe/opennebula_occi_probe.rb
201
+ - lib/probe/opennebula_oned_probe.rb
202
+ - lib/probe/opennebula_probe.rb
203
+ - lib/probe/optparse_nagios_probe.rb
204
+ - opennebula_nagios_probe.gemspec
205
+ - spec/probe/fixtures/cassettes/econe/econe_critical_existing_resources.yml
206
+ - spec/probe/fixtures/cassettes/econe/econe_critical_no_resources.yml
207
+ - spec/probe/fixtures/cassettes/econe/econe_critical_nonexisting_resources.yml
208
+ - spec/probe/fixtures/cassettes/econe/econe_warning_existing_resources.yml
209
+ - spec/probe/fixtures/cassettes/econe/econe_warning_nonexisting_resources.yml
210
+ - spec/probe/fixtures/cassettes/occi/occi_critical_existing_resources.yml
211
+ - spec/probe/fixtures/cassettes/occi/occi_critical_no_resources.yml
212
+ - spec/probe/fixtures/cassettes/occi/occi_critical_nonexisting_resources.yml
213
+ - spec/probe/fixtures/cassettes/occi/occi_warning_existing_resources.yml
214
+ - spec/probe/fixtures/cassettes/occi/occi_warning_nonexisting_resources.yml
215
+ - spec/probe/fixtures/cassettes/oned/oned_critical_existing_resources.yml
216
+ - spec/probe/fixtures/cassettes/oned/oned_critical_no_resources.yml
217
+ - spec/probe/fixtures/cassettes/oned/oned_critical_nonexisting_resources.yml
218
+ - spec/probe/fixtures/cassettes/oned/oned_warning_existing_resources.yml
219
+ - spec/probe/fixtures/cassettes/oned/oned_warning_nonexisting_resources.yml
220
+ - spec/probe/fixtures/cassettes/rocci/rocci_critical_existing_resources.yml
221
+ - spec/probe/fixtures/cassettes/rocci/rocci_critical_no_resources.yml
222
+ - spec/probe/fixtures/cassettes/rocci/rocci_critical_nonexisting_resources.yml
223
+ - spec/probe/fixtures/cassettes/rocci/rocci_warning_existing_resources.yml
224
+ - spec/probe/fixtures/cassettes/rocci/rocci_warning_no_resources.yml
225
+ - spec/probe/fixtures/cassettes/rocci/rocci_warning_nonexisting_resources.yml
226
+ - spec/probe/opennebula_econe_probe_spec.rb
227
+ - spec/probe/opennebula_occi_probe_spec.rb
228
+ - spec/probe/opennebula_oned_probe_spec.rb
229
+ - spec/probe/opennebula_rocci_probe_spec.rb
230
+ homepage: https://github.com/arax/opennebula-nagios-probes
231
+ licenses:
232
+ - Apache License, Version 2.0
233
+ metadata: {}
234
+ post_install_message:
235
+ rdoc_options: []
236
+ require_paths:
237
+ - lib
238
+ required_ruby_version: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - ! '>='
241
+ - !ruby/object:Gem::Version
242
+ version: 1.9.3
243
+ required_rubygems_version: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - ! '>='
246
+ - !ruby/object:Gem::Version
247
+ version: '0'
248
+ requirements: []
249
+ rubyforge_project:
250
+ rubygems_version: 2.2.2
251
+ signing_key:
252
+ specification_version: 4
253
+ summary: OpenNebula nagios probes
254
+ test_files:
255
+ - spec/probe/fixtures/cassettes/econe/econe_critical_existing_resources.yml
256
+ - spec/probe/fixtures/cassettes/econe/econe_critical_no_resources.yml
257
+ - spec/probe/fixtures/cassettes/econe/econe_critical_nonexisting_resources.yml
258
+ - spec/probe/fixtures/cassettes/econe/econe_warning_existing_resources.yml
259
+ - spec/probe/fixtures/cassettes/econe/econe_warning_nonexisting_resources.yml
260
+ - spec/probe/fixtures/cassettes/occi/occi_critical_existing_resources.yml
261
+ - spec/probe/fixtures/cassettes/occi/occi_critical_no_resources.yml
262
+ - spec/probe/fixtures/cassettes/occi/occi_critical_nonexisting_resources.yml
263
+ - spec/probe/fixtures/cassettes/occi/occi_warning_existing_resources.yml
264
+ - spec/probe/fixtures/cassettes/occi/occi_warning_nonexisting_resources.yml
265
+ - spec/probe/fixtures/cassettes/oned/oned_critical_existing_resources.yml
266
+ - spec/probe/fixtures/cassettes/oned/oned_critical_no_resources.yml
267
+ - spec/probe/fixtures/cassettes/oned/oned_critical_nonexisting_resources.yml
268
+ - spec/probe/fixtures/cassettes/oned/oned_warning_existing_resources.yml
269
+ - spec/probe/fixtures/cassettes/oned/oned_warning_nonexisting_resources.yml
270
+ - spec/probe/fixtures/cassettes/rocci/rocci_critical_existing_resources.yml
271
+ - spec/probe/fixtures/cassettes/rocci/rocci_critical_no_resources.yml
272
+ - spec/probe/fixtures/cassettes/rocci/rocci_critical_nonexisting_resources.yml
273
+ - spec/probe/fixtures/cassettes/rocci/rocci_warning_existing_resources.yml
274
+ - spec/probe/fixtures/cassettes/rocci/rocci_warning_no_resources.yml
275
+ - spec/probe/fixtures/cassettes/rocci/rocci_warning_nonexisting_resources.yml
276
+ - spec/probe/opennebula_econe_probe_spec.rb
277
+ - spec/probe/opennebula_occi_probe_spec.rb
278
+ - spec/probe/opennebula_oned_probe_spec.rb
279
+ - spec/probe/opennebula_rocci_probe_spec.rb
280
+ has_rdoc: