sensu-plugins-disk-checks 2.4.2 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c77d5f6201e92d60e58c12447aea22cdef80d04c
4
- data.tar.gz: c1e9d61cd0204ab0c2b188aaa5574b89d6ffd8b3
3
+ metadata.gz: 6e2270b4f0e3f5a79f427d625af1c3bc5bc08e0e
4
+ data.tar.gz: 2093789afcdb4cdea74ae511a8cbc3f206d0d62c
5
5
  SHA512:
6
- metadata.gz: 20848ea4819295dd6d8b5860775152db5d6ce42c3c18be95b54ce8738cced8b8888a66f9374c7b9563a3c5f3699643b7ee03ea06539b722558d6374337c4c1c0
7
- data.tar.gz: 3122c5ba6f6420260b7f4260b1d8beec8d8adef64d132e6ce56679766c481d1e3d67afd3cddf8f048f278f872778d8f8baff44b715fdef5107f8b11321cb9f77
6
+ metadata.gz: 3f44ad37fc75fa5cd63db38d76e8765495b751e315b41add5721dc70574f90ab4aae86142829c855066c73881c14fc052a4fd0fce8f55ec04d274480d586c2fd
7
+ data.tar.gz: 8aec7d6c80cf117ece7a9a41d4c96e7389d2a943b6dce88f80d55bb31c18d98be37356584af64f047da9c9b3009e7b7852cbef2883d32d16187b603a88b4d624
data/CHANGELOG.md CHANGED
@@ -5,6 +5,17 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [2.5.0] - 2017-08-28
9
+ ### Changed
10
+ - check-smart.rb: The JSON file is now does not need to exist (@ChrisPortman)
11
+
12
+ ### Added
13
+ - check-smart.rb: Add support for legacy smartctl output relating to `Available` and `Enabled` (@ChrisPortman)
14
+ - check-smart.rb: Add option to specify the exit code to use when there are no smart capable devices (@ChrisPortman)
15
+
16
+ ### Removed
17
+ - check-smart.rb: Removed duplicated smartctl runs
18
+
8
19
  ## [2.4.2] - 2017-08-17
9
20
  ### Fixed
10
21
  - check-smart-status.rb: fixed regex for `Available` and `Enabled` (@nagyt234)
@@ -145,7 +156,8 @@ https://mathias-kettner.de/checkmk_filesystems.html
145
156
  ### Added
146
157
  - initial release
147
158
 
148
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-disk-checks/compare/2.4.2...HEAD
159
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-disk-checks/compare/2.5.0...HEAD
160
+ [2.5.0]: https://github.com/sensu-plugins/sensu-plugins-disk-checks/compare/2.4.2...2.5.0
149
161
  [2.4.2]: https://github.com/sensu-plugins/sensu-plugins-disk-checks/compare/2.4.1...2.4.2
150
162
  [2.4.1]: https://github.com/sensu-plugins/sensu-plugins-disk-checks/compare/2.4.0...2.4.1
151
163
  [2.4.0]: https://github.com/sensu-plugins/sensu-plugins-disk-checks/compare/2.3.0...2.4.0
data/bin/check-smart.rb CHANGED
@@ -78,8 +78,17 @@ class Disk
78
78
  #
79
79
  def check_smart_capability!
80
80
  output = `sudo #{@smart_binary} -i #{device_path}`
81
+
82
+ # Newer smartctl
81
83
  @smart_available = !output.scan(/SMART support is:\s+Available/).empty?
82
84
  @smart_enabled = !output.scan(/SMART support is:\s+Enabled/).empty?
85
+
86
+ unless smart_capable?
87
+ # Older smartctl
88
+ @smart_available = !output.scan(/Device supports SMART/).empty?
89
+ @smart_enabled = !output.scan(/and is Enabled/).empty?
90
+ end
91
+
83
92
  @capability_output = output
84
93
  end
85
94
 
@@ -98,9 +107,17 @@ end
98
107
  class CheckSMART < Sensu::Plugin::Check::CLI
99
108
  option :smart_incapable_disks,
100
109
  long: '--smart-incapable-disks EXIT_CODE',
101
- description: 'Exit code when SMART is unavailable/disabled on a disk (ok, warn, critical, unknown)',
110
+ description: 'Exit code when SMART is unavailable/disabled on a disk',
102
111
  proc: proc(&:to_sym),
103
- default: :unknown
112
+ default: :unknown,
113
+ in: %i(unknown ok warn critical)
114
+
115
+ option :no_smart_capable_disks,
116
+ long: '--no-smart-capable-disks EXIT_CODE',
117
+ description: 'Exit code when there are no SMART capable disks',
118
+ proc: proc(&:to_sym),
119
+ default: :unknown,
120
+ in: %i(unknown ok warn critical)
104
121
 
105
122
  option :binary,
106
123
  short: '-b path/to/smartctl',
@@ -123,7 +140,11 @@ class CheckSMART < Sensu::Plugin::Check::CLI
123
140
  @devices = []
124
141
 
125
142
  # Load in the device configuration
126
- @hardware = JSON.parse(IO.read(config[:json]), symbolize_names: true)[:hardware][:devices]
143
+ @hardware = if File.readable?(config[:json])
144
+ JSON.parse(IO.read(config[:json]), symbolize_names: true)[:hardware][:devices]
145
+ else
146
+ {}
147
+ end
127
148
 
128
149
  scan_disks!
129
150
  end
@@ -141,13 +162,7 @@ class CheckSMART < Sensu::Plugin::Check::CLI
141
162
 
142
163
  device = Disk.new(name, override, config[:binary])
143
164
 
144
- output = `sudo #{config[:binary]} -i #{device.device_path}`
145
-
146
- # Check if we can use this device or not
147
- available = !output.scan(/SMART support is:\s+Available/).empty?
148
- enabled = !output.scan(/SMART support is:\s+Enabled/).empty?
149
-
150
- @devices << device if available && enabled
165
+ @devices << device if device.smart_capable?
151
166
  end
152
167
  end
153
168
  end
@@ -155,7 +170,10 @@ class CheckSMART < Sensu::Plugin::Check::CLI
155
170
  # Main function
156
171
  #
157
172
  def run
158
- unknown 'No SMART capable devices found' unless @devices.length > 0
173
+ exit_with(
174
+ config[:no_smart_capable_disks],
175
+ 'No SMART capable devices found'
176
+ ) unless @devices.length > 0
159
177
 
160
178
  unhealthy_disks = @devices.select { |disk| disk.smart_capable? && !disk.healthy? }
161
179
  unknown_disks = @devices.reject(&:smart_capable?)
@@ -1,8 +1,8 @@
1
1
  module SensuPluginsDiskChecks
2
2
  module Version
3
3
  MAJOR = 2
4
- MINOR = 4
5
- PATCH = 2
4
+ MINOR = 5
5
+ PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-disk-checks
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.2
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-18 00:00:00.000000000 Z
11
+ date: 2017-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin