diff options
author | Tim Smith <tsmith@chef.io> | 2018-03-14 19:47:23 -0700 |
---|---|---|
committer | Bryan McLellan <btm@loftninjas.org> | 2018-03-27 14:00:13 -0400 |
commit | 7546fc72726f56e11b366f40ffbbb00c34eaf346 (patch) | |
tree | da92b48d513c2b2aeb3758d615d3d1c27b4afdf4 | |
parent | c6951ddbeb06c92e4914bfe1e9a30befb2ef6211 (diff) | |
download | ohai-7546fc72726f56e11b366f40ffbbb00c34eaf346.tar.gz |
Detect virtualbox and vmware guests on Macs
Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r-- | lib/ohai/plugins/darwin/virtualization.rb | 13 | ||||
-rw-r--r-- | spec/unit/plugins/darwin/virtualization_spec.rb | 20 |
2 files changed, 33 insertions, 0 deletions
diff --git a/lib/ohai/plugins/darwin/virtualization.rb b/lib/ohai/plugins/darwin/virtualization.rb index 61102cf1..516e57fb 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") @@ -47,12 +48,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[:machine_model].match?(/vmware/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 fbf509ed..e005a0a0 100644 --- a/spec/unit/plugins/darwin/virtualization_spec.rb +++ b/spec/unit/plugins/darwin/virtualization_spec.rb @@ -29,6 +29,10 @@ describe Ohai::System, "Darwin virtualization platform" do allow(plugin).to receive(:ioreg_exists?).and_return(false) 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" + plugin[:hardware][:machine_model] = "not_a_vm" end describe "when detecting OS X virtualization" do @@ -45,6 +49,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][:machine_model] = "VMware" + 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 @@ -53,6 +65,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 |