diff options
author | Tim Smith <tsmith84@gmail.com> | 2015-11-27 20:34:50 -0800 |
---|---|---|
committer | Tim Smith <tsmith84@gmail.com> | 2015-11-27 20:34:50 -0800 |
commit | 38e107fe7938a01768420cfbf0207821a36d2be6 (patch) | |
tree | ff8c7fbdb17f500d0988fabb4269938459a9b144 | |
parent | dbc5c406df19f0d2bbcca364d1f3d36957d04c81 (diff) | |
download | ohai-38e107fe7938a01768420cfbf0207821a36d2be6.tar.gz |
Expand detection of VirtualPC / Hyper-V guests
This should solve https://github.com/chef/ohai/issues/647
-rw-r--r-- | lib/ohai/mixin/dmi_decode.rb | 6 | ||||
-rw-r--r-- | spec/unit/plugins/linux/virtualization_spec.rb | 34 |
2 files changed, 38 insertions, 2 deletions
diff --git a/lib/ohai/mixin/dmi_decode.rb b/lib/ohai/mixin/dmi_decode.rb index 625b6c90..f367e41d 100644 --- a/lib/ohai/mixin/dmi_decode.rb +++ b/lib/ohai/mixin/dmi_decode.rb @@ -22,9 +22,11 @@ module ::Ohai::Mixin::DmiDecode case line when /Manufacturer: Microsoft/ if dmi_data =~ /Product Name: Virtual Machine/ - if dmi_data =~ /Version: VS2005R2/ + if dmi_data =~ /Version: (VS2005R2|6.0)/ return 'virtualpc' - else + elsif dmi_data =~ /Version: (7.0|Hyper-V)/ + return 'hyperv' + elsif dmi_data =~ /Version: 5.0/ return 'virtualserver' end end diff --git a/spec/unit/plugins/linux/virtualization_spec.rb b/spec/unit/plugins/linux/virtualization_spec.rb index 70046e44..8509230a 100644 --- a/spec/unit/plugins/linux/virtualization_spec.rb +++ b/spec/unit/plugins/linux/virtualization_spec.rb @@ -168,6 +168,40 @@ MSVPC expect(plugin[:virtualization][:systems][:virtualpc]).to eq("guest") end + it "sets hyperv guest if dmidecode detects Hyper-V or version 7.0" do + ms_hv_dmidecode=<<-MSHV +System Information + Manufacturer: Microsoft Corporation + Product Name: Virtual Machine + Version: 7.0 + Serial Number: 9242-2608-7031-8934-2088-5216-61 + UUID: C2431A2D-D69C-244F-9DE8-CD5D09E0DA39 + Wake-up Type: Power Switch +MSHV + allow(plugin).to receive(:shell_out).with("dmidecode").and_return(mock_shell_out(0, ms_hv_dmidecode, "")) + plugin.run + expect(plugin[:virtualization][:system]).to eq("hyperv") + expect(plugin[:virtualization][:role]).to eq("guest") + expect(plugin[:virtualization][:systems][:hyperv]).to eq("guest") + end + + it "sets virtualserver guest if dmidecode detects version 5.0" do + ms_vs_dmidecode=<<-MSVS +System Information + Manufacturer: Microsoft Corporation + Product Name: Virtual Machine + Version: 5.0 + Serial Number: 1688-7189-5337-7903-2297-1012-52 + UUID: D29974A4-BE51-044C-BDC6-EFBC4B87A8E9 + Wake-up Type: Power Switch +MSVS + allow(plugin).to receive(:shell_out).with("dmidecode").and_return(mock_shell_out(0, ms_vs_dmidecode, "")) + plugin.run + expect(plugin[:virtualization][:system]).to eq("virtualserver") + expect(plugin[:virtualization][:role]).to eq("guest") + expect(plugin[:virtualization][:systems][:virtualserver]).to eq("guest") + end + it "sets vmware guest if dmidecode detects VMware" do vmware_dmidecode=<<-VMWARE System Information |