Facter::Resolvers::VirtWhat.resolve(:vm) =~ /xen/ ||
Facter::Resolvers::Xen.resolve(:vm) =~ /xen/ ||
https://github.com/puppetlabs/facter/blob/8a3accd247940750e60f1fdc93c4f20c71b070a3/lib/facts/linux/virtual.rb#L44 =~ /xen/ ||
Facter::Resolvers::Lspci.resolve(:vm) =~ /xen/
For xen other info: if 'xenhvm' is returned from resolvers => {context: 'hvm'}
else {context: 'pv'}
for 'privileged' info xen resolver should be extended to retrieve the following : https://github.com/puppetlabs/libwhereami/blob/c9666110a1bdec1c7034e4a607710c704603cbf9/lib/src/detectors/xen_detector.cc#L23
On AWS with xen
facter facterversion is_virtual virtual hypervisors
facterversion => 3.14.11
hypervisors => {
xen => {
context => "hvm",
privileged => false
}
is_virtual => true
virtual => xenu