facter 4.0.36 → 4.0.41
Sign up to get free protection for your applications and to get access to all the features.
- 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
|