summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2018-03-16 13:41:46 -0700
committerGitHub <noreply@github.com>2018-03-16 13:41:46 -0700
commitef9a408f6ec558e91c66f2ef178d2c7ffb6b70b5 (patch)
tree7ca79026ceaf3244d705a5e7a1d69dcae12505b4
parent65b2ee96ae77a7498b21663181b9c524e1235e26 (diff)
parent047d853307c9d2e2e92523cbc8e3f7daf5ab032d (diff)
downloadohai-ef9a408f6ec558e91c66f2ef178d2c7ffb6b70b5.tar.gz
Merge pull request #1164 from chef/virtualization_guests_darwin
Detect virtualbox and vmware guests on Macs
-rw-r--r--lib/ohai/plugins/darwin/virtualization.rb13
-rw-r--r--spec/unit/plugins/darwin/virtualization_spec.rb18
2 files changed, 31 insertions, 0 deletions
diff --git a/lib/ohai/plugins/darwin/virtualization.rb b/lib/ohai/plugins/darwin/virtualization.rb
index 318886a6..2aaa17d5 100644
--- a/lib/ohai/plugins/darwin/virtualization.rb
+++ b/lib/ohai/plugins/darwin/virtualization.rb
@@ -20,6 +20,7 @@
Ohai.plugin(:Virtualization) do
provides "virtualization"
+ depends "hardware"
def vboxmanage_exists?
which("VBoxManage")
@@ -57,12 +58,24 @@ Ohai.plugin(:Virtualization) do
virtualization[:systems][:vbox] = "host"
end
+ if hardware[:boot_rom_version].match?(/VirtualBox/i)
+ virtualization[:system] = "vbox"
+ virtualization[:role] = "guest"
+ virtualization[:systems][:vbox] = "guest"
+ end
+
if fusion_exists?
virtualization[:system] = "vmware"
virtualization[:role] = "host"
virtualization[:systems][:vmware] = "host"
end
+ if hardware[:boot_rom_version].match?(/VMW/i)
+ virtualization[:system] = "vmware"
+ virtualization[:role] = "guest"
+ virtualization[:systems][:vmware] = "guest"
+ end
+
if prlctl_exists?
virtualization[:system] = "parallels"
virtualization[:role] = "host"
diff --git a/spec/unit/plugins/darwin/virtualization_spec.rb b/spec/unit/plugins/darwin/virtualization_spec.rb
index 44d57d08..7b9fef2a 100644
--- a/spec/unit/plugins/darwin/virtualization_spec.rb
+++ b/spec/unit/plugins/darwin/virtualization_spec.rb
@@ -30,6 +30,8 @@ describe Ohai::System, "Darwin virtualization platform" do
allow(plugin).to receive(:vboxmanage_exists?).and_return(false)
allow(plugin).to receive(:fusion_exists?).and_return(false)
allow(plugin).to receive(:docker_exists?).and_return(false)
+ plugin[:hardware] = Mash.new
+ plugin[:hardware][:boot_rom_version] = "not_a_vm"
end
describe "when detecting OS X virtualization" do
@@ -54,6 +56,14 @@ describe Ohai::System, "Darwin virtualization platform" do
expect(plugin[:virtualization][:systems][:vmware]).to eq("host")
end
+ it "should set vmware guest if hardware attributes mention vmware" do
+ plugin[:hardware][:boot_rom_version] = "VMW71.00V.6997262.B64.1710270607"
+ plugin.run
+ expect(plugin[:virtualization][:system]).to eq("vmware")
+ expect(plugin[:virtualization][:role]).to eq("guest")
+ expect(plugin[:virtualization][:systems][:vmware]).to eq("guest")
+ end
+
it "should set vbox host if /usr/local/bin/VBoxManage exists" do
allow(plugin).to receive(:vboxmanage_exists?).and_return("/usr/local/bin/VBoxManage")
plugin.run
@@ -62,6 +72,14 @@ describe Ohai::System, "Darwin virtualization platform" do
expect(plugin[:virtualization][:systems][:vbox]).to eq("host")
end
+ it "should set vbox guest if hardware attributes mention virtualbox" do
+ plugin[:hardware][:boot_rom_version] = "VirtualBox"
+ plugin.run
+ expect(plugin[:virtualization][:system]).to eq("vbox")
+ expect(plugin[:virtualization][:role]).to eq("guest")
+ expect(plugin[:virtualization][:systems][:vbox]).to eq("guest")
+ end
+
it "should set parallels host if /usr/bin/prlctl exists" do
allow(plugin).to receive(:prlctl_exists?).and_return("/usr/bin/prlctl")
plugin.run