end
end
-disks = node[:hardware][:disk][:disks].map do |disk|
+if node[:hardware][:disk]
+ disks = node[:hardware][:disk][:disks]
+else
+ disks = []
+end
+
+disks = disks.map do |disk|
+ next if disk[:state] == "spun_down"
+
if disk[:smart_device]
controller = node[:hardware][:disk][:controllers][disk[:controller]]
- device = File.basename(controller[:device])
+ device = controller[:device].sub("/dev/", "")
smart = disk[:smart_device]
if device.start_with?("cciss/") && smart =~ /^cciss,(\d+)$/
elsif smart =~ %r{^.*,(\d+)/(\d+)$}
munin = "#{device}-#{Regexp.last_match(1)}:#{Regexp.last_match(2)}"
end
- else
- device = File.basename(disk[:device])
+ elsif disk[:device]
+ device = disk[:device].sub("/dev/", "")
munin = device
end
+ next if device.nil?
+
Hash[
:device => device,
:smart => smart,
]
end
+disks = disks.compact
+
if disks.count > 0
package "smartmontools"
end
else
service "kmod" do
- provider Chef::Provider::Service::Upstart
+ if node[:lsb][:release].to_f >= 15.10
+ provider Chef::Provider::Service::Systemd
+ else
+ provider Chef::Provider::Service::Upstart
+ end
action :nothing
subscribes :start, "template[/etc/modules]"
end