opennebula_nagios_probe 1.0.0

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.
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: