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
@@ -4,7 +4,6 @@ module Facter
|
|
4
4
|
module Resolvers
|
5
5
|
module Macosx
|
6
6
|
class DmiBios < BaseResolver
|
7
|
-
@log = Facter::Log.new(self)
|
8
7
|
@semaphore = Mutex.new
|
9
8
|
@fact_list ||= {}
|
10
9
|
|
@@ -19,7 +18,7 @@ module Facter
|
|
19
18
|
|
20
19
|
def read_facts
|
21
20
|
# OSX only supports the product name
|
22
|
-
output
|
21
|
+
output = Facter::Core::Execution.execute('sysctl -n hw.model', logger: log)
|
23
22
|
@fact_list[:macosx_model] = output&.strip
|
24
23
|
end
|
25
24
|
end
|
@@ -7,7 +7,6 @@ module Facter
|
|
7
7
|
# :macosx_filesystems
|
8
8
|
@semaphore = Mutex.new
|
9
9
|
@fact_list ||= {}
|
10
|
-
@log = Facter::Log.new(self)
|
11
10
|
|
12
11
|
class << self
|
13
12
|
private
|
@@ -17,7 +16,7 @@ module Facter
|
|
17
16
|
end
|
18
17
|
|
19
18
|
def read_filesystems(fact_name)
|
20
|
-
output
|
19
|
+
output = Facter::Core::Execution.execute('mount', logger: log)
|
21
20
|
filesystems = []
|
22
21
|
output.each_line do |line|
|
23
22
|
filesystem = line.match(/\(([a-z]+)\,*/).to_s
|
@@ -4,7 +4,6 @@ module Facter
|
|
4
4
|
module Resolvers
|
5
5
|
module Macosx
|
6
6
|
class Ipaddress < BaseResolver
|
7
|
-
@log = Facter::Log.new(self)
|
8
7
|
@semaphore = Mutex.new
|
9
8
|
@fact_list ||= {}
|
10
9
|
class << self
|
@@ -19,7 +18,7 @@ module Facter
|
|
19
18
|
primary_interface = read_primary_interface
|
20
19
|
unless primary_interface.nil?
|
21
20
|
@fact_list[:primary] = primary_interface
|
22
|
-
output
|
21
|
+
output = Facter::Core::Execution.execute("ipconfig getifaddr #{primary_interface}", logger: log)
|
23
22
|
ip = output.strip
|
24
23
|
end
|
25
24
|
find_all_interfaces
|
@@ -29,7 +28,7 @@ module Facter
|
|
29
28
|
|
30
29
|
def read_primary_interface
|
31
30
|
iface = nil
|
32
|
-
output
|
31
|
+
output = Facter::Core::Execution.execute('route -n get default', logger: log)
|
33
32
|
output.split(/^\S/).each do |str|
|
34
33
|
iface = Regexp.last_match(1) if str.strip =~ /interface: (\S+)/
|
35
34
|
end
|
@@ -37,7 +36,7 @@ module Facter
|
|
37
36
|
end
|
38
37
|
|
39
38
|
def find_all_interfaces
|
40
|
-
output
|
39
|
+
output = Facter::Core::Execution.execute('ifconfig -a', logger: log)
|
41
40
|
|
42
41
|
data_hash = Hash[*output.split(/^([A-Za-z0-9_]+): /)[1..-1]]
|
43
42
|
|
@@ -4,7 +4,6 @@ module Facter
|
|
4
4
|
module Resolvers
|
5
5
|
module Macosx
|
6
6
|
class LoadAverages < BaseResolver
|
7
|
-
@log = Facter::Log.new(self)
|
8
7
|
@semaphore = Mutex.new
|
9
8
|
@fact_list ||= {}
|
10
9
|
class << self
|
@@ -15,7 +14,7 @@ module Facter
|
|
15
14
|
end
|
16
15
|
|
17
16
|
def read_load_averages_file(fact_name)
|
18
|
-
output
|
17
|
+
output = Facter::Core::Execution.execute('sysctl -n vm.loadavg', logger: log)
|
19
18
|
@fact_list[:load_averages] = {}.tap { |h| _, h['1m'], h['5m'], h['15m'], = output.split.map(&:to_f) }
|
20
19
|
|
21
20
|
@fact_list[fact_name]
|
@@ -4,7 +4,6 @@ module Facter
|
|
4
4
|
module Resolvers
|
5
5
|
module Macosx
|
6
6
|
class Processors < BaseResolver
|
7
|
-
@log = Facter::Log.new(self)
|
8
7
|
@semaphore = Mutex.new
|
9
8
|
@fact_list = {}
|
10
9
|
ITEMS = { logical_count: 'hw.logicalcpu_max',
|
@@ -24,7 +23,7 @@ module Facter
|
|
24
23
|
end
|
25
24
|
|
26
25
|
def read_processor_data(fact_name)
|
27
|
-
output
|
26
|
+
output = Facter::Core::Execution.execute("sysctl #{ITEMS.values.join(' ')}", logger: log)
|
28
27
|
build_fact_list(output.split("\n"))
|
29
28
|
@fact_list[fact_name]
|
30
29
|
end
|
@@ -6,7 +6,6 @@ module Facter
|
|
6
6
|
class SwapMemory < BaseResolver
|
7
7
|
@semaphore = Mutex.new
|
8
8
|
@fact_list ||= {}
|
9
|
-
@log = Facter::Log.new(self)
|
10
9
|
class << self
|
11
10
|
private
|
12
11
|
|
@@ -15,7 +14,7 @@ module Facter
|
|
15
14
|
end
|
16
15
|
|
17
16
|
def read_swap_memory(fact_name) # rubocop:disable Metrics/AbcSize
|
18
|
-
output =
|
17
|
+
output = Facter::Core::Execution.execute('sysctl -n vm.swapusage', logger: log)
|
19
18
|
data = output.match(/^total = ([\d.]+)M used = ([\d.]+)M free = ([\d.]+)M (\(encrypted\))$/)
|
20
19
|
|
21
20
|
if data[1].to_f.positive?
|
@@ -34,7 +33,7 @@ module Facter
|
|
34
33
|
end
|
35
34
|
|
36
35
|
def compute_capacity(used, total)
|
37
|
-
format('
|
36
|
+
"#{format('%<value>.2f', value: (used / total.to_f * 100))}%"
|
38
37
|
end
|
39
38
|
end
|
40
39
|
end
|
@@ -6,7 +6,6 @@ module Facter
|
|
6
6
|
class SystemMemory < BaseResolver
|
7
7
|
@semaphore = Mutex.new
|
8
8
|
@fact_list ||= {}
|
9
|
-
@log = Facter::Log.new(self)
|
10
9
|
class << self
|
11
10
|
private
|
12
11
|
|
@@ -25,7 +24,7 @@ module Facter
|
|
25
24
|
end
|
26
25
|
|
27
26
|
def read_available_memory_in_bytes
|
28
|
-
output
|
27
|
+
output = Facter::Core::Execution.execute('vm_stat', logger: log)
|
29
28
|
page_size = output.match(/page size of (\d+) bytes/)[1].to_i
|
30
29
|
pages_free = output.match(/Pages free:\s+(\d+)/)[1].to_i
|
31
30
|
|
@@ -33,11 +32,11 @@ module Facter
|
|
33
32
|
end
|
34
33
|
|
35
34
|
def read_total_memory_in_bytes
|
36
|
-
@fact_list[:total_bytes] =
|
35
|
+
@fact_list[:total_bytes] = Facter::Core::Execution.execute('sysctl -n hw.memsize', logger: log).to_i
|
37
36
|
end
|
38
37
|
|
39
38
|
def compute_capacity(used, total)
|
40
|
-
format('
|
39
|
+
"#{format('%<value>.2f', value: (used / total.to_f * 100))}%"
|
41
40
|
end
|
42
41
|
end
|
43
42
|
end
|
@@ -42,7 +42,9 @@ module Facter
|
|
42
42
|
@fact_list ||= {}
|
43
43
|
|
44
44
|
log.debug 'Executing command: system_profiler SPSoftwareDataType SPHardwareDataType'
|
45
|
-
output
|
45
|
+
output = Facter::Core::Execution.execute(
|
46
|
+
'system_profiler SPHardwareDataType SPSoftwareDataType', logger: log
|
47
|
+
)
|
46
48
|
@fact_list = output.scan(/.*:[ ].*$/).map { |e| e.strip.match(/(.*?): (.*)/).captures }.to_h
|
47
49
|
normalize_factlist
|
48
50
|
|
@@ -39,10 +39,10 @@ module Facter
|
|
39
39
|
next if path =~ %r{^/(proc|sys)} && filesystem != 'tmpfs' || filesystem == 'autofs'
|
40
40
|
|
41
41
|
stats = FilesystemHelper.read_mountpoint_stats(path)
|
42
|
-
size_bytes = stats.bytes_total
|
43
|
-
available_bytes = stats.bytes_available
|
42
|
+
size_bytes = stats.bytes_total.abs
|
43
|
+
available_bytes = stats.bytes_available.abs
|
44
44
|
|
45
|
-
used_bytes = stats.bytes_used
|
45
|
+
used_bytes = stats.bytes_used.abs
|
46
46
|
total_bytes = used_bytes + available_bytes
|
47
47
|
capacity = FilesystemHelper.compute_capacity(used_bytes, total_bytes)
|
48
48
|
|
@@ -5,6 +5,7 @@ module Facter
|
|
5
5
|
class NetworkingLinux < BaseResolver
|
6
6
|
@semaphore = Mutex.new
|
7
7
|
@fact_list = {}
|
8
|
+
DIRS = ['/var/lib/dhclient/', '/var/lib/dhcp/', '/var/lib/dhcp3/', '/var/lib/NetworkManager/', '/var/db/'].freeze
|
8
9
|
|
9
10
|
class << self
|
10
11
|
private
|
@@ -18,20 +19,23 @@ module Facter
|
|
18
19
|
def retrieve_network_info(fact_name)
|
19
20
|
@fact_list ||= {}
|
20
21
|
|
21
|
-
retrieve_default_interface_and_ip
|
22
22
|
retrieve_interface_info
|
23
|
-
|
23
|
+
retrieve_interfaces_mac_and_mtu
|
24
|
+
retrieve_default_interface
|
24
25
|
@fact_list[fact_name]
|
25
26
|
end
|
26
27
|
|
27
|
-
def
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
def retrieve_interfaces_mac_and_mtu
|
29
|
+
@fact_list[:interfaces].map do |name, info|
|
30
|
+
macaddress = Util::FileHelper.safe_read("/sys/class/net/#{name}/address", nil)
|
31
|
+
info[:mac] = macaddress.strip if macaddress && !macaddress.include?('00:00:00:00:00:00')
|
32
|
+
mtu = Util::FileHelper.safe_read("/sys/class/net/#{name}/mtu", nil)
|
33
|
+
info[:mtu] = mtu.strip.to_i if mtu
|
34
|
+
end
|
31
35
|
end
|
32
36
|
|
33
37
|
def retrieve_interface_info
|
34
|
-
output
|
38
|
+
output = Facter::Core::Execution.execute('ip -o address', logger: log)
|
35
39
|
interfaces = {}
|
36
40
|
|
37
41
|
output.each_line do |ip_line|
|
@@ -39,48 +43,103 @@ module Facter
|
|
39
43
|
|
40
44
|
fill_ip_v4_info!(ip_tokens, interfaces)
|
41
45
|
fill_io_v6_info!(ip_tokens, interfaces)
|
46
|
+
find_dhcp!(ip_tokens, interfaces)
|
42
47
|
end
|
43
48
|
|
44
49
|
@fact_list[:interfaces] = interfaces
|
45
50
|
end
|
46
51
|
|
52
|
+
def find_dhcp!(tokens, network_info)
|
53
|
+
interface_name = tokens[1]
|
54
|
+
return if !network_info[interface_name] || network_info[interface_name][:dhcp]
|
55
|
+
|
56
|
+
index = tokens[0].delete(':')
|
57
|
+
dhcp = Util::FileHelper.safe_read("/run/systemd/netif/leases/#{index}", nil)
|
58
|
+
network_info[interface_name][:dhcp] = dhcp.match(/SERVER_ADDRESS=(.*)/)[1] if dhcp
|
59
|
+
network_info[interface_name][:dhcp] ||= retrieve_from_other_directories(interface_name)
|
60
|
+
end
|
61
|
+
|
62
|
+
def retrieve_from_other_directories(interface_name)
|
63
|
+
DIRS.each do |dir|
|
64
|
+
next unless File.readable?(dir)
|
65
|
+
|
66
|
+
lease_files = Dir.entries(dir).select { |file| file =~ /dhclient.*\.lease/ }
|
67
|
+
next if lease_files.empty?
|
68
|
+
|
69
|
+
lease_files.select do |file|
|
70
|
+
content = Util::FileHelper.safe_read("#{dir}#{file}", nil)
|
71
|
+
next unless content =~ /interface.*#{interface_name}/
|
72
|
+
|
73
|
+
return content.match(/dhcp-server-identifier ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/)[1]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
return unless File.readable?('/var/lib/NetworkManager/')
|
77
|
+
|
78
|
+
search_internal_leases(interface_name)
|
79
|
+
end
|
80
|
+
|
81
|
+
def search_internal_leases(interface_name)
|
82
|
+
files = Dir.entries('/var/lib/NetworkManager/').reject { |dir| dir =~ /^\.+$/ }
|
83
|
+
lease_file = files.find { |file| file =~ /internal.*#{interface_name}\.lease/ }
|
84
|
+
return unless lease_file
|
85
|
+
|
86
|
+
dhcp = Util::FileHelper.safe_read("/var/lib/NetworkManager/#{lease_file}", nil)
|
87
|
+
dhcp ? dhcp.match(/SERVER_ADDRESS=(.*)/)[1] : nil
|
88
|
+
end
|
89
|
+
|
47
90
|
def fill_ip_v4_info!(ip_tokens, network_info)
|
48
91
|
return unless ip_tokens[2].casecmp('inet').zero?
|
49
92
|
|
50
|
-
interface_name = ip_tokens
|
51
|
-
ip4_info = ip_tokens[3].split('/')
|
52
|
-
ip4_address = ip4_info[0]
|
53
|
-
ip4_mask_length = ip4_info[1]
|
93
|
+
interface_name, ip4_address, ip4_mask_length = retrieve_name_and_ip_info(ip_tokens)
|
54
94
|
|
55
95
|
binding = build_binding(ip4_address, ip4_mask_length)
|
56
96
|
build_network_info_structure!(network_info, interface_name, 'bindings')
|
57
97
|
|
98
|
+
populate_other_ipv4_facts(network_info, interface_name, binding)
|
99
|
+
end
|
100
|
+
|
101
|
+
def populate_other_ipv4_facts(network_info, interface_name, binding)
|
58
102
|
network_info[interface_name]['bindings'] << binding
|
103
|
+
network_info[interface_name][:ip] ||= binding[:address]
|
104
|
+
network_info[interface_name][:network] ||= binding[:network]
|
105
|
+
network_info[interface_name][:netmask] ||= binding[:netmask]
|
106
|
+
end
|
107
|
+
|
108
|
+
def retrieve_name_and_ip_info(tokens)
|
109
|
+
interface_name = tokens[1]
|
110
|
+
ip_info = tokens[3].split('/')
|
111
|
+
ip_address = ip_info[0]
|
112
|
+
ip_mask_length = ip_info[1]
|
113
|
+
|
114
|
+
[interface_name, ip_address, ip_mask_length]
|
59
115
|
end
|
60
116
|
|
61
117
|
def fill_io_v6_info!(ip_tokens, network_info)
|
62
118
|
return unless ip_tokens[2].casecmp('inet6').zero?
|
63
119
|
|
64
|
-
interface_name = ip_tokens
|
65
|
-
ip6_info = ip_tokens[3].split('/')
|
66
|
-
ip6_address = ip6_info[0]
|
67
|
-
ip6_mask_length = ip6_info[1]
|
120
|
+
interface_name, ip6_address, ip6_mask_length = retrieve_name_and_ip_info(ip_tokens)
|
68
121
|
|
69
122
|
binding = build_binding(ip6_address, ip6_mask_length)
|
70
123
|
|
71
124
|
build_network_info_structure!(network_info, interface_name, 'bindings6')
|
72
125
|
|
126
|
+
network_info[interface_name][:scope6] ||= ip_tokens[5]
|
127
|
+
populate_other_ipv6_facts(network_info, interface_name, binding)
|
128
|
+
end
|
129
|
+
|
130
|
+
def populate_other_ipv6_facts(network_info, interface_name, binding)
|
73
131
|
network_info[interface_name]['bindings6'] << binding
|
132
|
+
network_info[interface_name][:ip6] ||= binding[:address]
|
133
|
+
network_info[interface_name][:network6] ||= binding[:network]
|
134
|
+
network_info[interface_name][:netmask6] ||= binding[:netmask]
|
74
135
|
end
|
75
136
|
|
76
|
-
def
|
77
|
-
output
|
137
|
+
def retrieve_default_interface
|
138
|
+
output = Facter::Core::Execution.execute('ip route get 1', logger: log)
|
78
139
|
|
79
140
|
ip_route_tokens = output.each_line.first.strip.split(' ')
|
80
141
|
default_interface = ip_route_tokens[4]
|
81
|
-
default_ip = ip_route_tokens[6]
|
82
142
|
|
83
|
-
@fact_list[:ip] = default_ip
|
84
143
|
@fact_list[:primary_interface] = default_interface
|
85
144
|
end
|
86
145
|
|
@@ -16,8 +16,9 @@ module Facter
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def read_oslevel(fact_name)
|
19
|
-
output
|
20
|
-
|
19
|
+
output = Facter::Core::Execution.execute('/usr/bin/oslevel -s', logger: log)
|
20
|
+
|
21
|
+
@fact_list[:build] = output unless output.empty?
|
21
22
|
@fact_list[:kernel] = 'AIX'
|
22
23
|
|
23
24
|
@fact_list[fact_name]
|
data/lib/resolvers/partitions.rb
CHANGED
@@ -87,14 +87,17 @@ module Facter
|
|
87
87
|
def blkid_command?
|
88
88
|
return @blkid_exists unless @blkid_exists.nil?
|
89
89
|
|
90
|
-
|
91
|
-
|
90
|
+
output = Facter::Core::Execution.execute('which blkid', logger: log)
|
91
|
+
|
92
|
+
@blkid_exists = !output.empty?
|
92
93
|
end
|
93
94
|
|
94
95
|
def execute_and_extract_blkid_info
|
95
|
-
stdout
|
96
|
+
stdout = Facter::Core::Execution.execute('blkid', logger: log)
|
96
97
|
output_hash = Hash[*stdout.split(/^([^:]+):/)[1..-1]]
|
97
|
-
output_hash.each
|
98
|
+
output_hash.each do |key, value|
|
99
|
+
output_hash[key] = Hash[*value.delete('"').chomp.rstrip.split(/ ([^= ]+)=/)[1..-1]]
|
100
|
+
end
|
98
101
|
end
|
99
102
|
|
100
103
|
def browse_subdirectories(path)
|
@@ -25,6 +25,7 @@ module Facter
|
|
25
25
|
read_processors(cpuinfo_output) # + model names
|
26
26
|
|
27
27
|
@fact_list[:physical_count] = @fact_list[:physical_processors].uniq.length
|
28
|
+
@fact_list[:physical_count] = physical_devices_count if @fact_list[:physical_count].zero?
|
28
29
|
@fact_list[fact_name]
|
29
30
|
end
|
30
31
|
|
@@ -51,6 +52,10 @@ module Facter
|
|
51
52
|
def count_physical_processors(tokens)
|
52
53
|
@fact_list[:physical_processors] << tokens.last.strip.to_i if tokens.first.strip == 'physical id'
|
53
54
|
end
|
55
|
+
|
56
|
+
def physical_devices_count
|
57
|
+
Dir.entries('/sys/devices/system/cpu').count { |dir| dir =~ /cpu[0-9]+$/ }
|
58
|
+
end
|
54
59
|
end
|
55
60
|
end
|
56
61
|
end
|
@@ -17,7 +17,7 @@ module Facter
|
|
17
17
|
def read_sysdef_file(fact_name)
|
18
18
|
return unless File.executable?('/usr/sbin/sysdef')
|
19
19
|
|
20
|
-
file_content
|
20
|
+
file_content = Facter::Core::Execution.execute('/usr/sbin/sysdef', logger: log)
|
21
21
|
files = file_content.split("\n").map do |line|
|
22
22
|
line.split('/').last if line =~ /^fs\.*/
|
23
23
|
end
|
@@ -4,7 +4,6 @@ module Facter
|
|
4
4
|
module Resolvers
|
5
5
|
module Solaris
|
6
6
|
class Ipaddress < BaseResolver
|
7
|
-
@log = Facter::Log.new(self)
|
8
7
|
@semaphore = Mutex.new
|
9
8
|
@fact_list ||= {}
|
10
9
|
class << self
|
@@ -18,7 +17,7 @@ module Facter
|
|
18
17
|
ip = nil
|
19
18
|
primary_interface = read_primary_interface
|
20
19
|
unless primary_interface.nil?
|
21
|
-
output
|
20
|
+
output = Facter::Core::Execution.execute("ifconfig #{primary_interface}", logger: log)
|
22
21
|
output.each_line do |str|
|
23
22
|
if str.strip =~ /inet\s(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}) .+/
|
24
23
|
@fact_list[:ip] = ip = Regexp.last_match(1)
|
@@ -30,7 +29,7 @@ module Facter
|
|
30
29
|
end
|
31
30
|
|
32
31
|
def read_primary_interface
|
33
|
-
output
|
32
|
+
output = Facter::Core::Execution.execute('route -n get default | grep interface', logger: log)
|
34
33
|
output.strip =~ /interface:\s(\S+)/ ? Regexp.last_match(1) : nil
|
35
34
|
end
|
36
35
|
end
|