class Facts::Linux::Hypervisors::Xen

def call_the_resolver

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

def discover_hypervisor

def discover_hypervisor
  product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
  return unless product_name
  Facter::FactsUtils::HYPERVISORS_HASH.each { |key, value| return value if product_name.include?(key) }
  product_name
end

def hvm?

def hvm?
  discover_hypervisor == 'xenhvm' || Facter::Resolvers::Lspci.resolve(:vm) == 'xenhvm'
end

def initialize

def initialize
  @log = Facter::Log.new(self)
end

def xen?

def xen?
  Facter::Resolvers::VirtWhat.resolve(:vm) =~ /xen/ ||
    Facter::Resolvers::Xen.resolve(:vm) =~ /xen/ ||
    discover_hypervisor == 'xenhvm' ||
    Facter::Resolvers::Lspci.resolve(:vm) =~ /xen/
end