- Dir.glob("/sys/class/scsi_host/host*") do |host|
- driver = File.new("#{host}/proc_name").read.chomp
-
- next unless driver == "megaraid_sas"
-
- bus = host.sub("/sys/class/scsi_host/host", "")
- device = File.basename(Dir.glob("/sys/bus/scsi/devices/#{bus}:*/scsi_generic/*").first)
-
- IO.popen(["megacli", "-PDList", "-a#{controller}", "-NoLog"]).each do |line|
- disks << { :device => device, :driver => "megaraid", :id => Regexp.last_match[1] } if line =~ /^Device Id: ([0-9]+)$/
-
- disks.pop if line =~ /^Firmware state: Hotspare, Spun down$/
- end
-
- controller += 1
- end
-end
-
-if tools_packages.include?("lsiutil")
- Dir.glob("/sys/class/scsi_host/host*") do |host|
- driver = File.new("#{host}/proc_name").read.chomp
-
- next unless driver == "mptsas"
-
- bus = host.sub("/sys/class/scsi_host/host", "")
-
- Dir.glob("/sys/bus/scsi/devices/#{bus}:0:*/scsi_generic/*").each do |sg|
- disks << { :device => File.basename(sg) }
- end
- end
-end
-
-if status_packages["sas2ircu-status"]
- Dir.glob("/sys/class/scsi_host/host*") do |host|
- driver = File.new("#{host}/proc_name").read.chomp
-
- next unless driver == "mpt2sas" || driver == "mpt3sas"
-
- bus = host.sub("/sys/class/scsi_host/host", "")
-
- Dir.glob("/sys/bus/scsi/devices/#{bus}:0:*/scsi_generic/*").each do |sg|
- next if File.directory?("#{sg}/../../block")
-
- disks << { :device => File.basename(sg) }
- end
- end
-end
-
-if status_packages["aacraid-status"]
- Dir.glob("/sys/class/scsi_host/host*") do |host|
- driver = File.new("#{host}/proc_name").read.chomp
-
- next unless driver == "aacraid"
-
- bus = host.sub("/sys/class/scsi_host/host", "")
-
- Dir.glob("/sys/bus/scsi/devices/#{bus}:1:*/scsi_generic/*").each do |sg|
- disks << { :device => File.basename(sg) }
+# intel_ssds = disks.select { |d| d[:vendor] == "INTEL" && d[:model] =~ /^SSD/ }
+#
+# nvmes = if node[:hardware][:pci]
+# node[:hardware][:pci].values.select { |pci| pci[:driver] == "nvme" }
+# else
+# []
+# end
+#
+# intel_nvmes = nvmes.select { |pci| pci[:vendor_name] == "Intel Corporation" }
+#
+# if !intel_ssds.empty? || !intel_nvmes.empty?
+# package "unzip"
+#
+# intel_ssd_tool_version = "3.0.21"
+#
+# remote_file "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip" do
+# source "https://downloadmirror.intel.com/29115/eng/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip"
+# end
+#
+# execute "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip" do
+# command "unzip Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip isdct_#{intel_ssd_tool_version}-1_amd64.deb"
+# cwd Chef::Config[:file_cache_path]
+# user "root"
+# group "root"
+# not_if { File.exist?("#{Chef::Config[:file_cache_path]}/isdct_#{intel_ssd_tool_version}-1_amd64.deb") }
+# end
+#
+# dpkg_package "isdct" do
+# version "#{intel_ssd_tool_version}-1"
+# source "#{Chef::Config[:file_cache_path]}/isdct_#{intel_ssd_tool_version}-1_amd64.deb"
+# end
+# end
+
+disks = disks.map do |disk|
+ next if disk[:state] == "spun_down" || %w[unconfigured failed].any?(disk[:status])
+
+ if disk[:smart_device]
+ controller = node[:hardware][:disk][:controllers][disk[:controller]]
+
+ if controller && controller[:device]
+ device = controller[:device].sub("/dev/", "")
+ smart = disk[:smart_device]
+
+ if device.start_with?("cciss/") && smart =~ /^cciss,(\d+)$/
+ array = node[:hardware][:disk][:arrays][disk[:arrays].first]
+ munin = "cciss-3#{array[:wwn]}-#{Regexp.last_match(1)}"
+ elsif smart =~ /^.*,(\d+)$/
+ munin = "#{device}-#{Regexp.last_match(1)}"
+ elsif smart =~ %r{^.*,(\d+)/(\d+)$}
+ munin = "#{device}-#{Regexp.last_match(1)}:#{Regexp.last_match(2)}"
+ end