diff options
author | Theodore Nordsieck <theo@opscode.com> | 2013-09-10 10:28:30 -0700 |
---|---|---|
committer | Theodore Nordsieck <theo@opscode.com> | 2013-09-11 16:13:25 -0700 |
commit | 25c712888bd00b6b8e8252e7f123a93add2ee7c1 (patch) | |
tree | 752a163d6d7a63a105f33821f6a7941887de10c3 | |
parent | 9a394c201f8758a3050bbf0c5e5261bb1b9665ef (diff) | |
download | ohai-25c712888bd00b6b8e8252e7f123a93add2ee7c1.tar.gz |
Converted plugins/freebsd/virtualization to Mixlib::ShellOut.
-rw-r--r-- | lib/ohai/plugins/freebsd/virtualization.rb | 82 | ||||
-rw-r--r-- | spec/unit/plugins/freebsd/virtualization_spec.rb | 28 |
2 files changed, 54 insertions, 56 deletions
diff --git a/lib/ohai/plugins/freebsd/virtualization.rb b/lib/ohai/plugins/freebsd/virtualization.rb index 9e54f9ce..3a7ae79c 100644 --- a/lib/ohai/plugins/freebsd/virtualization.rb +++ b/lib/ohai/plugins/freebsd/virtualization.rb @@ -22,29 +22,28 @@ Ohai.plugin do collect_data do virtualization Mash.new - if from("sysctl -n security.jail.jailed").to_i == 1 + so = shell_out("sysctl -n security.jail.jailed") + if so.stdout.split($/)[0].to_i == 1 virtualization[:system] = "jail" virtualization[:role] = "guest" end # detect from modules - popen4("#{ Ohai.abs_path( "/sbin/kldstat" )}") do |pid, stdin, stdout, stderr| - stdin.close - stdout.each do |line| - case line - when /vboxdrv/ - virtualization[:system] = "vbox" - virtualization[:role] = "host" - when /vboxguest/ - virtualization[:system] = "vbox" - virtualization[:role] = "guest" - end + so = shell_out("#{ Ohai.abs_path( "/sbin/kldstat" )}") + so.stdout.lines do |line| + case line + when /vboxdrv/ + virtualization[:system] = "vbox" + virtualization[:role] = "host" + when /vboxguest/ + virtualization[:system] = "vbox" + virtualization[:role] = "guest" end end - # XXX doesn't work when jail is there but not running (ezjail-admin stop) - if ( from( "jls -n" ) || "" ).lines.count >= 1 + so = shell_out("jls -n") + if ( so.stdout || "" ).lines.count >= 1 virtualization[:system] = "jail" virtualization[:role] = "host" end @@ -54,40 +53,39 @@ Ohai.plugin do # Detect KVM/QEMU from cpu, report as KVM # hw.model: QEMU Virtual CPU version 0.9.1 - if from("sysctl -n hw.model") =~ /QEMU Virtual CPU/ + so = shell_out("sysctl -n hw.model") + if so.stdout.split($/)[0] =~ /QEMU Virtual CPU/ virtualization[:system] = "kvm" virtualization[:role] = "guest" end # http://www.dmo.ca/blog/detecting-virtualization-on-linux if File.exists?("/usr/local/sbin/dmidecode") - popen4("dmidecode") do |pid, stdin, stdout, stderr| - stdin.close - found_virt_manufacturer = nil - found_virt_product = nil - stdout.each do |line| - case line - when /Manufacturer: Microsoft/ - found_virt_manufacturer = "microsoft" - when /Product Name: Virtual Machine/ - found_virt_product = "microsoft" - when /Version: 5.0/ - if found_virt_manufacturer == "microsoft" && found_virt_product == "microsoft" - virtualization[:system] = "virtualpc" - virtualization[:role] = "guest" - end - when /Version: VS2005R2/ - if found_virt_manufacturer == "microsoft" && found_virt_product == "microsoft" - virtualization[:system] = "virtualserver" - virtualization[:role] = "guest" - end - when /Manufacturer: VMware/ - found_virt_manufacturer = "vmware" - when /Product Name: VMware Virtual Platform/ - if found_virt_manufacturer == "vmware" - virtualization[:system] = "vmware" - virtualization[:role] = "guest" - end + so = shell_out("dmidecode") + found_virt_manufacturer = nil + found_virt_product = nil + so.stdout.lines do |line| + case line + when /Manufacturer: Microsoft/ + found_virt_manufacturer = "microsoft" + when /Product Name: Virtual Machine/ + found_virt_product = "microsoft" + when /Version: 5.0/ + if found_virt_manufacturer == "microsoft" && found_virt_product == "microsoft" + virtualization[:system] = "virtualpc" + virtualization[:role] = "guest" + end + when /Version: VS2005R2/ + if found_virt_manufacturer == "microsoft" && found_virt_product == "microsoft" + virtualization[:system] = "virtualserver" + virtualization[:role] = "guest" + end + when /Manufacturer: VMware/ + found_virt_manufacturer = "vmware" + when /Product Name: VMware Virtual Platform/ + if found_virt_manufacturer == "vmware" + virtualization[:system] = "vmware" + virtualization[:role] = "guest" end end end diff --git a/spec/unit/plugins/freebsd/virtualization_spec.rb b/spec/unit/plugins/freebsd/virtualization_spec.rb index d54d49a3..02f3f090 100644 --- a/spec/unit/plugins/freebsd/virtualization_spec.rb +++ b/spec/unit/plugins/freebsd/virtualization_spec.rb @@ -23,25 +23,24 @@ describe Ohai::System, "FreeBSD virtualization plugin" do before(:each) do @plugin = get_plugin("freebsd/virtualization") @plugin[:os] = "freebsd" - @stderr = StringIO.new - @stdin = StringIO.new - @status = 0 - @pid = 42 - @plugin.stub(:popen4).with("/sbin/kldstat") - @plugin.stub(:from) + @plugin.stub(:shell_out).with("sysctl -n security.jail.jailed").and_return(mock_shell_out(0, "0", "")) + @plugin.stub(:shell_out).with("#{ Ohai.abs_path( "/sbin/kldstat" )}").and_return(mock_shell_out(0, "", "")) + @plugin.stub(:shell_out).with("jls -n").and_return(mock_shell_out(0, "","")) + @plugin.stub(:shell_out).with("sysctl -n hw.model").and_return(mock_shell_out(0, "", "")) end context "jails" do it "detects we are in a jail" do - @plugin.stub(:from).with("sysctl -n security.jail.jailed").and_return("1") + @plugin.stub(:shell_out).with("sysctl -n security.jail.jailed").and_return(mock_shell_out(0, "1", "")) @plugin.run @plugin[:virtualization][:system].should == "jail" @plugin[:virtualization][:role].should == "guest" end - it "detects we are hosing jails" do + it "detects we are hosting jails" do # from http://www.freebsd.org/doc/handbook/jails-application.html - @plugin.stub(:from).with("jls -n").and_return("JID IP Address Hostname Path\n 3 192.168.3.17 ns.example.org /home/j/ns\n 2 192.168.3.18 mail.example.org /home/j/mail\n 1 62.123.43.14 www.example.org /home/j/www") + @jails = "JID IP Address Hostname Path\n 3 192.168.3.17 ns.example.org /home/j/ns\n 2 192.168.3.18 mail.example.org /home/j/mail\n 1 62.123.43.14 www.example.org /home/j/www" + @plugin.stub(:shell_out).with("jls -n").and_return(mock_shell_out(0, @jails, "")) @plugin.run @plugin[:virtualization][:system].should == "jail" @plugin[:virtualization][:role].should == "host" @@ -51,12 +50,12 @@ describe Ohai::System, "FreeBSD virtualization plugin" do context "when on a virtualbox guest" do before do - @stdout = StringIO.new(<<-OUT) + @vbox_guest = <<-OUT Id Refs Address Size Name 1 40 0xffffffff80100000 d20428 kernel 7 3 0xffffffff81055000 41e88 vboxguest.ko OUT - @plugin.stub(:popen4).with("/sbin/kldstat").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + @plugin.stub(:shell_out).with("#{ Ohai.abs_path( "/sbin/kldstat" )}").and_return(mock_shell_out(0, @vbox_guest, "")) end it "detects we are a guest" do @@ -68,12 +67,12 @@ OUT context "when on a virtualbox host" do before do - @stdout = StringIO.new(<<-OUT) + @stdout = <<-OUT Id Refs Address Size Name 1 40 0xffffffff80100000 d20428 kernel 7 3 0xffffffff81055000 41e88 vboxdrv.ko OUT - @plugin.stub(:popen4).with("/sbin/kldstat").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status) + @plugin.stub(:shell_out).with("/sbin/kldstat").and_return(mock_shell_out(0, @stdout, "")) end it "detects we are a host" do @@ -85,7 +84,8 @@ OUT context "when on a QEMU guest" do it "detects we are a guest" do - @plugin.stub(:from).with("sysctl -n hw.model").and_return('QEMU Virtual CPU version (cpu64-rhel6) ("GenuineIntel" 686-class)') + @qemu_guest = 'QEMU Virtual CPU version (cpu64-rhel6) ("GenuineIntel" 686-class)' + @plugin.stub(:shell_out).with("sysctl -n hw.model").and_return(mock_shell_out(0, @qemu_guest, "")) @plugin.run @plugin[:virtualization][:system].should == "kvm" @plugin[:virtualization][:role].should == "guest" |