Class: Facts::Linux::Virtual

Inherits:
Object
  • Object
show all
Defined in:
lib/facter/facts/linux/virtual.rb

Constant Summary collapse

FACT_NAME =
'virtual'

Instance Method Summary collapse

Instance Method Details

#call_the_resolverObject

rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity



8
9
10
11
12
13
# File 'lib/facter/facts/linux/virtual.rb', line 8

def call_the_resolver # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
  fact_value = check_docker_lxc || check_gce || retrieve_from_virt_what || check_vmware
  fact_value ||= check_open_vz || check_vserver || check_xen || check_other_facts || check_lspci || 'physical'

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

#check_docker_lxcObject



20
21
22
# File 'lib/facter/facts/linux/virtual.rb', line 20

def check_docker_lxc
  Facter::Resolvers::Containers.resolve(:vm)
end

#check_gceObject



15
16
17
18
# File 'lib/facter/facts/linux/virtual.rb', line 15

def check_gce
  bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
  'gce' if bios_vendor&.include?('Google')
end

#check_lspciObject



55
56
57
# File 'lib/facter/facts/linux/virtual.rb', line 55

def check_lspci
  Facter::Resolvers::Lspci.resolve(:vm)
end

#check_open_vzObject



32
33
34
# File 'lib/facter/facts/linux/virtual.rb', line 32

def check_open_vz
  Facter::Resolvers::OpenVz.resolve(:vm)
end

#check_other_factsObject



44
45
46
47
48
49
50
51
52
53
# File 'lib/facter/facts/linux/virtual.rb', line 44

def check_other_facts
  product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
  bios_vendor =  Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
  return 'kvm' if bios_vendor&.include?('Amazon EC2')
  return unless product_name

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

  nil
end

#check_vmwareObject



24
25
26
# File 'lib/facter/facts/linux/virtual.rb', line 24

def check_vmware
  Facter::Resolvers::Vmware.resolve(:vm)
end

#check_vserverObject



36
37
38
# File 'lib/facter/facts/linux/virtual.rb', line 36

def check_vserver
  Facter::Resolvers::VirtWhat.resolve(:vserver)
end

#check_xenObject



40
41
42
# File 'lib/facter/facts/linux/virtual.rb', line 40

def check_xen
  Facter::Resolvers::Xen.resolve(:vm)
end

#retrieve_from_virt_whatObject



28
29
30
# File 'lib/facter/facts/linux/virtual.rb', line 28

def retrieve_from_virt_what
  Facter::Resolvers::VirtWhat.resolve(:vm)
end