lib/ohai/plugins/freebsd/virtualization.rb in ohai-8.5.0 vs lib/ohai/plugins/freebsd/virtualization.rb in ohai-8.5.1

- old
+ new

@@ -1,94 +1,94 @@ -# -# Author:: Bryan McLellan (btm@loftninjas.org) -# Copyright:: Copyright (c) 2009 Bryan McLellan -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -Ohai.plugin(:Virtualization) do - provides "virtualization" - - collect_data(:freebsd) do - virtualization Mash.new - - so = shell_out("sysctl -n security.jail.jailed") - if so.stdout.split($/)[0].to_i == 1 - virtualization[:system] = "jail" - virtualization[:role] = "guest" - end - - # detect from modules - so = shell_out("#{ Ohai.abs_path( "/sbin/kldstat" )}") - so.stdout.lines do |line| - case line - when /vboxdrv/ - virtualization[:system] = "vbox" - virtualization[:role] = "host" - when /vboxguest/ - 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" - end - - # KVM Host support for FreeBSD is in development - # http://feanor.sssup.it/~fabio/freebsd/lkvm/ - - # 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" - end - - # http://www.dmo.ca/blog/detecting-virtualization-on-linux - if File.exists?("/usr/local/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" - end - end - end - end - end -end +# +# Author:: Bryan McLellan (btm@loftninjas.org) +# Copyright:: Copyright (c) 2009 Bryan McLellan +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +Ohai.plugin(:Virtualization) do + provides "virtualization" + + collect_data(:freebsd) do + virtualization Mash.new + + so = shell_out("sysctl -n security.jail.jailed") + if so.stdout.split($/)[0].to_i == 1 + virtualization[:system] = "jail" + virtualization[:role] = "guest" + end + + # detect from modules + so = shell_out("#{ Ohai.abs_path( "/sbin/kldstat" )}") + so.stdout.lines do |line| + case line + when /vboxdrv/ + virtualization[:system] = "vbox" + virtualization[:role] = "host" + when /vboxguest/ + 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" + end + + # KVM Host support for FreeBSD is in development + # http://feanor.sssup.it/~fabio/freebsd/lkvm/ + + # 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" + end + + # http://www.dmo.ca/blog/detecting-virtualization-on-linux + if File.exists?("/usr/local/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" + end + end + end + end + end +end