when "aacraid"
tools_packages << "arcconf"
status_packages["aacraid-status"] ||= []
+ when "arcmsr"
+ tools_packages << "areca"
end
end
end
end
+if tools_packages.include?("areca")
+ include_recipe "git"
+
+ git "/opt/areca" do
+ action :sync
+ repository "git://chef.openstreetmap.org/areca.git"
+ user "root"
+ group "root"
+ end
+else
+ directory "/opt/areca" do
+ action :delete
+ recursive true
+ end
+end
+
["cciss-vol-status", "mpt-status", "sas2ircu-status", "megaraid-status", "megaclisas-status", "aacraid-status"].each do |status_package|
if status_packages.include?(status_package)
package status_package
next unless driver == "megaraid_sas"
- device = host.sub("/sys/class/scsi_host/host", "bus/")
+ 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 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"
+
+ 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["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) }
+ end
+ end
+end
+
if disks.count > 0
package "smartmontools"