facter 4.4.3 → 4.5.1
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/facter/custom_facts/core/aggregate.rb +15 -0
- data/lib/facter/custom_facts/util/directory_loader.rb +6 -1
- data/lib/facter/custom_facts/util/fact.rb +4 -3
- data/lib/facter/custom_facts/util/resolution.rb +1 -8
- data/lib/facter/custom_facts/util/windows_root.rb +3 -0
- data/lib/facter/facts/macosx/os/macosx/version.rb +12 -8
- data/lib/facter/resolvers/linux/networking.rb +48 -7
- data/lib/facter/resolvers/macosx/mountpoints.rb +16 -11
- data/lib/facter/resolvers/mountpoints.rb +15 -9
- data/lib/facter/resolvers/solaris/dmi_sparc.rb +6 -0
- data/lib/facter/resolvers/solaris/mountpoints.rb +26 -21
- data/lib/facter/resolvers/sw_vers.rb +1 -0
- data/lib/facter/resolvers/windows/hardware_architecture.rb +3 -0
- data/lib/facter/resolvers/windows/identity.rb +2 -0
- data/lib/facter/resolvers/windows/kernel.rb +2 -0
- data/lib/facter/resolvers/windows/memory.rb +2 -0
- data/lib/facter/resolvers/windows/networking.rb +2 -0
- data/lib/facter/resolvers/windows/system32.rb +2 -0
- data/lib/facter/resolvers/windows/timezone.rb +3 -0
- data/lib/facter/util/file_helper.rb +5 -6
- data/lib/facter/util/resolvers/filesystem_helper.rb +1 -3
- data/lib/facter/version.rb +1 -1
- metadata +28 -15
- data/lib/facter/patches/sysfilesystem/sys/statvfs.rb +0 -92
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb4ad4e8f37099548b19f8b37bc43b11b2f2ba2cfe28df31ffc30b4d8b6aac87
|
4
|
+
data.tar.gz: d978305277df30b5f97116aab7d96f1935de8e35db2cee3fdab1aa28db694a78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a0ebd49f8a7ddae37b97c4c2430b93f3fb18b462203daa6544bdfcdbdc28a3c4f1df5b90bbabb17a17fa2e8a1cef28f467e1b5cad70547c616e95e1051c1688
|
7
|
+
data.tar.gz: ef0687cb134a6d37e1d4a35ba8047ca134230e0834f5354fc8a3ce6463999b0f237c265b4dbf1d55f45a2cf12276f207f4c5756afd62bbcf2b61abb19ccf0eaa
|
@@ -53,6 +53,13 @@ module Facter
|
|
53
53
|
# @api private
|
54
54
|
attr_reader :fact
|
55
55
|
|
56
|
+
# @!attribute [r] last_evaluated
|
57
|
+
#
|
58
|
+
# @return [String]
|
59
|
+
#
|
60
|
+
# @api public
|
61
|
+
attr_reader :last_evaluated
|
62
|
+
|
56
63
|
# Create a new aggregated resolution mechanism.
|
57
64
|
#
|
58
65
|
# @param name [String] The name of the resolution.
|
@@ -101,7 +108,15 @@ module Facter
|
|
101
108
|
#
|
102
109
|
# @api private
|
103
110
|
def evaluate(&block)
|
111
|
+
if @last_evaluated
|
112
|
+
msg = "Already evaluated #{@name}"
|
113
|
+
msg << " at #{@last_evaluated}" if msg.is_a? String
|
114
|
+
msg << ', reevaluating anyways'
|
115
|
+
log.warn msg
|
116
|
+
end
|
104
117
|
instance_eval(&block)
|
118
|
+
|
119
|
+
@last_evaluated = block.source_location.join(':')
|
105
120
|
end
|
106
121
|
|
107
122
|
# Define a new chunk for the given aggregate
|
@@ -93,7 +93,12 @@ module LegacyFacter
|
|
93
93
|
if data == false
|
94
94
|
log.warn "Could not interpret fact file #{fact.file}"
|
95
95
|
elsif (data == {}) || data.nil?
|
96
|
-
log.debug(
|
96
|
+
log.debug(
|
97
|
+
"Structured data fact file #{fact.file} was parsed but was either empty or an invalid filetype "\
|
98
|
+
'(valid filetypes are .yaml, .json, and .txt).'
|
99
|
+
)
|
100
|
+
elsif !data.is_a?(Hash)
|
101
|
+
log.error("Structured data fact file #{fact.file} was parsed but no key=>value data was returned.")
|
97
102
|
else
|
98
103
|
add_data(data, collection, fact, weight)
|
99
104
|
end
|
@@ -85,7 +85,9 @@ module Facter
|
|
85
85
|
|
86
86
|
resolve
|
87
87
|
rescue StandardError => e
|
88
|
-
|
88
|
+
msg = "Unable to add resolve #{resolution_name.inspect} for fact '#{@name}': #{e.message}"
|
89
|
+
msg += "\n" + e.backtrace.join("\n") if Options[:trace]
|
90
|
+
log.error(msg, true)
|
89
91
|
nil
|
90
92
|
end
|
91
93
|
|
@@ -223,8 +225,7 @@ module Facter
|
|
223
225
|
end
|
224
226
|
|
225
227
|
def log_fact_path(resolve)
|
226
|
-
fact
|
227
|
-
log.debug("#{resolve.fact_type} fact #{fact.name} got resolved from: #{fact.location}")
|
228
|
+
log.debug("#{resolve.fact_type} fact #{resolve.fact.name} was resolved from: #{resolve.last_evaluated}")
|
228
229
|
end
|
229
230
|
|
230
231
|
def announce_when_no_suitable_resolution(resolutions)
|
@@ -96,14 +96,7 @@ module Facter
|
|
96
96
|
|
97
97
|
instance_eval(&block)
|
98
98
|
|
99
|
-
|
100
|
-
# debugging information if a resolution is being evaluated twice. Since 1.8
|
101
|
-
# doesn't support this we opportunistically provide this information.
|
102
|
-
@last_evaluated = if block.respond_to? :source_location
|
103
|
-
block.source_location.join(':')
|
104
|
-
else
|
105
|
-
true
|
106
|
-
end
|
99
|
+
@last_evaluated = block.source_location.join(':')
|
107
100
|
end
|
108
101
|
|
109
102
|
# Sets options for the aggregate fact
|
@@ -6,6 +6,9 @@ module LegacyFacter
|
|
6
6
|
def self.root?
|
7
7
|
require_relative '../../../facter/resolvers/windows/ffi/identity_ffi'
|
8
8
|
IdentityFFI.privileged?
|
9
|
+
rescue LoadError => e
|
10
|
+
log = Facter::Log.new(self)
|
11
|
+
log.debug("The ffi gem has not been installed: #{e}")
|
9
12
|
end
|
10
13
|
end
|
11
14
|
end
|
@@ -10,23 +10,27 @@ module Facts
|
|
10
10
|
macosx_productversion_patch].freeze
|
11
11
|
|
12
12
|
def call_the_resolver
|
13
|
-
|
14
|
-
|
13
|
+
version_value = Facter::Resolvers::SwVers.resolve(:productversion)
|
14
|
+
extra_value = Facter::Resolvers::SwVers.resolve(:productversionextra)
|
15
|
+
ver = version_hash(version_value, extra_value)
|
15
16
|
|
16
17
|
[Facter::ResolvedFact.new(FACT_NAME, ver),
|
17
|
-
Facter::ResolvedFact.new(ALIASES[0],
|
18
|
+
Facter::ResolvedFact.new(ALIASES[0], version_value, :legacy),
|
18
19
|
Facter::ResolvedFact.new(ALIASES[1], ver['major'], :legacy),
|
19
20
|
Facter::ResolvedFact.new(ALIASES[2], ver['minor'], :legacy),
|
20
21
|
Facter::ResolvedFact.new(ALIASES[3], ver['patch'], :legacy)]
|
21
22
|
end
|
22
23
|
|
23
|
-
def version_hash(
|
24
|
-
versions =
|
24
|
+
def version_hash(version_value, extra_value)
|
25
|
+
versions = version_value.split('.')
|
25
26
|
if versions[0] == '10'
|
26
|
-
{ 'full' =>
|
27
|
-
|
28
|
-
{ 'full' =>
|
27
|
+
{ 'full' => version_value, 'major' => "#{versions[0]}.#{versions[1]}", 'minor' => versions[-1] }
|
28
|
+
elsif /11|12/.match?(versions[0]) || extra_value.nil?
|
29
|
+
{ 'full' => version_value, 'major' => versions[0], 'minor' => versions.fetch(1, '0'),
|
29
30
|
'patch' => versions.fetch(2, '0') }
|
31
|
+
else
|
32
|
+
{ 'full' => version_value, 'major' => versions[0], 'minor' => versions.fetch(1, '0'),
|
33
|
+
'patch' => versions.fetch(2, '0'), 'extra' => extra_value }
|
30
34
|
end
|
31
35
|
end
|
32
36
|
end
|
@@ -28,9 +28,13 @@ module Facter
|
|
28
28
|
@fact_list[:interfaces] = Facter::Util::Linux::SocketParser.retrieve_interfaces(log)
|
29
29
|
mtu_and_indexes = interfaces_mtu_and_index
|
30
30
|
|
31
|
-
@fact_list[:interfaces].
|
32
|
-
mtu(interface_name, mtu_and_indexes)
|
33
|
-
dhcp(interface_name, mtu_and_indexes)
|
31
|
+
@fact_list[:interfaces].each_pair do |interface_name, iface|
|
32
|
+
mtu(interface_name, mtu_and_indexes, iface)
|
33
|
+
dhcp(interface_name, mtu_and_indexes, iface)
|
34
|
+
operstate(interface_name, iface)
|
35
|
+
physical(interface_name, iface)
|
36
|
+
linkspeed(interface_name, iface)
|
37
|
+
duplex(interface_name, iface)
|
34
38
|
|
35
39
|
@log.debug("Found interface #{interface_name} with #{@fact_list[:interfaces][interface_name]}")
|
36
40
|
end
|
@@ -47,6 +51,43 @@ module Facter
|
|
47
51
|
mtu_and_indexes
|
48
52
|
end
|
49
53
|
|
54
|
+
def operstate(interface_name, iface)
|
55
|
+
state = Facter::Util::FileHelper.safe_read("/sys/class/net/#{interface_name}/operstate", nil)
|
56
|
+
iface[:operational_state] = state.strip if state
|
57
|
+
end
|
58
|
+
|
59
|
+
def physical(ifname, iface)
|
60
|
+
iface[:physical] = if File.exist?("/sys/class/net/#{ifname}/device")
|
61
|
+
true
|
62
|
+
else
|
63
|
+
false
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def duplex(interface_name, iface)
|
68
|
+
return unless iface[:physical]
|
69
|
+
|
70
|
+
# not all interfaces support this, wifi for example causes an EINVAL (Invalid argument)
|
71
|
+
begin
|
72
|
+
plex = Facter::Util::FileHelper.safe_read("/sys/class/net/#{interface_name}/duplex", nil)
|
73
|
+
iface[:duplex] = plex.strip if plex
|
74
|
+
rescue StandardError => e
|
75
|
+
@log.debug("Failed to read '/sys/class/net/#{interface_name}/duplex': #{e.message}")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def linkspeed(interface_name, iface)
|
80
|
+
return unless iface[:physical]
|
81
|
+
|
82
|
+
# not all interfaces support this, wifi for example causes an EINVAL (Invalid argument)
|
83
|
+
begin
|
84
|
+
speed = Facter::Util::FileHelper.safe_read("/sys/class/net/#{interface_name}/speed", nil)
|
85
|
+
iface[:speed] = speed.strip.to_i if speed
|
86
|
+
rescue StandardError => e
|
87
|
+
@log.debug("Failed to read '/sys/class/net/#{interface_name}/speed': #{e.message}")
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
50
91
|
def parse_ip_command_line(line, mtu_and_indexes)
|
51
92
|
mtu = line.match(/mtu (\d+)/)&.captures&.first&.to_i
|
52
93
|
index_tokens = line.split(':')
|
@@ -56,14 +97,14 @@ module Facter
|
|
56
97
|
mtu_and_indexes[name] = { index: index, mtu: mtu }
|
57
98
|
end
|
58
99
|
|
59
|
-
def mtu(interface_name, mtu_and_indexes)
|
100
|
+
def mtu(interface_name, mtu_and_indexes, iface)
|
60
101
|
mtu = mtu_and_indexes.dig(interface_name, :mtu)
|
61
|
-
|
102
|
+
iface[:mtu] = mtu unless mtu.nil?
|
62
103
|
end
|
63
104
|
|
64
|
-
def dhcp(interface_name, mtu_and_indexes)
|
105
|
+
def dhcp(interface_name, mtu_and_indexes, iface)
|
65
106
|
dhcp = Facter::Util::Linux::Dhcp.dhcp(interface_name, mtu_and_indexes.dig(interface_name, :index), log)
|
66
|
-
|
107
|
+
iface[:dhcp] = dhcp unless dhcp.nil?
|
67
108
|
end
|
68
109
|
|
69
110
|
def add_info_from_routing_table
|
@@ -7,6 +7,8 @@ module Facter
|
|
7
7
|
include Facter::Util::Resolvers::FilesystemHelper
|
8
8
|
init_resolver
|
9
9
|
|
10
|
+
@log = Facter::Log.new(self)
|
11
|
+
|
10
12
|
class << self
|
11
13
|
private
|
12
14
|
|
@@ -16,18 +18,21 @@ module Facter
|
|
16
18
|
|
17
19
|
def read_mounts
|
18
20
|
mounts = {}
|
21
|
+
begin
|
22
|
+
Facter::Util::Resolvers::FilesystemHelper.read_mountpoints.each do |fs|
|
23
|
+
device = fs.name
|
24
|
+
filesystem = fs.mount_type
|
25
|
+
path = fs.mount_point
|
26
|
+
options = read_options(fs.options)
|
19
27
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
mounts[path] = read_stats(path).tap do |hash|
|
27
|
-
hash[:device] = device
|
28
|
-
hash[:filesystem] = filesystem
|
29
|
-
hash[:options] = options if options.any?
|
28
|
+
mounts[path] = read_stats(path).tap do |hash|
|
29
|
+
hash[:device] = device
|
30
|
+
hash[:filesystem] = filesystem
|
31
|
+
hash[:options] = options if options.any?
|
32
|
+
end
|
30
33
|
end
|
34
|
+
rescue LoadError => e
|
35
|
+
@log.debug("Could not read mounts: #{e}")
|
31
36
|
end
|
32
37
|
|
33
38
|
@fact_list[:mountpoints] = mounts
|
@@ -39,7 +44,7 @@ module Facter
|
|
39
44
|
size_bytes = stats.bytes_total
|
40
45
|
available_bytes = stats.bytes_available
|
41
46
|
used_bytes = size_bytes - available_bytes
|
42
|
-
rescue Sys::Filesystem::Error
|
47
|
+
rescue Sys::Filesystem::Error, LoadError
|
43
48
|
size_bytes = used_bytes = available_bytes = 0
|
44
49
|
end
|
45
50
|
|
@@ -45,14 +45,20 @@ module Facter
|
|
45
45
|
|
46
46
|
def read_mounts(fact_name)
|
47
47
|
mounts = []
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
48
|
+
begin
|
49
|
+
Facter::Util::Resolvers::FilesystemHelper.read_mountpoints.each do |file_system|
|
50
|
+
mount = {}
|
51
|
+
get_mount_data(file_system, mount)
|
52
|
+
|
53
|
+
if mount[:path] =~ %r{^/(proc|sys)} && mount[:filesystem] != 'tmpfs' || mount[:filesystem] == 'autofs'
|
54
|
+
next
|
55
|
+
end
|
56
|
+
|
57
|
+
get_mount_sizes(mount)
|
58
|
+
mounts << mount
|
59
|
+
end
|
60
|
+
rescue LoadError => e
|
61
|
+
@log.debug("Could not read mounts: #{e}")
|
56
62
|
end
|
57
63
|
|
58
64
|
@fact_list[:mountpoints] = mounts
|
@@ -70,7 +76,7 @@ module Facter
|
|
70
76
|
begin
|
71
77
|
stats = Facter::Util::Resolvers::FilesystemHelper.read_mountpoint_stats(mount[:path])
|
72
78
|
get_bytes_data(mount, stats)
|
73
|
-
rescue Sys::Filesystem::Error => e
|
79
|
+
rescue LoadError, Sys::Filesystem::Error => e
|
74
80
|
@log.debug("Could not get stats for mountpoint #{mount[:path]}, got #{e}")
|
75
81
|
mount[:size_bytes] = mount[:available_bytes] = mount[:used_bytes] = 0
|
76
82
|
end
|
@@ -19,6 +19,12 @@ module Facter
|
|
19
19
|
|
20
20
|
matches = output.match(/System Configuration:\s+(.+?)\s+sun\d+\S+\s+(.+)/)&.captures
|
21
21
|
|
22
|
+
# There are circumstances (e.g. in non-global zones) when prtdiag
|
23
|
+
# will return text, but it's an error message or some other string
|
24
|
+
# that isn't parsed by the above match/capture. In that case, we
|
25
|
+
# simply return.
|
26
|
+
return if matches.nil?
|
27
|
+
|
22
28
|
@fact_list[:manufacturer] = matches[0]&.strip
|
23
29
|
@fact_list[:product_name] = matches[1]&.strip
|
24
30
|
|
@@ -7,6 +7,8 @@ module Facter
|
|
7
7
|
include Facter::Util::Resolvers::FilesystemHelper
|
8
8
|
init_resolver
|
9
9
|
|
10
|
+
@log = Facter::Log.new(self)
|
11
|
+
|
10
12
|
class << self
|
11
13
|
private
|
12
14
|
|
@@ -24,31 +26,34 @@ module Facter
|
|
24
26
|
def read_mounts(fact_name) # rubocop:disable Metrics/MethodLength
|
25
27
|
@mounts = []
|
26
28
|
@auto_home_paths = []
|
29
|
+
begin
|
30
|
+
Facter::Util::Resolvers::FilesystemHelper.read_mountpoints&.each do |fs|
|
31
|
+
if fs.name == 'auto_home'
|
32
|
+
@auto_home_paths << fs.mount_point
|
33
|
+
next
|
34
|
+
end
|
27
35
|
|
28
|
-
|
29
|
-
if fs.name == 'auto_home'
|
30
|
-
@auto_home_paths << fs.mount_point
|
31
|
-
next
|
32
|
-
end
|
36
|
+
next if fs.mount_type == 'autofs'
|
33
37
|
|
34
|
-
|
38
|
+
mounts = {}
|
39
|
+
device = fs.name
|
40
|
+
filesystem = fs.mount_type
|
41
|
+
path = fs.mount_point
|
42
|
+
options = fs.options.split(',').map(&:strip)
|
35
43
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
44
|
+
mounts = read_stats(path).tap do |hash|
|
45
|
+
hash[:device] = device
|
46
|
+
hash[:filesystem] = filesystem
|
47
|
+
hash[:path] = path
|
48
|
+
hash[:options] = options if options.any?
|
49
|
+
end
|
41
50
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
hash[:path] = path
|
46
|
-
hash[:options] = options if options.any?
|
51
|
+
@mounts << Hash[Facter::Util::Resolvers::FilesystemHelper::MOUNT_KEYS
|
52
|
+
.zip(Facter::Util::Resolvers::FilesystemHelper::MOUNT_KEYS
|
53
|
+
.map { |v| mounts[v] })]
|
47
54
|
end
|
48
|
-
|
49
|
-
@mounts
|
50
|
-
.zip(Facter::Util::Resolvers::FilesystemHelper::MOUNT_KEYS
|
51
|
-
.map { |v| mounts[v] })]
|
55
|
+
rescue LoadError => e
|
56
|
+
@log.debug("Could not read mounts: #{e}")
|
52
57
|
end
|
53
58
|
|
54
59
|
exclude_auto_home_mounts!
|
@@ -64,7 +69,7 @@ module Facter
|
|
64
69
|
available_bytes = stats.bytes_available.abs
|
65
70
|
used_bytes = stats.bytes_used.abs
|
66
71
|
total_bytes = used_bytes + available_bytes
|
67
|
-
rescue Sys::Filesystem::Error
|
72
|
+
rescue Sys::Filesystem::Error, LoadError
|
68
73
|
size_bytes = used_bytes = available_bytes = 0
|
69
74
|
end
|
70
75
|
|
@@ -23,6 +23,9 @@ module Facter
|
|
23
23
|
arch = determine_architecture(hard)
|
24
24
|
build_facts_list(hardware: hard, architecture: arch)
|
25
25
|
@fact_list[fact_name]
|
26
|
+
rescue LoadError => e
|
27
|
+
log = Facter::Log.new(self)
|
28
|
+
log.debug("The ffi gem has not been installed: #{e}")
|
26
29
|
end
|
27
30
|
|
28
31
|
def determine_hardware(sys_info)
|
@@ -31,6 +31,8 @@ module Facter
|
|
31
31
|
Facter::Util::Resolvers::Networking.expand_main_bindings(@fact_list)
|
32
32
|
|
33
33
|
@fact_list[fact_name]
|
34
|
+
rescue LoadError => e
|
35
|
+
@log.debug("The ffi gem has not been installed: #{e}")
|
34
36
|
end
|
35
37
|
|
36
38
|
def get_adapter_addresses(size_ptr, adapter_addresses, flags)
|
@@ -33,6 +33,9 @@ module Facter
|
|
33
33
|
def codepage_from_api
|
34
34
|
require_relative '../../../facter/resolvers/windows/ffi/winnls_ffi'
|
35
35
|
WinnlsFFI.GetACP.to_s
|
36
|
+
rescue LoadError => e
|
37
|
+
log = Facter::Log.new(self)
|
38
|
+
log.debug("Could not retrieve codepage: #{e}")
|
36
39
|
end
|
37
40
|
end
|
38
41
|
end
|
@@ -22,13 +22,12 @@ module Facter
|
|
22
22
|
default_return
|
23
23
|
end
|
24
24
|
|
25
|
+
# This previously acted as a helper method for versions of Ruby older
|
26
|
+
# than 2.5, before Dir.children was added. As it isn't a private
|
27
|
+
# method, we can't remove it entirely until the next major Facter
|
28
|
+
# release (presumably Facter 5).
|
25
29
|
def dir_children(path)
|
26
|
-
children =
|
27
|
-
Dir.entries(path).reject { |dir| ['.', '..'].include?(dir) }
|
28
|
-
else
|
29
|
-
Dir.children(path)
|
30
|
-
end
|
31
|
-
|
30
|
+
children = Dir.children(path)
|
32
31
|
children
|
33
32
|
end
|
34
33
|
|
@@ -9,9 +9,7 @@ module Facter
|
|
9
9
|
size_bytes used used_bytes capacity].freeze
|
10
10
|
class << self
|
11
11
|
def read_mountpoints
|
12
|
-
|
13
|
-
# djberg96/sys-filesystem gem is available
|
14
|
-
require_relative '../../patches/sysfilesystem/sys/statvfs.rb'
|
12
|
+
require 'sys/filesystem'
|
15
13
|
force_utf(Sys::Filesystem.mounts)
|
16
14
|
end
|
17
15
|
|
data/lib/facter/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ffi
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.15.5
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.15.5
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: rake
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,49 +115,49 @@ dependencies:
|
|
101
115
|
- !ruby/object:Gem::Version
|
102
116
|
version: 0.17.1
|
103
117
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
118
|
+
name: sys-filesystem
|
105
119
|
requirement: !ruby/object:Gem::Requirement
|
106
120
|
requirements:
|
107
121
|
- - "~>"
|
108
122
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
123
|
+
version: '1.4'
|
110
124
|
type: :development
|
111
125
|
prerelease: false
|
112
126
|
version_requirements: !ruby/object:Gem::Requirement
|
113
127
|
requirements:
|
114
128
|
- - "~>"
|
115
129
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
130
|
+
version: '1.4'
|
117
131
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
132
|
+
name: webmock
|
119
133
|
requirement: !ruby/object:Gem::Requirement
|
120
134
|
requirements:
|
121
135
|
- - "~>"
|
122
136
|
- !ruby/object:Gem::Version
|
123
|
-
version: '
|
137
|
+
version: '3.12'
|
124
138
|
type: :development
|
125
139
|
prerelease: false
|
126
140
|
version_requirements: !ruby/object:Gem::Requirement
|
127
141
|
requirements:
|
128
142
|
- - "~>"
|
129
143
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
144
|
+
version: '3.12'
|
131
145
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
146
|
+
name: yard
|
133
147
|
requirement: !ruby/object:Gem::Requirement
|
134
148
|
requirements:
|
135
149
|
- - "~>"
|
136
150
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
138
|
-
type: :
|
151
|
+
version: '0.9'
|
152
|
+
type: :development
|
139
153
|
prerelease: false
|
140
154
|
version_requirements: !ruby/object:Gem::Requirement
|
141
155
|
requirements:
|
142
156
|
- - "~>"
|
143
157
|
- !ruby/object:Gem::Version
|
144
|
-
version: '
|
158
|
+
version: '0.9'
|
145
159
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
160
|
+
name: hocon
|
147
161
|
requirement: !ruby/object:Gem::Requirement
|
148
162
|
requirements:
|
149
163
|
- - "~>"
|
@@ -903,7 +917,6 @@ files:
|
|
903
917
|
- lib/facter/models/loaded_fact.rb
|
904
918
|
- lib/facter/models/resolved_fact.rb
|
905
919
|
- lib/facter/models/searched_fact.rb
|
906
|
-
- lib/facter/patches/sysfilesystem/sys/statvfs.rb
|
907
920
|
- lib/facter/resolvers/aio_agent_version.rb
|
908
921
|
- lib/facter/resolvers/aix/architecture.rb
|
909
922
|
- lib/facter/resolvers/aix/disks.rb
|
@@ -1088,7 +1101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1088
1101
|
- !ruby/object:Gem::Version
|
1089
1102
|
version: '0'
|
1090
1103
|
requirements: []
|
1091
|
-
rubygems_version: 3.4.
|
1104
|
+
rubygems_version: 3.4.20
|
1092
1105
|
signing_key:
|
1093
1106
|
specification_version: 4
|
1094
1107
|
summary: Facter, a system inventory tool
|
@@ -1,92 +0,0 @@
|
|
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 /darwin|osx|mach/i.match?(RbConfig::CONFIG['host_os'])
|
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 /bsd/i.match?(RbConfig::CONFIG['host'])
|
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 /sunos|solaris/i.match?(RbConfig::CONFIG['host'])
|
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 /i686/i.match?(RbConfig::CONFIG['host'])
|
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
|