summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2015-11-26 14:45:27 -0800
committerTim Smith <tsmith84@gmail.com>2015-11-26 14:50:51 -0800
commita963d49231c0c83d4088e3dcd24e364f5e8c0d51 (patch)
tree454a9fcc4efd9ffe966ee9c13c260f3fb3f8b833
parentcab558c4f88260e5d0e730a255ec72f5f9cd5e44 (diff)
downloadohai-a963d49231c0c83d4088e3dcd24e364f5e8c0d51.tar.gz
Import the DMI detection logic from the Linux plugin
This expands the systems we can detect to include Openstack, KVM, Vbox,
-rw-r--r--lib/ohai/plugins/bsd/virtualization.rb92
1 files changed, 52 insertions, 40 deletions
diff --git a/lib/ohai/plugins/bsd/virtualization.rb b/lib/ohai/plugins/bsd/virtualization.rb
index d491c83f..608c0230 100644
--- a/lib/ohai/plugins/bsd/virtualization.rb
+++ b/lib/ohai/plugins/bsd/virtualization.rb
@@ -17,7 +17,7 @@
#
Ohai.plugin(:Virtualization) do
- provides "virtualization"
+ provides 'virtualization'
collect_data(:freebsd, :openbsd, :netbsd, :dragonflybsd) do
virtualization Mash.new
@@ -29,23 +29,23 @@ Ohai.plugin(:Virtualization) do
end
# detect from modules
- so = shell_out("#{ Ohai.abs_path( "/sbin/kldstat" )}")
+ so = shell_out("#{Ohai.abs_path('/sbin/kldstat')}")
so.stdout.lines do |line|
case line
when /vboxdrv/
- virtualization[:system] = "vbox"
- virtualization[:role] = "host"
+ virtualization[:system] = 'vbox'
+ virtualization[:role] = 'host'
when /vboxguest/
- virtualization[:system] = "vbox"
- virtualization[:role] = "guest"
+ virtualization[:system] = 'vbox'
+ virtualization[:role] = 'guest'
end
end
# XXX doesn't work when jail is there but not running (ezjail-admin stop)
- so = shell_out("jls -n")
- if ( so.stdout || "" ).lines.count >= 1
- virtualization[:system] = "jail"
- virtualization[:role] = "host"
+ so = shell_out('jls -n')
+ if (so.stdout || '').lines.count >= 1
+ virtualization[:system] = 'jail'
+ virtualization[:role] = 'host'
end
# KVM Host support for FreeBSD is in development
@@ -53,41 +53,53 @@ Ohai.plugin(:Virtualization) do
# Detect KVM/QEMU from cpu, report as KVM
# hw.model: QEMU Virtual CPU version 0.9.1
- so = shell_out("sysctl -n hw.model")
- if so.stdout.split($/)[0] =~ /QEMU Virtual CPU|Common KVM processor|Common 32-bit KVM processor/
- virtualization[:system] = "kvm"
- virtualization[:role] = "guest"
+ so = shell_out('sysctl -n hw.model')
+ if so.stdout.split($INPUT_RECORD_SEPARATOR)[0] =~ /QEMU Virtual CPU|Common KVM processor|Common 32-bit KVM processor/
+ virtualization[:system] = 'kvm'
+ virtualization[:role] = 'guest'
end
# http://www.dmo.ca/blog/detecting-virtualization-on-linux
- if File.exists?("/usr/local/sbin/dmidecode") || File.exists?("/usr/pkg/sbin/dmidecode")
- so = shell_out("dmidecode")
- found_virt_manufacturer = nil
- found_virt_product = nil
- so.stdout.lines do |line|
- case line
- when /Manufacturer: Microsoft/
- found_virt_manufacturer = "microsoft"
- when /Product Name: Virtual Machine/
- found_virt_product = "microsoft"
- when /Version: 5.0/
- if found_virt_manufacturer == "microsoft" && found_virt_product == "microsoft"
- virtualization[:system] = "virtualpc"
- virtualization[:role] = "guest"
- end
- when /Version: VS2005R2/
- if found_virt_manufacturer == "microsoft" && found_virt_product == "microsoft"
- virtualization[:system] = "virtualserver"
- virtualization[:role] = "guest"
- end
- when /Manufacturer: VMware/
- found_virt_manufacturer = "vmware"
- when /Product Name: VMware Virtual Platform/
- if found_virt_manufacturer == "vmware"
- virtualization[:system] = "vmware"
- virtualization[:role] = "guest"
+ if File.exist?('/usr/local/sbin/dmidecode') || File.exist?('/usr/pkg/sbin/dmidecode')
+ so = shell_out('dmidecode')
+ case so.stdout
+ when /Manufacturer: Microsoft/
+ if so.stdout =~ /Product Name: Virtual Machine/
+ if so.stdout =~ /Version: VS2005R2/
+ virtualization[:system] = 'virtualserver'
+ virtualization[:role] = 'guest'
+ else
+ virtualization[:system] = 'virtualpc'
+ virtualization[:role] = 'guest'
+ virtualization[:systems][:virtualpc] = 'guest'
end
end
+ when /Manufacturer: VMware/
+ if so.stdout =~ /Product Name: VMware Virtual Platform/
+ virtualization[:system] = 'vmware'
+ virtualization[:role] = 'guest'
+ virtualization[:systems][:vmware] = 'guest'
+ end
+ when /Manufacturer: Xen/
+ if so.stdout =~ /Product Name: HVM domU/
+ virtualization[:system] = 'xen'
+ virtualization[:role] = 'guest'
+ virtualization[:systems][:xen] = 'guest'
+ end
+ when /Manufacturer: Oracle Corporation/
+ if so.stdout =~ /Product Name: VirtualBox/
+ virtualization[:system] = 'vbox'
+ virtualization[:role] = 'guest'
+ virtualization[:systems][:vbox] = 'guest'
+ end
+ when /Product Name: OpenStack/
+ virtualization[:system] = 'openstack'
+ virtualization[:role] = 'guest'
+ virtualization[:systems][:openstack] = 'guest'
+ when /Manufacturer: QEMU|Product Name: (KVM|RHEV)/
+ virtualization[:system] = 'kvm'
+ virtualization[:role] = 'guest'
+ virtualization[:systems][:kvm] = 'guest'
end
end
end