summaryrefslogtreecommitdiff
path: root/lib/ohai/plugins
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2016-03-03 22:38:20 -0800
committerTim Smith <tsmith84@gmail.com>2016-03-07 10:07:12 -0800
commit0bb34fcc095c140875c1a508718724a5b6153b29 (patch)
treec770c82f775e5d321e5b7ce5fae99d0e73e1483e /lib/ohai/plugins
parent8e724ba201e8322cd8838e668a7c3610d85ec838 (diff)
downloadohai-0bb34fcc095c140875c1a508718724a5b6153b29.tar.gz
Detect guests via sysctl -n kern.vm_guest on FreeBSD
1) This gives us detection of bhyve guests 2) This works when dmidecode isn't installed, which is most of the time 3) This looks at more than just DMI data. They're also looking at detailed CPU data to determine hyper-v and vmware.
Diffstat (limited to 'lib/ohai/plugins')
-rw-r--r--lib/ohai/plugins/bsd/virtualization.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/ohai/plugins/bsd/virtualization.rb b/lib/ohai/plugins/bsd/virtualization.rb
index 479be99f..40ebeaf6 100644
--- a/lib/ohai/plugins/bsd/virtualization.rb
+++ b/lib/ohai/plugins/bsd/virtualization.rb
@@ -84,6 +84,33 @@ Ohai.plugin(:Virtualization) do
Ohai::Log.debug("Virtualization plugin: Guest running on KVM detected")
end
+ # gather hypervisor of guests from sysctl kern.vm_guest
+ # there are a limited number of hypervisors detected here, BUT it doesn't
+ # require dmidecode to be installed and dmidecode isn't in freebsd out of the box
+ so = shell_out("sysctl -n kern.vm_guest")
+ case so.stdout
+ when /vmware/
+ virtualization[:system] = "vmware"
+ virtualization[:role] = "guest"
+ virtualization[:systems][:vmware] = "guest"
+ Ohai::Log.debug("Virtualization plugin: Guest running on VMware detected")
+ when /hv/
+ virtualization[:system] = "hyperv"
+ virtualization[:role] = "guest"
+ virtualization[:systems][:hyperv] = "guest"
+ Ohai::Log.debug("Virtualization plugin: Guest running on Hyper-V detected")
+ when /xen/
+ virtualization[:system] = "xen"
+ virtualization[:role] = "guest"
+ virtualization[:systems][:xen] = "guest"
+ Ohai::Log.debug("Virtualization plugin: Guest running on Xen detected")
+ when /bhyve/
+ virtualization[:system] = "bhyve"
+ virtualization[:role] = "guest"
+ virtualization[:systems][:bhyve] = "guest"
+ Ohai::Log.debug("Virtualization plugin: Guest running on bhyve detected")
+ end
+
# parse dmidecode to discover various virtualization guests
if File.exist?("/usr/local/sbin/dmidecode") || File.exist?("/usr/pkg/sbin/dmidecode")
guest = guest_from_dmi(shell_out("dmidecode").stdout)