diff options
author | Tim Smith <tsmith84@gmail.com> | 2016-03-03 16:16:09 -0800 |
---|---|---|
committer | Tim Smith <tsmith84@gmail.com> | 2016-03-07 10:07:12 -0800 |
commit | 8e724ba201e8322cd8838e668a7c3610d85ec838 (patch) | |
tree | 5b3d89960b9d0741d18dac5eee001cd7984905a0 | |
parent | 0f0997137ea3552172cea10bcc409ee85558de68 (diff) | |
download | ohai-8e724ba201e8322cd8838e668a7c3610d85ec838.tar.gz |
Detect bhyve hosts via /dev/vmm
-rw-r--r-- | lib/ohai/plugins/bsd/virtualization.rb | 14 | ||||
-rw-r--r-- | spec/unit/plugins/bsd/virtualization_spec.rb | 13 |
2 files changed, 23 insertions, 4 deletions
diff --git a/lib/ohai/plugins/bsd/virtualization.rb b/lib/ohai/plugins/bsd/virtualization.rb index 344c33fd..479be99f 100644 --- a/lib/ohai/plugins/bsd/virtualization.rb +++ b/lib/ohai/plugins/bsd/virtualization.rb @@ -57,15 +57,23 @@ Ohai.plugin(:Virtualization) do virtualization[:system] = "vbox" virtualization[:role] = "host" virtualization[:systems][:vbox] = "host" - Ohai::Log.debug('Virtualization plugin: Guest running on VirtualBox detected') + Ohai::Log.debug("Virtualization plugin: Guest running on VirtualBox detected") when /vboxguest/ virtualization[:system] = "vbox" virtualization[:role] = "guest" virtualization[:systems][:vbox] = "guest" - Ohai::Log.debug('Virtualization plugin: Host running VirtualBox detected') + Ohai::Log.debug("Virtualization plugin: Host running VirtualBox detected") end end + # Detect bhyve by presence of /dev/vmm + if File.exist?("/dev/vmm") + virtualization[:system] = "bhyve" + virtualization[:role] = "host" + virtualization[:systems][:bhyve] = "host" + Ohai::Log.debug("Virtualization plugin: Host running bhyve detected") + end + # Detect KVM/QEMU paravirt guests from cpu, report as KVM # hw.model: QEMU Virtual CPU version 0.9.1 so = shell_out("sysctl -n hw.model") @@ -73,7 +81,7 @@ Ohai.plugin(:Virtualization) do virtualization[:system] = "kvm" virtualization[:role] = "guest" virtualization[:systems][:kvm] = "guest" - Ohai::Log.debug('Virtualization plugin: Guest running on KVM detected') + Ohai::Log.debug("Virtualization plugin: Guest running on KVM detected") end # parse dmidecode to discover various virtualization guests diff --git a/spec/unit/plugins/bsd/virtualization_spec.rb b/spec/unit/plugins/bsd/virtualization_spec.rb index 4cc5f063..69f38415 100644 --- a/spec/unit/plugins/bsd/virtualization_spec.rb +++ b/spec/unit/plugins/bsd/virtualization_spec.rb @@ -26,6 +26,17 @@ describe Ohai::System, "BSD virtualization plugin" do allow(@plugin).to receive(:shell_out).with("#{ Ohai.abs_path( "/sbin/kldstat" )}").and_return(mock_shell_out(0, "", "")) allow(@plugin).to receive(:shell_out).with("jls -nd").and_return(mock_shell_out(0, "", "")) allow(@plugin).to receive(:shell_out).with("sysctl -n hw.model").and_return(mock_shell_out(0, "", "")) + allow(File).to receive(:exist?).and_return false + end + + context "bhyve" do + it "detects we are running bhyve" do + allow(File).to receive(:exist?).with("/dev/vmm").and_return true + @plugin.run + expect(@plugin[:virtualization][:system]).to eq("bhyve") + expect(@plugin[:virtualization][:role]).to eq("host") + expect(@plugin[:virtualization][:systems][:bhyve]).to eq("host") + end end context "jails" do @@ -40,7 +51,7 @@ describe Ohai::System, "BSD virtualization plugin" do it "detects we are hosting jails" do # from http://www.freebsd.org/doc/handbook/jails-application.html @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" - allow(@plugin).to receive(:shell_out).with("jls -n").and_return(mock_shell_out(0, @jails, "")) + allow(@plugin).to receive(:shell_out).with("jls -nd").and_return(mock_shell_out(0, @jails, "")) @plugin.run expect(@plugin[:virtualization][:system]).to eq("jail") expect(@plugin[:virtualization][:role]).to eq("host") |