summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheodore Nordsieck <theo@opscode.com>2013-09-10 10:28:30 -0700
committerTheodore Nordsieck <theo@opscode.com>2013-09-11 16:13:25 -0700
commit25c712888bd00b6b8e8252e7f123a93add2ee7c1 (patch)
tree752a163d6d7a63a105f33821f6a7941887de10c3
parent9a394c201f8758a3050bbf0c5e5261bb1b9665ef (diff)
downloadohai-25c712888bd00b6b8e8252e7f123a93add2ee7c1.tar.gz
Converted plugins/freebsd/virtualization to Mixlib::ShellOut.
-rw-r--r--lib/ohai/plugins/freebsd/virtualization.rb82
-rw-r--r--spec/unit/plugins/freebsd/virtualization_spec.rb28
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"