class Facts::Linux::Hypervisors::Xen

Constants

FACT_NAME

Public Class Methods

new() click to toggle source
# File lib/facter/facts/linux/hypervisors/xen.rb, line 9
def initialize
  @log = Facter::Log.new(self)
end

Public Instance Methods

call_the_resolver() click to toggle source
# File lib/facter/facts/linux/hypervisors/xen.rb, line 13
def call_the_resolver
  if xen?
    @log.debug('Xen hypervisor detected')
    fact_value = {}

    fact_value[:context] = hvm? ? 'hvm' : 'pv'
    fact_value[:privileged] = Facter::Resolvers::Xen.resolve(:privileged)

    return Facter::ResolvedFact.new(FACT_NAME, fact_value)
  end

  @log.debug('No Xen hypervisor detected.')
  []
end

Private Instance Methods

discover_hypervisor() click to toggle source
# File lib/facter/facts/linux/hypervisors/xen.rb, line 41
def discover_hypervisor
  product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
  return unless product_name

  Facter::Util::Facts::HYPERVISORS_HASH.each { |key, value| return value if product_name.include?(key) }

  product_name
end
hvm?() click to toggle source
# File lib/facter/facts/linux/hypervisors/xen.rb, line 37
def hvm?
  discover_hypervisor == 'xenhvm' || Facter::Resolvers::Lspci.resolve(:vm) == 'xenhvm'
end
xen?() click to toggle source
# File lib/facter/facts/linux/hypervisors/xen.rb, line 30
def xen?
  Facter::Resolvers::VirtWhat.resolve(:vm) =~ /xen/ ||
    Facter::Resolvers::Xen.resolve(:vm) =~ /xen/ ||
    discover_hypervisor == 'xenhvm' ||
    Facter::Resolvers::Lspci.resolve(:vm) =~ /xen/
end