Fix for HP smart array

Entries in /sys/block for cciss look like cciss!c0d1 while
the entry in /dev look like /dev/cciss/c0d1. udevadm uses
the entry in /dev so we need to replace the ! to get a valid
device name.

More details here:
https://review.openstack.org/#/c/61289/4/bin/agent

Change-Id: I0eff17f45aa3fae0eada5b6e77bf63f6e93b61d3
This commit is contained in:
Hongxin Liang 2014-03-12 00:49:18 +01:00
parent 9f0a2a3135
commit 026c379339
1 changed files with 3 additions and 2 deletions

View File

@ -84,7 +84,8 @@ module MCollective
raise "Path /sys/block does not exist" unless File.exists?("/sys/block")
Dir["/sys/block/*"].inject([]) do |blocks, block_device_dir|
basename_dir = File.basename(block_device_dir)
major = `udevadm info --query=property --name=#{basename_dir} | grep MAJOR`.strip.split(/\=/)[-1]
dev_name = basename_dir.gsub(/!/, '/')
major = `udevadm info --query=property --name=#{dev_name} | grep MAJOR`.strip.split(/\=/)[-1]
if File.exists?("/sys/block/#{basename_dir}/removable")
removable = File.open("/sys/block/#{basename_dir}/removable") { |f| f.read_nonblock(1024).strip }
end
@ -96,7 +97,7 @@ module MCollective
end
if STORAGE_CODES.include?(major.to_i) && removable =~ /^0$/
blocks << {:name => basename_dir, :size => size}
blocks << {:name => dev_name, :size => size}
end
blocks
end