summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2016-03-03 16:16:09 -0800
committerTim Smith <tsmith84@gmail.com>2016-03-07 10:07:12 -0800
commit8e724ba201e8322cd8838e668a7c3610d85ec838 (patch)
tree5b3d89960b9d0741d18dac5eee001cd7984905a0
parent0f0997137ea3552172cea10bcc409ee85558de68 (diff)
downloadohai-8e724ba201e8322cd8838e668a7c3610d85ec838.tar.gz
Detect bhyve hosts via /dev/vmm
-rw-r--r--lib/ohai/plugins/bsd/virtualization.rb14
-rw-r--r--spec/unit/plugins/bsd/virtualization_spec.rb13
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")