facter 4.0.36 → 4.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/facter +3 -4
- data/lib/facter.rb +163 -23
- data/lib/facter/custom_facts/core/execution/base.rb +36 -6
- data/lib/facter/custom_facts/util/directory_loader.rb +10 -2
- data/lib/facter/custom_facts/util/fact.rb +4 -1
- data/lib/facter/facts/aix/disks.rb +1 -1
- data/lib/facter/facts/aix/kernel.rb +1 -1
- data/lib/facter/facts/aix/kernelmajversion.rb +1 -1
- data/lib/facter/facts/aix/kernelrelease.rb +1 -1
- data/lib/facter/facts/aix/kernelversion.rb +1 -1
- data/lib/facter/facts/aix/os/release.rb +1 -1
- data/lib/facter/facts/linux/cloud.rb +15 -0
- data/lib/facter/facts/linux/disks.rb +1 -1
- data/lib/facter/facts/linux/ec2_metadata.rb +5 -27
- data/lib/facter/facts/linux/ec2_userdata.rb +5 -27
- data/lib/facter/facts/linux/is_virtual.rb +7 -46
- data/lib/facter/facts/linux/partitions.rb +1 -1
- data/lib/facter/facts/linux/virtual.rb +3 -58
- data/lib/facter/facts/rhel/os/release.rb +2 -2
- data/lib/facter/facts/solaris/disks.rb +1 -1
- data/lib/facter/facts/ubuntu/lsbdistrelease.rb +23 -0
- data/lib/facter/facts_utils/virtual_detector.rb +78 -0
- data/lib/facter/framework/benchmarking/timer.rb +23 -0
- data/lib/facter/framework/cli/cli.rb +86 -34
- data/lib/facter/framework/cli/cli_launcher.rb +34 -38
- data/lib/facter/framework/config/fact_groups.rb +36 -2
- data/lib/facter/framework/core/cache_manager.rb +30 -18
- data/lib/facter/framework/core/fact/internal/internal_fact_manager.rb +2 -1
- data/lib/facter/framework/core/fact_loaders/fact_loader.rb +14 -11
- data/lib/facter/framework/core/fact_loaders/internal_fact_loader.rb +7 -7
- data/lib/facter/framework/core/file_loader.rb +2 -0
- data/lib/facter/framework/core/options/config_file_options.rb +5 -3
- data/lib/facter/framework/core/options/option_store.rb +30 -11
- data/lib/facter/framework/core/session_cache.rb +1 -4
- data/lib/facter/framework/logging/logger.rb +3 -11
- data/lib/facter/patches/sysfilesystem/sys/statvfs.rb +92 -0
- data/lib/facter/resolvers/aio_agent_version.rb +0 -1
- data/lib/facter/resolvers/aix/architecture_resolver.rb +0 -1
- data/lib/facter/resolvers/aix/disks.rb +2 -3
- data/lib/facter/resolvers/aix/filesystem_resolver.rb +0 -1
- data/lib/facter/resolvers/aix/hardware_resolver.rb +0 -1
- data/lib/facter/resolvers/aix/load_averages_resolver.rb +0 -1
- data/lib/facter/resolvers/aix/memory.rb +2 -3
- data/lib/facter/resolvers/aix/mountpoints.rb +0 -1
- data/lib/facter/resolvers/aix/networking_resolver.rb +0 -1
- data/lib/facter/resolvers/aix/nim.rb +0 -1
- data/lib/facter/resolvers/aix/os_level.rb +27 -0
- data/lib/facter/resolvers/aix/partitions.rb +2 -3
- data/lib/facter/resolvers/aix/processors.rb +0 -1
- data/lib/facter/resolvers/aix/serialnumber.rb +0 -1
- data/lib/facter/resolvers/augeas_resolver.rb +0 -1
- data/lib/facter/resolvers/base_resolver.rb +9 -4
- data/lib/facter/resolvers/bsd/processors.rb +0 -1
- data/lib/facter/resolvers/cloud.rb +39 -0
- data/lib/facter/resolvers/containers.rb +0 -1
- data/lib/facter/resolvers/debian_version.rb +0 -1
- data/lib/facter/resolvers/disk_resolver.rb +0 -1
- data/lib/facter/resolvers/dmi_decode.rb +1 -1
- data/lib/facter/resolvers/dmi_resolver.rb +0 -1
- data/lib/facter/resolvers/ec2.rb +0 -1
- data/lib/facter/resolvers/eos_release_resolver.rb +0 -1
- data/lib/facter/resolvers/facterversion_resolver.rb +0 -1
- data/lib/facter/resolvers/filesystems_resolver.rb +0 -1
- data/lib/facter/resolvers/fips_enabled_resolver.rb +0 -1
- data/lib/facter/resolvers/freebsd/dmi_resolver.rb +0 -1
- data/lib/facter/resolvers/freebsd/freebsd_version_resolver.rb +0 -1
- data/lib/facter/resolvers/freebsd/geom_resolver.rb +0 -1
- data/lib/facter/resolvers/freebsd/processors.rb +0 -1
- data/lib/facter/resolvers/freebsd/swap_memory_resolver.rb +0 -1
- data/lib/facter/resolvers/freebsd/system_memory_resolver.rb +0 -1
- data/lib/facter/resolvers/gce.rb +0 -1
- data/lib/facter/resolvers/hostname_resolver.rb +0 -1
- data/lib/facter/resolvers/identity_resolver.rb +0 -1
- data/lib/facter/resolvers/linux/docker_uptime.rb +0 -1
- data/lib/facter/resolvers/linux/load_averages.rb +0 -1
- data/lib/facter/resolvers/load_averages.rb +0 -1
- data/lib/facter/resolvers/lpar_resolver.rb +0 -1
- data/lib/facter/resolvers/lsb_release_resolver.rb +0 -1
- data/lib/facter/resolvers/lspci.rb +0 -1
- data/lib/facter/resolvers/macosx/dmi_resolver.rb +0 -1
- data/lib/facter/resolvers/macosx/filesystems_resolver.rb +1 -6
- data/lib/facter/resolvers/macosx/load_averages_resolver.rb +0 -1
- data/lib/facter/resolvers/macosx/mountpoints_resolver.rb +3 -3
- data/lib/facter/resolvers/macosx/processor_resolver.rb +0 -1
- data/lib/facter/resolvers/macosx/swap_memory_resolver.rb +0 -1
- data/lib/facter/resolvers/macosx/system_memory_resolver.rb +0 -1
- data/lib/facter/resolvers/macosx/system_profiler_resolver.rb +0 -1
- data/lib/facter/resolvers/memory_resolver.rb +6 -2
- data/lib/facter/resolvers/mountpoints_resolver.rb +0 -1
- data/lib/facter/resolvers/networking_linux_resolver.rb +0 -2
- data/lib/facter/resolvers/networking_resolver.rb +0 -1
- data/lib/facter/resolvers/open_vz.rb +0 -1
- data/lib/facter/resolvers/os_release_resolver.rb +0 -1
- data/lib/facter/resolvers/partitions.rb +37 -2
- data/lib/facter/resolvers/path_resolver.rb +0 -1
- data/lib/facter/resolvers/processors_resolver.rb +0 -1
- data/lib/facter/resolvers/puppet_version_resolver.rb +0 -1
- data/lib/facter/resolvers/redhat_release_resolver.rb +0 -1
- data/lib/facter/resolvers/ruby_resolver.rb +0 -1
- data/lib/facter/resolvers/selinux_resolver.rb +0 -1
- data/lib/facter/resolvers/solaris/disks.rb +0 -1
- data/lib/facter/resolvers/solaris/dmi.rb +0 -1
- data/lib/facter/resolvers/solaris/dmi_sparc.rb +0 -1
- data/lib/facter/resolvers/solaris/filesystems.rb +0 -1
- data/lib/facter/resolvers/solaris/ipaddress.rb +0 -1
- data/lib/facter/resolvers/solaris/ldom.rb +0 -1
- data/lib/facter/resolvers/solaris/memory.rb +0 -1
- data/lib/facter/resolvers/solaris/networking.rb +0 -1
- data/lib/facter/resolvers/solaris/os_release.rb +0 -1
- data/lib/facter/resolvers/solaris/processors.rb +0 -1
- data/lib/facter/resolvers/solaris/zone.rb +0 -1
- data/lib/facter/resolvers/solaris/zone_name.rb +0 -1
- data/lib/facter/resolvers/ssh_resolver.rb +0 -1
- data/lib/facter/resolvers/suse_release_resolver.rb +0 -1
- data/lib/facter/resolvers/sw_vers_resolver.rb +0 -1
- data/lib/facter/resolvers/timezone_resolver.rb +0 -1
- data/lib/facter/resolvers/uname_resolver.rb +0 -1
- data/lib/facter/resolvers/uptime_resolver.rb +0 -1
- data/lib/facter/resolvers/utils/filesystem_helper.rb +3 -1
- data/lib/facter/resolvers/virt_what.rb +0 -1
- data/lib/facter/resolvers/vmware.rb +0 -1
- data/lib/facter/resolvers/windows/aio_agent_version.rb +0 -1
- data/lib/facter/resolvers/windows/dmi_bios_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/dmi_computersystem_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/fips_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/hardware_architecture_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/identity_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/kernel_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/memory_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/netkvm_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/networking_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/processors_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/product_release_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/ssh.rb +0 -1
- data/lib/facter/resolvers/windows/system32_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/uptime_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/virtualization_resolver.rb +0 -1
- data/lib/facter/resolvers/windows/win_os_description_resolver.rb +0 -1
- data/lib/facter/resolvers/wpar_resolver.rb +0 -1
- data/lib/facter/resolvers/xen.rb +0 -1
- data/lib/facter/resolvers/zfs.rb +0 -1
- data/lib/facter/resolvers/zpool.rb +0 -1
- data/lib/facter/version.rb +1 -1
- metadata +9 -4
- data/lib/facter/resolvers/aix/os_level_resolver.rb +0 -26
- data/lib/facter/resolvers/os_level_resolver.rb +0 -29
|
@@ -6,7 +6,7 @@ module Facts
|
|
|
6
6
|
FACT_NAME = 'kernelversion'
|
|
7
7
|
|
|
8
8
|
def call_the_resolver
|
|
9
|
-
fact_value = Facter::Resolvers::OsLevel.resolve(:build)
|
|
9
|
+
fact_value = Facter::Resolvers::Aix::OsLevel.resolve(:build)
|
|
10
10
|
kernelversion = fact_value.split('-')[0]
|
|
11
11
|
|
|
12
12
|
Facter::ResolvedFact.new(FACT_NAME, kernelversion)
|
|
@@ -8,7 +8,7 @@ module Facts
|
|
|
8
8
|
ALIASES = %w[operatingsystemmajrelease operatingsystemrelease].freeze
|
|
9
9
|
|
|
10
10
|
def call_the_resolver
|
|
11
|
-
fact_value = Facter::Resolvers::OsLevel.resolve(:build)
|
|
11
|
+
fact_value = Facter::Resolvers::Aix::OsLevel.resolve(:build)
|
|
12
12
|
major = fact_value.split('-')[0]
|
|
13
13
|
|
|
14
14
|
[Facter::ResolvedFact.new(FACT_NAME, full: fact_value.strip, major: major),
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Facts
|
|
4
|
+
module Linux
|
|
5
|
+
class Cloud
|
|
6
|
+
FACT_NAME = 'cloud'
|
|
7
|
+
|
|
8
|
+
def call_the_resolver
|
|
9
|
+
cloud_provider = Facter::Resolvers::Cloud.resolve(:cloud_provider)
|
|
10
|
+
|
|
11
|
+
Facter::ResolvedFact.new(FACT_NAME, cloud_provider)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -25,7 +25,7 @@ module Facts
|
|
|
25
25
|
def add_legacy_facts(disks, facts)
|
|
26
26
|
disks.each do |disk_name, disk_info|
|
|
27
27
|
facts.push(Facter::ResolvedFact.new("blockdevice_#{disk_name}_model", disk_info[:model], :legacy))
|
|
28
|
-
facts.push(Facter::ResolvedFact.new("blockdevice_#{disk_name}_size", disk_info[:size_bytes]
|
|
28
|
+
facts.push(Facter::ResolvedFact.new("blockdevice_#{disk_name}_size", disk_info[:size_bytes], :legacy))
|
|
29
29
|
facts.push(Facter::ResolvedFact.new("blockdevice_#{disk_name}_vendor", disk_info[:vendor], :legacy))
|
|
30
30
|
end
|
|
31
31
|
end
|
|
@@ -5,6 +5,10 @@ module Facts
|
|
|
5
5
|
class Ec2Metadata
|
|
6
6
|
FACT_NAME = 'ec2_metadata'
|
|
7
7
|
|
|
8
|
+
def initialize
|
|
9
|
+
@virtual = Facter::VirtualDetector.new
|
|
10
|
+
end
|
|
11
|
+
|
|
8
12
|
def call_the_resolver
|
|
9
13
|
return Facter::ResolvedFact.new(FACT_NAME, nil) unless aws_hypervisors?
|
|
10
14
|
|
|
@@ -16,33 +20,7 @@ module Facts
|
|
|
16
20
|
private
|
|
17
21
|
|
|
18
22
|
def aws_hypervisors?
|
|
19
|
-
virtual
|
|
20
|
-
|
|
21
|
-
virtual == 'kvm' || virtual =~ /xen/
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def check_virt_what
|
|
25
|
-
Facter::Resolvers::VirtWhat.resolve(:vm)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def check_xen
|
|
29
|
-
Facter::Resolvers::Xen.resolve(:vm)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def check_product_name
|
|
33
|
-
product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
|
|
34
|
-
return unless product_name
|
|
35
|
-
|
|
36
|
-
Facter::FactsUtils::HYPERVISORS_HASH.each { |key, value| return value if product_name.include?(key) }
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def check_bios_vendor
|
|
40
|
-
bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
|
|
41
|
-
return 'kvm' if bios_vendor&.include?('Amazon EC2')
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def check_lspci
|
|
45
|
-
Facter::Resolvers::Lspci.resolve(:vm)
|
|
23
|
+
@virtual.platform =~ /kvm|xen|aws/
|
|
46
24
|
end
|
|
47
25
|
end
|
|
48
26
|
end
|
|
@@ -5,6 +5,10 @@ module Facts
|
|
|
5
5
|
class Ec2Userdata
|
|
6
6
|
FACT_NAME = 'ec2_userdata'
|
|
7
7
|
|
|
8
|
+
def initialize
|
|
9
|
+
@virtual = Facter::VirtualDetector.new
|
|
10
|
+
end
|
|
11
|
+
|
|
8
12
|
def call_the_resolver
|
|
9
13
|
return Facter::ResolvedFact.new(FACT_NAME, nil) unless aws_hypervisors?
|
|
10
14
|
|
|
@@ -16,33 +20,7 @@ module Facts
|
|
|
16
20
|
private
|
|
17
21
|
|
|
18
22
|
def aws_hypervisors?
|
|
19
|
-
virtual
|
|
20
|
-
|
|
21
|
-
virtual == 'kvm' || virtual =~ /xen/
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def check_virt_what
|
|
25
|
-
Facter::Resolvers::VirtWhat.resolve(:vm)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def check_xen
|
|
29
|
-
Facter::Resolvers::Xen.resolve(:vm)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def check_product_name
|
|
33
|
-
product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
|
|
34
|
-
return unless product_name
|
|
35
|
-
|
|
36
|
-
Facter::FactsUtils::HYPERVISORS_HASH.each { |key, value| return value if product_name.include?(key) }
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def check_bios_vendor
|
|
40
|
-
bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
|
|
41
|
-
return 'kvm' if bios_vendor&.include?('Amazon EC2')
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def check_lspci
|
|
45
|
-
Facter::Resolvers::Lspci.resolve(:vm)
|
|
23
|
+
@virtual.platform =~ /kvm|xen|aws/
|
|
46
24
|
end
|
|
47
25
|
end
|
|
48
26
|
end
|
|
@@ -5,59 +5,20 @@ module Facts
|
|
|
5
5
|
class IsVirtual
|
|
6
6
|
FACT_NAME = 'is_virtual'
|
|
7
7
|
|
|
8
|
-
def
|
|
9
|
-
|
|
10
|
-
fact_value ||= check_open_vz || check_vserver || check_xen || check_other_facts || check_lspci || 'physical'
|
|
11
|
-
|
|
12
|
-
Facter::ResolvedFact.new(FACT_NAME, check_if_virtual(fact_value))
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def check_gce
|
|
16
|
-
bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
|
|
17
|
-
'gce' if bios_vendor&.include?('Google')
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def check_docker_lxc
|
|
21
|
-
Facter::Resolvers::Containers.resolve(:vm)
|
|
8
|
+
def initialize
|
|
9
|
+
@virtual = Facter::VirtualDetector.new
|
|
22
10
|
end
|
|
23
11
|
|
|
24
|
-
def
|
|
25
|
-
|
|
26
|
-
end
|
|
12
|
+
def call_the_resolver
|
|
13
|
+
fact_value = @virtual.platform
|
|
27
14
|
|
|
28
|
-
|
|
29
|
-
Facter::Resolvers::VirtWhat.resolve(:vm)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def check_open_vz
|
|
33
|
-
Facter::Resolvers::OpenVz.resolve(:vm)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def check_vserver
|
|
37
|
-
Facter::Resolvers::VirtWhat.resolve(:vserver)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def check_xen
|
|
41
|
-
Facter::Resolvers::Xen.resolve(:vm)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def check_other_facts
|
|
45
|
-
product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
|
|
46
|
-
bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
|
|
47
|
-
return 'kvm' if bios_vendor&.include?('Amazon EC2')
|
|
48
|
-
return unless product_name
|
|
49
|
-
|
|
50
|
-
Facter::FactsUtils::HYPERVISORS_HASH.each { |key, value| return value if product_name.include?(key) }
|
|
51
|
-
|
|
52
|
-
nil
|
|
15
|
+
Facter::ResolvedFact.new(FACT_NAME, check_if_virtual(fact_value))
|
|
53
16
|
end
|
|
54
17
|
|
|
55
|
-
|
|
56
|
-
Facter::Resolvers::Lspci.resolve(:vm)
|
|
57
|
-
end
|
|
18
|
+
private
|
|
58
19
|
|
|
59
20
|
def check_if_virtual(found_vm)
|
|
60
|
-
Facter::FactsUtils::PHYSICAL_HYPERVISORS.count(found_vm).zero
|
|
21
|
+
Facter::FactsUtils::PHYSICAL_HYPERVISORS.count(found_vm).zero?.to_s
|
|
61
22
|
end
|
|
62
23
|
end
|
|
63
24
|
end
|
|
@@ -14,7 +14,7 @@ module Facts
|
|
|
14
14
|
mountpoints = Facter::Resolvers::Mountpoints.resolve(:mountpoints)
|
|
15
15
|
return parts unless mountpoints
|
|
16
16
|
|
|
17
|
-
mountpoints.
|
|
17
|
+
mountpoints.reverse_each do |mnt|
|
|
18
18
|
next unless parts[mnt[:device]]
|
|
19
19
|
|
|
20
20
|
parts[mnt[:device]].merge!(mount: mnt[:path])
|
|
@@ -7,71 +7,16 @@ module Facts
|
|
|
7
7
|
|
|
8
8
|
def initialize
|
|
9
9
|
@log = Facter::Log.new(self)
|
|
10
|
+
@virtual = Facter::VirtualDetector.new
|
|
10
11
|
end
|
|
11
12
|
|
|
12
|
-
def call_the_resolver
|
|
13
|
+
def call_the_resolver
|
|
13
14
|
@log.debug('Linux Virtual Resolver')
|
|
14
|
-
|
|
15
|
-
fact_value = check_docker_lxc || check_gce || retrieve_from_virt_what || check_vmware
|
|
16
|
-
fact_value ||= check_open_vz || check_vserver || check_xen || check_other_facts || check_lspci || 'physical'
|
|
17
|
-
|
|
15
|
+
fact_value = @virtual.platform
|
|
18
16
|
@log.debug("Fact value is: #{fact_value}")
|
|
19
17
|
|
|
20
18
|
Facter::ResolvedFact.new(FACT_NAME, fact_value)
|
|
21
19
|
end
|
|
22
|
-
|
|
23
|
-
def check_gce
|
|
24
|
-
@log.debug('Checking GCE')
|
|
25
|
-
bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
|
|
26
|
-
'gce' if bios_vendor&.include?('Google')
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def check_docker_lxc
|
|
30
|
-
@log.debug('Checking Docker and LXC')
|
|
31
|
-
Facter::Resolvers::Containers.resolve(:vm)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def check_vmware
|
|
35
|
-
@log.debug('Checking VMware')
|
|
36
|
-
Facter::Resolvers::Vmware.resolve(:vm)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def retrieve_from_virt_what
|
|
40
|
-
@log.debug('Checking virtual_what')
|
|
41
|
-
Facter::Resolvers::VirtWhat.resolve(:vm)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def check_open_vz
|
|
45
|
-
@log.debug('Checking OpenVZ')
|
|
46
|
-
Facter::Resolvers::OpenVz.resolve(:vm)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def check_vserver
|
|
50
|
-
@log.debug('Checking VServer')
|
|
51
|
-
Facter::Resolvers::VirtWhat.resolve(:vserver)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def check_xen
|
|
55
|
-
@log.debug('Checking XEN')
|
|
56
|
-
Facter::Resolvers::Xen.resolve(:vm)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def check_other_facts
|
|
60
|
-
@log.debug('Checking others')
|
|
61
|
-
product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
|
|
62
|
-
bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
|
|
63
|
-
return 'kvm' if bios_vendor&.include?('Amazon EC2')
|
|
64
|
-
return unless product_name
|
|
65
|
-
|
|
66
|
-
Facter::FactsUtils::HYPERVISORS_HASH.each { |key, value| return value if product_name.include?(key) }
|
|
67
|
-
|
|
68
|
-
nil
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def check_lspci
|
|
72
|
-
@log.debug('Checking lspci')
|
|
73
|
-
Facter::Resolvers::Lspci.resolve(:vm)
|
|
74
|
-
end
|
|
75
20
|
end
|
|
76
21
|
end
|
|
77
22
|
end
|
|
@@ -18,8 +18,8 @@ module Facts
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def determine_release_version
|
|
21
|
-
version = Facter::Resolvers::
|
|
22
|
-
version ||= Facter::Resolvers::
|
|
21
|
+
version = Facter::Resolvers::RedHatRelease.resolve(:version)
|
|
22
|
+
version ||= Facter::Resolvers::OsRelease.resolve(:version_id)
|
|
23
23
|
|
|
24
24
|
return unless version
|
|
25
25
|
|
|
@@ -24,7 +24,7 @@ module Facts
|
|
|
24
24
|
|
|
25
25
|
def add_legacy_facts(disks, facts)
|
|
26
26
|
disks.each do |disk_name, disk_info|
|
|
27
|
-
facts.push(Facter::ResolvedFact.new("blockdevice_#{disk_name}_size", disk_info[:size_bytes]
|
|
27
|
+
facts.push(Facter::ResolvedFact.new("blockdevice_#{disk_name}_size", disk_info[:size_bytes], :legacy))
|
|
28
28
|
facts.push(Facter::ResolvedFact.new("blockdevice_#{disk_name}_vendor", disk_info[:vendor], :legacy))
|
|
29
29
|
end
|
|
30
30
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Facts
|
|
4
|
+
module Ubuntu
|
|
5
|
+
class Lsbdistrelease
|
|
6
|
+
FACT_NAME = 'lsbdistrelease'
|
|
7
|
+
ALIASES = %w[lsbmajdistrelease lsbminordistrelease].freeze
|
|
8
|
+
TYPE = :legacy
|
|
9
|
+
|
|
10
|
+
def call_the_resolver
|
|
11
|
+
fact_value = Facter::Resolvers::LsbRelease.resolve(:release)
|
|
12
|
+
|
|
13
|
+
return Facter::ResolvedFact.new(FACT_NAME, nil, :legacy) unless fact_value
|
|
14
|
+
|
|
15
|
+
version = fact_value.split('.')
|
|
16
|
+
|
|
17
|
+
[Facter::ResolvedFact.new(FACT_NAME, fact_value, :legacy),
|
|
18
|
+
Facter::ResolvedFact.new(ALIASES[0], version[0], :legacy),
|
|
19
|
+
Facter::ResolvedFact.new(ALIASES[1], version[1], :legacy)]
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Facter
|
|
4
|
+
class VirtualDetector
|
|
5
|
+
def initialize
|
|
6
|
+
@log = Facter::Log.new(self)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def platform # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
|
10
|
+
fact_value = check_docker_lxc || check_dmi || check_gce || retrieve_from_virt_what || check_vmware
|
|
11
|
+
fact_value ||= check_open_vz || check_vserver || check_xen || check_other_facts || check_lspci || 'physical'
|
|
12
|
+
|
|
13
|
+
fact_value
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def check_docker_lxc
|
|
17
|
+
@log.debug('Checking Docker and LXC')
|
|
18
|
+
Facter::Resolvers::Containers.resolve(:vm)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def check_dmi
|
|
22
|
+
@log.debug('Checking DMI')
|
|
23
|
+
vendor = Facter::Resolvers::DmiDecode.resolve(:vendor)
|
|
24
|
+
@log.debug("dmi detected vendor: #{vendor}")
|
|
25
|
+
return 'aws' if vendor =~ /Amazon/
|
|
26
|
+
|
|
27
|
+
'xen' if vendor =~ /Xen/
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def check_gce
|
|
31
|
+
@log.debug('Checking GCE')
|
|
32
|
+
bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
|
|
33
|
+
'gce' if bios_vendor&.include?('Google')
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def check_vmware
|
|
37
|
+
@log.debug('Checking VMware')
|
|
38
|
+
Facter::Resolvers::Vmware.resolve(:vm)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def retrieve_from_virt_what
|
|
42
|
+
@log.debug('Checking virtual_what')
|
|
43
|
+
Facter::Resolvers::VirtWhat.resolve(:vm)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def check_open_vz
|
|
47
|
+
@log.debug('Checking OpenVZ')
|
|
48
|
+
Facter::Resolvers::OpenVz.resolve(:vm)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def check_vserver
|
|
52
|
+
@log.debug('Checking VServer')
|
|
53
|
+
Facter::Resolvers::VirtWhat.resolve(:vserver)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def check_xen
|
|
57
|
+
@log.debug('Checking XEN')
|
|
58
|
+
Facter::Resolvers::Xen.resolve(:vm)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def check_other_facts
|
|
62
|
+
@log.debug('Checking others')
|
|
63
|
+
product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
|
|
64
|
+
bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
|
|
65
|
+
return 'kvm' if bios_vendor&.include?('Amazon EC2')
|
|
66
|
+
return unless product_name
|
|
67
|
+
|
|
68
|
+
Facter::FactsUtils::HYPERVISORS_HASH.each { |key, value| return value if product_name.include?(key) }
|
|
69
|
+
|
|
70
|
+
nil
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def check_lspci
|
|
74
|
+
@log.debug('Checking lspci')
|
|
75
|
+
Facter::Resolvers::Lspci.resolve(:vm)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'benchmark'
|
|
4
|
+
|
|
5
|
+
module Facter
|
|
6
|
+
module Framework
|
|
7
|
+
module Benchmarking
|
|
8
|
+
class Timer
|
|
9
|
+
class << self
|
|
10
|
+
def measure(fact_name)
|
|
11
|
+
if Options[:timing]
|
|
12
|
+
time = Benchmark.measure { yield }
|
|
13
|
+
|
|
14
|
+
puts "fact `#{fact_name}`, took: #{time.format('%r')} seconds"
|
|
15
|
+
else
|
|
16
|
+
yield
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|