sensu-plugins-disk-checks 2.4.2 → 2.5.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.
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