facter 4.0.43 → 4.0.49
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 +65 -9
- data/lib/facter/config.rb +385 -0
- data/lib/facter/custom_facts/core/aggregate.rb +7 -0
- data/lib/facter/custom_facts/core/execution.rb +28 -4
- data/lib/facter/custom_facts/core/execution/base.rb +33 -33
- 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 +39 -3
- 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 +2 -2
- data/lib/facter/facts/aix/disks.rb +1 -1
- 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/aix/ssh.rb +1 -1
- data/lib/facter/facts/aix/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/aix/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/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/ssh.rb +1 -1
- data/lib/facter/facts/freebsd/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/freebsd/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/freebsd/virtual.rb +22 -0
- data/lib/facter/facts/linux/dhcp_servers.rb +1 -0
- data/lib/facter/facts/linux/disks.rb +1 -1
- 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/os/family.rb +4 -2
- data/lib/facter/facts/linux/processors/speed.rb +1 -1
- data/lib/facter/facts/linux/ssh.rb +1 -1
- data/lib/facter/facts/linux/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/linux/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/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/macosx/ssh.rb +1 -1
- data/lib/facter/facts/macosx/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/macosx/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/rhel/os/release.rb +1 -1
- data/lib/facter/facts/solaris/dhcp_servers.rb +1 -0
- data/lib/facter/facts/solaris/disks.rb +1 -1
- 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/ssh.rb +1 -1
- data/lib/facter/facts/solaris/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/solaris/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/solaris/virtual.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/networking/fqdn.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 +62 -17
- 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 +42 -20
- data/lib/facter/framework/detector/os_detector.rb +1 -0
- 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 → architecture.rb} +19 -4
- data/lib/facter/resolvers/aix/disks.rb +6 -5
- data/lib/facter/resolvers/aix/{filesystem_resolver.rb → filesystem.rb} +2 -2
- data/lib/facter/resolvers/aix/{hardware_resolver.rb → hardware.rb} +4 -3
- data/lib/facter/resolvers/aix/{load_averages_resolver.rb → load_averages.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 → networking.rb} +4 -3
- data/lib/facter/resolvers/aix/nim.rb +1 -1
- data/lib/facter/resolvers/aix/os_level.rb +1 -1
- data/lib/facter/resolvers/aix/partitions.rb +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 → augeas.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 → disk.rb} +17 -6
- data/lib/facter/resolvers/{dmi_resolver.rb → dmi.rb} +3 -2
- data/lib/facter/resolvers/dmi_decode.rb +1 -1
- data/lib/facter/resolvers/ec2.rb +5 -2
- data/lib/facter/resolvers/{eos_release_resolver.rb → eos_release.rb} +2 -2
- data/lib/facter/resolvers/{facterversion_resolver.rb → facterversion.rb} +1 -1
- data/lib/facter/resolvers/{filesystems_resolver.rb → filesystems.rb} +5 -2
- data/lib/facter/resolvers/{fips_enabled_resolver.rb → fips_enabled.rb} +5 -2
- data/lib/facter/resolvers/freebsd/{dmi_resolver.rb → dmi.rb} +1 -1
- data/lib/facter/resolvers/freebsd/{freebsd_version_resolver.rb → freebsd_version.rb} +9 -7
- data/lib/facter/resolvers/freebsd/{geom_resolver.rb → geom.rb} +15 -22
- data/lib/facter/resolvers/freebsd/processors.rb +13 -8
- data/lib/facter/resolvers/freebsd/{swap_memory_resolver.rb → swap_memory.rb} +5 -3
- data/lib/facter/resolvers/freebsd/{system_memory_resolver.rb → system_memory.rb} +4 -2
- data/lib/facter/resolvers/freebsd/virtual.rb +45 -0
- data/lib/facter/resolvers/gce.rb +3 -2
- data/lib/facter/resolvers/hostname.rb +92 -0
- data/lib/facter/resolvers/{identity_resolver.rb → identity.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 → lpar.rb} +1 -1
- data/lib/facter/resolvers/{lsb_release_resolver.rb → lsb_release.rb} +1 -1
- data/lib/facter/resolvers/lspci.rb +1 -1
- data/lib/facter/resolvers/macosx/{dmi_resolver.rb → dmi.rb} +1 -1
- data/lib/facter/resolvers/macosx/{filesystems_resolver.rb → filesystems.rb} +1 -1
- data/lib/facter/resolvers/macosx/{load_averages_resolver.rb → load_averages.rb} +2 -1
- data/lib/facter/resolvers/macosx/{mountpoints_resolver.rb → mountpoints.rb} +9 -8
- data/lib/facter/resolvers/macosx/{processor_resolver.rb → processor.rb} +2 -1
- data/lib/facter/resolvers/macosx/{swap_memory_resolver.rb → swap_memory.rb} +2 -1
- data/lib/facter/resolvers/macosx/{system_memory_resolver.rb → system_memory.rb} +2 -1
- data/lib/facter/resolvers/macosx/{system_profiler_resolver.rb → system_profiler.rb} +4 -6
- data/lib/facter/resolvers/{memory_resolver.rb → memory.rb} +4 -2
- data/lib/facter/resolvers/mountpoints.rb +90 -0
- data/lib/facter/resolvers/{networking_resolver.rb → networking.rb} +9 -6
- data/lib/facter/resolvers/networking_linux.rb +296 -0
- data/lib/facter/resolvers/open_vz.rb +2 -4
- data/lib/facter/resolvers/{os_release_resolver.rb → os_release.rb} +2 -2
- data/lib/facter/resolvers/partitions.rb +67 -63
- data/lib/facter/resolvers/{path_resolver.rb → path.rb} +1 -1
- data/lib/facter/resolvers/{processors_resolver.rb → processors.rb} +6 -3
- data/lib/facter/resolvers/{redhat_release_resolver.rb → redhat_release.rb} +2 -2
- data/lib/facter/resolvers/{ruby_resolver.rb → ruby.rb} +1 -1
- data/lib/facter/resolvers/{selinux_resolver.rb → selinux.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 +13 -12
- data/lib/facter/resolvers/solaris/networking.rb +50 -43
- 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 → ssh.rb} +12 -8
- data/lib/facter/resolvers/{suse_release_resolver.rb → suse_release.rb} +2 -2
- data/lib/facter/resolvers/{sw_vers_resolver.rb → sw_vers.rb} +2 -2
- data/lib/facter/resolvers/{timezone_resolver.rb → timezone.rb} +1 -1
- data/lib/facter/resolvers/{uname_resolver.rb → uname.rb} +1 -1
- data/lib/facter/resolvers/{uptime_resolver.rb → uptime.rb} +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 → dmi_bios.rb} +2 -2
- data/lib/facter/resolvers/windows/{dmi_computersystem_resolver.rb → dmi_computersystem.rb} +2 -2
- data/lib/facter/resolvers/windows/{fips_resolver.rb → fips.rb} +2 -1
- data/lib/facter/resolvers/windows/{hardware_architecture_resolver.rb → hardware_architecture.rb} +2 -1
- data/lib/facter/resolvers/windows/{identity_resolver.rb → identity.rb} +2 -1
- data/lib/facter/resolvers/windows/{kernel_resolver.rb → kernel.rb} +3 -1
- data/lib/facter/resolvers/windows/{memory_resolver.rb → memory.rb} +7 -1
- data/lib/facter/resolvers/windows/{netkvm_resolver.rb → netkvm.rb} +2 -1
- data/lib/facter/resolvers/windows/{networking_resolver.rb → networking.rb} +18 -4
- data/lib/facter/resolvers/windows/{processors_resolver.rb → processors.rb} +3 -2
- data/lib/facter/resolvers/windows/{product_release_resolver.rb → product_release.rb} +2 -1
- data/lib/facter/resolvers/windows/ssh.rb +5 -3
- data/lib/facter/resolvers/windows/{system32_resolver.rb → system32.rb} +3 -1
- data/lib/facter/resolvers/windows/{uptime_resolver.rb → uptime.rb} +3 -2
- data/lib/facter/resolvers/windows/{virtualization_resolver.rb → virtualization.rb} +3 -2
- data/lib/facter/resolvers/windows/{win_os_description_resolver.rb → win_os_description.rb} +4 -2
- data/lib/facter/resolvers/{wpar_resolver.rb → wpar.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 +30 -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/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 +106 -119
- 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/hostname_resolver.rb +0 -44
- data/lib/facter/resolvers/mountpoints_resolver.rb +0 -62
- data/lib/facter/resolvers/networking_linux_resolver.rb +0 -159
- 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
|
@@ -4,7 +4,9 @@ module Facter
|
|
|
4
4
|
module Resolvers
|
|
5
5
|
class WinOsDescription < BaseResolver
|
|
6
6
|
@log = Facter::Log.new(self)
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
init_resolver
|
|
9
|
+
|
|
8
10
|
class << self
|
|
9
11
|
private
|
|
10
12
|
|
|
@@ -13,7 +15,7 @@ module Facter
|
|
|
13
15
|
end
|
|
14
16
|
|
|
15
17
|
def read_from_ole(fact_name)
|
|
16
|
-
win = Win32Ole.new
|
|
18
|
+
win = Facter::Util::Windows::Win32Ole.new
|
|
17
19
|
op_sys = win.return_first('SELECT ProductType,OtherTypeDescription FROM Win32_OperatingSystem')
|
|
18
20
|
unless op_sys
|
|
19
21
|
@log.debug 'WMI query returned no results for Win32_OperatingSystem'\
|
data/lib/facter/resolvers/xen.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
module Facter
|
|
4
4
|
module Resolvers
|
|
5
5
|
class Xen < BaseResolver
|
|
6
|
-
|
|
6
|
+
init_resolver
|
|
7
7
|
|
|
8
8
|
XEN_PATH = '/proc/xen/capabilities'
|
|
9
9
|
XEN_TOOLSTACK = '/usr/lib/xen-common/bin/xen-toolstack'
|
|
@@ -32,7 +32,7 @@ module Facter
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def privileged?(xen_type)
|
|
35
|
-
content = Util::FileHelper.safe_read(XEN_PATH, nil)
|
|
35
|
+
content = Facter::Util::FileHelper.safe_read(XEN_PATH, nil)
|
|
36
36
|
content&.strip == 'control_d' || xen_type == 'xen0'
|
|
37
37
|
end
|
|
38
38
|
|
data/lib/facter/resolvers/zfs.rb
CHANGED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Facter
|
|
4
|
+
module Util
|
|
5
|
+
module Aix
|
|
6
|
+
module InfoExtractor
|
|
7
|
+
MEGABYTES_EXPONENT = 1024**2
|
|
8
|
+
GIGABYTES_EXPONENT = 1024**3
|
|
9
|
+
|
|
10
|
+
def self.extract(content, regex)
|
|
11
|
+
content = content.each_line.map do |line|
|
|
12
|
+
next unless regex =~ line
|
|
13
|
+
|
|
14
|
+
line.split(/:\s*|\s{2,}/)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
content.flatten!.reject!(&:nil?)
|
|
18
|
+
|
|
19
|
+
Hash[*content]
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# CuAt (Customized Attributes) non-default attribute values
|
|
4
|
+
# CuDv (Customized Devices) the devices present on this machine
|
|
5
|
+
# PdAt (Predefined Attributes) default values for all device attributes
|
|
6
|
+
# PdDv (Predefined Devices) the list of all devices supported by this release of AIX
|
|
7
|
+
|
|
8
|
+
module Facter
|
|
9
|
+
module Util
|
|
10
|
+
module Aix
|
|
11
|
+
class ODMQuery
|
|
12
|
+
REPOS = %w[CuAt CuDv PdAt PdDv].freeze
|
|
13
|
+
|
|
14
|
+
def initialize
|
|
15
|
+
@query = ''
|
|
16
|
+
@conditions = []
|
|
17
|
+
@log = Facter::Log.new(self)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def equals(field, value)
|
|
21
|
+
@conditions << "#{field}='#{value}'"
|
|
22
|
+
self
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def like(field, value)
|
|
26
|
+
@conditions << "#{field} like '#{value}'"
|
|
27
|
+
self
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def execute
|
|
31
|
+
result = nil
|
|
32
|
+
REPOS.each do |repo|
|
|
33
|
+
break if result && !result.empty?
|
|
34
|
+
|
|
35
|
+
result = Facter::Core::Execution.execute("#{query} #{repo}", logger: @log)
|
|
36
|
+
end
|
|
37
|
+
result
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def query
|
|
41
|
+
'odmget -q "' + @conditions.join(' AND ') + '"'
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -1,43 +1,47 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
module
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
module Facter
|
|
4
|
+
module Util
|
|
5
|
+
module ApiDebugger
|
|
6
|
+
def self.prepended(receiver) # rubocop:disable Metrics/AbcSize
|
|
7
|
+
exclude, print_caller = parse_options(ENV['API_DEBUG'])
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
receiver_methods = receiver.instance_methods - Object.methods
|
|
10
|
+
receiver_methods.each do |meth|
|
|
11
|
+
ApiDebugger.class_eval do
|
|
12
|
+
define_method(meth) do |*args|
|
|
13
|
+
method_call = super(*args)
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
unless exclude.include?(meth)
|
|
16
|
+
puts '#' * 80
|
|
17
|
+
puts "Method call: #{meth}"
|
|
18
|
+
puts "Called with: #{args.inspect}"
|
|
19
|
+
if print_caller.include?(meth)
|
|
20
|
+
puts '-' * 80
|
|
21
|
+
puts caller
|
|
22
|
+
end
|
|
23
|
+
puts '#' * 80
|
|
24
|
+
end
|
|
25
|
+
method_call
|
|
20
26
|
end
|
|
21
|
-
puts '#' * 80
|
|
22
27
|
end
|
|
23
|
-
method_call
|
|
24
28
|
end
|
|
25
29
|
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
def self.parse_options(options)
|
|
32
|
+
exclude = []
|
|
33
|
+
print_caller = []
|
|
34
|
+
|
|
35
|
+
options.split(',').each do |option|
|
|
36
|
+
if option.start_with?('-')
|
|
37
|
+
exclude << option[1..-1].to_sym
|
|
38
|
+
elsif option.start_with?('+')
|
|
39
|
+
print_caller << option[1..-1].to_sym
|
|
40
|
+
end
|
|
41
|
+
end
|
|
32
42
|
|
|
33
|
-
|
|
34
|
-
if option.start_with?('-')
|
|
35
|
-
exclude << option[1..-1].to_sym
|
|
36
|
-
elsif option.start_with?('+')
|
|
37
|
-
print_caller << option[1..-1].to_sym
|
|
43
|
+
[exclude, print_caller]
|
|
38
44
|
end
|
|
39
45
|
end
|
|
40
|
-
|
|
41
|
-
[exclude, print_caller]
|
|
42
46
|
end
|
|
43
47
|
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Facter
|
|
4
|
+
module Util
|
|
5
|
+
module Facts
|
|
6
|
+
HYPERVISORS_HASH = { 'VMware' => 'vmware', 'VirtualBox' => 'virtualbox', 'Parallels' => 'parallels',
|
|
7
|
+
'KVM' => 'kvm', 'Virtual Machine' => 'hyperv', 'RHEV Hypervisor' => 'rhev',
|
|
8
|
+
'oVirt Node' => 'ovirt', 'HVM domU' => 'xenhvm', 'Bochs' => 'bochs', 'OpenBSD' => 'vmm',
|
|
9
|
+
'BHYVE' => 'bhyve' }.freeze
|
|
10
|
+
|
|
11
|
+
PHYSICAL_HYPERVISORS = %w[physical xen0 vmware_server vmware_workstation openvzhn vserver_host].freeze
|
|
12
|
+
REDHAT_FAMILY = %w[redhat rhel fedora centos scientific ascendos cloudlinux psbm
|
|
13
|
+
oraclelinux ovs oel amazon xenserver xcp-ng virtuozzo photon].freeze
|
|
14
|
+
DEBIAN_FAMILY = %w[debian ubuntu huaweios linuxmint devuan kde].freeze
|
|
15
|
+
SUSE_FAMILY = %w[sles sled suse].freeze
|
|
16
|
+
GENTOO_FAMILY = ['gentoo'].freeze
|
|
17
|
+
ARCH_FAMILY = %w[arch manjaro].freeze
|
|
18
|
+
MANDRAKE_FAMILY = %w[mandrake mandriva mageia].freeze
|
|
19
|
+
FAMILY_HASH = { 'RedHat' => REDHAT_FAMILY, 'Debian' => DEBIAN_FAMILY, 'Suse' => SUSE_FAMILY,
|
|
20
|
+
'Gentoo' => GENTOO_FAMILY, 'Archlinux' => ARCH_FAMILY, 'Mandrake' => MANDRAKE_FAMILY }.freeze
|
|
21
|
+
|
|
22
|
+
class << self
|
|
23
|
+
def discover_family(os)
|
|
24
|
+
FAMILY_HASH.each { |key, array_value| return key if array_value.any? { |os_flavour| os =~ /#{os_flavour}/i } }
|
|
25
|
+
os
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Facter
|
|
4
|
+
module Util
|
|
5
|
+
module Facts
|
|
6
|
+
class UnitConverter
|
|
7
|
+
class << self
|
|
8
|
+
def bytes_to_mb(value_in_bytes)
|
|
9
|
+
return unless value_in_bytes
|
|
10
|
+
|
|
11
|
+
value_in_bytes = value_in_bytes.to_i
|
|
12
|
+
|
|
13
|
+
(value_in_bytes / (1024.0 * 1024.0)).round(2)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def hertz_to_human_readable(speed)
|
|
17
|
+
speed = speed.to_i
|
|
18
|
+
return if !speed || speed.zero?
|
|
19
|
+
|
|
20
|
+
prefix = { 3 => 'k', 6 => 'M', 9 => 'G', 12 => 'T' }
|
|
21
|
+
power = Math.log10(speed).floor
|
|
22
|
+
validated_speed = power.zero? ? speed.to_f : speed.fdiv(10**power)
|
|
23
|
+
format('%<displayed_speed>.2f', displayed_speed: validated_speed).to_s + ' ' + prefix[power] + 'Hz'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def bytes_to_human_readable(bytes)
|
|
27
|
+
return unless bytes
|
|
28
|
+
return bytes.to_s + ' bytes' if bytes < 1024
|
|
29
|
+
|
|
30
|
+
number, multiple = determine_exponent(bytes)
|
|
31
|
+
|
|
32
|
+
"#{pad_number(number)} #{multiple}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
def pad_number(number)
|
|
38
|
+
number = number.to_s
|
|
39
|
+
number << '0' if number.split('.').last.length == 1
|
|
40
|
+
number
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def determine_exponent(bytes)
|
|
44
|
+
prefix = %w[KiB MiB GiB TiB PiB EiB]
|
|
45
|
+
exp = (Math.log2(bytes) / 10.0).floor
|
|
46
|
+
converted_number = (100.0 * (bytes / 1024.0**exp)).round / 100.0
|
|
47
|
+
|
|
48
|
+
if (converted_number - 1024.0).abs < Float::EPSILON
|
|
49
|
+
exp += 1
|
|
50
|
+
converted_number = 1.00
|
|
51
|
+
end
|
|
52
|
+
multiple = prefix[exp - 1] || 'bytes'
|
|
53
|
+
|
|
54
|
+
converted_number = bytes if multiple == 'bytes'
|
|
55
|
+
[converted_number, multiple]
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'time'
|
|
4
|
+
|
|
5
|
+
module Facter
|
|
6
|
+
module Util
|
|
7
|
+
module Facts
|
|
8
|
+
class UptimeParser
|
|
9
|
+
SECS_IN_A_DAY = 86_400
|
|
10
|
+
SECS_IN_AN_HOUR = 3_600
|
|
11
|
+
SECS_IN_A_MINUTE = 60
|
|
12
|
+
|
|
13
|
+
@log = Facter::Log.new(self)
|
|
14
|
+
|
|
15
|
+
class << self
|
|
16
|
+
def uptime_seconds_unix
|
|
17
|
+
uptime_proc_uptime || uptime_sysctl || uptime_executable
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def uptime_proc_uptime
|
|
23
|
+
output = Facter::Core::Execution.execute("/bin/cat #{uptime_file}", logger: @log)
|
|
24
|
+
|
|
25
|
+
output.chomp.split(' ').first.to_i unless output.empty?
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def uptime_sysctl
|
|
29
|
+
output = Facter::Core::Execution.execute("sysctl -n #{uptime_sysctl_variable}", logger: @log)
|
|
30
|
+
|
|
31
|
+
compute_uptime(Time.at(output.match(/\d+/)[0].to_i)) unless output.empty?
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def uptime_executable
|
|
35
|
+
output = Facter::Core::Execution.execute(uptime_executable_cmd, logger: @log)
|
|
36
|
+
|
|
37
|
+
return unless output
|
|
38
|
+
|
|
39
|
+
up = 0
|
|
40
|
+
output_calculator_methods.find { |method| up = send(method, output) }
|
|
41
|
+
up || 0
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def uptime_file
|
|
45
|
+
'/proc/uptime'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def uptime_sysctl_variable
|
|
49
|
+
'kern.boottime'
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def uptime_executable_cmd
|
|
53
|
+
'uptime'
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def output_calculator_methods
|
|
57
|
+
%i[
|
|
58
|
+
calculate_days_hours_minutes
|
|
59
|
+
calculate_days_hours
|
|
60
|
+
calculate_days_minutes
|
|
61
|
+
calculate_days
|
|
62
|
+
calculate_hours_minutes
|
|
63
|
+
calculate_hours
|
|
64
|
+
calculate_minutes
|
|
65
|
+
]
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def compute_uptime(time)
|
|
69
|
+
(Time.now - time).to_i
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Regexp handles Solaris, AIX, HP-UX, and Tru64.
|
|
73
|
+
# 'day(?:s|\(s\))?' says maybe 'day', 'days',
|
|
74
|
+
# or 'day(s)', and don't set $2.
|
|
75
|
+
def calculate_days_hours_minutes(output)
|
|
76
|
+
return unless output =~ /(\d+) day(?:s|\(s\))?,?\s+(\d+):-?(\d+)/
|
|
77
|
+
|
|
78
|
+
SECS_IN_A_DAY * Regexp.last_match(1).to_i +
|
|
79
|
+
SECS_IN_AN_HOUR * Regexp.last_match(2).to_i +
|
|
80
|
+
SECS_IN_A_MINUTE * Regexp.last_match(3).to_i
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def calculate_days_hours(output)
|
|
84
|
+
return unless output =~ /(\d+) day(?:s|\(s\))?,\s+(\d+) hr(?:s|\(s\))?,/
|
|
85
|
+
|
|
86
|
+
SECS_IN_A_DAY * Regexp.last_match(1).to_i +
|
|
87
|
+
SECS_IN_AN_HOUR * Regexp.last_match(2).to_i
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def calculate_days_minutes(output)
|
|
91
|
+
return unless output =~ /(\d+) day(?:s|\(s\))?,\s+(\d+) min(?:s|\(s\))?,/
|
|
92
|
+
|
|
93
|
+
SECS_IN_A_DAY * Regexp.last_match(1).to_i +
|
|
94
|
+
SECS_IN_A_MINUTE * Regexp.last_match(2).to_i
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def calculate_days(output)
|
|
98
|
+
return unless output =~ /(\d+) day(?:s|\(s\))?,/
|
|
99
|
+
|
|
100
|
+
SECS_IN_A_DAY * Regexp.last_match(1).to_i
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# must anchor to 'up' to avoid matching time of day
|
|
104
|
+
# at beginning of line. Certain versions of uptime on
|
|
105
|
+
# Solaris may insert a '-' into the minutes field.
|
|
106
|
+
def calculate_hours_minutes(output)
|
|
107
|
+
return unless output =~ /up\s+(\d+):-?(\d+),/
|
|
108
|
+
|
|
109
|
+
SECS_IN_AN_HOUR * Regexp.last_match(1).to_i +
|
|
110
|
+
SECS_IN_A_MINUTE * Regexp.last_match(2).to_i
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def calculate_hours(output)
|
|
114
|
+
return unless output =~ /(\d+) hr(?:s|\(s\))?,/
|
|
115
|
+
|
|
116
|
+
SECS_IN_AN_HOUR * Regexp.last_match(1).to_i
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def calculate_minutes(output)
|
|
120
|
+
return unless output =~ /(\d+) min(?:s|\(s\))?,/
|
|
121
|
+
|
|
122
|
+
SECS_IN_A_MINUTE * Regexp.last_match(1).to_i
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Facter
|
|
4
|
+
module Util
|
|
5
|
+
module Facts
|
|
6
|
+
class VirtualDetector
|
|
7
|
+
def initialize
|
|
8
|
+
@log = Facter::Log.new(self)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def platform
|
|
12
|
+
fact_value = check_docker_lxc || check_dmi || check_freebsd || check_gce || retrieve_from_virt_what
|
|
13
|
+
fact_value ||= check_vmware || check_open_vz || check_vserver || check_xen || check_other_facts
|
|
14
|
+
fact_value ||= check_lspci || 'physical'
|
|
15
|
+
|
|
16
|
+
fact_value
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def check_docker_lxc
|
|
20
|
+
@log.debug('Checking Docker and LXC')
|
|
21
|
+
Facter::Resolvers::Containers.resolve(:vm)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def check_dmi
|
|
25
|
+
@log.debug('Checking DMI')
|
|
26
|
+
vendor = Facter::Resolvers::DmiDecode.resolve(:vendor)
|
|
27
|
+
@log.debug("dmi detected vendor: #{vendor}")
|
|
28
|
+
return 'kvm' if vendor =~ /Amazon/
|
|
29
|
+
|
|
30
|
+
'xen' if vendor =~ /Xen/
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def check_gce
|
|
34
|
+
@log.debug('Checking GCE')
|
|
35
|
+
bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
|
|
36
|
+
'gce' if bios_vendor&.include?('Google')
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def check_vmware
|
|
40
|
+
@log.debug('Checking VMware')
|
|
41
|
+
Facter::Resolvers::Vmware.resolve(:vm)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def retrieve_from_virt_what
|
|
45
|
+
@log.debug('Checking virtual_what')
|
|
46
|
+
Facter::Resolvers::VirtWhat.resolve(:vm)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def check_open_vz
|
|
50
|
+
@log.debug('Checking OpenVZ')
|
|
51
|
+
Facter::Resolvers::OpenVz.resolve(:vm)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def check_vserver
|
|
55
|
+
@log.debug('Checking VServer')
|
|
56
|
+
Facter::Resolvers::VirtWhat.resolve(:vserver)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def check_xen
|
|
60
|
+
@log.debug('Checking XEN')
|
|
61
|
+
Facter::Resolvers::Xen.resolve(:vm)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def check_freebsd
|
|
65
|
+
return unless Object.const_defined?('Facter::Resolvers::Freebsd::Virtual')
|
|
66
|
+
|
|
67
|
+
@log.debug('Checking if jailed')
|
|
68
|
+
Facter::Resolvers::Freebsd::Virtual.resolve(:vm)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def check_other_facts
|
|
72
|
+
@log.debug('Checking others')
|
|
73
|
+
product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
|
|
74
|
+
bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
|
|
75
|
+
return 'kvm' if bios_vendor&.include?('Amazon EC2')
|
|
76
|
+
return unless product_name
|
|
77
|
+
|
|
78
|
+
Facter::Util::Facts::HYPERVISORS_HASH.each { |key, value| return value if product_name.include?(key) }
|
|
79
|
+
|
|
80
|
+
nil
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def check_lspci
|
|
84
|
+
@log.debug('Checking lspci')
|
|
85
|
+
Facter::Resolvers::Lspci.resolve(:vm)
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|