facter 4.8.0 → 4.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/facter/custom_facts/core/execution/base.rb +2 -4
- data/lib/facter/resolvers/containers.rb +2 -2
- data/lib/facter/resolvers/hostname.rb +2 -2
- data/lib/facter/resolvers/linux/hostname.rb +2 -2
- data/lib/facter/resolvers/partitions.rb +38 -16
- data/lib/facter/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6aeed6f3058d490dd1b3e734c8d8de31efd16a275324e019e619a6084d465722
|
4
|
+
data.tar.gz: 224c4d60e9a71cbce735ee6de290949c73d949580e6e68ae16977b12fbc25517
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c47aaeaf6fafa8cefe84f8e32fd5837d0a138ca6561b96fa7016f633e7fbc9920c0e0986334dd012d5adc34a2fecd281529a997f51a6af5db25bcc7a12553e9
|
7
|
+
data.tar.gz: c8af80e38871c4e5261ad91ad858c66a665a2d48094a8c1fe941cfcb4df28b20490abdba6d221fd1b10caa7e3614f04101e87f5fe983c1c8ff40846b5c025ba5
|
@@ -25,8 +25,8 @@ module Facter
|
|
25
25
|
# set the new (temporary) value for the environment variable
|
26
26
|
ENV[var] = value
|
27
27
|
end
|
28
|
-
# execute the caller's block,
|
29
|
-
|
28
|
+
# execute the caller's block, returning its value
|
29
|
+
yield
|
30
30
|
# use an ensure block to make absolutely sure we restore the variables
|
31
31
|
ensure
|
32
32
|
# restore the old values
|
@@ -38,8 +38,6 @@ module Facter
|
|
38
38
|
ENV.delete(var)
|
39
39
|
end
|
40
40
|
end
|
41
|
-
# return the captured return value
|
42
|
-
rv
|
43
41
|
end
|
44
42
|
|
45
43
|
def execute(command, options = {})
|
@@ -43,7 +43,7 @@ module Facter
|
|
43
43
|
|
44
44
|
info = {}
|
45
45
|
case container
|
46
|
-
when '
|
46
|
+
when 'lxc'
|
47
47
|
vm = 'lxc'
|
48
48
|
when 'podman'
|
49
49
|
vm = 'podman'
|
@@ -54,7 +54,7 @@ module Facter
|
|
54
54
|
info = { 'id' => Facter::Util::FileHelper.safe_read('/etc/machine-id', nil).strip }
|
55
55
|
else
|
56
56
|
vm = 'container_other'
|
57
|
-
log.warn("Container runtime, '#{container}', is unsupported, setting to
|
57
|
+
log.warn("Container runtime, '#{container}', is unsupported, setting to '#{vm}'")
|
58
58
|
end
|
59
59
|
@fact_list[:vm] = vm
|
60
60
|
@fact_list[:hypervisor] = { vm.to_sym => info } if vm
|
@@ -68,9 +68,9 @@ module Facter
|
|
68
68
|
|
69
69
|
def read_domain
|
70
70
|
file_content = Facter::Util::FileHelper.safe_read('/etc/resolv.conf')
|
71
|
-
if file_content =~ /^domain\s+(\S+)/
|
71
|
+
if file_content =~ /^domain\s+([^.]\S+)/
|
72
72
|
Regexp.last_match(1)
|
73
|
-
elsif file_content =~ /^search\s+(\S+)/
|
73
|
+
elsif file_content =~ /^search\s+([^.]\S+)/
|
74
74
|
Regexp.last_match(1)
|
75
75
|
end
|
76
76
|
end
|
@@ -96,9 +96,9 @@ module Facter
|
|
96
96
|
|
97
97
|
def read_domain
|
98
98
|
file_content = Facter::Util::FileHelper.safe_read('/etc/resolv.conf')
|
99
|
-
if file_content =~ /^domain\s+(\S+)/
|
99
|
+
if file_content =~ /^domain\s+([^.]\S+)/
|
100
100
|
Regexp.last_match(1)
|
101
|
-
elsif file_content =~ /^search\s+(\S+)/
|
101
|
+
elsif file_content =~ /^search\s+([^.]\S+)/
|
102
102
|
Regexp.last_match(1)
|
103
103
|
end
|
104
104
|
end
|
@@ -69,13 +69,14 @@ module Facter
|
|
69
69
|
size: Facter::Util::Facts::UnitConverter.bytes_to_human_readable(size_bytes),
|
70
70
|
backing_file: backing_file }
|
71
71
|
info_hash.merge!(populate_from_syscalls(partition_name, blkid_and_lsblk))
|
72
|
-
@fact_list[:partitions][partition_name] = info_hash.
|
72
|
+
@fact_list[:partitions][partition_name] = info_hash.compact
|
73
73
|
end
|
74
74
|
|
75
75
|
def populate_from_syscalls(partition_name, blkid_and_lsblk)
|
76
|
-
|
76
|
+
# Prefer lsblk over blkid since lsblk does not require root, returns more information, and is recommended by blkid
|
77
|
+
part_info = populate_from_lsblk(partition_name, blkid_and_lsblk)
|
77
78
|
|
78
|
-
return
|
79
|
+
return populate_from_blkid(partition_name, blkid_and_lsblk) if part_info.empty?
|
79
80
|
|
80
81
|
part_info
|
81
82
|
end
|
@@ -121,26 +122,47 @@ module Facter
|
|
121
122
|
def populate_from_lsblk(partition_name, blkid_and_lsblk)
|
122
123
|
return {} unless available?('lsblk', blkid_and_lsblk)
|
123
124
|
|
124
|
-
|
125
|
+
lsblk_version_raw = Facter::Core::Execution.execute('lsblk --version 2>&1', logger: log)
|
126
|
+
# Return if the version of lsblk is too old (< 2.22) to support the --version flag
|
127
|
+
lsblk_version_raw.match?(/ \d\.\d+/) ? lsblk_version = lsblk_version_raw.match(/ \d\.\d+/)[0].to_f : (return {})
|
125
128
|
|
126
|
-
|
127
|
-
return {} if
|
129
|
+
# The -p/--paths option was added in lsblk 2.23, return early and fall back to blkid with earlier versions
|
130
|
+
return {} if lsblk_version < 2.23
|
128
131
|
|
129
|
-
|
130
|
-
end
|
132
|
+
blkid_and_lsblk[:lsblk] ||= execute_and_extract_lsblk_info(lsblk_version)
|
131
133
|
|
132
|
-
|
133
|
-
|
134
|
+
partition_data = blkid_and_lsblk[:lsblk][partition_name]
|
135
|
+
return {} unless partition_data
|
134
136
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
137
|
+
filesys = partition_data['FSTYPE']
|
138
|
+
uuid = partition_data['UUID']
|
139
|
+
label = partition_data['LABEL']
|
140
|
+
part_uuid = partition_data['PARTUUID']
|
141
|
+
part_label = partition_data['PARTLABEL']
|
142
|
+
part_type = partition_data['PARTTYPE']
|
143
|
+
|
144
|
+
result = { filesystem: filesys, uuid: uuid, label: label, partuuid: part_uuid, partlabel: part_label }
|
145
|
+
result[:parttype] = part_type if part_type
|
141
146
|
|
142
147
|
result
|
143
148
|
end
|
149
|
+
|
150
|
+
def execute_and_extract_lsblk_info(lsblk_version)
|
151
|
+
# lsblk 2.25 added support for GPT partition type GUIDs
|
152
|
+
stdout = if lsblk_version >= 2.25
|
153
|
+
Facter::Core::Execution.execute('lsblk -p -P -o NAME,FSTYPE,UUID,LABEL,PARTUUID,PARTLABEL,PARTTYPE', logger: log)
|
154
|
+
else
|
155
|
+
Facter::Core::Execution.execute('lsblk -p -P -o NAME,FSTYPE,LABEL,UUID,PARTUUID,PARTLABEL', logger: log)
|
156
|
+
end
|
157
|
+
|
158
|
+
output_hash = Hash[*stdout.split(/^(NAME=\S+)/)[1..-1]]
|
159
|
+
output_hash.transform_keys! { |key| key.delete('NAME=')[1..-2] }
|
160
|
+
output_hash.each do |key, value|
|
161
|
+
output_hash[key] = Hash[*value.chomp.rstrip.split(/ ([^= ]+)=/)[1..-1].each { |x| x.delete!('"') }]
|
162
|
+
end
|
163
|
+
output_hash.each_value { |value_hash| value_hash.delete_if { |_k, v| v.empty? } }
|
164
|
+
output_hash.delete_if { |_k, v| v.empty? }
|
165
|
+
end
|
144
166
|
end
|
145
167
|
end
|
146
168
|
end
|
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.
|
4
|
+
version: 4.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -1193,7 +1193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1193
1193
|
- !ruby/object:Gem::Version
|
1194
1194
|
version: '0'
|
1195
1195
|
requirements: []
|
1196
|
-
rubygems_version: 3.
|
1196
|
+
rubygems_version: 3.5.19
|
1197
1197
|
signing_key:
|
1198
1198
|
specification_version: 4
|
1199
1199
|
summary: Facter, a system inventory tool
|