nagiosharder 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/Rakefile +2 -1
  2. data/lib/nagiosharder.rb +57 -18
  3. data/nagiosharder.gemspec +5 -2
  4. 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.2"
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
@@ -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[:type] = case options[:type].to_sym
77
- when :fixed then 1
78
- when :flexible then 0
79
- else 1 # default to fixed
80
- end
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[:type] == 0
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
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{nagiosharder}
8
- s.version = "0.1.2"
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-25}
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: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
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-25 00:00:00 -05:00
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: rspec
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: *id005
114
+ version_requirements: *id006
99
115
  description: Nagios access at your ruby fingertips
100
116
  email: josh@technicalpickles.com
101
117
  executables: []