nagiosharder 0.1.2 → 0.1.3
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/Rakefile +2 -1
- data/lib/nagiosharder.rb +57 -18
- data/nagiosharder.gemspec +5 -2
- metadata +22 -6
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ begin
|
|
5
5
|
require 'jeweler'
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "nagiosharder"
|
8
|
-
gem.version = "0.1.
|
8
|
+
gem.version = "0.1.3"
|
9
9
|
gem.summary = %Q{Nagios access at your ruby fingertips}
|
10
10
|
gem.description = %Q{Nagios access at your ruby fingertips}
|
11
11
|
gem.email = "josh@technicalpickles.com"
|
@@ -15,6 +15,7 @@ begin
|
|
15
15
|
gem.add_dependency 'nokogiri', '~> 1.4.3'
|
16
16
|
gem.add_dependency 'activesupport'
|
17
17
|
gem.add_dependency 'httparty', '~> 0.6.1'
|
18
|
+
gem.add_dependency 'hashie', '~> 1.0.0'
|
18
19
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
19
20
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
20
21
|
end
|
data/lib/nagiosharder.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'restclient'
|
2
2
|
require 'nokogiri'
|
3
3
|
require 'active_support' # fine, we'll just do all of activesupport instead of the parts I want. thank Rails 3 for shuffling requires around.
|
4
|
+
require 'cgi'
|
5
|
+
require 'hashie'
|
4
6
|
|
5
7
|
# :(
|
6
8
|
require 'active_support/version' # double and triplely ensure ActiveSupport::VERSION is around
|
@@ -60,6 +62,37 @@ class NagiosHarder
|
|
60
62
|
response.code == 200 && response.body =~ /successful/
|
61
63
|
end
|
62
64
|
|
65
|
+
def schedule_service_downtime(host, service, options = {})
|
66
|
+
request = {
|
67
|
+
:cmd_mod => 2,
|
68
|
+
:cmd_typ => 56,
|
69
|
+
:com_author => options[:author] || "#{@user} via nagiosharder",
|
70
|
+
:com_data => options[:comment] || 'scheduled downtime by nagiosharder',
|
71
|
+
:host => host,
|
72
|
+
:service => service,
|
73
|
+
:trigger => 0
|
74
|
+
}
|
75
|
+
|
76
|
+
request[:fixed] = case options[:type].to_sym
|
77
|
+
when :fixed then 1
|
78
|
+
when :flexible then 0
|
79
|
+
else 1
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
if request[:fixed] == 0
|
84
|
+
request[:hours] = options[:hours]
|
85
|
+
request[:minutes] = options[:minutes]
|
86
|
+
end
|
87
|
+
|
88
|
+
request[:start_time] = formatted_time_for(options[:start_time])
|
89
|
+
request[:end_time] = formatted_time_for(options[:end_time])
|
90
|
+
|
91
|
+
response = post(cmd_url, :body => request)
|
92
|
+
|
93
|
+
response.code == 200 && response.body =~ /successful/
|
94
|
+
end
|
95
|
+
|
63
96
|
def schedule_host_downtime(host, options = {})
|
64
97
|
request = {
|
65
98
|
:cmd_mod => 2,
|
@@ -73,13 +106,13 @@ class NagiosHarder
|
|
73
106
|
|
74
107
|
# FIXME we could use some option checking...
|
75
108
|
|
76
|
-
request[:
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
109
|
+
request[:fixed] = case options[:type].to_sym
|
110
|
+
when :fixed then 1
|
111
|
+
when :flexible then 0
|
112
|
+
else 1 # default to fixed
|
113
|
+
end
|
81
114
|
|
82
|
-
if request[:
|
115
|
+
if request[:fixed] == 0
|
83
116
|
request[:hours] = options[:hours]
|
84
117
|
request[:minutes] = options[:minutes]
|
85
118
|
end
|
@@ -223,6 +256,10 @@ class NagiosHarder
|
|
223
256
|
"#{nagios_url}/cmd.cgi"
|
224
257
|
end
|
225
258
|
|
259
|
+
def extinfo_url
|
260
|
+
"#{nagios_url}/extinfo.cgi"
|
261
|
+
end
|
262
|
+
|
226
263
|
private
|
227
264
|
|
228
265
|
|
@@ -275,19 +312,20 @@ class NagiosHarder
|
|
275
312
|
attempts = columns[5].inner_html if columns[5]
|
276
313
|
status_info = columns[6].inner_html.gsub(' ', '') if columns[6]
|
277
314
|
|
278
|
-
status = {
|
279
|
-
:host => host,
|
280
|
-
:service => service,
|
281
|
-
:status => status,
|
282
|
-
:last_check => last_check,
|
283
|
-
:duration => duration,
|
284
|
-
:attempts => attempts,
|
285
|
-
:started_at => started_at,
|
286
|
-
:extended_info => status_info,
|
287
|
-
:acknowledged => acknowledged
|
288
|
-
}
|
289
|
-
|
290
315
|
if host && service && status && last_check && duration && attempts && started_at && status_info
|
316
|
+
service_extinfo_url = "#{extinfo_url}?type=2&host=#{host}&service=#{CGI.escape(service)}"
|
317
|
+
|
318
|
+
status = Hashie::Mash.new :host => host,
|
319
|
+
:service => service,
|
320
|
+
:status => status,
|
321
|
+
:last_check => last_check,
|
322
|
+
:duration => duration,
|
323
|
+
:attempts => attempts,
|
324
|
+
:started_at => started_at,
|
325
|
+
:extended_info => status_info,
|
326
|
+
:acknowledged => acknowledged,
|
327
|
+
:extinfo_url => service_extinfo_url
|
328
|
+
|
291
329
|
yield status
|
292
330
|
end
|
293
331
|
end
|
@@ -297,4 +335,5 @@ class NagiosHarder
|
|
297
335
|
end
|
298
336
|
|
299
337
|
end
|
338
|
+
|
300
339
|
end
|
data/nagiosharder.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{nagiosharder}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Joshua Nichols"]
|
12
|
-
s.date = %q{2011-01-
|
12
|
+
s.date = %q{2011-01-31}
|
13
13
|
s.description = %q{Nagios access at your ruby fingertips}
|
14
14
|
s.email = %q{josh@technicalpickles.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -45,12 +45,14 @@ Gem::Specification.new do |s|
|
|
45
45
|
s.add_runtime_dependency(%q<nokogiri>, ["~> 1.4.3"])
|
46
46
|
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
47
47
|
s.add_runtime_dependency(%q<httparty>, ["~> 0.6.1"])
|
48
|
+
s.add_runtime_dependency(%q<hashie>, ["~> 1.0.0"])
|
48
49
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
49
50
|
else
|
50
51
|
s.add_dependency(%q<rest-client>, ["~> 1.6.1"])
|
51
52
|
s.add_dependency(%q<nokogiri>, ["~> 1.4.3"])
|
52
53
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
53
54
|
s.add_dependency(%q<httparty>, ["~> 0.6.1"])
|
55
|
+
s.add_dependency(%q<hashie>, ["~> 1.0.0"])
|
54
56
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
55
57
|
end
|
56
58
|
else
|
@@ -58,6 +60,7 @@ Gem::Specification.new do |s|
|
|
58
60
|
s.add_dependency(%q<nokogiri>, ["~> 1.4.3"])
|
59
61
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
60
62
|
s.add_dependency(%q<httparty>, ["~> 0.6.1"])
|
63
|
+
s.add_dependency(%q<hashie>, ["~> 1.0.0"])
|
61
64
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
62
65
|
end
|
63
66
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nagiosharder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 3
|
10
|
+
version: 0.1.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Joshua Nichols
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-01-
|
18
|
+
date: 2011-01-31 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -81,9 +81,25 @@ dependencies:
|
|
81
81
|
type: :runtime
|
82
82
|
version_requirements: *id004
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: hashie
|
85
85
|
prerelease: false
|
86
86
|
requirement: &id005 !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ~>
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
hash: 23
|
92
|
+
segments:
|
93
|
+
- 1
|
94
|
+
- 0
|
95
|
+
- 0
|
96
|
+
version: 1.0.0
|
97
|
+
type: :runtime
|
98
|
+
version_requirements: *id005
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: rspec
|
101
|
+
prerelease: false
|
102
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
87
103
|
none: false
|
88
104
|
requirements:
|
89
105
|
- - ">="
|
@@ -95,7 +111,7 @@ dependencies:
|
|
95
111
|
- 9
|
96
112
|
version: 1.2.9
|
97
113
|
type: :development
|
98
|
-
version_requirements: *
|
114
|
+
version_requirements: *id006
|
99
115
|
description: Nagios access at your ruby fingertips
|
100
116
|
email: josh@technicalpickles.com
|
101
117
|
executables: []
|