diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/facter/virtual.rb | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/lib/facter/virtual.rb b/lib/facter/virtual.rb index a8afb60..a3b7163 100644 --- a/lib/facter/virtual.rb +++ b/lib/facter/virtual.rb @@ -1,6 +1,24 @@ require 'facter/util/virtual' Facter.add("virtual") do + confine :kernel => "Darwin" + + setcode do + require 'facter/util/macosx' + result = "physical" + output = Facter::Util::Macosx.profiler_data("SPDisplaysDataType") + if output.is_a?(Hash) + result = "parallels" if output["spdisplays_vendor-id"] =~ /0x1ab8/ + result = "parallels" if output["spdisplays_vendor"] =~ /[Pp]arallels/ + result = "vmware" if output["spdisplays_vendor-id"] =~ /0x15ad/ + result = "vmware" if output["spdisplays_vendor"] =~ /VM[wW]are/ + end + result + end +end + + +Facter.add("virtual") do confine :kernel => %w{Linux FreeBSD OpenBSD SunOS HP-UX} result = "physical" @@ -53,18 +71,23 @@ Facter.add("virtual") do # --- look for the vmware video card to determine if it is virtual => vmware. # --- 00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter result = "vmware" if p =~ /VM[wW]are/ + # --- look for pci vendor id used by Parallels video card + # --- 01:00.0 VGA compatible controller: Unknown device 1ab8:4005 + result = "parallels" if p =~ /1ab8:|[Pp]arallels/ end else output = Facter::Util::Resolution.exec('dmidecode') if not output.nil? output.each_line do |pd| - result = "vmware" if pd =~ /VMware|Parallels/ + result = "parallels" if pd =~ /Parallels/ + result = "vmware" if pd =~ /VMware/ end else output = Facter::Util::Resolution.exec('prtdiag') if not output.nil? output.each_line do |pd| - result = "vmware" if pd =~ /VMware|Parallels/ + result = "parallels" if pd =~ /Parallels/ + result = "vmware" if pd =~ /VMware/ end end end @@ -78,15 +101,15 @@ Facter.add("virtual") do result end end - + Facter.add("is_virtual") do - confine :kernel => %w{Linux FreeBSD OpenBSD SunOS HP-UX} + confine :kernel => %w{Linux FreeBSD OpenBSD SunOS HP-UX Darwin} setcode do case Facter.value(:virtual) - when "xenu", "openvzve", "vmware", "kvm", "vserver", "jail", "zone", "hpvm" + when "xenu", "openvzve", "vmware", "kvm", "vserver", "jail", "zone", "hpvm", "parallels" "true" - else + else "false" end end |