facter 4.3.1 → 4.4.0
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_cli.rb +1 -1
- data/lib/facter/custom_facts/core/execution/base.rb +2 -1
- data/lib/facter/custom_facts/core/execution/posix.rb +1 -1
- data/lib/facter/custom_facts/core/execution/windows.rb +2 -2
- data/lib/facter/custom_facts/core/file_loader.rb +23 -24
- data/lib/facter/custom_facts/core/legacy_facter.rb +1 -1
- data/lib/facter/custom_facts/util/normalization.rb +8 -23
- data/lib/facter/custom_facts/util/windows_root.rb +1 -1
- data/lib/facter/facts/debian/architecture.rb +1 -1
- data/lib/facter/facts/linux/hypervisors/kvm.rb +2 -2
- data/lib/facter/facts/linux/os/architecture.rb +1 -1
- data/lib/facter/facts/windows/hypervisors/kvm.rb +2 -2
- data/lib/facter/framework/cli/cli_launcher.rb +3 -3
- data/lib/facter/framework/config/fact_groups.rb +2 -2
- data/lib/facter/framework/core/fact_loaders/fact_loader.rb +1 -1
- data/lib/facter/framework/core/file_loader.rb +893 -38
- data/lib/facter/framework/detector/os_hierarchy.rb +1 -1
- data/lib/facter/framework/formatters/legacy_fact_formatter.rb +1 -1
- data/lib/facter/framework/formatters/yaml_fact_formatter.rb +2 -2
- data/lib/facter/patches/sysfilesystem/sys/statvfs.rb +4 -4
- data/lib/facter/resolvers/aix/architecture.rb +1 -1
- data/lib/facter/resolvers/aix/filesystem.rb +1 -1
- data/lib/facter/resolvers/aix/hardware.rb +1 -1
- data/lib/facter/resolvers/aix/memory.rb +1 -1
- data/lib/facter/resolvers/aix/mountpoints.rb +2 -2
- data/lib/facter/resolvers/aix/networking.rb +1 -1
- data/lib/facter/resolvers/aix/partitions.rb +2 -2
- data/lib/facter/resolvers/bsd/processors.rb +1 -1
- data/lib/facter/resolvers/freebsd/processors.rb +2 -2
- data/lib/facter/resolvers/linux/hostname.rb +2 -2
- data/lib/facter/resolvers/load_averages.rb +1 -1
- data/lib/facter/resolvers/lspci.rb +1 -1
- data/lib/facter/resolvers/networking.rb +1 -1
- data/lib/facter/resolvers/open_vz.rb +1 -1
- data/lib/facter/resolvers/os_release.rb +2 -2
- data/lib/facter/resolvers/selinux.rb +3 -3
- data/lib/facter/resolvers/solaris/filesystems.rb +1 -1
- data/lib/facter/resolvers/virt_what.rb +6 -6
- data/lib/facter/resolvers/windows/ffi/hardware_ffi.rb +2 -2
- data/lib/facter/resolvers/windows/ffi/identity_ffi.rb +1 -1
- data/lib/facter/resolvers/windows/ffi/kernel_ffi.rb +2 -2
- data/lib/facter/resolvers/windows/ffi/memory_ffi.rb +2 -2
- data/lib/facter/resolvers/windows/ffi/networking_ffi.rb +3 -3
- data/lib/facter/resolvers/windows/ffi/system32_ffi.rb +1 -1
- data/lib/facter/resolvers/windows/ffi/winnls_ffi.rb +1 -1
- data/lib/facter/resolvers/windows/hardware_architecture.rb +1 -1
- data/lib/facter/resolvers/windows/identity.rb +1 -1
- data/lib/facter/resolvers/windows/kernel.rb +1 -1
- data/lib/facter/resolvers/windows/memory.rb +1 -1
- data/lib/facter/resolvers/windows/networking.rb +1 -1
- data/lib/facter/resolvers/windows/system32.rb +1 -1
- data/lib/facter/resolvers/windows/timezone.rb +1 -1
- data/lib/facter/resolvers/windows/virtualization.rb +2 -2
- data/lib/facter/resolvers/xen.rb +1 -1
- data/lib/facter/util/facts/windows_release_finder.rb +2 -2
- data/lib/facter/util/linux/dhcp.rb +1 -1
- data/lib/facter/util/utils.rb +1 -1
- data/lib/facter/version.rb +1 -1
- data/lib/facter.rb +15 -6
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a329a8e0a2281e2640784c89bd374f16a2cb75dbbde5a19b5608340371d92601
|
4
|
+
data.tar.gz: 9374fd76feb4d7d583b566e6f5c6daffb613fff8c6adeca0fffd9201e6dd676c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c1ef71b91e17ba0441a4a56c10fcf1eaea3c09e99754e9a42035e3ddbf41de82268d49b9debef5096eed6673b499b6fd3368473c7cdeaddc0b8ab0a3d0ad4a0
|
7
|
+
data.tar.gz: 7c431855c6d26c5bda0f17f647d80c7c593c455ad8bad56aa0b9d5077bb4d59ea0f34a53b512cfe3569d13c46ff477e887e14c45e01d9e55044e0b3311257d81
|
data/lib/docs/generate_cli.rb
CHANGED
@@ -106,6 +106,7 @@ module Facter
|
|
106
106
|
raise Facter::Core::Execution::ExecutionFailure.new, message
|
107
107
|
end
|
108
108
|
|
109
|
+
out.force_encoding(Encoding.default_external) unless out.valid_encoding?
|
109
110
|
[out.strip, stderr]
|
110
111
|
end
|
111
112
|
|
@@ -140,7 +141,7 @@ module Facter
|
|
140
141
|
|
141
142
|
def builtin_command?(command)
|
142
143
|
output, _status = Open3.capture2("type #{command}")
|
143
|
-
output.chomp
|
144
|
+
/builtin/.match?(output.chomp) ? true : false
|
144
145
|
end
|
145
146
|
end
|
146
147
|
end
|
@@ -11,7 +11,7 @@ module Facter
|
|
11
11
|
def which(bin)
|
12
12
|
# `echo` is allowed for facter 3.x compatibility, otherwise
|
13
13
|
# all commands much be found on the PATH or absolute.
|
14
|
-
return bin if /^echo$/i
|
14
|
+
return bin if /^echo$/i.match?(bin)
|
15
15
|
|
16
16
|
if absolute_path?(bin)
|
17
17
|
return bin if File.executable?(bin)
|
@@ -56,7 +56,7 @@ module Facter
|
|
56
56
|
|
57
57
|
return unless exe && (expanded = which(exe))
|
58
58
|
|
59
|
-
expanded = "\"#{expanded}\"" if
|
59
|
+
expanded = "\"#{expanded}\"" if /\s+/.match?(expanded)
|
60
60
|
expanded << " #{args}" if args
|
61
61
|
|
62
62
|
expanded
|
@@ -1,28 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
require 'facter/custom_facts/util/confine'
|
3
|
+
require_relative '../../../facter/custom_facts/util/fact'
|
4
|
+
require_relative '../../../facter/custom_facts/util/collection'
|
5
|
+
require_relative '../../../facter/custom_facts/util/fact'
|
6
|
+
require_relative '../../../facter/custom_facts/util/loader'
|
7
|
+
require_relative '../../../facter/custom_facts/core/execution/base'
|
8
|
+
require_relative '../../../facter/custom_facts/core/execution/windows'
|
9
|
+
require_relative '../../../facter/custom_facts/core/execution/posix'
|
10
|
+
require_relative '../../../facter/custom_facts/util/values'
|
11
|
+
require_relative '../../../facter/custom_facts/util/confine'
|
13
12
|
|
14
|
-
|
13
|
+
require_relative '../../../facter/custom_facts/util/config'
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
15
|
+
require_relative '../../../facter/custom_facts/util/normalization'
|
16
|
+
require_relative '../../../facter/custom_facts/core/execution'
|
17
|
+
require_relative '../../../facter/custom_facts/core/resolvable'
|
18
|
+
require_relative '../../../facter/custom_facts/core/suitable'
|
19
|
+
require_relative '../../../facter/custom_facts/util/resolution'
|
20
|
+
require_relative '../../../facter/custom_facts/core/directed_graph'
|
21
|
+
require_relative '../../../facter/custom_facts/core/resolvable'
|
22
|
+
require_relative '../../../facter/custom_facts/core/aggregate'
|
23
|
+
require_relative '../../../facter/custom_facts/util/composite_loader'
|
24
|
+
require_relative '../../../facter/custom_facts/util/parser'
|
25
|
+
require_relative '../../../facter/custom_facts/util/directory_loader'
|
26
|
+
require_relative '../../../facter/custom_facts/util/nothing_loader'
|
27
|
+
require_relative '../../../facter/custom_facts/util/nothing_loader'
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
require 'pathname'
|
20
20
|
|
21
|
-
|
21
|
+
require_relative '../../../facter/custom_facts/core/file_loader'
|
22
22
|
|
23
23
|
# Functions as a hash of 'facts' about your system system, such as MAC
|
24
24
|
# address, IP address, architecture, etc.
|
@@ -38,11 +38,7 @@ module LegacyFacter
|
|
38
38
|
#
|
39
39
|
# Attempt to normalize and validate the given string.
|
40
40
|
#
|
41
|
-
#
|
42
|
-
# characters and comparing the converted string to the original. If they
|
43
|
-
# do not match then the string is considered invalid.
|
44
|
-
#
|
45
|
-
# On Ruby 1.9+, the string is validate by checking that the string encoding
|
41
|
+
# The string is validated by checking that the string encoding
|
46
42
|
# is UTF-8 and that the string content matches the encoding. If the string
|
47
43
|
# is not an expected encoding then it is converted to UTF-8.
|
48
44
|
#
|
@@ -51,27 +47,16 @@ module LegacyFacter
|
|
51
47
|
# @param value [String]
|
52
48
|
# @return [void]
|
53
49
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
def normalize_string(value)
|
58
|
-
converted = Iconv.conv('UTF-8//IGNORE', 'UTF-8', value)
|
59
|
-
raise NormalizationError, "String #{value.inspect} is not valid UTF-8" if converted != value
|
50
|
+
def normalize_string(value)
|
51
|
+
value = value.encode(Encoding::UTF_8)
|
60
52
|
|
61
|
-
|
53
|
+
unless value.valid_encoding?
|
54
|
+
raise NormalizationError, "String #{value.inspect} doesn't match the reported encoding #{value.encoding}"
|
62
55
|
end
|
63
|
-
else
|
64
|
-
def normalize_string(value)
|
65
|
-
value = value.encode(Encoding::UTF_8)
|
66
56
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
value
|
72
|
-
rescue EncodingError
|
73
|
-
raise NormalizationError, "String encoding #{value.encoding} is not UTF-8 and could not be converted to UTF-8"
|
74
|
-
end
|
57
|
+
value
|
58
|
+
rescue EncodingError
|
59
|
+
raise NormalizationError, "String encoding #{value.encoding} is not UTF-8 and could not be converted to UTF-8"
|
75
60
|
end
|
76
61
|
|
77
62
|
# Validate all elements of the array.
|
@@ -10,7 +10,7 @@ module Facts
|
|
10
10
|
def call_the_resolver
|
11
11
|
fact_value = Facter::Resolvers::Uname.resolve(:machine)
|
12
12
|
fact_value = 'amd64' if fact_value == 'x86_64'
|
13
|
-
fact_value = 'i386' if
|
13
|
+
fact_value = 'i386' if /i[3456]86|pentium/.match?(fact_value)
|
14
14
|
|
15
15
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
|
16
16
|
end
|
@@ -52,9 +52,9 @@ module Facts
|
|
52
52
|
|
53
53
|
return { google: true } if manufacturer == 'Google'
|
54
54
|
|
55
|
-
return { openstack: true } if
|
55
|
+
return { openstack: true } if /^OpenStack/.match?(manufacturer)
|
56
56
|
|
57
|
-
return { amazon: true } if
|
57
|
+
return { amazon: true } if /^Amazon/.match?(manufacturer)
|
58
58
|
|
59
59
|
{}
|
60
60
|
end
|
@@ -10,7 +10,7 @@ module Facts
|
|
10
10
|
def call_the_resolver
|
11
11
|
fact_value = Facter::Resolvers::Uname.resolve(:machine)
|
12
12
|
|
13
|
-
fact_value = 'i386' if
|
13
|
+
fact_value = 'i386' if /i[3456]86|pentium/.match?(fact_value)
|
14
14
|
|
15
15
|
[Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
|
16
16
|
end
|
@@ -27,9 +27,9 @@ module Facts
|
|
27
27
|
|
28
28
|
return { google: true } if manufacturer == 'Google'
|
29
29
|
|
30
|
-
return { openstack: true } if Facter::Resolvers::DMIComputerSystem.resolve(:name)
|
30
|
+
return { openstack: true } if /^OpenStack/.match?(Facter::Resolvers::DMIComputerSystem.resolve(:name))
|
31
31
|
|
32
|
-
return { amazon: true } if
|
32
|
+
return { amazon: true } if /^Amazon/.match?(manufacturer)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
|
4
|
+
require_relative '../../../facter/framework/logging/logger.rb'
|
5
5
|
Facter::Log.output(STDERR)
|
6
|
-
|
7
|
-
|
6
|
+
require_relative '../../../facter'
|
7
|
+
require_relative '../../../facter/framework/cli/cli'
|
8
8
|
|
9
9
|
class CliLauncher
|
10
10
|
class << self
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative '../../../facter/config'
|
4
4
|
|
5
5
|
module Facter
|
6
6
|
class FactGroups
|
@@ -64,7 +64,7 @@ module Facter
|
|
64
64
|
def get_fact(fact_name)
|
65
65
|
return @facts_ttls[fact_name] if @facts_ttls[fact_name]
|
66
66
|
|
67
|
-
result = @facts_ttls.select { |name, fact| break fact if
|
67
|
+
result = @facts_ttls.select { |name, fact| break fact if /^#{name}\..*/.match?(fact_name) }
|
68
68
|
return nil if result == {}
|
69
69
|
|
70
70
|
result
|
@@ -103,7 +103,7 @@ module Facter
|
|
103
103
|
|
104
104
|
blocked_facts.each do |blocked|
|
105
105
|
facts.each do |fact|
|
106
|
-
next unless
|
106
|
+
next unless /^#{blocked}\..*|^#{blocked}$/.match?(fact.name)
|
107
107
|
|
108
108
|
if fact.type == :core
|
109
109
|
reject_list_core << fact
|