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