facter 4.0.20 → 4.0.21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/actions/presuite.rb +109 -0
- data/.github/workflows/acceptance_tests.yml +61 -0
- data/.github/workflows/checks.yaml +71 -0
- data/.github/workflows/unit_tests.yaml +41 -0
- data/.rubocop.yml +71 -52
- data/.rubocop_todo.yml +5 -28
- data/CHANGELOG.md +25 -0
- data/README.md +5 -2
- data/VERSION +1 -1
- data/facter.conf +4 -0
- data/facter.gemspec +1 -2
- data/lib/custom_facts/core/execution.rb +8 -1
- data/lib/custom_facts/core/execution/base.rb +16 -8
- data/lib/custom_facts/util/normalization.rb +1 -1
- data/lib/custom_facts/util/parser.rb +10 -2
- data/lib/facter.rb +18 -12
- data/lib/facts/{el → aix}/processors/count.rb +2 -2
- data/lib/facts/{el → aix}/processors/isa.rb +1 -10
- data/lib/facts/{sles → aix}/processors/models.rb +2 -2
- data/lib/facts/aix/processors/speed.rb +17 -0
- data/lib/facts/debian/{os/architecture.rb → architecture.rb} +1 -0
- data/lib/facts/debian/os/distro/release.rb +9 -21
- data/lib/facts/debian/os/release.rb +9 -21
- data/lib/facts/freebsd/os/release.rb +43 -0
- data/lib/facts/{sles → linux}/augeas/version.rb +1 -1
- data/lib/facts/linux/dhcp_servers.rb +27 -0
- data/lib/facts/{sles → linux}/disks.rb +1 -1
- data/lib/facts/{sles → linux}/dmi/bios/release_date.rb +1 -1
- data/lib/facts/{el → linux}/dmi/bios/vendor.rb +1 -1
- data/lib/facts/{sles → linux}/dmi/bios/version.rb +1 -1
- data/lib/facts/{sles → linux}/dmi/board/manufacturer.rb +1 -1
- data/lib/facts/{el → linux}/dmi/board/product.rb +1 -1
- data/lib/facts/{el → linux}/dmi/board/serial_number.rb +1 -1
- data/lib/facts/{sles → linux}/dmi/chassis/asset_tag.rb +1 -1
- data/lib/facts/{sles → linux}/dmi/chassis/type.rb +1 -1
- data/lib/facts/{el → linux}/dmi/manufacturer.rb +1 -1
- data/lib/facts/{el → linux}/dmi/product/name.rb +1 -1
- data/lib/facts/{sles → linux}/dmi/product/serial_number.rb +1 -1
- data/lib/facts/{sles → linux}/dmi/product/uuid.rb +1 -1
- data/lib/facts/{debian → linux}/facterversion.rb +1 -1
- data/lib/facts/{el → linux}/filesystems.rb +1 -1
- data/lib/facts/{el → linux}/fips_enabled.rb +1 -1
- data/lib/facts/{sles → linux}/identity/gid.rb +1 -1
- data/lib/facts/{el → linux}/identity/group.rb +1 -1
- data/lib/facts/{el → linux}/identity/privileged.rb +1 -1
- data/lib/facts/{sles → linux}/identity/uid.rb +1 -1
- data/lib/facts/{el → linux}/identity/user.rb +1 -1
- data/lib/facts/{el → linux}/interfaces.rb +1 -1
- data/lib/facts/linux/ipaddress6_interfaces.rb +20 -0
- data/lib/facts/linux/ipaddress_interfaces.rb +20 -0
- data/lib/facts/{debian → linux}/kernel.rb +1 -1
- data/lib/facts/{debian → linux}/kernelmajversion.rb +1 -1
- data/lib/facts/{el → linux}/kernelrelease.rb +1 -1
- data/lib/facts/{debian → linux}/kernelversion.rb +1 -1
- data/lib/facts/{el → linux}/load_averages.rb +1 -1
- data/lib/facts/{debian → linux}/lsbdistrelease.rb +1 -1
- data/lib/facts/linux/macaddress_interfaces.rb +20 -0
- data/lib/facts/{el → linux}/memory/swap/available.rb +1 -1
- data/lib/facts/{debian → linux}/memory/swap/available_bytes.rb +1 -1
- data/lib/facts/{sles → linux}/memory/swap/capacity.rb +1 -1
- data/lib/facts/{el → linux}/memory/swap/total.rb +1 -1
- data/lib/facts/{el → linux}/memory/swap/total_bytes.rb +1 -1
- data/lib/facts/{el → linux}/memory/swap/used.rb +1 -1
- data/lib/facts/{el → linux}/memory/swap/used_bytes.rb +1 -1
- data/lib/facts/{debian → linux}/memory/system/available.rb +1 -1
- data/lib/facts/{debian → linux}/memory/system/available_bytes.rb +1 -1
- data/lib/facts/{el → linux}/memory/system/capacity.rb +1 -1
- data/lib/facts/{sles → linux}/memory/system/total.rb +1 -1
- data/lib/facts/{sles → linux}/memory/system/total_bytes.rb +1 -1
- data/lib/facts/{sles → linux}/memory/system/used.rb +1 -1
- data/lib/facts/{el → linux}/memory/system/used_bytes.rb +1 -1
- data/lib/facts/{sles → linux}/mountpoints.rb +1 -1
- data/lib/facts/linux/mtu_interfaces.rb +20 -0
- data/lib/facts/linux/netmask6_interfaces.rb +20 -0
- data/lib/facts/linux/netmask_interfaces.rb +20 -0
- data/lib/facts/linux/network6_interfaces.rb +20 -0
- data/lib/facts/linux/network_interfaces.rb +20 -0
- data/lib/facts/linux/networking/dhcp.rb +20 -0
- data/lib/facts/{el → linux}/networking/domain.rb +1 -1
- data/lib/facts/{el → linux}/networking/fqdn.rb +1 -1
- data/lib/facts/{el → linux}/networking/hostname.rb +1 -1
- data/lib/facts/{sles → linux}/networking/interfaces.rb +1 -1
- data/lib/facts/{sles → linux}/networking/ip.rb +5 -2
- data/lib/facts/linux/networking/ip6.rb +21 -0
- data/lib/facts/{debian → linux}/networking/mac.rb +5 -2
- data/lib/facts/linux/networking/mtu.rb +20 -0
- data/lib/facts/linux/networking/netmask.rb +21 -0
- data/lib/facts/linux/networking/netmask6.rb +21 -0
- data/lib/facts/linux/networking/network.rb +21 -0
- data/lib/facts/linux/networking/network6.rb +21 -0
- data/lib/facts/{sles → linux}/networking/primary.rb +1 -1
- data/lib/facts/linux/networking/scope6.rb +20 -0
- data/lib/facts/{el → linux}/os/architecture.rb +3 -1
- data/lib/facts/{sles/os/distro/specification.rb → linux/os/distro/codename.rb} +5 -5
- data/lib/facts/{debian/os/distro/specification.rb → linux/os/distro/description.rb} +5 -5
- data/lib/facts/linux/os/distro/id.rb +21 -0
- data/lib/facts/linux/os/distro/release.rb +31 -0
- data/lib/facts/{el → linux}/os/distro/specification.rb +1 -1
- data/lib/facts/{debian → linux}/os/family.rb +1 -1
- data/lib/facts/{el → linux}/os/hardware.rb +1 -1
- data/lib/facts/{sles → linux}/os/name.rb +1 -1
- data/lib/facts/{el → linux}/os/release.rb +1 -1
- data/lib/facts/{el → linux}/os/selinux/config_mode.rb +1 -1
- data/lib/facts/{sles → linux}/os/selinux/config_policy.rb +1 -1
- data/lib/facts/{el → linux}/os/selinux/current_mode.rb +1 -1
- data/lib/facts/{el → linux}/os/selinux/enabled.rb +1 -1
- data/lib/facts/{el → linux}/os/selinux/enforced.rb +1 -1
- data/lib/facts/{el → linux}/os/selinux/policy_version.rb +1 -1
- data/lib/facts/{sles → linux}/partitions.rb +1 -1
- data/lib/facts/{debian → linux}/path.rb +1 -1
- data/lib/facts/{el → linux}/processor.rb +1 -1
- data/lib/facts/{sles → linux}/processors/count.rb +1 -1
- data/lib/facts/{debian → linux}/processors/isa.rb +1 -1
- data/lib/facts/{el → linux}/processors/models.rb +1 -1
- data/lib/facts/{sles → linux}/processors/physicalcount.rb +1 -2
- data/lib/facts/{el → linux}/puppet_version.rb +1 -1
- data/lib/facts/{sles → linux}/ruby/platform.rb +1 -1
- data/lib/facts/{sles → linux}/ruby/sitedir.rb +1 -1
- data/lib/facts/{sles → linux}/ruby/version.rb +1 -1
- data/lib/facts/linux/scope6_interfaces.rb +26 -0
- data/lib/facts/{el → linux}/ssh.rb +1 -1
- data/lib/facts/{sles → linux}/sshalgorithmkey.rb +1 -1
- data/lib/facts/{el → linux}/sshfp_algorithm.rb +1 -1
- data/lib/facts/{sles → linux}/system_uptime/days.rb +1 -1
- data/lib/facts/{el → linux}/system_uptime/hours.rb +1 -1
- data/lib/facts/{el → linux}/system_uptime/seconds.rb +1 -1
- data/lib/facts/{el → linux}/system_uptime/uptime.rb +1 -1
- data/lib/facts/{el → linux}/timezone.rb +1 -1
- data/lib/facts/{el → rhel}/os/distro/codename.rb +1 -1
- data/lib/facts/{el → rhel}/os/distro/description.rb +1 -1
- data/lib/facts/{el → rhel}/os/distro/id.rb +1 -1
- data/lib/facts/{el → rhel}/os/distro/release.rb +1 -1
- data/lib/facts/{el → rhel}/os/family.rb +1 -1
- data/lib/facts/{el → rhel}/os/name.rb +1 -1
- data/lib/facts/rhel/os/release.rb +36 -0
- data/lib/facts/ubuntu/os/distro/release.rb +31 -0
- data/lib/facts/ubuntu/os/release.rb +20 -0
- data/lib/facts/windows/dhcp_servers.rb +5 -2
- data/lib/facts/windows/networking/primary.rb +1 -1
- data/lib/facts_utils/uptime_parser.rb +6 -3
- data/lib/framework/config/config_reader.rb +4 -0
- data/lib/framework/config/fact_groups.rb +2 -1
- data/lib/framework/core/cache_manager.rb +19 -21
- data/lib/framework/core/fact_loaders/internal_fact_loader.rb +2 -2
- data/lib/framework/core/options/config_file_options.rb +19 -10
- data/lib/framework/core/options/option_store.rb +14 -5
- data/lib/framework/detector/os_detector.rb +2 -0
- data/lib/framework/formatters/yaml_fact_formatter.rb +50 -4
- data/lib/resolvers/aix/mountpoints.rb +3 -3
- data/lib/resolvers/aix/networking_resolver.rb +1 -1
- data/lib/resolvers/aix/os_level_resolver.rb +1 -1
- data/lib/resolvers/aix/partitions.rb +3 -6
- data/lib/resolvers/aix/processors.rb +80 -0
- data/lib/resolvers/aix/utils/odm_query.rb +2 -1
- data/lib/resolvers/augeas_resolver.rb +1 -1
- data/lib/resolvers/eos_release_resolver.rb +3 -1
- data/lib/resolvers/freebsd/freebsd_version_resolver.rb +37 -0
- data/lib/resolvers/hostname_resolver.rb +1 -2
- data/lib/resolvers/lpar_resolver.rb +1 -2
- data/lib/resolvers/lsb_release_resolver.rb +2 -5
- data/lib/resolvers/macosx/dmi_resolver.rb +1 -2
- data/lib/resolvers/macosx/filesystems_resolver.rb +1 -2
- data/lib/resolvers/macosx/ipaddress_resolver.rb +3 -4
- data/lib/resolvers/macosx/load_averages_resolver.rb +1 -2
- data/lib/resolvers/macosx/mountpoints_resolver.rb +0 -1
- data/lib/resolvers/macosx/processor_resolver.rb +1 -2
- data/lib/resolvers/macosx/swap_memory_resolver.rb +2 -3
- data/lib/resolvers/macosx/system_memory_resolver.rb +3 -4
- data/lib/resolvers/macosx/system_profiler_resolver.rb +3 -1
- data/lib/resolvers/mountpoints_resolver.rb +3 -3
- data/lib/resolvers/networking_linux_resolver.rb +78 -19
- data/lib/resolvers/os_level_resolver.rb +3 -2
- data/lib/resolvers/partitions.rb +7 -4
- data/lib/resolvers/processors_resolver.rb +5 -0
- data/lib/resolvers/selinux_resolver.rb +1 -1
- data/lib/resolvers/solaris/filesystems_resolver.rb +1 -1
- data/lib/resolvers/solaris/ipaddress_resolver.rb +2 -3
- data/lib/resolvers/solaris/processors.rb +2 -6
- data/lib/resolvers/solaris/solaris_os_release_resolver.rb +2 -12
- data/lib/resolvers/solaris/solaris_zone_name.rb +2 -8
- data/lib/resolvers/solaris/zfs_resolver.rb +1 -2
- data/lib/resolvers/solaris/zone_resolver.rb +3 -9
- data/lib/resolvers/solaris/zpool_resolver.rb +1 -2
- data/lib/resolvers/sw_vers_resolver.rb +1 -1
- data/lib/resolvers/uname_resolver.rb +2 -2
- data/lib/resolvers/utils/filesystem_helper.rb +1 -1
- data/lib/resolvers/windows/ffi/network_utils.rb +1 -1
- data/lib/resolvers/windows/networking_resolver.rb +8 -7
- data/lib/resolvers/windows/virtualization_resolver.rb +5 -4
- data/lib/resolvers/wpar_resolver.rb +3 -3
- data/os_hierarchy.json +7 -4
- data/tasks/fact_list_generator.rake +26 -0
- metadata +130 -262
- data/.github/workflows/rtc.yml +0 -11
- data/.travis.yml +0 -47
- data/lib/facts/debian/augeas/version.rb +0 -19
- data/lib/facts/debian/disks.rb +0 -15
- data/lib/facts/debian/dmi/bios/release_date.rb +0 -19
- data/lib/facts/debian/dmi/bios/vendor.rb +0 -19
- data/lib/facts/debian/dmi/bios/version.rb +0 -19
- data/lib/facts/debian/dmi/board/manufacturer.rb +0 -19
- data/lib/facts/debian/dmi/board/product.rb +0 -19
- data/lib/facts/debian/dmi/board/serial_number.rb +0 -19
- data/lib/facts/debian/dmi/chassis/asset_tag.rb +0 -19
- data/lib/facts/debian/dmi/chassis/type.rb +0 -19
- data/lib/facts/debian/dmi/manufacturer.rb +0 -17
- data/lib/facts/debian/dmi/product/name.rb +0 -19
- data/lib/facts/debian/dmi/product/serial_number.rb +0 -18
- data/lib/facts/debian/dmi/product/uuid.rb +0 -18
- data/lib/facts/debian/filesystems.rb +0 -14
- data/lib/facts/debian/fips_enabled.rb +0 -14
- data/lib/facts/debian/identity/gid.rb +0 -16
- data/lib/facts/debian/identity/group.rb +0 -18
- data/lib/facts/debian/identity/privileged.rb +0 -16
- data/lib/facts/debian/identity/uid.rb +0 -16
- data/lib/facts/debian/identity/user.rb +0 -17
- data/lib/facts/debian/interfaces.rb +0 -16
- data/lib/facts/debian/kernelrelease.rb +0 -14
- data/lib/facts/debian/load_averages.rb +0 -14
- data/lib/facts/debian/memory/swap/available.rb +0 -20
- data/lib/facts/debian/memory/swap/capacity.rb +0 -18
- data/lib/facts/debian/memory/swap/total.rb +0 -20
- data/lib/facts/debian/memory/swap/total_bytes.rb +0 -20
- data/lib/facts/debian/memory/swap/used.rb +0 -19
- data/lib/facts/debian/memory/swap/used_bytes.rb +0 -18
- data/lib/facts/debian/memory/system/capacity.rb +0 -18
- data/lib/facts/debian/memory/system/total.rb +0 -20
- data/lib/facts/debian/memory/system/total_bytes.rb +0 -20
- data/lib/facts/debian/memory/system/used.rb +0 -19
- data/lib/facts/debian/memory/system/used_bytes.rb +0 -18
- data/lib/facts/debian/mountpoints.rb +0 -21
- data/lib/facts/debian/networking/domain.rb +0 -17
- data/lib/facts/debian/networking/fqdn.rb +0 -17
- data/lib/facts/debian/networking/hostname.rb +0 -17
- data/lib/facts/debian/networking/interfaces.rb +0 -16
- data/lib/facts/debian/networking/ip.rb +0 -18
- data/lib/facts/debian/networking/primary.rb +0 -17
- data/lib/facts/debian/os/hardware.rb +0 -18
- data/lib/facts/debian/os/name.rb +0 -18
- data/lib/facts/debian/os/selinux/config_mode.rb +0 -21
- data/lib/facts/debian/os/selinux/config_policy.rb +0 -21
- data/lib/facts/debian/os/selinux/current_mode.rb +0 -21
- data/lib/facts/debian/os/selinux/enabled.rb +0 -21
- data/lib/facts/debian/os/selinux/enforced.rb +0 -21
- data/lib/facts/debian/os/selinux/policy_version.rb +0 -21
- data/lib/facts/debian/partitions.rb +0 -26
- data/lib/facts/debian/processors/count.rb +0 -17
- data/lib/facts/debian/processors/models.rb +0 -16
- data/lib/facts/debian/processors/physicalcount.rb +0 -17
- data/lib/facts/debian/puppet_version.rb +0 -15
- data/lib/facts/debian/ruby/platform.rb +0 -18
- data/lib/facts/debian/ruby/sitedir.rb +0 -18
- data/lib/facts/debian/ruby/version.rb +0 -18
- data/lib/facts/debian/ssh.rb +0 -26
- data/lib/facts/debian/system_uptime/days.rb +0 -18
- data/lib/facts/debian/system_uptime/hours.rb +0 -18
- data/lib/facts/debian/system_uptime/seconds.rb +0 -18
- data/lib/facts/debian/system_uptime/uptime.rb +0 -18
- data/lib/facts/debian/timezone.rb +0 -14
- data/lib/facts/el/augeas/version.rb +0 -19
- data/lib/facts/el/disks.rb +0 -15
- data/lib/facts/el/dmi/bios/release_date.rb +0 -19
- data/lib/facts/el/dmi/bios/version.rb +0 -19
- data/lib/facts/el/dmi/board/manufacturer.rb +0 -19
- data/lib/facts/el/dmi/chassis/asset_tag.rb +0 -19
- data/lib/facts/el/dmi/chassis/type.rb +0 -19
- data/lib/facts/el/dmi/product/serial_number.rb +0 -19
- data/lib/facts/el/dmi/product/uuid.rb +0 -19
- data/lib/facts/el/facterversion.rb +0 -14
- data/lib/facts/el/identity/gid.rb +0 -16
- data/lib/facts/el/identity/uid.rb +0 -16
- data/lib/facts/el/kernel.rb +0 -14
- data/lib/facts/el/kernelmajversion.rb +0 -23
- data/lib/facts/el/kernelversion.rb +0 -21
- data/lib/facts/el/memory/swap/available_bytes.rb +0 -20
- data/lib/facts/el/memory/swap/capacity.rb +0 -18
- data/lib/facts/el/memory/system/available.rb +0 -20
- data/lib/facts/el/memory/system/available_bytes.rb +0 -20
- data/lib/facts/el/memory/system/total.rb +0 -20
- data/lib/facts/el/memory/system/total_bytes.rb +0 -20
- data/lib/facts/el/memory/system/used.rb +0 -19
- data/lib/facts/el/mountpoints.rb +0 -21
- data/lib/facts/el/networking/interfaces.rb +0 -16
- data/lib/facts/el/networking/ip.rb +0 -18
- data/lib/facts/el/networking/mac.rb +0 -18
- data/lib/facts/el/networking/primary.rb +0 -17
- data/lib/facts/el/os/selinux/config_policy.rb +0 -21
- data/lib/facts/el/partitions.rb +0 -26
- data/lib/facts/el/path.rb +0 -14
- data/lib/facts/el/processors/physicalcount.rb +0 -18
- data/lib/facts/el/ruby/platform.rb +0 -18
- data/lib/facts/el/ruby/sitedir.rb +0 -18
- data/lib/facts/el/ruby/version.rb +0 -18
- data/lib/facts/el/sshalgorithmkey.rb +0 -17
- data/lib/facts/el/system_uptime/days.rb +0 -18
- data/lib/facts/sles/dmi/bios/vendor.rb +0 -19
- data/lib/facts/sles/dmi/board/product.rb +0 -19
- data/lib/facts/sles/dmi/board/serial_number.rb +0 -19
- data/lib/facts/sles/dmi/manufacturer.rb +0 -17
- data/lib/facts/sles/dmi/product/name.rb +0 -19
- data/lib/facts/sles/facterversion.rb +0 -14
- data/lib/facts/sles/filesystems.rb +0 -14
- data/lib/facts/sles/fips_enabled.rb +0 -14
- data/lib/facts/sles/identity/group.rb +0 -18
- data/lib/facts/sles/identity/privileged.rb +0 -16
- data/lib/facts/sles/identity/user.rb +0 -17
- data/lib/facts/sles/interfaces.rb +0 -16
- data/lib/facts/sles/kernel.rb +0 -14
- data/lib/facts/sles/kernelmajversion.rb +0 -15
- data/lib/facts/sles/kernelrelease.rb +0 -14
- data/lib/facts/sles/kernelversion.rb +0 -15
- data/lib/facts/sles/load_averages.rb +0 -14
- data/lib/facts/sles/memory/swap/available.rb +0 -20
- data/lib/facts/sles/memory/swap/available_bytes.rb +0 -20
- data/lib/facts/sles/memory/swap/total.rb +0 -20
- data/lib/facts/sles/memory/swap/total_bytes.rb +0 -20
- data/lib/facts/sles/memory/swap/used.rb +0 -19
- data/lib/facts/sles/memory/swap/used_bytes.rb +0 -18
- data/lib/facts/sles/memory/system/available.rb +0 -20
- data/lib/facts/sles/memory/system/available_bytes.rb +0 -20
- data/lib/facts/sles/memory/system/capacity.rb +0 -18
- data/lib/facts/sles/memory/system/used_bytes.rb +0 -18
- data/lib/facts/sles/networking/domain.rb +0 -17
- data/lib/facts/sles/networking/fqdn.rb +0 -17
- data/lib/facts/sles/networking/hostname.rb +0 -17
- data/lib/facts/sles/networking/mac.rb +0 -18
- data/lib/facts/sles/os/architecture.rb +0 -18
- data/lib/facts/sles/os/hardware.rb +0 -18
- data/lib/facts/sles/os/selinux/config_mode.rb +0 -21
- data/lib/facts/sles/os/selinux/current_mode.rb +0 -21
- data/lib/facts/sles/os/selinux/enabled.rb +0 -21
- data/lib/facts/sles/os/selinux/enforced.rb +0 -21
- data/lib/facts/sles/os/selinux/policy_version.rb +0 -21
- data/lib/facts/sles/path.rb +0 -14
- data/lib/facts/sles/processor.rb +0 -20
- data/lib/facts/sles/processors/isa.rb +0 -27
- data/lib/facts/sles/puppet_version.rb +0 -15
- data/lib/facts/sles/ssh.rb +0 -26
- data/lib/facts/sles/sshfp_algorithm.rb +0 -20
- data/lib/facts/sles/system_uptime/hours.rb +0 -18
- data/lib/facts/sles/system_uptime/seconds.rb +0 -18
- data/lib/facts/sles/system_uptime/uptime.rb +0 -18
- data/lib/facts/sles/timezone.rb +0 -14
@@ -12,10 +12,10 @@ module Facter
|
|
12
12
|
@facts.select { |fact| fact.type == :legacy }
|
13
13
|
end
|
14
14
|
|
15
|
-
def initialize
|
15
|
+
def initialize(os_descendents = nil)
|
16
16
|
@facts = []
|
17
17
|
|
18
|
-
os_descendents
|
18
|
+
os_descendents ||= OsDetector.instance.hierarchy
|
19
19
|
load_all_oses_in_descending_order(os_descendents)
|
20
20
|
end
|
21
21
|
|
@@ -9,6 +9,16 @@ module Facter
|
|
9
9
|
|
10
10
|
augment_config_path(config_path)
|
11
11
|
|
12
|
+
augment_all
|
13
|
+
end
|
14
|
+
|
15
|
+
def get
|
16
|
+
@options || {}
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def augment_all
|
12
22
|
if Options.cli?
|
13
23
|
augment_cli(Facter::ConfigReader.cli)
|
14
24
|
augment_ruby(Facter::ConfigReader.global)
|
@@ -16,15 +26,9 @@ module Facter
|
|
16
26
|
augment_custom(Facter::ConfigReader.global)
|
17
27
|
augment_external(Facter::ConfigReader.global)
|
18
28
|
augment_show_legacy(Facter::ConfigReader.global)
|
19
|
-
augment_facts(Facter::ConfigReader.ttls)
|
29
|
+
augment_facts(Facter::ConfigReader.ttls, Facter::ConfigReader.fact_groups)
|
20
30
|
end
|
21
31
|
|
22
|
-
def get
|
23
|
-
@options || {}
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
32
|
def augment_config_path(config_path)
|
29
33
|
@options[:config] = config_path
|
30
34
|
end
|
@@ -72,11 +76,16 @@ module Facter
|
|
72
76
|
@options[:show_legacy] = global_conf['show-legacy'] unless global_conf['show-legacy'].nil?
|
73
77
|
end
|
74
78
|
|
75
|
-
def augment_facts(ttls)
|
76
|
-
|
77
|
-
@options[:blocked_facts] = blocked_facts unless blocked_facts.nil?
|
79
|
+
def augment_facts(ttls, groups)
|
80
|
+
fact_groups = Facter::FactGroups.new
|
78
81
|
|
82
|
+
@options[:blocked_facts] = fact_groups.blocked_facts unless fact_groups.blocked_facts.nil?
|
83
|
+
@options[:block_list] = fact_groups.block_list
|
79
84
|
@options[:ttls] = ttls unless ttls.nil?
|
85
|
+
|
86
|
+
f_groups = fact_groups.groups || {}
|
87
|
+
f_groups = groups.merge(f_groups) unless groups.nil?
|
88
|
+
@options[:fact_groups] = f_groups
|
80
89
|
end
|
81
90
|
end
|
82
91
|
end
|
@@ -21,6 +21,8 @@ module Facter
|
|
21
21
|
@cache = true
|
22
22
|
@blocked_facts = []
|
23
23
|
@user_query = []
|
24
|
+
@block_list = {}
|
25
|
+
@fact_groups = {}
|
24
26
|
|
25
27
|
class << self
|
26
28
|
attr_reader :debug, :verbose, :log_level, :show_legacy, :trace, :ruby,
|
@@ -28,7 +30,8 @@ module Facter
|
|
28
30
|
|
29
31
|
attr_accessor :config, :user_query, :strict, :json, :haml, :external_facts,
|
30
32
|
:cache, :yaml, :puppet, :ttls, :block, :cli, :config_file_custom_dir,
|
31
|
-
:config_file_external_dir, :default_external_dir
|
33
|
+
:config_file_external_dir, :default_external_dir, :fact_groups,
|
34
|
+
:block_list
|
32
35
|
|
33
36
|
attr_writer :external_dir
|
34
37
|
|
@@ -152,16 +155,22 @@ module Facter
|
|
152
155
|
@log_level = :warn
|
153
156
|
@show_legacy = true
|
154
157
|
@block = true
|
158
|
+
@ruby = true
|
159
|
+
@user_query = []
|
160
|
+
@cli = nil
|
161
|
+
@cache = true
|
162
|
+
reset_config
|
163
|
+
end
|
164
|
+
|
165
|
+
def reset_config
|
155
166
|
@custom_dir = []
|
156
167
|
@custom_facts = true
|
157
168
|
@external_dir = []
|
158
169
|
@default_external_dir = []
|
159
170
|
@external_facts = true
|
160
|
-
@ruby = true
|
161
171
|
@blocked_facts = []
|
162
|
-
@
|
163
|
-
@
|
164
|
-
@cache = true
|
172
|
+
@fact_groups = {}
|
173
|
+
@block_list = {}
|
165
174
|
end
|
166
175
|
|
167
176
|
def fallback_external_dir
|
@@ -6,13 +6,59 @@ module Facter
|
|
6
6
|
@log = Log.new(self)
|
7
7
|
end
|
8
8
|
|
9
|
-
def format(
|
10
|
-
|
9
|
+
def format(resolved_facts)
|
10
|
+
user_queries = resolved_facts.uniq(&:user_query).map(&:user_query)
|
11
|
+
|
12
|
+
facts_to_display = if user_queries.count == 1 && user_queries.first.empty?
|
13
|
+
FormatterHelper.retrieve_fact_collection(resolved_facts)
|
14
|
+
else
|
15
|
+
FormatterHelper.retrieve_facts_to_display_for_user_query(user_queries, resolved_facts)
|
16
|
+
end
|
17
|
+
|
18
|
+
facts_to_display = Psych.parse_stream(facts_to_display.to_yaml)
|
19
|
+
facts_to_display.children[0].tag_directives = []
|
20
|
+
yaml_pretty = quote_special_strings(facts_to_display)
|
11
21
|
|
12
|
-
@log.debug('Replace single backslash with double backslashes')
|
13
|
-
yaml_pretty.gsub!(/\\/, '\&\&')
|
14
22
|
@log.debug('Replace --- from yaml beginning, to keep it compatible with C facter')
|
15
23
|
yaml_pretty.gsub(/^---[\r\n]+/, '')
|
16
24
|
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def quote_special_strings(fact_hash)
|
29
|
+
require 'psych'
|
30
|
+
|
31
|
+
fact_hash.grep(Psych::Nodes::Scalar).each do |node|
|
32
|
+
next unless needs_quote?(node.value)
|
33
|
+
|
34
|
+
node.plain = false
|
35
|
+
node.quoted = true
|
36
|
+
node.style = Psych::Nodes::Scalar::DOUBLE_QUOTED
|
37
|
+
end
|
38
|
+
|
39
|
+
fact_hash = unquote_keys(fact_hash)
|
40
|
+
fact_hash.yaml
|
41
|
+
end
|
42
|
+
|
43
|
+
def unquote_keys(fact_hash)
|
44
|
+
fact_hash.grep(Psych::Nodes::Mapping).each do |node|
|
45
|
+
node.children.each_slice(2) do |k, _|
|
46
|
+
k.plain = true
|
47
|
+
k.quoted = false
|
48
|
+
k.style = Psych::Nodes::Scalar::ANY
|
49
|
+
end
|
50
|
+
end
|
51
|
+
fact_hash
|
52
|
+
end
|
53
|
+
|
54
|
+
def needs_quote?(value)
|
55
|
+
return false if value =~ /true|false/
|
56
|
+
return false if value[/^[0-9]+$/]
|
57
|
+
return true if value =~ /y|Y|yes|Yes|YES|n|N|no|No|NO|True|TRUE|False|FALSE|on|On|ON|off|Off|OFF|:/
|
58
|
+
return false if value[/[a-zA-Z]/]
|
59
|
+
return false if value[/[0-9]+\.[0-9]+\./]
|
60
|
+
|
61
|
+
true
|
62
|
+
end
|
17
63
|
end
|
18
64
|
end
|
@@ -17,9 +17,9 @@ module Facter
|
|
17
17
|
|
18
18
|
def read_mount(fact_name)
|
19
19
|
@fact_list[:mountpoints] = {}
|
20
|
-
output
|
20
|
+
output = Facter::Core::Execution.execute('mount', logger: log)
|
21
21
|
output.split("\n").map do |line|
|
22
|
-
next if line =~
|
22
|
+
next if line =~ /node|---|procfs|ahafs/
|
23
23
|
|
24
24
|
elem = line.split("\s")
|
25
25
|
|
@@ -32,7 +32,7 @@ module Facter
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def retrieve_sizes_for_mounts
|
35
|
-
output
|
35
|
+
output = Facter::Core::Execution.execute('df -P', logger: log)
|
36
36
|
output.split("\n").map do |line|
|
37
37
|
next if line =~ /Filesystem|-\s+-\s+-/
|
38
38
|
|
@@ -15,7 +15,7 @@ module Facter
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def read_netstat(fact_name)
|
18
|
-
output
|
18
|
+
output = Facter::Core::Execution.execute('netstat -rn', logger: log)
|
19
19
|
output = output.split("\n").select { |line| (line =~ /\s\s[0-9]+.[0-9]+.[0-9]+.[0-9]+|\s\s.*:[0-9a-f]+/) }
|
20
20
|
get_primary_interface_info(output)
|
21
21
|
|
@@ -14,7 +14,7 @@ module Facter
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def read_oslevel(fact_name)
|
17
|
-
output
|
17
|
+
output = Facter::Core::Execution.execute('/usr/bin/oslevel -s', logger: log)
|
18
18
|
@fact_list[:build] = output
|
19
19
|
@fact_list[:kernel] = 'AIX'
|
20
20
|
|
@@ -4,7 +4,6 @@ module Facter
|
|
4
4
|
module Resolvers
|
5
5
|
module Aix
|
6
6
|
class Partitions < BaseResolver
|
7
|
-
@log = Facter::Log.new(self)
|
8
7
|
@semaphore = Mutex.new
|
9
8
|
@fact_list ||= {}
|
10
9
|
class << self
|
@@ -40,11 +39,9 @@ module Facter
|
|
40
39
|
end
|
41
40
|
|
42
41
|
def populate_from_lslv(name)
|
43
|
-
stdout
|
44
|
-
|
45
|
-
|
46
|
-
return
|
47
|
-
end
|
42
|
+
stdout = Facter::Core::Execution.execute("lslv -L #{name}", logger: log)
|
43
|
+
|
44
|
+
return if stdout.empty?
|
48
45
|
|
49
46
|
info_hash = extract_info(stdout)
|
50
47
|
size_bytes = compute_size(info_hash)
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Facter
|
4
|
+
module Resolvers
|
5
|
+
module Aix
|
6
|
+
class Processors < BaseResolver
|
7
|
+
@semaphore = Mutex.new
|
8
|
+
@fact_list ||= {}
|
9
|
+
class << self
|
10
|
+
private
|
11
|
+
|
12
|
+
def post_resolve(fact_name)
|
13
|
+
@fact_list.fetch(fact_name) { query_pddv(fact_name) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def query_pddv(fact_name)
|
17
|
+
@fact_list[:models] = []
|
18
|
+
@fact_list[:logical_count] = 0
|
19
|
+
|
20
|
+
odmquery = Facter::ODMQuery.new
|
21
|
+
odmquery.equals('class', 'processor')
|
22
|
+
|
23
|
+
result = odmquery.execute
|
24
|
+
|
25
|
+
return unless result
|
26
|
+
|
27
|
+
proc_names = retrieve_from_array(result.scan(/uniquetype\s=\s.*/), 1)
|
28
|
+
|
29
|
+
proc_names.each { |name| populate_from_cudv(name) }
|
30
|
+
|
31
|
+
@fact_list[fact_name]
|
32
|
+
end
|
33
|
+
|
34
|
+
def populate_from_cudv(name)
|
35
|
+
odmquery = Facter::ODMQuery.new
|
36
|
+
odmquery.equals('PdDvLn', name)
|
37
|
+
|
38
|
+
result = odmquery.execute
|
39
|
+
|
40
|
+
return unless result
|
41
|
+
|
42
|
+
names = retrieve_from_array(result.scan(/name\s=\s.*/), 1)
|
43
|
+
|
44
|
+
names.each { |elem| query_cuat(elem) }
|
45
|
+
end
|
46
|
+
|
47
|
+
def query_cuat(name)
|
48
|
+
odmquery = Facter::ODMQuery.new
|
49
|
+
odmquery.equals('name', name)
|
50
|
+
|
51
|
+
result = odmquery.execute
|
52
|
+
|
53
|
+
return unless result
|
54
|
+
|
55
|
+
type, frequency, smt_threads, smt_enabled = process(result)
|
56
|
+
|
57
|
+
@fact_list[:speed] ||= frequency if frequency
|
58
|
+
|
59
|
+
threads = smt_enabled ? smt_threads : 1
|
60
|
+
|
61
|
+
@fact_list[:logical_count] += threads
|
62
|
+
@fact_list[:models].concat([type] * threads)
|
63
|
+
end
|
64
|
+
|
65
|
+
def process(stdout)
|
66
|
+
type = retrieve_from_array(stdout.scan(/attribute\s=\s"type"\n\s+value\s=\s.*/), 2).first
|
67
|
+
frequency = retrieve_from_array(stdout.scan(/attribute\s=\s"frequency"\n\s+value\s=\s.*/), 2).first
|
68
|
+
smt_threads = retrieve_from_array(stdout.scan(/attribute\s=\s"smt_threads"\n\s+value\s=\s.*/), 2).first
|
69
|
+
smt_enabled = retrieve_from_array(stdout.scan(/attribute\s=\s"smt_enabled"\n\s+value\s=\s.*/), 2).first
|
70
|
+
[type, frequency.to_i, smt_threads.to_i, smt_enabled]
|
71
|
+
end
|
72
|
+
|
73
|
+
def retrieve_from_array(array, pos)
|
74
|
+
array.map { |elem| elem.split('=')[pos].strip.delete('"') }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -12,6 +12,7 @@ module Facter
|
|
12
12
|
def initialize
|
13
13
|
@query = ''
|
14
14
|
@conditions = []
|
15
|
+
@log = Facter::Log.new(self)
|
15
16
|
end
|
16
17
|
|
17
18
|
def equals(field, value)
|
@@ -29,7 +30,7 @@ module Facter
|
|
29
30
|
REPOS.each do |repo|
|
30
31
|
break if result && !result.empty?
|
31
32
|
|
32
|
-
result
|
33
|
+
result = Facter::Core::Execution.execute("#{query} #{repo}", logger: @log)
|
33
34
|
end
|
34
35
|
result
|
35
36
|
end
|
@@ -14,7 +14,7 @@ module Facter
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def read_augeas_version(fact_name)
|
17
|
-
output
|
17
|
+
output = Facter::Core::Execution.execute('augparse --version 2>&1', logger: log)
|
18
18
|
@fact_list[:augeas_version] = Regexp.last_match(1) if output =~ /^augparse (\d+\.\d+\.\d+)/
|
19
19
|
@fact_list[fact_name]
|
20
20
|
end
|
@@ -18,7 +18,9 @@ module Facter
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def read_eos_release(fact_name)
|
21
|
-
output
|
21
|
+
output = Util::FileHelper.safe_read('/etc/Eos-release', nil)
|
22
|
+
return @fact_list[fact_name] = nil if output.nil?
|
23
|
+
|
22
24
|
output_strings = output.split(' ')
|
23
25
|
|
24
26
|
@fact_list[:name] = output_strings[0]
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Facter
|
4
|
+
module Resolvers
|
5
|
+
module Freebsd
|
6
|
+
class FreebsdVersion < BaseResolver
|
7
|
+
@semaphore = Mutex.new
|
8
|
+
@fact_list ||= {}
|
9
|
+
|
10
|
+
class << self
|
11
|
+
private
|
12
|
+
|
13
|
+
def post_resolve(fact_name)
|
14
|
+
@fact_list.fetch(fact_name) { freebsd_version_system_call(fact_name) }
|
15
|
+
end
|
16
|
+
|
17
|
+
def freebsd_version_system_call(fact_name)
|
18
|
+
output = Facter::Core::Execution.execute('/bin/freebsd-version -kru', logger: log)
|
19
|
+
return if output.empty?
|
20
|
+
|
21
|
+
build_fact_list(output)
|
22
|
+
|
23
|
+
@fact_list[fact_name]
|
24
|
+
end
|
25
|
+
|
26
|
+
def build_fact_list(output)
|
27
|
+
freebsd_version_results = output.split("\n")
|
28
|
+
|
29
|
+
@fact_list[:installed_kernel] = freebsd_version_results[0].strip
|
30
|
+
@fact_list[:running_kernel] = freebsd_version_results[1].strip
|
31
|
+
@fact_list[:installed_userland] = freebsd_version_results[2].strip
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -3,7 +3,6 @@
|
|
3
3
|
module Facter
|
4
4
|
module Resolvers
|
5
5
|
class Hostname < BaseResolver
|
6
|
-
@log = Facter::Log.new(self)
|
7
6
|
@semaphore = Mutex.new
|
8
7
|
@fact_list ||= {}
|
9
8
|
class << self
|
@@ -14,7 +13,7 @@ module Facter
|
|
14
13
|
end
|
15
14
|
|
16
15
|
def retrieve_hostname(fact_name)
|
17
|
-
output
|
16
|
+
output = Facter::Core::Execution.execute('hostname', logger: log)
|
18
17
|
|
19
18
|
# get domain
|
20
19
|
domain = read_domain(output)
|
@@ -14,8 +14,7 @@ module Facter
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def read_lpar(fact_name)
|
17
|
-
|
18
|
-
output, _status = Open3.capture2(lpar_cmd)
|
17
|
+
output = Facter::Core::Execution.execute('/usr/bin/lparstat -i', logger: log)
|
19
18
|
output.each_line do |line|
|
20
19
|
populate_lpar_data(line.split(':').map(&:strip))
|
21
20
|
end
|
@@ -10,7 +10,6 @@ module Facter
|
|
10
10
|
# :codename
|
11
11
|
|
12
12
|
@semaphore = Mutex.new
|
13
|
-
@log = Facter::Log.new(self)
|
14
13
|
@fact_list ||= {}
|
15
14
|
|
16
15
|
class << self
|
@@ -27,14 +26,12 @@ module Facter
|
|
27
26
|
end
|
28
27
|
|
29
28
|
def lsb_release_installed?
|
30
|
-
output
|
31
|
-
@log.debug(stderr) unless stderr.empty?
|
29
|
+
output = Facter::Core::Execution.execute('which lsb_release', logger: log)
|
32
30
|
@fact_list[:lsb_release_installed] = !output.empty?
|
33
31
|
end
|
34
32
|
|
35
33
|
def read_lsb_release_file
|
36
|
-
output
|
37
|
-
@log.debug(stderr) unless stderr.empty?
|
34
|
+
output = Facter::Core::Execution.execute('lsb_release -a', logger: log)
|
38
35
|
build_fact_list(output)
|
39
36
|
end
|
40
37
|
|