facter 4.0.47 → 4.0.52
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/lib/docs/generate_cli.rb +7 -0
- data/lib/facter.rb +76 -43
- data/lib/facter/config.rb +21 -9
- data/lib/facter/custom_facts/core/aggregate.rb +16 -0
- data/lib/facter/custom_facts/core/execution/base.rb +3 -2
- data/lib/facter/custom_facts/core/execution/popen3.rb +47 -0
- data/lib/facter/custom_facts/core/resolvable.rb +11 -0
- data/lib/facter/custom_facts/util/fact.rb +22 -3
- data/lib/facter/custom_facts/util/resolution.rb +3 -1
- data/lib/facter/facts/aix/disks.rb +1 -1
- data/lib/facter/facts/aix/ssh.rb +1 -1
- data/lib/facter/facts/aix/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/aix/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/alpine/os/release.rb +29 -0
- data/lib/facter/facts/amzn/lsbdistcodename.rb +16 -0
- data/lib/facter/facts/amzn/lsbdistdescription.rb +16 -0
- data/lib/facter/facts/amzn/lsbdistid.rb +16 -0
- data/lib/facter/facts/amzn/os/distro/codename.rb +24 -0
- data/lib/facter/facts/amzn/os/distro/description.rb +21 -0
- data/lib/facter/facts/amzn/os/distro/id.rb +21 -0
- data/lib/facter/facts/amzn/os/distro/release.rb +32 -0
- data/lib/facter/facts/amzn/os/release.rb +29 -0
- data/lib/facter/facts/devuan/os/distro/release.rb +36 -0
- data/lib/facter/facts/devuan/os/release.rb +29 -0
- data/lib/facter/facts/freebsd/ssh.rb +1 -1
- data/lib/facter/facts/freebsd/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/freebsd/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/gentoo/os/release.rb +29 -0
- data/lib/facter/facts/linux/az_metadata.rb +27 -0
- data/lib/facter/facts/linux/cloud/provider.rb +17 -0
- data/lib/facter/facts/linux/dhcp_servers.rb +2 -2
- data/lib/facter/facts/linux/disks.rb +1 -1
- data/lib/facter/facts/linux/interfaces.rb +1 -1
- data/lib/facter/facts/linux/ipaddress6_interfaces.rb +1 -1
- data/lib/facter/facts/linux/ipaddress_interfaces.rb +1 -1
- data/lib/facter/facts/linux/macaddress_interfaces.rb +1 -1
- data/lib/facter/facts/linux/mtu_interfaces.rb +1 -1
- data/lib/facter/facts/linux/netmask6_interfaces.rb +1 -1
- data/lib/facter/facts/linux/netmask_interfaces.rb +1 -1
- data/lib/facter/facts/linux/network6_interfaces.rb +1 -1
- data/lib/facter/facts/linux/network_interfaces.rb +1 -1
- data/lib/facter/facts/linux/networking/dhcp.rb +1 -1
- data/lib/facter/facts/linux/networking/domain.rb +1 -1
- data/lib/facter/facts/linux/networking/fqdn.rb +1 -1
- data/lib/facter/facts/linux/networking/hostname.rb +1 -1
- data/lib/facter/facts/linux/networking/interfaces.rb +1 -1
- data/lib/facter/facts/linux/networking/ip.rb +1 -1
- data/lib/facter/facts/linux/networking/ip6.rb +1 -1
- data/lib/facter/facts/linux/networking/mac.rb +1 -1
- data/lib/facter/facts/linux/networking/mtu.rb +1 -1
- data/lib/facter/facts/linux/networking/netmask.rb +1 -1
- data/lib/facter/facts/linux/networking/netmask6.rb +1 -1
- data/lib/facter/facts/linux/networking/network.rb +1 -1
- data/lib/facter/facts/linux/networking/network6.rb +1 -1
- data/lib/facter/facts/linux/networking/primary.rb +1 -1
- data/lib/facter/facts/linux/networking/scope6.rb +1 -1
- data/lib/facter/facts/linux/os/family.rb +4 -2
- data/lib/facter/facts/linux/scope6_interfaces.rb +1 -1
- data/lib/facter/facts/linux/ssh.rb +1 -1
- data/lib/facter/facts/linux/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/linux/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/linuxmint/os/name.rb +18 -0
- data/lib/facter/facts/linuxmint/os/release.rb +35 -0
- data/lib/facter/facts/macosx/ssh.rb +1 -1
- data/lib/facter/facts/macosx/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/macosx/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/mageia/os/release.rb +36 -0
- data/lib/facter/facts/meego/os/release.rb +29 -0
- data/lib/facter/facts/oel/os/release.rb +29 -0
- data/lib/facter/facts/ol/os/release.rb +29 -0
- data/lib/facter/facts/openwrt/os/release.rb +35 -0
- data/lib/facter/facts/ovs/os/release.rb +29 -0
- data/lib/facter/facts/photon/os/release.rb +45 -0
- data/lib/facter/facts/rhel/lsbdistcodename.rb +16 -0
- data/lib/facter/facts/rhel/lsbdistdescription.rb +16 -0
- data/lib/facter/facts/rhel/lsbdistid.rb +16 -0
- data/lib/facter/facts/rhel/os/distro/codename.rb +2 -4
- data/lib/facter/facts/rhel/os/distro/description.rb +2 -4
- data/lib/facter/facts/rhel/os/distro/id.rb +2 -4
- data/lib/facter/facts/rhel/os/distro/release.rb +13 -12
- data/lib/facter/facts/rhel/os/release.rb +1 -8
- data/lib/facter/facts/slackware/os/release.rb +35 -0
- data/lib/facter/facts/sles/lsbdistcodename.rb +16 -0
- data/lib/facter/facts/sles/lsbdistdescription.rb +16 -0
- data/lib/facter/facts/sles/lsbdistid.rb +16 -0
- data/lib/facter/facts/sles/os/distro/codename.rb +3 -4
- data/lib/facter/facts/sles/os/distro/description.rb +2 -5
- data/lib/facter/facts/sles/os/distro/id.rb +6 -5
- data/lib/facter/facts/sles/os/distro/release.rb +17 -12
- data/lib/facter/facts/solaris/disks.rb +1 -1
- data/lib/facter/facts/solaris/ssh.rb +1 -1
- data/lib/facter/facts/solaris/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/solaris/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/ubuntu/lsbdistrelease.rb +2 -2
- data/lib/facter/facts/windows/az_metadata.rb +27 -0
- data/lib/facter/facts/windows/cloud/provider.rb +17 -0
- data/lib/facter/facts/windows/networking/fqdn.rb +1 -1
- data/lib/facter/framework/cli/cli.rb +6 -8
- data/lib/facter/framework/config/config_reader.rb +9 -0
- data/lib/facter/framework/config/fact_groups.rb +28 -2
- data/lib/facter/framework/core/cache_manager.rb +5 -1
- data/lib/facter/framework/core/fact_filter.rb +3 -3
- data/lib/facter/framework/core/fact_loaders/external_fact_loader.rb +0 -4
- data/lib/facter/framework/core/fact_loaders/fact_loader.rb +2 -1
- data/lib/facter/framework/core/fact_manager.rb +5 -3
- data/lib/facter/framework/core/options.rb +1 -2
- data/lib/facter/framework/core/options/option_store.rb +11 -5
- data/lib/facter/framework/detector/os_detector.rb +8 -0
- data/lib/facter/framework/logging/logger.rb +4 -4
- data/lib/facter/framework/parsers/query_parser.rb +13 -6
- data/lib/facter/resolvers/aio_agent_version.rb +1 -1
- data/lib/facter/resolvers/aix/{architecture_resolver.rb → architecture.rb} +1 -1
- data/lib/facter/resolvers/aix/disks.rb +1 -1
- data/lib/facter/resolvers/aix/ffi/ffi.rb +63 -0
- data/lib/facter/resolvers/aix/ffi/ffi_helper.rb +146 -20
- data/lib/facter/resolvers/aix/ffi/structs.rb +69 -0
- data/lib/facter/resolvers/aix/{filesystem_resolver.rb → filesystem.rb} +1 -1
- data/lib/facter/resolvers/aix/{hardware_resolver.rb → hardware.rb} +1 -1
- data/lib/facter/resolvers/aix/{load_averages_resolver.rb → load_averages.rb} +2 -2
- data/lib/facter/resolvers/aix/memory.rb +1 -1
- data/lib/facter/resolvers/aix/mountpoints.rb +1 -1
- data/lib/facter/resolvers/aix/{networking_resolver.rb → networking.rb} +9 -16
- data/lib/facter/resolvers/aix/nim.rb +1 -1
- data/lib/facter/resolvers/aix/os_level.rb +1 -1
- data/lib/facter/resolvers/aix/partitions.rb +1 -1
- data/lib/facter/resolvers/aix/processors.rb +1 -1
- data/lib/facter/resolvers/aix/serialnumber.rb +1 -1
- data/lib/facter/resolvers/{augeas_resolver.rb → augeas.rb} +1 -1
- data/lib/facter/resolvers/az.rb +39 -0
- data/lib/facter/resolvers/base_resolver.rb +4 -4
- data/lib/facter/resolvers/bsd/processors.rb +1 -1
- data/lib/facter/resolvers/containers.rb +1 -1
- data/lib/facter/resolvers/debian_version.rb +1 -1
- data/lib/facter/resolvers/{disk_resolver.rb → disk.rb} +1 -1
- data/lib/facter/resolvers/{dmi_resolver.rb → dmi.rb} +1 -1
- data/lib/facter/resolvers/dmi_decode.rb +1 -1
- data/lib/facter/resolvers/ec2.rb +1 -1
- data/lib/facter/resolvers/{eos_release_resolver.rb → eos_release.rb} +1 -1
- data/lib/facter/resolvers/{facterversion_resolver.rb → facterversion.rb} +1 -1
- data/lib/facter/resolvers/{filesystems_resolver.rb → filesystems.rb} +1 -1
- data/lib/facter/resolvers/{fips_enabled_resolver.rb → fips_enabled.rb} +1 -1
- data/lib/facter/resolvers/freebsd/{dmi_resolver.rb → dmi.rb} +1 -1
- data/lib/facter/resolvers/freebsd/{freebsd_version_resolver.rb → freebsd_version.rb} +1 -1
- data/lib/facter/resolvers/freebsd/{geom_resolver.rb → geom.rb} +1 -1
- data/lib/facter/resolvers/freebsd/processors.rb +1 -1
- data/lib/facter/resolvers/freebsd/{swap_memory_resolver.rb → swap_memory.rb} +1 -1
- data/lib/facter/resolvers/freebsd/{system_memory_resolver.rb → system_memory.rb} +1 -1
- data/lib/facter/resolvers/freebsd/{virtual_resolver.rb → virtual.rb} +1 -1
- data/lib/facter/resolvers/gce.rb +1 -1
- data/lib/facter/resolvers/{hostname_resolver.rb → hostname.rb} +1 -1
- data/lib/facter/resolvers/{identity_resolver.rb → identity.rb} +1 -1
- data/lib/facter/resolvers/linux/docker_uptime.rb +1 -1
- data/lib/facter/resolvers/linux/hostname.rb +115 -0
- data/lib/facter/resolvers/linux/load_averages.rb +1 -1
- data/lib/facter/resolvers/linux/networking.rb +106 -0
- data/lib/facter/resolvers/load_averages.rb +1 -1
- data/lib/facter/resolvers/{lpar_resolver.rb → lpar.rb} +1 -1
- data/lib/facter/resolvers/{lsb_release_resolver.rb → lsb_release.rb} +1 -1
- data/lib/facter/resolvers/lspci.rb +1 -1
- data/lib/facter/resolvers/macosx/{dmi_resolver.rb → dmi.rb} +1 -1
- data/lib/facter/resolvers/macosx/{filesystems_resolver.rb → filesystems.rb} +1 -1
- data/lib/facter/resolvers/macosx/{load_averages_resolver.rb → load_averages.rb} +1 -1
- data/lib/facter/resolvers/macosx/{mountpoints_resolver.rb → mountpoints.rb} +1 -1
- data/lib/facter/resolvers/macosx/{processor_resolver.rb → processor.rb} +1 -1
- data/lib/facter/resolvers/macosx/{swap_memory_resolver.rb → swap_memory.rb} +1 -1
- data/lib/facter/resolvers/macosx/{system_memory_resolver.rb → system_memory.rb} +1 -1
- data/lib/facter/resolvers/macosx/{system_profiler_resolver.rb → system_profiler.rb} +1 -1
- data/lib/facter/resolvers/{memory_resolver.rb → memory.rb} +1 -1
- data/lib/facter/resolvers/{mountpoints_resolver.rb → mountpoints.rb} +1 -1
- data/lib/facter/resolvers/{networking_resolver.rb → networking.rb} +1 -1
- data/lib/facter/resolvers/open_vz.rb +1 -1
- data/lib/facter/resolvers/{os_release_resolver.rb → os_release.rb} +1 -1
- data/lib/facter/resolvers/partitions.rb +1 -1
- data/lib/facter/resolvers/{path_resolver.rb → path.rb} +1 -1
- data/lib/facter/resolvers/{processors_resolver.rb → processors.rb} +1 -1
- data/lib/facter/resolvers/redhat_release.rb +71 -0
- data/lib/facter/resolvers/release_from_first_line.rb +41 -0
- data/lib/facter/resolvers/{ruby_resolver.rb → ruby.rb} +1 -1
- data/lib/facter/resolvers/{selinux_resolver.rb → selinux.rb} +1 -1
- data/lib/facter/resolvers/solaris/disks.rb +1 -1
- data/lib/facter/resolvers/solaris/dmi.rb +1 -1
- data/lib/facter/resolvers/solaris/dmi_sparc.rb +1 -1
- data/lib/facter/resolvers/solaris/ffi/functions.rb +1 -1
- data/lib/facter/resolvers/solaris/filesystems.rb +1 -1
- data/lib/facter/resolvers/solaris/ipaddress.rb +1 -1
- data/lib/facter/resolvers/solaris/ldom.rb +1 -1
- data/lib/facter/resolvers/solaris/memory.rb +1 -1
- data/lib/facter/resolvers/solaris/mountpoints.rb +1 -1
- data/lib/facter/resolvers/solaris/networking.rb +1 -1
- data/lib/facter/resolvers/solaris/os_release.rb +1 -1
- data/lib/facter/resolvers/solaris/processors.rb +1 -1
- data/lib/facter/resolvers/solaris/zone.rb +1 -1
- data/lib/facter/resolvers/solaris/zone_name.rb +1 -1
- data/lib/facter/resolvers/specific_release_file.rb +35 -0
- data/lib/facter/resolvers/{ssh_resolver.rb → ssh.rb} +2 -2
- data/lib/facter/resolvers/{suse_release_resolver.rb → suse_release.rb} +1 -1
- data/lib/facter/resolvers/{sw_vers_resolver.rb → sw_vers.rb} +1 -1
- data/lib/facter/resolvers/{timezone_resolver.rb → timezone.rb} +1 -1
- data/lib/facter/resolvers/{uname_resolver.rb → uname.rb} +1 -1
- data/lib/facter/resolvers/{uptime_resolver.rb → uptime.rb} +1 -1
- data/lib/facter/resolvers/virt_what.rb +1 -1
- data/lib/facter/resolvers/vmware.rb +1 -1
- data/lib/facter/resolvers/windows/aio_agent_version.rb +1 -1
- data/lib/facter/resolvers/windows/{dmi_bios_resolver.rb → dmi_bios.rb} +1 -1
- data/lib/facter/resolvers/windows/{dmi_computersystem_resolver.rb → dmi_computersystem.rb} +1 -1
- data/lib/facter/resolvers/windows/ffi/network_utils.rb +1 -2
- data/lib/facter/resolvers/windows/{fips_resolver.rb → fips.rb} +1 -1
- data/lib/facter/resolvers/windows/{hardware_architecture_resolver.rb → hardware_architecture.rb} +1 -1
- data/lib/facter/resolvers/windows/{identity_resolver.rb → identity.rb} +1 -1
- data/lib/facter/resolvers/windows/{kernel_resolver.rb → kernel.rb} +1 -1
- data/lib/facter/resolvers/windows/{memory_resolver.rb → memory.rb} +1 -1
- data/lib/facter/resolvers/windows/{netkvm_resolver.rb → netkvm.rb} +1 -1
- data/lib/facter/resolvers/windows/{networking_resolver.rb → networking.rb} +19 -2
- data/lib/facter/resolvers/windows/{processors_resolver.rb → processors.rb} +1 -1
- data/lib/facter/resolvers/windows/{product_release_resolver.rb → product_release.rb} +1 -1
- data/lib/facter/resolvers/windows/ssh.rb +1 -1
- data/lib/facter/resolvers/windows/{system32_resolver.rb → system32.rb} +1 -1
- data/lib/facter/resolvers/windows/{uptime_resolver.rb → uptime.rb} +1 -1
- data/lib/facter/resolvers/windows/{virtualization_resolver.rb → virtualization.rb} +1 -1
- data/lib/facter/resolvers/windows/{win_os_description_resolver.rb → win_os_description.rb} +1 -1
- data/lib/facter/resolvers/{wpar_resolver.rb → wpar.rb} +1 -1
- data/lib/facter/resolvers/xen.rb +1 -1
- data/lib/facter/resolvers/zfs.rb +1 -1
- data/lib/facter/resolvers/zpool.rb +1 -1
- data/lib/facter/templates/man.erb +8 -0
- data/lib/facter/util/facts/facts_utils.rb +33 -0
- data/lib/facter/util/facts/unit_converter.rb +11 -4
- data/lib/facter/util/linux/dhcp.rb +86 -0
- data/lib/facter/util/linux/routing_table.rb +60 -0
- data/lib/facter/util/linux/socket_parser.rb +114 -0
- data/lib/facter/util/resolvers/ffi/hostname.rb +70 -0
- data/lib/facter/util/utils.rb +0 -4
- data/lib/facter/version.rb +1 -1
- metadata +124 -83
- data/lib/facter/facts/linux/cloud.rb +0 -15
- data/lib/facter/resolvers/cloud.rb +0 -39
- data/lib/facter/resolvers/networking_linux_resolver.rb +0 -258
- data/lib/facter/resolvers/redhat_release_resolver.rb +0 -55
- data/lib/facter/util/resolvers/networking.rb +0 -90
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 778d4d972d3e950f98d4fd8dbd4100e7b2a0c168369949b234d7088ddeba539f
|
|
4
|
+
data.tar.gz: 50303cfdfcf434c38d3d9539c35362f190dd84b82a8f85227d804a876b5a4ce3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 38f84ef3e3699e3bed3b348ae07562f9423121011659ef9ebac4395a157eb06bd110a64e7481f82331e8f65e908936df826c630f57f879ba79686bee0878ac5a
|
|
7
|
+
data.tar.gz: bf2a8b2d1d1e23a0d0ba22f21d2b8e228bc238f2eededc1ab4474dff9e0d5f13094ec2c5990f24916a563b28fd75bfa2d745bd728d2f6cda9b31283116d9df34
|
data/lib/facter.rb
CHANGED
|
@@ -27,21 +27,51 @@ module Facter
|
|
|
27
27
|
require 'facter/framework/cli/cli_launcher'
|
|
28
28
|
|
|
29
29
|
args = args_as_string.split(' ')
|
|
30
|
-
|
|
31
30
|
Facter::OptionsValidator.validate(args)
|
|
32
31
|
processed_arguments = CliLauncher.prepare_arguments(args, nil)
|
|
33
|
-
|
|
34
32
|
cli = Facter::Cli.new([], processed_arguments)
|
|
33
|
+
cli_options = cli.options.dup
|
|
34
|
+
|
|
35
|
+
# config file options
|
|
36
|
+
config_file = cli_options.delete(:config)
|
|
37
|
+
if config_file
|
|
38
|
+
Facter::OptionStore.set(:config, config_file)
|
|
39
|
+
Facter::ConfigFileOptions.init(config_file)
|
|
40
|
+
Facter::Options.store(ConfigFileOptions.get)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# user provided options
|
|
44
|
+
cli_options[:show_legacy] ||= false
|
|
45
|
+
Facter::Options.store(cli_options)
|
|
46
|
+
|
|
47
|
+
queried_facts(cli.args)
|
|
48
|
+
end
|
|
35
49
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
50
|
+
# Method used by cli to set puppet paths
|
|
51
|
+
# in order to retrieve puppet custom and external facts
|
|
52
|
+
#
|
|
53
|
+
# @return nil
|
|
54
|
+
#
|
|
55
|
+
# @api private
|
|
56
|
+
def puppet_facts
|
|
57
|
+
require 'puppet'
|
|
58
|
+
|
|
59
|
+
# don't allow puppet logger to be injected in Facter
|
|
60
|
+
Options[:allow_external_loggers] = false
|
|
61
|
+
|
|
62
|
+
Puppet.initialize_settings
|
|
63
|
+
$LOAD_PATH << Puppet[:libdir] unless $LOAD_PATH.include?(Puppet[:libdir])
|
|
64
|
+
Facter.reset
|
|
65
|
+
Facter.search_external([Puppet[:pluginfactdest]])
|
|
66
|
+
if Puppet.respond_to? :initialize_facts
|
|
67
|
+
Puppet.initialize_facts
|
|
42
68
|
else
|
|
43
|
-
|
|
69
|
+
Facter.add(:puppetversion) do
|
|
70
|
+
setcode { Puppet.version.to_s }
|
|
71
|
+
end
|
|
44
72
|
end
|
|
73
|
+
rescue LoadError => e
|
|
74
|
+
logger.error("Could not load puppet gem, got #{e}")
|
|
45
75
|
end
|
|
46
76
|
|
|
47
77
|
# Alias method for Facter.fact()
|
|
@@ -89,10 +119,10 @@ module Facter
|
|
|
89
119
|
nil
|
|
90
120
|
end
|
|
91
121
|
|
|
92
|
-
#
|
|
93
|
-
#
|
|
122
|
+
# Retrieves the value of a core fact. External or custom facts are
|
|
123
|
+
# not returned with this call. Returns `nil` if no such fact exists.
|
|
94
124
|
#
|
|
95
|
-
# @return [FactCollection] hash with fact names and values
|
|
125
|
+
# @return [FactCollection] A hash with fact names and values
|
|
96
126
|
#
|
|
97
127
|
# @api private
|
|
98
128
|
def core_value(user_query)
|
|
@@ -177,14 +207,29 @@ module Facter
|
|
|
177
207
|
Facter::Options[:debug] = debug_bool
|
|
178
208
|
end
|
|
179
209
|
|
|
210
|
+
# Enable sequential resolving of facts
|
|
211
|
+
#
|
|
212
|
+
# @return [bool]
|
|
213
|
+
#
|
|
214
|
+
# @api public
|
|
180
215
|
def enable_sequential
|
|
181
216
|
Facter::Options[:sequential] = true
|
|
182
217
|
end
|
|
183
218
|
|
|
219
|
+
# Disable sequential resolving of facts
|
|
220
|
+
#
|
|
221
|
+
# @return [bool]
|
|
222
|
+
#
|
|
223
|
+
# @api public
|
|
184
224
|
def disable_sequential
|
|
185
225
|
Facter::Options[:sequential] = false
|
|
186
226
|
end
|
|
187
227
|
|
|
228
|
+
# Check if facts are resolved sequentially or not
|
|
229
|
+
#
|
|
230
|
+
# @return [bool]
|
|
231
|
+
#
|
|
232
|
+
# @api public
|
|
188
233
|
def sequential?
|
|
189
234
|
Facter::Options[:sequential]
|
|
190
235
|
end
|
|
@@ -322,10 +367,10 @@ module Facter
|
|
|
322
367
|
Options.custom_dir
|
|
323
368
|
end
|
|
324
369
|
|
|
325
|
-
#
|
|
326
|
-
# The hash contains core facts, legacy facts, custom facts and external facts (all facts that can be resolved).
|
|
370
|
+
# Retrieves a fact's value. Returns `nil` if no such fact exists.
|
|
327
371
|
#
|
|
328
|
-
# @
|
|
372
|
+
# @param user_query [String] the fact name
|
|
373
|
+
# @return [String] the value of the fact, or nil if no fact is found
|
|
329
374
|
#
|
|
330
375
|
# @api public
|
|
331
376
|
def to_hash
|
|
@@ -369,30 +414,6 @@ module Facter
|
|
|
369
414
|
@already_searched[user_query]&.value
|
|
370
415
|
end
|
|
371
416
|
|
|
372
|
-
# Gets the values for multiple facts.
|
|
373
|
-
#
|
|
374
|
-
# @param options [Hash] parameters for the fact - attributes
|
|
375
|
-
# of {Facter::Util::Fact} and {Facter::Util::Resolution} can be
|
|
376
|
-
# supplied here
|
|
377
|
-
# @param user_queries [Array] the fact names
|
|
378
|
-
#
|
|
379
|
-
# @return [FactCollection] hash with fact names and values
|
|
380
|
-
#
|
|
381
|
-
# @api public
|
|
382
|
-
def values(options, user_queries)
|
|
383
|
-
init_cli_options(options, user_queries)
|
|
384
|
-
Options[:show_legacy] = true
|
|
385
|
-
log_blocked_facts
|
|
386
|
-
resolved_facts = Facter::FactManager.instance.resolve_facts(user_queries)
|
|
387
|
-
resolved_facts.reject! { |fact| fact.type == :custom && fact.value.nil? }
|
|
388
|
-
|
|
389
|
-
if user_queries.count.zero?
|
|
390
|
-
Facter::FactCollection.new.build_fact_collection!(resolved_facts)
|
|
391
|
-
else
|
|
392
|
-
FormatterHelper.retrieve_facts_to_display_for_user_query(user_queries, resolved_facts)
|
|
393
|
-
end
|
|
394
|
-
end
|
|
395
|
-
|
|
396
417
|
# Returns Facter version
|
|
397
418
|
#
|
|
398
419
|
# @return [String] Current version
|
|
@@ -408,7 +429,7 @@ module Facter
|
|
|
408
429
|
#
|
|
409
430
|
# @api private
|
|
410
431
|
def to_user_output(cli_options, *args)
|
|
411
|
-
init_cli_options(cli_options
|
|
432
|
+
init_cli_options(cli_options)
|
|
412
433
|
logger.info("executed with command line: #{ARGV.drop(1).join(' ')}")
|
|
413
434
|
logger.debug("Facter version: #{Facter::VERSION}")
|
|
414
435
|
log_blocked_facts
|
|
@@ -434,7 +455,7 @@ module Facter
|
|
|
434
455
|
nil
|
|
435
456
|
end
|
|
436
457
|
|
|
437
|
-
# Returns a list with the names of all
|
|
458
|
+
# Returns a list with the names of all resolved facts
|
|
438
459
|
# @return [Array] the list with all the fact names
|
|
439
460
|
#
|
|
440
461
|
# @api public
|
|
@@ -470,6 +491,18 @@ module Facter
|
|
|
470
491
|
|
|
471
492
|
private
|
|
472
493
|
|
|
494
|
+
def queried_facts(user_query)
|
|
495
|
+
log_blocked_facts
|
|
496
|
+
resolved_facts = Facter::FactManager.instance.resolve_facts(user_query)
|
|
497
|
+
resolved_facts.reject! { |fact| fact.type == :custom && fact.value.nil? }
|
|
498
|
+
|
|
499
|
+
if user_query.count.zero?
|
|
500
|
+
Facter::FactCollection.new.build_fact_collection!(resolved_facts)
|
|
501
|
+
else
|
|
502
|
+
FormatterHelper.retrieve_facts_to_display_for_user_query(user_query, resolved_facts)
|
|
503
|
+
end
|
|
504
|
+
end
|
|
505
|
+
|
|
473
506
|
def resolve_facts_for_user_query(user_query)
|
|
474
507
|
resolved_facts = Facter::FactManager.instance.resolve_facts(user_query)
|
|
475
508
|
user_querie = resolved_facts.uniq(&:user_query).map(&:user_query).first
|
|
@@ -496,9 +529,9 @@ module Facter
|
|
|
496
529
|
@logger ||= Log.new(self)
|
|
497
530
|
end
|
|
498
531
|
|
|
499
|
-
def init_cli_options(options
|
|
532
|
+
def init_cli_options(options)
|
|
500
533
|
options = options.map { |(k, v)| [k.to_sym, v] }.to_h
|
|
501
|
-
Facter::Options.init_from_cli(options
|
|
534
|
+
Facter::Options.init_from_cli(options)
|
|
502
535
|
end
|
|
503
536
|
|
|
504
537
|
def add_fact_to_searched_facts(user_query, value)
|
data/lib/facter/config.rb
CHANGED
|
@@ -7,10 +7,13 @@ module Facter
|
|
|
7
7
|
{
|
|
8
8
|
'Linux' => [
|
|
9
9
|
{
|
|
10
|
-
'Debian' =>
|
|
11
|
-
Elementary
|
|
12
|
-
Ubuntu
|
|
13
|
-
|
|
10
|
+
'Debian' => [
|
|
11
|
+
'Elementary',
|
|
12
|
+
{ 'Ubuntu' => [
|
|
13
|
+
'Linuxmint'
|
|
14
|
+
] },
|
|
15
|
+
'Raspbian',
|
|
16
|
+
'Devuan'
|
|
14
17
|
]
|
|
15
18
|
},
|
|
16
19
|
{
|
|
@@ -20,13 +23,23 @@ module Facter
|
|
|
20
23
|
Centos
|
|
21
24
|
Ol
|
|
22
25
|
Scientific
|
|
26
|
+
Meego
|
|
27
|
+
Oel
|
|
28
|
+
Ovs
|
|
23
29
|
]
|
|
24
30
|
},
|
|
25
31
|
{
|
|
26
|
-
'Sles' => [
|
|
27
|
-
|
|
32
|
+
'Sles' => %w[
|
|
33
|
+
Opensuse
|
|
34
|
+
Sled
|
|
28
35
|
]
|
|
29
|
-
}
|
|
36
|
+
},
|
|
37
|
+
'Gentoo',
|
|
38
|
+
'Alpine',
|
|
39
|
+
'Photon',
|
|
40
|
+
'Slackware',
|
|
41
|
+
'Mageia',
|
|
42
|
+
'Openwrt'
|
|
30
43
|
]
|
|
31
44
|
},
|
|
32
45
|
{
|
|
@@ -312,8 +325,7 @@ module Facter
|
|
|
312
325
|
'operatingsystemrelease',
|
|
313
326
|
'osfamily',
|
|
314
327
|
'physicalprocessorcount',
|
|
315
|
-
'processor
|
|
316
|
-
'processor*',
|
|
328
|
+
'processor[0-9]+.*',
|
|
317
329
|
'processorcount',
|
|
318
330
|
'productname',
|
|
319
331
|
'rubyplatform',
|
|
@@ -24,6 +24,13 @@ module Facter
|
|
|
24
24
|
# @api public
|
|
25
25
|
attr_reader :name
|
|
26
26
|
|
|
27
|
+
# @!attribute [r] fact_type
|
|
28
|
+
#
|
|
29
|
+
# @return [Symbol] The fact type of the aggregate resolution
|
|
30
|
+
#
|
|
31
|
+
# @api private
|
|
32
|
+
attr_reader :fact_type
|
|
33
|
+
|
|
27
34
|
# @!attribute [r] deps
|
|
28
35
|
#
|
|
29
36
|
# @return [LegacyFacter::Core::DirectedGraph]
|
|
@@ -46,6 +53,15 @@ module Facter
|
|
|
46
53
|
# @api private
|
|
47
54
|
attr_reader :fact
|
|
48
55
|
|
|
56
|
+
# Create a new aggregated resolution mechanism.
|
|
57
|
+
#
|
|
58
|
+
# @param name [String] The name of the resolution.
|
|
59
|
+
# @param fact [Facter::Fact] The fact to which this
|
|
60
|
+
# resolution will be added.
|
|
61
|
+
#
|
|
62
|
+
# @return [Facter::Util::Resolution] The created resolution
|
|
63
|
+
#
|
|
64
|
+
# @api private
|
|
49
65
|
def initialize(name, fact)
|
|
50
66
|
@name = name
|
|
51
67
|
@fact = fact
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative 'popen3'
|
|
4
|
+
|
|
3
5
|
module Facter
|
|
4
6
|
module Core
|
|
5
7
|
module Execution
|
|
@@ -70,8 +72,7 @@ module Facter
|
|
|
70
72
|
opts = { 'LC_ALL' => 'C', 'LANG' => 'C' }
|
|
71
73
|
require 'timeout'
|
|
72
74
|
@log.debug("Executing command: #{command}")
|
|
73
|
-
out, stderr =
|
|
74
|
-
pid = wait_thr.pid
|
|
75
|
+
out, stderr = Popen3.popen3e(opts, command.to_s) do |_, stdout, stderr, pid|
|
|
75
76
|
stdout_messages = +''
|
|
76
77
|
stderr_messages = +''
|
|
77
78
|
out_reader = Thread.new { stdout.read }
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
# Because Open3 uses Process.detach the env $? is not set so
|
|
5
|
+
# this class reimplements Open3.popen3 with Process.wait instead.
|
|
6
|
+
# [FACT-2934] When calling Facter::Core::Execution, $? and $CHILD_STATUS
|
|
7
|
+
# ruby env variables should be set.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
module Facter
|
|
11
|
+
module Core
|
|
12
|
+
module Execution
|
|
13
|
+
class Popen3
|
|
14
|
+
def self.popen_rune(cmd, opts, child_io, parent_io) # :nodoc:
|
|
15
|
+
pid = spawn(*cmd, opts)
|
|
16
|
+
child_io.each(&:close)
|
|
17
|
+
result = [*parent_io, pid]
|
|
18
|
+
if defined? yield
|
|
19
|
+
begin
|
|
20
|
+
return yield(*result)
|
|
21
|
+
ensure
|
|
22
|
+
parent_io.each(&:close)
|
|
23
|
+
Process.wait(pid)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
result
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.popen3e(*cmd, &block)
|
|
30
|
+
opts = if cmd.last.is_a? Hash
|
|
31
|
+
cmd.pop.dup
|
|
32
|
+
else
|
|
33
|
+
{}
|
|
34
|
+
end
|
|
35
|
+
in_r, in_w = IO.pipe
|
|
36
|
+
opts[:in] = in_r
|
|
37
|
+
in_w.sync = true
|
|
38
|
+
out_r, out_w = IO.pipe
|
|
39
|
+
opts[:out] = out_w
|
|
40
|
+
err_r, err_w = IO.pipe
|
|
41
|
+
opts[:err] = err_w
|
|
42
|
+
popen_rune(cmd, opts, [in_r, out_w, err_w], [in_w, out_r, err_r], &block)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -59,6 +59,17 @@ module LegacyFacter
|
|
|
59
59
|
@on_flush_block&.call
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
+
# Resolves the fact's value or loggs an error if the value
|
|
63
|
+
# couldn't be resolved.
|
|
64
|
+
#
|
|
65
|
+
# @raise Facter::ResolveCustomFactError if an error was raised
|
|
66
|
+
# (except Timeout::Error or Narmalization::NarmalizationError
|
|
67
|
+
# in which case an error message is logged and the execution
|
|
68
|
+
# isn't suspended).
|
|
69
|
+
#
|
|
70
|
+
# @return value (hash, string, int, array, etc) or nil
|
|
71
|
+
#
|
|
72
|
+
# @api private
|
|
62
73
|
def value
|
|
63
74
|
result = nil
|
|
64
75
|
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
module Facter
|
|
10
10
|
module Util
|
|
11
11
|
class Fact
|
|
12
|
+
# The location from where fact is resolved
|
|
13
|
+
# @return [String]
|
|
14
|
+
attr_reader :location
|
|
15
|
+
|
|
12
16
|
# The name of the fact
|
|
13
17
|
# @return [String]
|
|
14
18
|
attr_reader :name
|
|
@@ -33,7 +37,7 @@ module Facter
|
|
|
33
37
|
def initialize(name, options = {})
|
|
34
38
|
@name = name.to_s.downcase.intern
|
|
35
39
|
|
|
36
|
-
@options =
|
|
40
|
+
@options = options.dup
|
|
37
41
|
extract_ldapname_option!(options)
|
|
38
42
|
|
|
39
43
|
@ldapname ||= @name.to_s
|
|
@@ -43,6 +47,8 @@ module Facter
|
|
|
43
47
|
@used_resolution_weight = 0
|
|
44
48
|
|
|
45
49
|
@value = nil
|
|
50
|
+
|
|
51
|
+
@log = Facter::Log.new(self)
|
|
46
52
|
end
|
|
47
53
|
|
|
48
54
|
# Adds a new {Facter::Util::Resolution resolution}. This requires a
|
|
@@ -55,7 +61,11 @@ module Facter
|
|
|
55
61
|
#
|
|
56
62
|
# @api private
|
|
57
63
|
def add(options = {}, &block)
|
|
58
|
-
@options =
|
|
64
|
+
@options = @options.merge(options)
|
|
65
|
+
|
|
66
|
+
@location = options[:file]
|
|
67
|
+
@location ||= block.source_location if block_given?
|
|
68
|
+
|
|
59
69
|
define_resolution(nil, options, &block)
|
|
60
70
|
end
|
|
61
71
|
|
|
@@ -201,11 +211,20 @@ module Facter
|
|
|
201
211
|
break
|
|
202
212
|
end
|
|
203
213
|
@used_resolution_weight = resolve.weight
|
|
204
|
-
|
|
214
|
+
next if value.nil?
|
|
215
|
+
|
|
216
|
+
log_fact_path(resolve)
|
|
217
|
+
|
|
218
|
+
return value
|
|
205
219
|
end
|
|
206
220
|
nil
|
|
207
221
|
end
|
|
208
222
|
|
|
223
|
+
def log_fact_path(resolve)
|
|
224
|
+
fact = resolve.fact
|
|
225
|
+
@log.debug("#{resolve.fact_type} fact #{fact.name} got resolved from: #{fact.location}")
|
|
226
|
+
end
|
|
227
|
+
|
|
209
228
|
def announce_when_no_suitable_resolution(resolutions)
|
|
210
229
|
return unless resolutions.empty?
|
|
211
230
|
|