summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Dibowitz <phild@fb.com>2014-08-21 11:26:06 -0700
committerPhil Dibowitz <phild@fb.com>2014-08-21 13:38:22 -0700
commit7af10359244231b04eb354f578ad0f34434e9d8a (patch)
treeceb97048cf48591875c169b133c7e1392f100294
parent6838809b2efe041440f30885317270efcb0caa8e (diff)
downloadohai-7af10359244231b04eb354f578ad0f34434e9d8a.tar.gz
[Ohai 6] Fix lsblk calls
lsblk doesn't qualify device names, sadly
-rw-r--r--lib/ohai/plugins/linux/filesystem.rb20
-rw-r--r--spec/unit/plugins/linux/filesystem_spec.rb83
2 files changed, 66 insertions, 37 deletions
diff --git a/lib/ohai/plugins/linux/filesystem.rb b/lib/ohai/plugins/linux/filesystem.rb
index 3731ef6b..c681a712 100644
--- a/lib/ohai/plugins/linux/filesystem.rb
+++ b/lib/ohai/plugins/linux/filesystem.rb
@@ -20,6 +20,14 @@ provides "filesystem"
fs = Mash.new
+def find_device(name)
+ %w{/dev /dev/mapper}.each do |dir|
+ path = File.join(dir, name)
+ return path if File.exist?(path)
+ end
+ name
+end
+
# Grab filesystem data from df
# df often returns non-zero even when it has useful output, accept it.
status, stdout, stderr = run_command(:command => "df -P",
@@ -68,8 +76,10 @@ popen4(cmd) do |pid, stdin, stdout, stderr|
stdout.each do |line|
if line =~ regex
filesystem = $1
+ type = $2
+ filesystem = find_device(filesystem) unless filesystem.start_with?('/')
fs[filesystem] = Mash.new unless fs.has_key?(filesystem)
- fs[filesystem][:fs_type] = $2
+ fs[filesystem][:fs_type] = type
end
end
end
@@ -87,8 +97,10 @@ popen4(cmd) do |pid, stdin, stdout, stderr|
stdout.each do |line|
if line =~ regex
filesystem = $1
+ uuid = $2
+ filesystem = find_device(filesystem) unless filesystem.start_with?('/')
fs[filesystem] = Mash.new unless fs.has_key?(filesystem)
- fs[filesystem][:uuid] = $2
+ fs[filesystem][:uuid] = uuid
end
end
end
@@ -106,8 +118,10 @@ popen4(cmd) do |pid, stdin, stdout, stderr|
stdout.each do |line|
if line =~ regex
filesystem = $1
+ label = $2
+ filesystem = find_device(filesystem) unless filesystem.start_with?('/')
fs[filesystem] = Mash.new unless fs.has_key?(filesystem)
- fs[filesystem][:label] = $2
+ fs[filesystem][:label] = label
end
end
end
diff --git a/spec/unit/plugins/linux/filesystem_spec.rb b/spec/unit/plugins/linux/filesystem_spec.rb
index 3c7322c6..9845972f 100644
--- a/spec/unit/plugins/linux/filesystem_spec.rb
+++ b/spec/unit/plugins/linux/filesystem_spec.rb
@@ -52,6 +52,21 @@ describe Ohai::System, "Linux filesystem plugin" do
@ohai.stub!(:popen4).with("lsblk -r -o NAME,LABEL -n").and_return(false)
File.stub!(:exists?).with("/proc/mounts").and_return(false)
+
+ %w{sdb1 sdb2 sda1 sda2 md0 md1 md2}.each do |name|
+ File.stub!(:exist?).with("/dev/#{name}").and_return(true)
+ end
+ %w{
+ sys.vg-root.lv
+ sys.vg-swap.lv
+ sys.vg-tmp.lv
+ sys.vg-usr.lv
+ sys.vg-var.lv
+ sys.vg-home.lv
+ }.each do |name|
+ File.stub!(:exist?).with("/dev/#{name}").and_return(false)
+ File.stub!(:exist?).with("/dev/mapper/#{name}").and_return(true)
+ end
end
describe "when gathering filesystem usage data from df" do
@@ -207,18 +222,18 @@ describe Ohai::System, "Linux filesystem plugin" do
@status = 0
@stdout.stub!(:each).
- and_yield("/dev/sdb1 linux_raid_member").
- and_yield("/dev/sdb2 linux_raid_member").
- and_yield("/dev/sda1 linux_raid_member").
- and_yield("/dev/sda2 linux_raid_member").
- and_yield("/dev/md0 ext3").
- and_yield("/dev/md1 LVM2_member").
- and_yield("/dev/mapper/sys.vg-root.lv ext4").
- and_yield("/dev/mapper/sys.vg-swap.lv swap").
- and_yield("/dev/mapper/sys.vg-tmp.lv ext4").
- and_yield("/dev/mapper/sys.vg-usr.lv ext4").
- and_yield("/dev/mapper/sys.vg-var.lv ext4").
- and_yield("/dev/mapper/sys.vg-home.lv xfs")
+ and_yield("sdb1 linux_raid_member").
+ and_yield("sdb2 linux_raid_member").
+ and_yield("sda1 linux_raid_member").
+ and_yield("sda2 linux_raid_member").
+ and_yield("md0 ext3").
+ and_yield("md1 LVM2_member").
+ and_yield("sys.vg-root.lv ext4").
+ and_yield("sys.vg-swap.lv swap").
+ and_yield("sys.vg-tmp.lv ext4").
+ and_yield("sys.vg-usr.lv ext4").
+ and_yield("sys.vg-var.lv ext4").
+ and_yield("sys.vg-home.lv xfs")
end
it "should run lsblk -r -o NAME,FSTYPE -n" do
@@ -273,18 +288,18 @@ describe Ohai::System, "Linux filesystem plugin" do
@status = 0
@stdout.stub!(:each).
- and_yield("/dev/sdb1 bd1197e0-6997-1f3a-e27e-7801388308b5").
- and_yield("/dev/sdb2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa").
- and_yield("/dev/sda1 bd1197e0-6997-1f3a-e27e-7801388308b5").
- and_yield("/dev/sda2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa").
- and_yield("/dev/md0 37b8de8e-0fe3-4b5a-b9b4-dde33e19bb32").
- and_yield("/dev/md1 YsIe0R-fj1y-LXTd-imla-opKo-OuIe-TBoxSK").
- and_yield("/dev/mapper/sys.vg-root.lv 7742d14b-80a3-4e97-9a32-478be9ea9aea").
- and_yield("/dev/mapper/sys.vg-swap.lv 9bc2e515-8ddc-41c3-9f63-4eaebde9ce96").
- and_yield("/dev/mapper/sys.vg-tmp.lv 74cf7eb9-428f-479e-9a4a-9943401e81e5").
- and_yield("/dev/mapper/sys.vg-usr.lv 26ec33c5-d00b-4f88-a550-492def013bbc").
- and_yield("/dev/mapper/sys.vg-var.lv 6b559c35-7847-4ae2-b512-c99012d3f5b3").
- and_yield("/dev/mapper/sys.vg-home.lv d6efda02-1b73-453c-8c74-7d8dee78fa5e")
+ and_yield("sdb1 bd1197e0-6997-1f3a-e27e-7801388308b5").
+ and_yield("sdb2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa").
+ and_yield("sda1 bd1197e0-6997-1f3a-e27e-7801388308b5").
+ and_yield("sda2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa").
+ and_yield("md0 37b8de8e-0fe3-4b5a-b9b4-dde33e19bb32").
+ and_yield("md1 YsIe0R-fj1y-LXTd-imla-opKo-OuIe-TBoxSK").
+ and_yield("sys.vg-root.lv 7742d14b-80a3-4e97-9a32-478be9ea9aea").
+ and_yield("sys.vg-swap.lv 9bc2e515-8ddc-41c3-9f63-4eaebde9ce96").
+ and_yield("sys.vg-tmp.lv 74cf7eb9-428f-479e-9a4a-9943401e81e5").
+ and_yield("sys.vg-usr.lv 26ec33c5-d00b-4f88-a550-492def013bbc").
+ and_yield("sys.vg-var.lv 6b559c35-7847-4ae2-b512-c99012d3f5b3").
+ and_yield("sys.vg-home.lv d6efda02-1b73-453c-8c74-7d8dee78fa5e")
end
it "should run lsblk -r -o NAME,UUID -n" do
@@ -344,16 +359,16 @@ describe Ohai::System, "Linux filesystem plugin" do
@status = 0
@stdout.stub!(:each).
- and_yield("/dev/sda1 fuego:0").
- and_yield("/dev/sda2 fuego:1").
- and_yield("/dev/sdb1 fuego:0").
- and_yield("/dev/sdb2 fuego:1").
- and_yield("/dev/md0 /boot").
- and_yield("/dev/mapper/sys.vg-root.lv /").
- and_yield("/dev/mapper/sys.vg-tmp.lv /tmp").
- and_yield("/dev/mapper/sys.vg-usr.lv /usr").
- and_yield("/dev/mapper/sys.vg-var.lv /var").
- and_yield("/dev/mapper/sys.vg-home.lv /home")
+ and_yield("sda1 fuego:0").
+ and_yield("sda2 fuego:1").
+ and_yield("sdb1 fuego:0").
+ and_yield("sdb2 fuego:1").
+ and_yield("md0 /boot").
+ and_yield("sys.vg-root.lv /").
+ and_yield("sys.vg-tmp.lv /tmp").
+ and_yield("sys.vg-usr.lv /usr").
+ and_yield("sys.vg-var.lv /var").
+ and_yield("sys.vg-home.lv /home")
end
it "should run lsblk -r -o NAME,LABEL -n" do