facter 4.0.41 → 4.0.47
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.rb +32 -0
- data/lib/docs/template.erb +34 -0
- data/lib/facter.rb +110 -25
- data/lib/facter/config.rb +386 -0
- data/lib/facter/custom_facts/core/aggregate.rb +51 -17
- data/lib/facter/custom_facts/core/execution.rb +54 -38
- data/lib/facter/custom_facts/core/execution/base.rb +46 -40
- data/lib/facter/custom_facts/util/collection.rb +1 -2
- data/lib/facter/custom_facts/util/directory_loader.rb +1 -1
- data/lib/facter/custom_facts/util/fact.rb +19 -2
- data/lib/facter/custom_facts/util/loader.rb +1 -1
- data/lib/facter/custom_facts/util/parser.rb +17 -3
- data/lib/facter/custom_facts/util/resolution.rb +41 -12
- data/lib/facter/facts/aix/interfaces.rb +1 -0
- data/lib/facter/facts/aix/memory/swap/available.rb +1 -1
- data/lib/facter/facts/aix/memory/swap/available_bytes.rb +1 -1
- data/lib/facter/facts/aix/memory/swap/total.rb +1 -1
- data/lib/facter/facts/aix/memory/swap/total_bytes.rb +1 -1
- data/lib/facter/facts/aix/memory/swap/used.rb +1 -1
- data/lib/facter/facts/aix/memory/system/available.rb +1 -1
- data/lib/facter/facts/aix/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/aix/memory/system/total.rb +1 -1
- data/lib/facter/facts/aix/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/aix/memory/system/used.rb +1 -1
- data/lib/facter/facts/aix/processors/speed.rb +1 -1
- data/lib/facter/facts/bsd/processors/speed.rb +1 -1
- data/lib/facter/facts/freebsd/is_virtual.rb +25 -0
- data/lib/facter/facts/freebsd/memory/swap/available.rb +1 -1
- data/lib/facter/facts/freebsd/memory/swap/available_bytes.rb +1 -1
- data/lib/facter/facts/freebsd/memory/swap/total.rb +1 -1
- data/lib/facter/facts/freebsd/memory/swap/total_bytes.rb +1 -1
- data/lib/facter/facts/freebsd/memory/swap/used.rb +1 -1
- data/lib/facter/facts/freebsd/memory/system/available.rb +1 -1
- data/lib/facter/facts/freebsd/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/freebsd/memory/system/total.rb +1 -1
- data/lib/facter/facts/freebsd/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/freebsd/memory/system/used.rb +1 -1
- data/lib/facter/facts/freebsd/processors/speed.rb +1 -1
- data/lib/facter/facts/freebsd/virtual.rb +22 -0
- data/lib/facter/facts/linux/dhcp_servers.rb +1 -0
- data/lib/facter/facts/linux/ec2_metadata.rb +1 -1
- data/lib/facter/facts/linux/ec2_userdata.rb +1 -1
- data/lib/facter/facts/linux/hypervisors/kvm.rb +1 -1
- data/lib/facter/facts/linux/hypervisors/xen.rb +1 -1
- data/lib/facter/facts/linux/interfaces.rb +1 -0
- data/lib/facter/facts/linux/is_virtual.rb +2 -2
- data/lib/facter/facts/linux/memory/swap/available.rb +1 -1
- data/lib/facter/facts/linux/memory/swap/available_bytes.rb +1 -1
- data/lib/facter/facts/linux/memory/swap/total.rb +1 -1
- data/lib/facter/facts/linux/memory/swap/total_bytes.rb +1 -1
- data/lib/facter/facts/linux/memory/swap/used.rb +1 -1
- data/lib/facter/facts/linux/memory/system/available.rb +1 -1
- data/lib/facter/facts/linux/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/linux/memory/system/total.rb +1 -1
- data/lib/facter/facts/linux/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/linux/memory/system/used.rb +1 -1
- data/lib/facter/facts/linux/processors/speed.rb +1 -1
- data/lib/facter/facts/linux/virtual.rb +1 -1
- data/lib/facter/facts/macosx/dhcp_servers.rb +1 -0
- data/lib/facter/facts/macosx/interfaces.rb +1 -0
- data/lib/facter/facts/macosx/memory/swap/available.rb +1 -1
- data/lib/facter/facts/macosx/memory/swap/available_bytes.rb +1 -1
- data/lib/facter/facts/macosx/memory/swap/total.rb +1 -1
- data/lib/facter/facts/macosx/memory/swap/total_bytes.rb +1 -1
- data/lib/facter/facts/macosx/memory/swap/used.rb +1 -1
- data/lib/facter/facts/macosx/memory/system/available.rb +1 -1
- data/lib/facter/facts/macosx/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/macosx/memory/system/total.rb +1 -1
- data/lib/facter/facts/macosx/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/macosx/memory/system/used.rb +1 -1
- data/lib/facter/facts/macosx/processors/speed.rb +1 -1
- data/lib/facter/facts/rhel/os/release.rb +1 -1
- data/lib/facter/facts/solaris/dhcp_servers.rb +1 -0
- data/lib/facter/facts/solaris/hypervisors/ldom.rb +3 -0
- data/lib/facter/facts/solaris/interfaces.rb +1 -0
- data/lib/facter/facts/solaris/is_virtual.rb +2 -2
- data/lib/facter/facts/solaris/ldom.rb +34 -4
- data/lib/facter/facts/solaris/memory/swap/available.rb +1 -1
- data/lib/facter/facts/solaris/memory/swap/available_bytes.rb +1 -1
- data/lib/facter/facts/solaris/memory/swap/total.rb +1 -1
- data/lib/facter/facts/solaris/memory/swap/total_bytes.rb +1 -1
- data/lib/facter/facts/solaris/memory/swap/used.rb +1 -1
- data/lib/facter/facts/solaris/memory/system/available.rb +1 -1
- data/lib/facter/facts/solaris/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/solaris/memory/system/total.rb +1 -1
- data/lib/facter/facts/solaris/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/solaris/memory/system/used.rb +1 -1
- data/lib/facter/facts/solaris/processors/speed.rb +1 -1
- data/lib/facter/facts/solaris/virtual.rb +1 -1
- data/lib/facter/facts/solaris/zones.rb +1 -1
- data/lib/facter/facts/windows/dhcp_servers.rb +1 -0
- data/lib/facter/facts/windows/interfaces.rb +1 -0
- data/lib/facter/facts/windows/memory/system/available.rb +1 -1
- data/lib/facter/facts/windows/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/windows/memory/system/total.rb +1 -1
- data/lib/facter/facts/windows/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/windows/memory/system/used.rb +1 -1
- data/lib/facter/facts/windows/os/release.rb +1 -1
- data/lib/facter/framework/benchmarking/timer.rb +4 -2
- data/lib/facter/framework/cli/cli.rb +20 -6
- data/lib/facter/framework/config/fact_groups.rb +10 -8
- data/lib/facter/framework/core/cache_manager.rb +79 -29
- data/lib/facter/framework/core/fact/internal/core_fact.rb +6 -1
- data/lib/facter/framework/core/fact/internal/internal_fact_manager.rb +38 -4
- data/lib/facter/framework/core/fact_augmenter.rb +1 -1
- data/lib/facter/framework/core/fact_loaders/external_fact_loader.rb +4 -2
- data/lib/facter/framework/core/fact_loaders/fact_loader.rb +17 -1
- data/lib/facter/framework/core/fact_manager.rb +15 -3
- data/lib/facter/framework/core/file_loader.rb +6 -2
- data/lib/facter/framework/core/options/config_file_options.rb +16 -5
- data/lib/facter/framework/core/options/option_store.rb +40 -20
- data/lib/facter/framework/detector/os_hierarchy.rb +5 -9
- data/lib/facter/framework/logging/logger.rb +3 -3
- data/lib/facter/models/fact_collection.rb +11 -1
- data/lib/facter/models/loaded_fact.rb +2 -1
- data/lib/facter/resolvers/aio_agent_version.rb +2 -2
- data/lib/facter/resolvers/aix/architecture_resolver.rb +19 -4
- data/lib/facter/resolvers/aix/disks.rb +6 -5
- data/lib/facter/resolvers/aix/filesystem_resolver.rb +2 -2
- data/lib/facter/resolvers/aix/hardware_resolver.rb +4 -3
- data/lib/facter/resolvers/aix/load_averages_resolver.rb +2 -1
- data/lib/facter/resolvers/aix/memory.rb +4 -3
- data/lib/facter/resolvers/aix/mountpoints.rb +6 -5
- data/lib/facter/resolvers/aix/networking_resolver.rb +4 -3
- data/lib/facter/resolvers/aix/nim.rb +1 -1
- data/lib/facter/resolvers/aix/os_level.rb +2 -2
- data/lib/facter/resolvers/aix/partitions.rb +7 -6
- data/lib/facter/resolvers/aix/processors.rb +5 -4
- data/lib/facter/resolvers/aix/serialnumber.rb +2 -2
- data/lib/facter/resolvers/augeas_resolver.rb +8 -2
- data/lib/facter/resolvers/base_resolver.rb +14 -4
- data/lib/facter/resolvers/bsd/processors.rb +13 -8
- data/lib/facter/resolvers/cloud.rb +2 -2
- data/lib/facter/resolvers/containers.rb +5 -4
- data/lib/facter/resolvers/debian_version.rb +2 -2
- data/lib/facter/resolvers/disk_resolver.rb +17 -6
- data/lib/facter/resolvers/dmi_decode.rb +1 -1
- data/lib/facter/resolvers/dmi_resolver.rb +5 -4
- data/lib/facter/resolvers/ec2.rb +5 -2
- data/lib/facter/resolvers/eos_release_resolver.rb +2 -2
- data/lib/facter/resolvers/facterversion_resolver.rb +1 -1
- data/lib/facter/resolvers/filesystems_resolver.rb +5 -2
- data/lib/facter/resolvers/fips_enabled_resolver.rb +5 -2
- data/lib/facter/resolvers/freebsd/dmi_resolver.rb +1 -1
- data/lib/facter/resolvers/freebsd/freebsd_version_resolver.rb +9 -7
- data/lib/facter/resolvers/freebsd/geom_resolver.rb +15 -22
- data/lib/facter/resolvers/freebsd/processors.rb +13 -8
- data/lib/facter/resolvers/freebsd/swap_memory_resolver.rb +5 -3
- data/lib/facter/resolvers/freebsd/system_memory_resolver.rb +4 -2
- data/lib/facter/resolvers/freebsd/virtual_resolver.rb +45 -0
- data/lib/facter/resolvers/gce.rb +3 -2
- data/lib/facter/resolvers/hostname_resolver.rb +69 -21
- data/lib/facter/resolvers/identity_resolver.rb +2 -1
- data/lib/facter/resolvers/linux/docker_uptime.rb +3 -2
- data/lib/facter/resolvers/linux/load_averages.rb +3 -2
- data/lib/facter/resolvers/load_averages.rb +5 -3
- data/lib/facter/resolvers/lpar_resolver.rb +1 -1
- data/lib/facter/resolvers/lsb_release_resolver.rb +1 -1
- data/lib/facter/resolvers/lspci.rb +1 -1
- data/lib/facter/resolvers/macosx/dmi_resolver.rb +1 -1
- data/lib/facter/resolvers/macosx/filesystems_resolver.rb +1 -1
- data/lib/facter/resolvers/macosx/load_averages_resolver.rb +2 -1
- data/lib/facter/resolvers/macosx/mountpoints_resolver.rb +9 -8
- data/lib/facter/resolvers/macosx/processor_resolver.rb +2 -1
- data/lib/facter/resolvers/macosx/swap_memory_resolver.rb +2 -1
- data/lib/facter/resolvers/macosx/system_memory_resolver.rb +2 -1
- data/lib/facter/resolvers/macosx/system_profiler_resolver.rb +4 -6
- data/lib/facter/resolvers/memory_resolver.rb +16 -16
- data/lib/facter/resolvers/mountpoints_resolver.rb +56 -25
- data/lib/facter/resolvers/networking_linux_resolver.rb +188 -83
- data/lib/facter/resolvers/networking_resolver.rb +9 -6
- data/lib/facter/resolvers/open_vz.rb +2 -4
- data/lib/facter/resolvers/os_release_resolver.rb +2 -2
- data/lib/facter/resolvers/partitions.rb +67 -63
- data/lib/facter/resolvers/path_resolver.rb +1 -1
- data/lib/facter/resolvers/processors_resolver.rb +10 -3
- data/lib/facter/resolvers/redhat_release_resolver.rb +2 -2
- data/lib/facter/resolvers/ruby_resolver.rb +1 -1
- data/lib/facter/resolvers/selinux_resolver.rb +4 -4
- data/lib/facter/resolvers/solaris/disks.rb +2 -2
- data/lib/facter/resolvers/solaris/dmi.rb +3 -1
- data/lib/facter/resolvers/solaris/dmi_sparc.rb +1 -1
- data/lib/facter/resolvers/solaris/filesystems.rb +1 -1
- data/lib/facter/resolvers/solaris/ipaddress.rb +2 -1
- data/lib/facter/resolvers/solaris/ldom.rb +1 -3
- data/lib/facter/resolvers/solaris/memory.rb +4 -3
- data/lib/facter/resolvers/solaris/mountpoints.rb +61 -0
- data/lib/facter/resolvers/solaris/networking.rb +51 -44
- data/lib/facter/resolvers/solaris/os_release.rb +7 -5
- data/lib/facter/resolvers/solaris/processors.rb +2 -1
- data/lib/facter/resolvers/solaris/zone.rb +1 -1
- data/lib/facter/resolvers/solaris/zone_name.rb +1 -1
- data/lib/facter/resolvers/ssh_resolver.rb +11 -7
- data/lib/facter/resolvers/suse_release_resolver.rb +2 -2
- data/lib/facter/resolvers/sw_vers_resolver.rb +2 -2
- data/lib/facter/resolvers/timezone_resolver.rb +1 -1
- data/lib/facter/resolvers/uname_resolver.rb +1 -1
- data/lib/facter/resolvers/uptime_resolver.rb +3 -3
- 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 +2 -2
- data/lib/facter/resolvers/windows/dmi_bios_resolver.rb +2 -2
- data/lib/facter/resolvers/windows/dmi_computersystem_resolver.rb +2 -2
- data/lib/facter/resolvers/windows/fips_resolver.rb +2 -1
- data/lib/facter/resolvers/windows/hardware_architecture_resolver.rb +2 -1
- data/lib/facter/resolvers/windows/identity_resolver.rb +2 -1
- data/lib/facter/resolvers/windows/kernel_resolver.rb +3 -1
- data/lib/facter/resolvers/windows/memory_resolver.rb +7 -1
- data/lib/facter/resolvers/windows/netkvm_resolver.rb +2 -1
- data/lib/facter/resolvers/windows/networking_resolver.rb +5 -4
- data/lib/facter/resolvers/windows/processors_resolver.rb +3 -2
- data/lib/facter/resolvers/windows/product_release_resolver.rb +2 -1
- data/lib/facter/resolvers/windows/ssh.rb +5 -3
- data/lib/facter/resolvers/windows/system32_resolver.rb +3 -1
- data/lib/facter/resolvers/windows/uptime_resolver.rb +3 -2
- data/lib/facter/resolvers/windows/virtualization_resolver.rb +3 -2
- data/lib/facter/resolvers/windows/win_os_description_resolver.rb +4 -2
- data/lib/facter/resolvers/wpar_resolver.rb +1 -1
- data/lib/facter/resolvers/xen.rb +2 -2
- data/lib/facter/resolvers/zfs.rb +2 -1
- data/lib/facter/resolvers/zpool.rb +2 -1
- data/lib/facter/util/aix/info_extractor.rb +24 -0
- data/lib/facter/util/aix/odm_query.rb +46 -0
- data/lib/facter/util/api_debugger.rb +33 -29
- data/lib/facter/util/facts/facts_utils.rb +14 -0
- data/lib/facter/util/facts/unit_converter.rb +61 -0
- data/lib/facter/util/facts/uptime_parser.rb +128 -0
- data/lib/facter/util/facts/virtual_detector.rb +90 -0
- data/lib/facter/util/facts/windows_release_finder.rb +55 -0
- data/lib/facter/{resolvers/macosx/utils → util/macosx}/system_profile_executor.rb +1 -1
- data/lib/facter/util/resolvers/aws_token.rb +37 -0
- data/lib/facter/{resolvers/utils → util/resolvers}/ffi/load_averages.rb +2 -2
- data/lib/facter/util/resolvers/filesystem_helper.rb +47 -0
- data/lib/facter/util/resolvers/fingerprint.rb +15 -0
- data/lib/facter/{resolvers/utils → util/resolvers}/http.rb +17 -10
- data/lib/facter/util/resolvers/networking.rb +90 -0
- data/lib/facter/util/resolvers/networking/dhcp.rb +21 -0
- data/lib/facter/util/resolvers/networking/networking.rb +109 -0
- data/lib/facter/util/resolvers/networking/primary_interface.rb +82 -0
- data/lib/facter/util/resolvers/ssh.rb +17 -0
- data/lib/facter/util/resolvers/ssh_helper.rb +31 -0
- data/lib/facter/{resolvers/utils → util/resolvers}/uptime_helper.rb +2 -2
- data/lib/facter/{framework/utils → util}/utils.rb +0 -0
- data/lib/facter/util/windows/win32ole.rb +30 -0
- data/lib/facter/version.rb +1 -1
- metadata +33 -44
- data/lib/facter/fact_groups.conf +0 -308
- data/lib/facter/facts/aix/puppet_version.rb +0 -15
- data/lib/facter/facts/freebsd/puppet_version.rb +0 -15
- data/lib/facter/facts/linux/puppet_version.rb +0 -15
- data/lib/facter/facts/macosx/puppet_version.rb +0 -15
- data/lib/facter/facts/solaris/puppet_version.rb +0 -15
- data/lib/facter/facts/windows/puppet_version.rb +0 -15
- data/lib/facter/facts_utils/facts_utils.rb +0 -12
- data/lib/facter/facts_utils/unit_converter.rb +0 -59
- data/lib/facter/facts_utils/uptime_parser.rb +0 -124
- data/lib/facter/facts_utils/virtual_detector.rb +0 -78
- data/lib/facter/facts_utils/windows_release_finder.rb +0 -51
- data/lib/facter/os_hierarchy.json +0 -36
- data/lib/facter/resolvers/aix/utils/info_extractor.rb +0 -20
- data/lib/facter/resolvers/aix/utils/odm_query.rb +0 -42
- data/lib/facter/resolvers/puppet_version_resolver.rb +0 -26
- data/lib/facter/resolvers/utils/filesystem_helper.rb +0 -43
- data/lib/facter/resolvers/utils/fingerprint.rb +0 -11
- data/lib/facter/resolvers/utils/networking.rb +0 -86
- data/lib/facter/resolvers/utils/ssh.rb +0 -13
- data/lib/facter/resolvers/utils/ssh_helper.rb +0 -27
- data/lib/facter/resolvers/windows/utils/win32ole.rb +0 -24
|
@@ -155,7 +155,7 @@ module Facter
|
|
|
155
155
|
@searching
|
|
156
156
|
end
|
|
157
157
|
|
|
158
|
-
# Lock our searching process, so we never
|
|
158
|
+
# Lock our searching process, so we never get stuck in recursion.
|
|
159
159
|
def searching
|
|
160
160
|
raise "Caught recursion on #{@name}" if searching?
|
|
161
161
|
|
|
@@ -173,7 +173,24 @@ module Facter
|
|
|
173
173
|
end
|
|
174
174
|
|
|
175
175
|
def sort_by_weight(resolutions)
|
|
176
|
-
|
|
176
|
+
# sort resolutions:
|
|
177
|
+
# - descending by weight
|
|
178
|
+
# - multiple facts have the same weight but different types, the :external fact take precedence
|
|
179
|
+
# - multiple facts with the same weight and type, the order is preserved.
|
|
180
|
+
# note: sort_by with index is slower than .sort
|
|
181
|
+
# we cannot use .sort because it is not stable: https://bugs.ruby-lang.org/issues/1089
|
|
182
|
+
# solution from: https://bugs.ruby-lang.org/issues/1089#note-10
|
|
183
|
+
|
|
184
|
+
# rubocop:disable Style/NestedTernaryOperator
|
|
185
|
+
idx = 0
|
|
186
|
+
resolutions.sort_by do |x|
|
|
187
|
+
[
|
|
188
|
+
-x.weight,
|
|
189
|
+
x.respond_to?(:fact_type) ? x.fact_type == :external ? 0 : 1 : 1,
|
|
190
|
+
idx += 1
|
|
191
|
+
]
|
|
192
|
+
end
|
|
193
|
+
# rubocop:enable Style/NestedTernaryOperator
|
|
177
194
|
end
|
|
178
195
|
|
|
179
196
|
def find_first_real_value(resolutions)
|
|
@@ -143,7 +143,7 @@ module LegacyFacter
|
|
|
143
143
|
# match it.
|
|
144
144
|
next if fact && (env_name != fact)
|
|
145
145
|
|
|
146
|
-
LegacyFacter.add(Regexp.last_match(1), fact_type: :external) do
|
|
146
|
+
LegacyFacter.add(Regexp.last_match(1), fact_type: :external, is_env: true) do
|
|
147
147
|
has_weight 1_000_000
|
|
148
148
|
setcode { value }
|
|
149
149
|
end
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
module LegacyFacter
|
|
9
9
|
module Util
|
|
10
10
|
module Parser
|
|
11
|
+
STDERR_MESSAGE = 'Command %s completed with the following stderr message: %s'
|
|
12
|
+
|
|
11
13
|
@parsers = []
|
|
12
14
|
|
|
13
15
|
# For support mutliple extensions you can pass an array of extensions as
|
|
@@ -75,6 +77,15 @@ module LegacyFacter
|
|
|
75
77
|
res = KeyValuePairOutputFormat.parse output unless res.is_a?(Hash)
|
|
76
78
|
res
|
|
77
79
|
end
|
|
80
|
+
|
|
81
|
+
def log_stderr(msg, command, file)
|
|
82
|
+
return if !msg || msg.empty?
|
|
83
|
+
|
|
84
|
+
file_name = file.split('/').last
|
|
85
|
+
logger = Facter::Log.new(file_name)
|
|
86
|
+
|
|
87
|
+
logger.warn(format(STDERR_MESSAGE, command, msg.strip))
|
|
88
|
+
end
|
|
78
89
|
end
|
|
79
90
|
|
|
80
91
|
module KeyValuePairOutputFormat
|
|
@@ -139,7 +150,9 @@ module LegacyFacter
|
|
|
139
150
|
|
|
140
151
|
class ScriptParser < Base
|
|
141
152
|
def parse_results
|
|
142
|
-
|
|
153
|
+
stdout, stderr = Facter::Core::Execution.execute_command(quote(filename))
|
|
154
|
+
log_stderr(stderr, filename, filename)
|
|
155
|
+
parse_executable_output(stdout)
|
|
143
156
|
end
|
|
144
157
|
|
|
145
158
|
private
|
|
@@ -172,8 +185,9 @@ module LegacyFacter
|
|
|
172
185
|
|
|
173
186
|
shell_command =
|
|
174
187
|
"\"#{powershell}\" -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Bypass -File \"#{filename}\""
|
|
175
|
-
|
|
176
|
-
|
|
188
|
+
stdout, stderr = Facter::Core::Execution.execute_command(shell_command)
|
|
189
|
+
log_stderr(stderr, shell_command, filename)
|
|
190
|
+
parse_executable_output(stdout)
|
|
177
191
|
end
|
|
178
192
|
end
|
|
179
193
|
|
|
@@ -14,6 +14,8 @@ module Facter
|
|
|
14
14
|
class Resolution
|
|
15
15
|
# @api private
|
|
16
16
|
attr_accessor :code, :fact_type
|
|
17
|
+
|
|
18
|
+
# @api private
|
|
17
19
|
attr_writer :value
|
|
18
20
|
|
|
19
21
|
extend Facter::Core::Execution
|
|
@@ -24,7 +26,12 @@ module Facter
|
|
|
24
26
|
# compatibility.
|
|
25
27
|
#
|
|
26
28
|
# @deprecated
|
|
27
|
-
|
|
29
|
+
#
|
|
30
|
+
# @api public
|
|
31
|
+
public :which, :exec
|
|
32
|
+
|
|
33
|
+
# @api private
|
|
34
|
+
public :with_env
|
|
28
35
|
end
|
|
29
36
|
|
|
30
37
|
include LegacyFacter::Core::Resolvable
|
|
@@ -32,22 +39,27 @@ module Facter
|
|
|
32
39
|
|
|
33
40
|
# @!attribute [rw] name
|
|
34
41
|
# The name of this resolution. The resolution name should be unique with
|
|
35
|
-
#
|
|
42
|
+
# respect to the given fact.
|
|
43
|
+
#
|
|
36
44
|
# @return [String]
|
|
45
|
+
#
|
|
37
46
|
# @api public
|
|
38
47
|
attr_accessor :name
|
|
39
48
|
|
|
40
49
|
# @!attribute [r] fact
|
|
41
|
-
#
|
|
50
|
+
#
|
|
51
|
+
# @return [Facter::Util::Fact] Associated fact with this resolution.
|
|
52
|
+
#
|
|
42
53
|
# @api private
|
|
43
54
|
attr_reader :fact
|
|
44
55
|
|
|
45
56
|
# Create a new resolution mechanism.
|
|
46
57
|
#
|
|
47
58
|
# @param name [String] The name of the resolution.
|
|
48
|
-
# @return [void]
|
|
49
59
|
#
|
|
50
|
-
# @
|
|
60
|
+
# @return [Facter::Util::Resolution] The created resolution
|
|
61
|
+
#
|
|
62
|
+
# @api public
|
|
51
63
|
def initialize(name, fact)
|
|
52
64
|
@name = name
|
|
53
65
|
@fact = fact
|
|
@@ -57,6 +69,11 @@ module Facter
|
|
|
57
69
|
@weight = nil
|
|
58
70
|
end
|
|
59
71
|
|
|
72
|
+
# Returns the fact's resolution type
|
|
73
|
+
#
|
|
74
|
+
# @return [Symbol] The fact's type
|
|
75
|
+
#
|
|
76
|
+
# @api private
|
|
60
77
|
def resolution_type
|
|
61
78
|
:simple
|
|
62
79
|
end
|
|
@@ -64,7 +81,9 @@ module Facter
|
|
|
64
81
|
# Evaluate the given block in the context of this resolution. If a block has
|
|
65
82
|
# already been evaluated emit a warning to that effect.
|
|
66
83
|
#
|
|
67
|
-
# @return [
|
|
84
|
+
# @return [String] Result of the block's evaluation
|
|
85
|
+
#
|
|
86
|
+
# @api private
|
|
68
87
|
def evaluate(&block)
|
|
69
88
|
if @last_evaluated
|
|
70
89
|
msg = "Already evaluated #{@name}"
|
|
@@ -85,8 +104,13 @@ module Facter
|
|
|
85
104
|
end
|
|
86
105
|
end
|
|
87
106
|
|
|
107
|
+
# Sets options for the aggregate fact
|
|
108
|
+
#
|
|
109
|
+
# @return [nil]
|
|
110
|
+
#
|
|
111
|
+
# @api private
|
|
88
112
|
def options(options)
|
|
89
|
-
accepted_options = %i[name value timeout weight fact_type file]
|
|
113
|
+
accepted_options = %i[name value timeout weight fact_type file is_env]
|
|
90
114
|
|
|
91
115
|
accepted_options.each do |option_name|
|
|
92
116
|
instance_variable_set("@#{option_name}", options.delete(option_name)) if options.key?(option_name)
|
|
@@ -98,8 +122,6 @@ module Facter
|
|
|
98
122
|
# Sets the code block or external program that will be evaluated to
|
|
99
123
|
# get the value of the fact.
|
|
100
124
|
#
|
|
101
|
-
# @return [void]
|
|
102
|
-
#
|
|
103
125
|
# @overload setcode(string)
|
|
104
126
|
# Sets an external program to call to get the value of the resolution
|
|
105
127
|
# @param [String] string the external program to run to get the
|
|
@@ -111,6 +133,8 @@ module Facter
|
|
|
111
133
|
# This block is run when the fact is evaluated. Errors raised from
|
|
112
134
|
# inside the block are rescued and printed to stderr.
|
|
113
135
|
#
|
|
136
|
+
# @return [Facter::Util::Resolution] Returns itself
|
|
137
|
+
#
|
|
114
138
|
# @api public
|
|
115
139
|
def setcode(string = nil, &block)
|
|
116
140
|
if string
|
|
@@ -127,11 +151,16 @@ module Facter
|
|
|
127
151
|
else
|
|
128
152
|
raise ArgumentError, 'You must pass either code or a block'
|
|
129
153
|
end
|
|
154
|
+
self
|
|
130
155
|
end
|
|
131
156
|
|
|
132
|
-
#
|
|
133
|
-
#
|
|
134
|
-
#
|
|
157
|
+
# Comparison is done based on weight and fact type.
|
|
158
|
+
# The greater the weight, the higher the priority.
|
|
159
|
+
# If weights are equal, we consider external facts greater than custom facts.
|
|
160
|
+
#
|
|
161
|
+
# @return [bool] Weight comparison result
|
|
162
|
+
#
|
|
163
|
+
# @api private
|
|
135
164
|
def <=>(other)
|
|
136
165
|
return compare_equal_weights(other) if weight == other.weight
|
|
137
166
|
return 1 if weight > other.weight
|
|
@@ -11,7 +11,7 @@ module Facts
|
|
|
11
11
|
def call_the_resolver
|
|
12
12
|
fact_value = Facter::Resolvers::Aix::Memory.resolve(:swap)
|
|
13
13
|
if fact_value
|
|
14
|
-
fact_value = Facter::
|
|
14
|
+
fact_value = Facter::Util::Facts::UnitConverter.bytes_to_human_readable(fact_value[:available_bytes])
|
|
15
15
|
end
|
|
16
16
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
|
|
17
17
|
end
|
|
@@ -13,7 +13,7 @@ module Facts
|
|
|
13
13
|
fact_value = fact_value[:available_bytes] if fact_value
|
|
14
14
|
|
|
15
15
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value),
|
|
16
|
-
Facter::ResolvedFact.new(ALIASES, Facter::
|
|
16
|
+
Facter::ResolvedFact.new(ALIASES, Facter::Util::Facts::UnitConverter.bytes_to_mb(fact_value), :legacy)]
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
|
@@ -11,7 +11,7 @@ module Facts
|
|
|
11
11
|
def call_the_resolver
|
|
12
12
|
fact_value = Facter::Resolvers::Aix::Memory.resolve(:swap)
|
|
13
13
|
if fact_value
|
|
14
|
-
fact_value = Facter::
|
|
14
|
+
fact_value = Facter::Util::Facts::UnitConverter.bytes_to_human_readable(fact_value[:total_bytes])
|
|
15
15
|
end
|
|
16
16
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
|
|
17
17
|
end
|
|
@@ -13,7 +13,7 @@ module Facts
|
|
|
13
13
|
fact_value = fact_value[:total_bytes] if fact_value
|
|
14
14
|
|
|
15
15
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value),
|
|
16
|
-
Facter::ResolvedFact.new(ALIASES, Facter::
|
|
16
|
+
Facter::ResolvedFact.new(ALIASES, Facter::Util::Facts::UnitConverter.bytes_to_mb(fact_value), :legacy)]
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
|
@@ -10,7 +10,7 @@ module Facts
|
|
|
10
10
|
def call_the_resolver
|
|
11
11
|
fact_value = Facter::Resolvers::Aix::Memory.resolve(:swap)
|
|
12
12
|
if fact_value
|
|
13
|
-
fact_value = Facter::
|
|
13
|
+
fact_value = Facter::Util::Facts::UnitConverter.bytes_to_human_readable(fact_value[:used_bytes])
|
|
14
14
|
end
|
|
15
15
|
Facter::ResolvedFact.new(FACT_NAME, fact_value)
|
|
16
16
|
end
|
|
@@ -11,7 +11,7 @@ module Facts
|
|
|
11
11
|
def call_the_resolver
|
|
12
12
|
fact_value = Facter::Resolvers::Aix::Memory.resolve(:system)
|
|
13
13
|
if fact_value
|
|
14
|
-
fact_value = Facter::
|
|
14
|
+
fact_value = Facter::Util::Facts::UnitConverter.bytes_to_human_readable(fact_value[:available_bytes])
|
|
15
15
|
end
|
|
16
16
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
|
|
17
17
|
end
|
|
@@ -13,7 +13,7 @@ module Facts
|
|
|
13
13
|
fact_value = fact_value[:available_bytes] if fact_value
|
|
14
14
|
|
|
15
15
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value),
|
|
16
|
-
Facter::ResolvedFact.new(ALIASES, Facter::
|
|
16
|
+
Facter::ResolvedFact.new(ALIASES, Facter::Util::Facts::UnitConverter.bytes_to_mb(fact_value), :legacy)]
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
|
@@ -11,7 +11,7 @@ module Facts
|
|
|
11
11
|
def call_the_resolver
|
|
12
12
|
fact_value = Facter::Resolvers::Aix::Memory.resolve(:system)
|
|
13
13
|
if fact_value
|
|
14
|
-
fact_value = Facter::
|
|
14
|
+
fact_value = Facter::Util::Facts::UnitConverter.bytes_to_human_readable(fact_value[:total_bytes])
|
|
15
15
|
end
|
|
16
16
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
|
|
17
17
|
end
|
|
@@ -13,7 +13,7 @@ module Facts
|
|
|
13
13
|
fact_value = fact_value[:total_bytes] if fact_value
|
|
14
14
|
|
|
15
15
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value),
|
|
16
|
-
Facter::ResolvedFact.new(ALIASES, Facter::
|
|
16
|
+
Facter::ResolvedFact.new(ALIASES, Facter::Util::Facts::UnitConverter.bytes_to_mb(fact_value), :legacy)]
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
|
@@ -10,7 +10,7 @@ module Facts
|
|
|
10
10
|
def call_the_resolver
|
|
11
11
|
fact_value = Facter::Resolvers::Aix::Memory.resolve(:system)
|
|
12
12
|
if fact_value
|
|
13
|
-
fact_value = Facter::
|
|
13
|
+
fact_value = Facter::Util::Facts::UnitConverter.bytes_to_human_readable(fact_value[:used_bytes])
|
|
14
14
|
end
|
|
15
15
|
Facter::ResolvedFact.new(FACT_NAME, fact_value)
|
|
16
16
|
end
|
|
@@ -8,7 +8,7 @@ module Facts
|
|
|
8
8
|
|
|
9
9
|
def call_the_resolver
|
|
10
10
|
fact_value = Facter::Resolvers::Aix::Processors.resolve(:speed)
|
|
11
|
-
speed = Facter::
|
|
11
|
+
speed = Facter::Util::Facts::UnitConverter.hertz_to_human_readable(fact_value)
|
|
12
12
|
Facter::ResolvedFact.new(FACT_NAME, speed)
|
|
13
13
|
end
|
|
14
14
|
end
|
|
@@ -8,7 +8,7 @@ module Facts
|
|
|
8
8
|
|
|
9
9
|
def call_the_resolver
|
|
10
10
|
fact_value = Facter::Resolvers::Bsd::Processors.resolve(:speed)
|
|
11
|
-
speed = Facter::
|
|
11
|
+
speed = Facter::Util::Facts::UnitConverter.hertz_to_human_readable(fact_value)
|
|
12
12
|
Facter::ResolvedFact.new(FACT_NAME, speed)
|
|
13
13
|
end
|
|
14
14
|
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Facts
|
|
4
|
+
module Freebsd
|
|
5
|
+
class IsVirtual
|
|
6
|
+
FACT_NAME = 'is_virtual'
|
|
7
|
+
|
|
8
|
+
def initialize
|
|
9
|
+
@virtual = Facter::Util::Facts::VirtualDetector.new
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def call_the_resolver
|
|
13
|
+
fact_value = @virtual.platform
|
|
14
|
+
|
|
15
|
+
Facter::ResolvedFact.new(FACT_NAME, check_if_virtual(fact_value))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def check_if_virtual(found_vm)
|
|
21
|
+
Facter::Util::Facts::PHYSICAL_HYPERVISORS.count(found_vm).zero?
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -10,7 +10,7 @@ module Facts
|
|
|
10
10
|
|
|
11
11
|
def call_the_resolver
|
|
12
12
|
fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:available_bytes)
|
|
13
|
-
fact_value = Facter::
|
|
13
|
+
fact_value = Facter::Util::Facts::UnitConverter.bytes_to_human_readable(fact_value)
|
|
14
14
|
|
|
15
15
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
|
|
16
16
|
end
|
|
@@ -11,7 +11,7 @@ module Facts
|
|
|
11
11
|
def call_the_resolver
|
|
12
12
|
fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:available_bytes)
|
|
13
13
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value),
|
|
14
|
-
Facter::ResolvedFact.new(ALIASES, Facter::
|
|
14
|
+
Facter::ResolvedFact.new(ALIASES, Facter::Util::Facts::UnitConverter.bytes_to_mb(fact_value), :legacy)]
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
end
|
|
@@ -10,7 +10,7 @@ module Facts
|
|
|
10
10
|
|
|
11
11
|
def call_the_resolver
|
|
12
12
|
fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:total_bytes)
|
|
13
|
-
fact_value = Facter::
|
|
13
|
+
fact_value = Facter::Util::Facts::UnitConverter.bytes_to_human_readable(fact_value)
|
|
14
14
|
|
|
15
15
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
|
|
16
16
|
end
|
|
@@ -11,7 +11,7 @@ module Facts
|
|
|
11
11
|
def call_the_resolver
|
|
12
12
|
fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:total_bytes)
|
|
13
13
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value),
|
|
14
|
-
Facter::ResolvedFact.new(ALIASES, Facter::
|
|
14
|
+
Facter::ResolvedFact.new(ALIASES, Facter::Util::Facts::UnitConverter.bytes_to_mb(fact_value), :legacy)]
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
end
|
|
@@ -9,7 +9,7 @@ module Facts
|
|
|
9
9
|
|
|
10
10
|
def call_the_resolver
|
|
11
11
|
fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:used_bytes)
|
|
12
|
-
fact_value = Facter::
|
|
12
|
+
fact_value = Facter::Util::Facts::UnitConverter.bytes_to_human_readable(fact_value)
|
|
13
13
|
|
|
14
14
|
Facter::ResolvedFact.new(FACT_NAME, fact_value)
|
|
15
15
|
end
|
|
@@ -10,7 +10,7 @@ module Facts
|
|
|
10
10
|
|
|
11
11
|
def call_the_resolver
|
|
12
12
|
fact_value = Facter::Resolvers::Freebsd::SystemMemory.resolve(:available_bytes)
|
|
13
|
-
fact_value = Facter::
|
|
13
|
+
fact_value = Facter::Util::Facts::UnitConverter.bytes_to_human_readable(fact_value)
|
|
14
14
|
|
|
15
15
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
|
|
16
16
|
end
|
|
@@ -11,7 +11,7 @@ module Facts
|
|
|
11
11
|
def call_the_resolver
|
|
12
12
|
fact_value = Facter::Resolvers::Freebsd::SystemMemory.resolve(:available_bytes)
|
|
13
13
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value),
|
|
14
|
-
Facter::ResolvedFact.new(ALIASES, Facter::
|
|
14
|
+
Facter::ResolvedFact.new(ALIASES, Facter::Util::Facts::UnitConverter.bytes_to_mb(fact_value), :legacy)]
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
end
|
|
@@ -10,7 +10,7 @@ module Facts
|
|
|
10
10
|
|
|
11
11
|
def call_the_resolver
|
|
12
12
|
fact_value = Facter::Resolvers::Freebsd::SystemMemory.resolve(:total_bytes)
|
|
13
|
-
fact_value = Facter::
|
|
13
|
+
fact_value = Facter::Util::Facts::UnitConverter.bytes_to_human_readable(fact_value)
|
|
14
14
|
|
|
15
15
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
|
|
16
16
|
end
|