facter 4.0.37 → 4.0.42
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/bin/facter +3 -4
- data/lib/facter.rb +163 -23
- data/lib/facter/custom_facts/core/execution/base.rb +42 -6
- data/lib/facter/custom_facts/util/directory_loader.rb +1 -1
- data/lib/facter/facts/aix/disks.rb +1 -1
- data/lib/facter/facts/aix/kernel.rb +1 -1
- data/lib/facter/facts/aix/kernelmajversion.rb +1 -1
- data/lib/facter/facts/aix/kernelrelease.rb +1 -1
- data/lib/facter/facts/aix/kernelversion.rb +1 -1
- data/lib/facter/facts/aix/os/release.rb +1 -1
- data/lib/facter/facts/linux/cloud.rb +15 -0
- data/lib/facter/facts/linux/disks.rb +1 -1
- data/lib/facter/facts/linux/ec2_metadata.rb +5 -27
- data/lib/facter/facts/linux/ec2_userdata.rb +5 -27
- data/lib/facter/facts/linux/is_virtual.rb +7 -46
- data/lib/facter/facts/linux/virtual.rb +3 -58
- data/lib/facter/facts/rhel/os/release.rb +2 -2
- data/lib/facter/facts/solaris/disks.rb +1 -1
- data/lib/facter/facts_utils/virtual_detector.rb +78 -0
- data/lib/facter/framework/cli/cli.rb +84 -36
- data/lib/facter/framework/cli/cli_launcher.rb +34 -38
- data/lib/facter/framework/config/fact_groups.rb +36 -2
- data/lib/facter/framework/core/cache_manager.rb +40 -23
- data/lib/facter/framework/core/fact_loaders/fact_loader.rb +14 -11
- data/lib/facter/framework/core/options/config_file_options.rb +5 -3
- data/lib/facter/framework/core/options/option_store.rb +27 -10
- data/lib/facter/framework/logging/logger.rb +3 -11
- data/lib/facter/patches/sysfilesystem/sys/statvfs.rb +92 -0
- data/lib/facter/resolvers/aix/os_level.rb +27 -0
- data/lib/facter/resolvers/cloud.rb +39 -0
- data/lib/facter/resolvers/dmi_decode.rb +1 -0
- data/lib/facter/resolvers/memory_resolver.rb +12 -14
- data/lib/facter/resolvers/networking_linux_resolver.rb +0 -1
- data/lib/facter/resolvers/utils/filesystem_helper.rb +3 -1
- data/lib/facter/version.rb +1 -1
- metadata +7 -4
- data/lib/facter/resolvers/aix/os_level_resolver.rb +0 -25
- data/lib/facter/resolvers/os_level_resolver.rb +0 -28
@@ -0,0 +1,92 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'sys/filesystem'
|
4
|
+
|
5
|
+
module Sys
|
6
|
+
class Filesystem
|
7
|
+
module Structs
|
8
|
+
class Statvfs < FFI::Struct
|
9
|
+
# We must remove the instance variable layout defined by sys-filesystem, because setting
|
10
|
+
# it the second time will make FFI log a warning message.
|
11
|
+
remove_instance_variable(:@layout) if @layout
|
12
|
+
|
13
|
+
if RbConfig::CONFIG['host_os'] =~ /darwin|osx|mach/i
|
14
|
+
layout(
|
15
|
+
:f_bsize, :ulong,
|
16
|
+
:f_frsize, :ulong,
|
17
|
+
:f_blocks, :uint,
|
18
|
+
:f_bfree, :uint,
|
19
|
+
:f_bavail, :uint,
|
20
|
+
:f_files, :uint,
|
21
|
+
:f_ffree, :uint,
|
22
|
+
:f_favail, :uint,
|
23
|
+
:f_fsid, :ulong,
|
24
|
+
:f_flag, :ulong,
|
25
|
+
:f_namemax, :ulong
|
26
|
+
)
|
27
|
+
elsif RbConfig::CONFIG['host'] =~ /bsd/i
|
28
|
+
layout(
|
29
|
+
:f_bavail, :uint64,
|
30
|
+
:f_bfree, :uint64,
|
31
|
+
:f_blocks, :uint64,
|
32
|
+
:f_favail, :uint64,
|
33
|
+
:f_ffree, :uint64,
|
34
|
+
:f_files, :uint64,
|
35
|
+
:f_bsize, :ulong,
|
36
|
+
:f_flag, :ulong,
|
37
|
+
:f_frsize, :ulong,
|
38
|
+
:f_fsid, :ulong,
|
39
|
+
:f_namemax, :ulong
|
40
|
+
)
|
41
|
+
elsif RbConfig::CONFIG['host'] =~ /sunos|solaris/i
|
42
|
+
layout(
|
43
|
+
:f_bsize, :ulong,
|
44
|
+
:f_frsize, :ulong,
|
45
|
+
:f_blocks, :uint64_t,
|
46
|
+
:f_bfree, :uint64_t,
|
47
|
+
:f_bavail, :uint64_t,
|
48
|
+
:f_files, :uint64_t,
|
49
|
+
:f_ffree, :uint64_t,
|
50
|
+
:f_favail, :uint64_t,
|
51
|
+
:f_fsid, :ulong,
|
52
|
+
:f_basetype, [:char, 16],
|
53
|
+
:f_flag, :ulong,
|
54
|
+
:f_namemax, :ulong,
|
55
|
+
:f_fstr, [:char, 32],
|
56
|
+
:f_filler, [:ulong, 16]
|
57
|
+
)
|
58
|
+
elsif RbConfig::CONFIG['host'] =~ /i686/i
|
59
|
+
layout(
|
60
|
+
:f_bsize, :ulong,
|
61
|
+
:f_frsize, :ulong,
|
62
|
+
:f_blocks, :uint,
|
63
|
+
:f_bfree, :uint,
|
64
|
+
:f_bavail, :uint,
|
65
|
+
:f_files, :uint,
|
66
|
+
:f_ffree, :uint,
|
67
|
+
:f_favail, :uint,
|
68
|
+
:f_fsid, :ulong,
|
69
|
+
:f_flag, :ulong,
|
70
|
+
:f_namemax, :ulong,
|
71
|
+
:f_spare, [:int, 6]
|
72
|
+
)
|
73
|
+
else
|
74
|
+
layout(
|
75
|
+
:f_bsize, :ulong,
|
76
|
+
:f_frsize, :ulong,
|
77
|
+
:f_blocks, :uint64,
|
78
|
+
:f_bfree, :uint64,
|
79
|
+
:f_bavail, :uint64,
|
80
|
+
:f_files, :uint64,
|
81
|
+
:f_ffree, :uint64,
|
82
|
+
:f_favail, :uint64,
|
83
|
+
:f_fsid, :ulong,
|
84
|
+
:f_flag, :ulong,
|
85
|
+
:f_namemax, :ulong,
|
86
|
+
:f_spare, [:int, 6]
|
87
|
+
)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Facter
|
4
|
+
module Resolvers
|
5
|
+
module Aix
|
6
|
+
class OsLevel < BaseResolver
|
7
|
+
@fact_list ||= {}
|
8
|
+
|
9
|
+
class << self
|
10
|
+
private
|
11
|
+
|
12
|
+
def post_resolve(fact_name)
|
13
|
+
@fact_list.fetch(fact_name) { read_oslevel(fact_name) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def read_oslevel(fact_name)
|
17
|
+
output = Facter::Core::Execution.execute('/usr/bin/oslevel -s', logger: log)
|
18
|
+
@fact_list[:build] = output unless output.empty?
|
19
|
+
@fact_list[:kernel] = 'AIX'
|
20
|
+
|
21
|
+
@fact_list[fact_name]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Facter
|
4
|
+
module Resolvers
|
5
|
+
class Cloud < BaseResolver
|
6
|
+
# cloud_provider
|
7
|
+
|
8
|
+
@fact_list ||= {}
|
9
|
+
|
10
|
+
class << self
|
11
|
+
private
|
12
|
+
|
13
|
+
def post_resolve(fact_name)
|
14
|
+
@fact_list.fetch(fact_name) { detect_azure(fact_name) }
|
15
|
+
end
|
16
|
+
|
17
|
+
def detect_azure(fact_name)
|
18
|
+
search_dirs = %w[/var/lib/dhcp /var/lib/NetworkManager]
|
19
|
+
search_dirs.each do |path|
|
20
|
+
next if !File.readable?(path) || !File.directory?(path)
|
21
|
+
|
22
|
+
files = Dir.entries(path)
|
23
|
+
files.select! { |filename| filename =~ /^dhclient.*lease.*$/ }
|
24
|
+
files.each do |file|
|
25
|
+
path = File.join([path, file])
|
26
|
+
output = Util::FileHelper.safe_read(path)
|
27
|
+
|
28
|
+
if output.include?('option unknown-245') || output.include?('option 245')
|
29
|
+
@fact_list[:cloud_provider] = 'azure'
|
30
|
+
return @fact_list[fact_name]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -37,6 +37,7 @@ module Facter
|
|
37
37
|
@fact_list[:virtualbox_version] = output.match(/vboxVer_(\S+)/)&.captures&.first
|
38
38
|
@fact_list[:virtualbox_revision] = output.match(/vboxRev_(\S+)/)&.captures&.first
|
39
39
|
@fact_list[:vmware_version] = extract_vmware_version(output)
|
40
|
+
@fact_list[:vendor] = output.match(/Vendor: (\S+)/)&.captures&.first
|
40
41
|
|
41
42
|
@fact_list[fact_name]
|
42
43
|
end
|
@@ -25,11 +25,21 @@ module Facter
|
|
25
25
|
|
26
26
|
def read_system(output)
|
27
27
|
@fact_list[:total] = kilobytes_to_bytes(output.match(/MemTotal:\s+(\d+)\s/)[1])
|
28
|
-
@fact_list[:memfree] =
|
29
|
-
@fact_list[:used_bytes] = compute_used(@fact_list[:total],
|
28
|
+
@fact_list[:memfree] = memfree(output)
|
29
|
+
@fact_list[:used_bytes] = compute_used(@fact_list[:total], @fact_list[:memfree])
|
30
30
|
@fact_list[:capacity] = compute_capacity(@fact_list[:used_bytes], @fact_list[:total])
|
31
31
|
end
|
32
32
|
|
33
|
+
def memfree(output)
|
34
|
+
available = output.match(/MemAvailable:\s+(\d+)\s/)
|
35
|
+
return kilobytes_to_bytes(available[1]) if available
|
36
|
+
|
37
|
+
buffers = kilobytes_to_bytes(output.match(/Buffers:\s+(\d+)\s/)[1])
|
38
|
+
cached = kilobytes_to_bytes(output.match(/Cached:\s+(\d+)\s/)[1])
|
39
|
+
memfree = kilobytes_to_bytes(output.match(/MemFree:\s+(\d+)\s/)[1])
|
40
|
+
memfree + buffers + cached
|
41
|
+
end
|
42
|
+
|
33
43
|
def read_swap(output)
|
34
44
|
total = output.match(/SwapTotal:\s+(\d+)\s/)[1]
|
35
45
|
return if total.to_i.zero?
|
@@ -44,18 +54,6 @@ module Facter
|
|
44
54
|
quantity.to_i * 1024
|
45
55
|
end
|
46
56
|
|
47
|
-
def reclaimable_memory(output)
|
48
|
-
buffers = kilobytes_to_bytes(output.match(/Buffers:\s+(\d+)\s/)[1])
|
49
|
-
cached = kilobytes_to_bytes(output.match(/Cached:\s+(\d+)\s/)[1])
|
50
|
-
s_reclaimable = output.match(/SReclaimable:\s+(\d+)\s/)
|
51
|
-
s_reclaimable = if s_reclaimable
|
52
|
-
kilobytes_to_bytes(s_reclaimable[1])
|
53
|
-
else
|
54
|
-
0
|
55
|
-
end
|
56
|
-
@fact_list[:memfree] + buffers + cached + s_reclaimable
|
57
|
-
end
|
58
|
-
|
59
57
|
def compute_capacity(used, total)
|
60
58
|
format('%<computed_capacity>.2f', computed_capacity: (used / total.to_f * 100)) + '%'
|
61
59
|
end
|
@@ -7,7 +7,9 @@ module Facter
|
|
7
7
|
size_bytes used used_bytes capacity].freeze
|
8
8
|
class << self
|
9
9
|
def read_mountpoints
|
10
|
-
require 'sys/filesystem'
|
10
|
+
# TODO: this require must be replaced with "require 'sys/filesystem'" when a new release of
|
11
|
+
# djberg96/sys-filesystem gem is available
|
12
|
+
require_relative '../../patches/sysfilesystem/sys/statvfs.rb'
|
11
13
|
force_utf(Sys::Filesystem.mounts)
|
12
14
|
end
|
13
15
|
|
data/lib/facter/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.42
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -385,6 +385,7 @@ files:
|
|
385
385
|
- lib/facter/facts/freebsd/zpool_version.rb
|
386
386
|
- lib/facter/facts/linux/aio_agent_version.rb
|
387
387
|
- lib/facter/facts/linux/augeas/version.rb
|
388
|
+
- lib/facter/facts/linux/cloud.rb
|
388
389
|
- lib/facter/facts/linux/dhcp_servers.rb
|
389
390
|
- lib/facter/facts/linux/disks.rb
|
390
391
|
- lib/facter/facts/linux/dmi/bios/release_date.rb
|
@@ -813,6 +814,7 @@ files:
|
|
813
814
|
- lib/facter/facts_utils/facts_utils.rb
|
814
815
|
- lib/facter/facts_utils/unit_converter.rb
|
815
816
|
- lib/facter/facts_utils/uptime_parser.rb
|
817
|
+
- lib/facter/facts_utils/virtual_detector.rb
|
816
818
|
- lib/facter/facts_utils/windows_release_finder.rb
|
817
819
|
- lib/facter/framework/benchmarking/timer.rb
|
818
820
|
- lib/facter/framework/cli/cli.rb
|
@@ -853,6 +855,7 @@ files:
|
|
853
855
|
- lib/facter/models/resolved_fact.rb
|
854
856
|
- lib/facter/models/searched_fact.rb
|
855
857
|
- lib/facter/os_hierarchy.json
|
858
|
+
- lib/facter/patches/sysfilesystem/sys/statvfs.rb
|
856
859
|
- lib/facter/resolvers/aio_agent_version.rb
|
857
860
|
- lib/facter/resolvers/aix/architecture_resolver.rb
|
858
861
|
- lib/facter/resolvers/aix/disks.rb
|
@@ -864,7 +867,7 @@ files:
|
|
864
867
|
- lib/facter/resolvers/aix/mountpoints.rb
|
865
868
|
- lib/facter/resolvers/aix/networking_resolver.rb
|
866
869
|
- lib/facter/resolvers/aix/nim.rb
|
867
|
-
- lib/facter/resolvers/aix/
|
870
|
+
- lib/facter/resolvers/aix/os_level.rb
|
868
871
|
- lib/facter/resolvers/aix/partitions.rb
|
869
872
|
- lib/facter/resolvers/aix/processors.rb
|
870
873
|
- lib/facter/resolvers/aix/serialnumber.rb
|
@@ -874,6 +877,7 @@ files:
|
|
874
877
|
- lib/facter/resolvers/base_resolver.rb
|
875
878
|
- lib/facter/resolvers/bsd/ffi/ffi_helper.rb
|
876
879
|
- lib/facter/resolvers/bsd/processors.rb
|
880
|
+
- lib/facter/resolvers/cloud.rb
|
877
881
|
- lib/facter/resolvers/containers.rb
|
878
882
|
- lib/facter/resolvers/debian_version.rb
|
879
883
|
- lib/facter/resolvers/disk_resolver.rb
|
@@ -914,7 +918,6 @@ files:
|
|
914
918
|
- lib/facter/resolvers/networking_linux_resolver.rb
|
915
919
|
- lib/facter/resolvers/networking_resolver.rb
|
916
920
|
- lib/facter/resolvers/open_vz.rb
|
917
|
-
- lib/facter/resolvers/os_level_resolver.rb
|
918
921
|
- lib/facter/resolvers/os_release_resolver.rb
|
919
922
|
- lib/facter/resolvers/partitions.rb
|
920
923
|
- lib/facter/resolvers/path_resolver.rb
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Facter
|
4
|
-
module Resolvers
|
5
|
-
class OsLevel < BaseResolver
|
6
|
-
@fact_list ||= {}
|
7
|
-
|
8
|
-
class << self
|
9
|
-
private
|
10
|
-
|
11
|
-
def post_resolve(fact_name)
|
12
|
-
@fact_list.fetch(fact_name) { read_oslevel(fact_name) }
|
13
|
-
end
|
14
|
-
|
15
|
-
def read_oslevel(fact_name)
|
16
|
-
output = Facter::Core::Execution.execute('/usr/bin/oslevel -s', logger: log)
|
17
|
-
@fact_list[:build] = output
|
18
|
-
@fact_list[:kernel] = 'AIX'
|
19
|
-
|
20
|
-
@fact_list[fact_name]
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Facter
|
4
|
-
module Resolvers
|
5
|
-
class OsLevel < BaseResolver
|
6
|
-
# build
|
7
|
-
|
8
|
-
@fact_list ||= {}
|
9
|
-
|
10
|
-
class << self
|
11
|
-
private
|
12
|
-
|
13
|
-
def post_resolve(fact_name)
|
14
|
-
@fact_list.fetch(fact_name) { read_oslevel(fact_name) }
|
15
|
-
end
|
16
|
-
|
17
|
-
def read_oslevel(fact_name)
|
18
|
-
output = Facter::Core::Execution.execute('/usr/bin/oslevel -s', logger: log)
|
19
|
-
|
20
|
-
@fact_list[:build] = output unless output.empty?
|
21
|
-
@fact_list[:kernel] = 'AIX'
|
22
|
-
|
23
|
-
@fact_list[fact_name]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|