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