X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/5772f3eb28d72f38226cad88daeab43343360227..09517d8150266ba6027c61a5a940e385f4aaeeac:/cookbooks/hardware/recipes/default.rb diff --git a/cookbooks/hardware/recipes/default.rb b/cookbooks/hardware/recipes/default.rb index eac54e764..de695cd87 100644 --- a/cookbooks/hardware/recipes/default.rb +++ b/cookbooks/hardware/recipes/default.rb @@ -200,6 +200,8 @@ node[:kernel][:modules].each_key do |modname| when "aacraid" tools_packages << "arcconf" status_packages["aacraid-status"] ||= [] + when "arcmsr" + tools_packages << "areca" end end @@ -225,6 +227,22 @@ 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 @@ -275,16 +293,47 @@ if status_packages["megaclisas-status"] 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"