diff options
author | Thom May <thom@may.lt> | 2015-06-24 10:39:39 +0100 |
---|---|---|
committer | Thom May <thom@may.lt> | 2015-06-24 10:39:39 +0100 |
commit | 0ab65b32cb9bd1fa6340a2c12bcdf6b8a47d2cd6 (patch) | |
tree | 4549334772f4d5dec5e005f6a26bae2a6f8251c9 | |
parent | 45b56dfc3277f8b0e9ac57d0b5bcd113e4250382 (diff) | |
parent | 8ae883723a9d88991bd3c4871dd404850d751025 (diff) | |
download | ohai-0ab65b32cb9bd1fa6340a2c12bcdf6b8a47d2cd6.tar.gz |
Merge pull request #550 from josqu4red/linux_filesystem
Change lsblk usage in linux filesystem plugin
-rw-r--r-- | lib/ohai/plugins/linux/filesystem.rb | 11 | ||||
-rw-r--r-- | spec/unit/plugins/linux/filesystem_spec.rb | 128 |
2 files changed, 84 insertions, 55 deletions
diff --git a/lib/ohai/plugins/linux/filesystem.rb b/lib/ohai/plugins/linux/filesystem.rb index ced1a6a9..8f7989cb 100644 --- a/lib/ohai/plugins/linux/filesystem.rb +++ b/lib/ohai/plugins/linux/filesystem.rb @@ -22,14 +22,19 @@ Ohai.plugin(:Filesystem) do def get_blk_cmd(attr, have_lsblk) if have_lsblk attr = 'FSTYPE' if attr == 'TYPE' - "lsblk -r -n -o NAME,#{attr}" + "lsblk -P -n -o NAME,#{attr}" else "blkid -s #{attr}" end end def get_blk_regex(attr, have_lsblk) - have_lsblk ? /^(\S+) (\S+)/ : /^(\S+): #{attr}="(\S+)"/ + if have_lsblk + attr = 'FSTYPE' if attr == 'TYPE' + /^NAME="(\S+).*?" #{attr}="(\S+)"/ + else + /^(\S+): #{attr}="(\S+)"/ + end end def find_device(name) @@ -60,7 +65,7 @@ Ohai.plugin(:Filesystem) do fs[filesystem][:mount] = $6 end end - + # Grab filesystem inode data from df so = shell_out("df -iP") so.stdout.lines do |line| diff --git a/spec/unit/plugins/linux/filesystem_spec.rb b/spec/unit/plugins/linux/filesystem_spec.rb index 651c6fd9..eac9dd55 100644 --- a/spec/unit/plugins/linux/filesystem_spec.rb +++ b/spec/unit/plugins/linux/filesystem_spec.rb @@ -31,11 +31,11 @@ describe Ohai::System, "Linux filesystem plugin" do allow(@plugin).to receive(:shell_out).with("blkid -s UUID").and_return(mock_shell_out(0, "", "")) allow(@plugin).to receive(:shell_out).with("blkid -s LABEL").and_return(mock_shell_out(0, "", "")) - allow(@plugin).to receive(:shell_out).with("lsblk -r -n -o NAME,FSTYPE"). + allow(@plugin).to receive(:shell_out).with("lsblk -P -n -o NAME,FSTYPE"). and_return(mock_shell_out(0, "", "")) - allow(@plugin).to receive(:shell_out).with("lsblk -r -n -o NAME,UUID"). + allow(@plugin).to receive(:shell_out).with("lsblk -P -n -o NAME,UUID"). and_return(mock_shell_out(0, "", "")) - allow(@plugin).to receive(:shell_out).with("lsblk -r -n -o NAME,LABEL"). + allow(@plugin).to receive(:shell_out).with("lsblk -P -n -o NAME,LABEL"). and_return(mock_shell_out(0, "", "")) allow(File).to receive(:exist?).with("/proc/mounts").and_return(false) @@ -50,6 +50,7 @@ describe Ohai::System, "Linux filesystem plugin" do sys.vg-usr.lv sys.vg-var.lv sys.vg-home.lv + debian--7-root }.each do |name| allow(File).to receive(:exist?).with("/dev/#{name}").and_return(false) allow(File).to receive(:exist?).with("/dev/mapper/#{name}").and_return(true) @@ -189,6 +190,7 @@ MOUNT /dev/mapper/sys.vg-usr.lv: TYPE=\"ext4\" /dev/mapper/sys.vg-var.lv: TYPE=\"ext4\" /dev/mapper/sys.vg-home.lv: TYPE=\"xfs\" +/dev/mapper/debian--7-root: TYPE=\"ext4\" BLKID_TYPE allow(@plugin).to receive(:shell_out).with("blkid -s TYPE").and_return(mock_shell_out(0, @stdout, "")) end @@ -198,7 +200,7 @@ BLKID_TYPE @plugin.run end - it "should set kb_size to value from blkid -s TYPE" do + it "should set fs_type to value from blkid -s TYPE" do @plugin.run expect(@plugin[:filesystem]["/dev/md1"][:fs_type]).to eq("LVM2_member") end @@ -208,33 +210,39 @@ BLKID_TYPE before(:each) do allow(File).to receive(:exist?).with("/bin/lsblk").and_return(true) @stdout = <<-BLKID_TYPE -sdb1 linux_raid_member -sdb2 linux_raid_member -sda1 linux_raid_member -sda2 linux_raid_member -md0 ext3 -md1 LVM2_member -sys.vg-root.lv ext4 -sys.vg-swap.lv swap -sys.vg-tmp.lv ext4 -sys.vg-usr.lv ext4 -sys.vg-var.lv ext4 -sys.vg-home.lv xfs +NAME="sdb1" FSTYPE="linux_raid_member" +NAME="sdb2" FSTYPE="linux_raid_member" +NAME="sda1" FSTYPE="linux_raid_member" +NAME="sda2" FSTYPE="linux_raid_member" +NAME="md0" FSTYPE="ext3" +NAME="md1" FSTYPE="LVM2_member" +NAME="sys.vg-root.lv" FSTYPE="ext4" +NAME="sys.vg-swap.lv" FSTYPE="swap" +NAME="sys.vg-tmp.lv" FSTYPE="ext4" +NAME="sys.vg-usr.lv" FSTYPE="ext4" +NAME="sys.vg-var.lv" FSTYPE="ext4" +NAME="sys.vg-home.lv" FSTYPE="xfs" +NAME="debian--7-root (dm-0)" FSTYPE="ext4" BLKID_TYPE - allow(@plugin).to receive(:shell_out).with("lsblk -r -n -o NAME,FSTYPE"). + allow(@plugin).to receive(:shell_out).with("lsblk -P -n -o NAME,FSTYPE"). and_return(mock_shell_out(0, @stdout, "")) end - it "should run lsblk -r -n -o NAME,FSTYPE" do - expect(@plugin).to receive(:shell_out).with("lsblk -r -n -o NAME,FSTYPE"). + it "should run lsblk -P -n -o NAME,FSTYPE" do + expect(@plugin).to receive(:shell_out).with("lsblk -P -n -o NAME,FSTYPE"). and_return(mock_shell_out(0, @stdout, "")) @plugin.run end - it "should set kb_size to value from lsblk -r -n -o NAME,FSTYPE" do + it "should set fs_type to value from lsblk -P -n -o NAME,FSTYPE" do @plugin.run expect(@plugin[:filesystem]["/dev/md1"][:fs_type]).to eq("LVM2_member") end + + it "should ignore extra info in name and set fs_type to value from lsblk -P -n -o NAME,FSTYPE" do + @plugin.run + expect(@plugin[:filesystem]["/dev/mapper/debian--7-root"][:fs_type]).to eq("ext4") + end end describe "when gathering filesystem uuid data from blkid" do @@ -252,6 +260,7 @@ BLKID_TYPE /dev/mapper/sys.vg-usr.lv: UUID=\"26ec33c5-d00b-4f88-a550-492def013bbc\" /dev/mapper/sys.vg-var.lv: UUID=\"6b559c35-7847-4ae2-b512-c99012d3f5b3\" /dev/mapper/sys.vg-home.lv: UUID=\"d6efda02-1b73-453c-8c74-7d8dee78fa5e\" +/dev/mapper/debian--7-root: UUID=\"09187faa-3512-4505-81af-7e86d2ccb99a\" BLKID_UUID allow(@plugin).to receive(:shell_out).with("blkid -s UUID").and_return(mock_shell_out(0, @stdout, "")) end @@ -261,7 +270,7 @@ BLKID_UUID @plugin.run end - it "should set kb_size to value from blkid -s UUID" do + it "should set uuid to value from blkid -s UUID" do @plugin.run expect(@plugin[:filesystem]["/dev/sda2"][:uuid]).to eq("e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa") end @@ -271,35 +280,43 @@ BLKID_UUID before(:each) do allow(File).to receive(:exist?).with("/bin/lsblk").and_return(true) @stdout = <<-BLKID_UUID -sdb1 bd1197e0-6997-1f3a-e27e-7801388308b5 -sdb2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa -sda1 bd1197e0-6997-1f3a-e27e-7801388308b5 -sda2 e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa -md0 37b8de8e-0fe3-4b5a-b9b4-dde33e19bb32 -md1 YsIe0R-fj1y-LXTd-imla-opKo-OuIe-TBoxSK -sys.vg-root.lv 7742d14b-80a3-4e97-9a32-478be9ea9aea -sys.vg-swap.lv 9bc2e515-8ddc-41c3-9f63-4eaebde9ce96 -sys.vg-tmp.lv 74cf7eb9-428f-479e-9a4a-9943401e81e5 -sys.vg-usr.lv 26ec33c5-d00b-4f88-a550-492def013bbc -sys.vg-var.lv 6b559c35-7847-4ae2-b512-c99012d3f5b3 -sys.vg-home.lv d6efda02-1b73-453c-8c74-7d8dee78fa5e +NAME="sdb1" UUID="bd1197e0-6997-1f3a-e27e-7801388308b5" +NAME="sdb2" UUID="e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa" +NAME="sda1" UUID="bd1197e0-6997-1f3a-e27e-7801388308b5" +NAME="sda2" UUID="e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa" +NAME="md0" UUID="37b8de8e-0fe3-4b5a-b9b4-dde33e19bb32" +NAME="md1" UUID="YsIe0R-fj1y-LXTd-imla-opKo-OuIe-TBoxSK" +NAME="sys.vg-root.lv" UUID="7742d14b-80a3-4e97-9a32-478be9ea9aea" +NAME="sys.vg-swap.lv" UUID="9bc2e515-8ddc-41c3-9f63-4eaebde9ce96" +NAME="sys.vg-tmp.lv" UUID="74cf7eb9-428f-479e-9a4a-9943401e81e5" +NAME="sys.vg-usr.lv" UUID="26ec33c5-d00b-4f88-a550-492def013bbc" +NAME="sys.vg-var.lv" UUID="6b559c35-7847-4ae2-b512-c99012d3f5b3" +NAME="sys.vg-home.lv" UUID="d6efda02-1b73-453c-8c74-7d8dee78fa5e" +NAME="debian--7-root (dm-0)" UUID="09187faa-3512-4505-81af-7e86d2ccb99a" BLKID_UUID - allow(@plugin).to receive(:shell_out).with("lsblk -r -n -o NAME,UUID"). + allow(@plugin).to receive(:shell_out).with("lsblk -P -n -o NAME,UUID"). and_return(mock_shell_out(0, @stdout, "")) end - it "should run lsblk -r -n -o NAME,UUID" do - expect(@plugin).to receive(:shell_out).with("lsblk -r -n -o NAME,UUID"). + it "should run lsblk -P -n -o NAME,UUID" do + expect(@plugin).to receive(:shell_out).with("lsblk -P -n -o NAME,UUID"). and_return(mock_shell_out(0, @stdout, "")) @plugin.run end - it "should set kb_size to value from lsblk -r -n -o NAME,UUID" do + it "should set uuid to value from lsblk -P -n -o NAME,UUID" do @plugin.run expect(@plugin[:filesystem]["/dev/sda2"][:uuid]).to eq( "e36d933e-e5b9-cfe5-6845-1f84d0f7fbfa" ) end + + it "should ignore extra info in name and set uuid to value from lsblk -P -n -o NAME,UUID" do + @plugin.run + expect(@plugin[:filesystem]["/dev/mapper/debian--7-root"][:uuid]).to eq( + "09187faa-3512-4505-81af-7e86d2ccb99a" + ) + end end describe "when gathering filesystem label data from blkid" do @@ -315,6 +332,7 @@ BLKID_UUID /dev/mapper/sys.vg-usr.lv: LABEL=\"/usr\" /dev/mapper/sys.vg-var.lv: LABEL=\"/var\" /dev/mapper/sys.vg-home.lv: LABEL=\"/home\" +/dev/mapper/debian--7-root: LABEL=\"root\" BLKID_LABEL allow(@plugin).to receive(:shell_out).with("blkid -s LABEL").and_return(mock_shell_out(0, @stdout, "")) end @@ -324,7 +342,7 @@ BLKID_LABEL @plugin.run end - it "should set kb_size to value from blkid -s LABEL" do + it "should set label to value from blkid -s LABEL" do @plugin.run expect(@plugin[:filesystem]["/dev/md0"][:label]).to eq("/boot") end @@ -334,31 +352,37 @@ BLKID_LABEL before(:each) do allow(File).to receive(:exist?).with("/bin/lsblk").and_return(true) @stdout = <<-BLKID_LABEL -sda1 fuego:0 -sda2 fuego:1 -sdb1 fuego:0 -sdb2 fuego:1 -md0 /boot -sys.vg-root.lv / -sys.vg-tmp.lv /tmp -sys.vg-usr.lv /usr -sys.vg-var.lv /var -sys.vg-home.lv /home +NAME="sda1" LABEL="fuego:0" +NAME="sda2" LABEL="fuego:1" +NAME="sdb1" LABEL="fuego:0" +NAME="sdb2" LABEL="fuego:1" +NAME="md0" LABEL="/boot" +NAME="sys.vg-root.lv" LABEL="/" +NAME="sys.vg-tmp.lv" LABEL="/tmp" +NAME="sys.vg-usr.lv" LABEL="/usr" +NAME="sys.vg-var.lv" LABEL="/var" +NAME="sys.vg-home.lv" LABEL="/home" +NAME="debian--7-root (dm-0)" LABEL="root" BLKID_LABEL - allow(@plugin).to receive(:shell_out).with("lsblk -r -n -o NAME,LABEL"). + allow(@plugin).to receive(:shell_out).with("lsblk -P -n -o NAME,LABEL"). and_return(mock_shell_out(0, @stdout, "")) end - it "should run blkid -s LABEL" do - expect(@plugin).to receive(:shell_out).with("lsblk -r -n -o NAME,LABEL"). + it "should run lsblk -P -n -o NAME,LABEL" do + expect(@plugin).to receive(:shell_out).with("lsblk -P -n -o NAME,LABEL"). and_return(mock_shell_out(0, @stdout, "")) @plugin.run end - it "should set kb_size to value from blkid -s LABEL" do + it "should set label to value from lsblk -P -n -o NAME,LABEL" do @plugin.run expect(@plugin[:filesystem]["/dev/md0"][:label]).to eq("/boot") end + + it "should ignore extra info in name and set label to value from lsblk -P -n -o NAME,LABEL" do + @plugin.run + expect(@plugin[:filesystem]["/dev/mapper/debian--7-root"][:label]).to eq("root") + end end |