facter 4.5.2 → 4.6.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/bin/facter +1 -1
- data/lib/docs/generate.rb +1 -6
- data/lib/facter/custom_facts/core/directed_graph.rb +2 -4
- data/lib/facter/custom_facts/core/execution/base.rb +1 -1
- data/lib/facter/custom_facts/core/execution/posix.rb +6 -2
- data/lib/facter/custom_facts/core/execution/windows.rb +4 -1
- data/lib/facter/custom_facts/core/execution.rb +1 -1
- data/lib/facter/custom_facts/core/file_loader.rb +0 -4
- data/lib/facter/custom_facts/core/suitable.rb +1 -1
- data/lib/facter/custom_facts/util/collection.rb +2 -4
- data/lib/facter/custom_facts/util/confine.rb +4 -1
- data/lib/facter/custom_facts/util/fact.rb +1 -1
- data/lib/facter/custom_facts/util/loader.rb +2 -2
- data/lib/facter/custom_facts/util/resolution.rb +8 -4
- data/lib/facter/custom_facts/util/values.rb +1 -1
- data/lib/facter/facts/linux/dmi/product/version.rb +19 -0
- data/lib/facter/facts/linux/kernelmajversion.rb +1 -1
- data/lib/facter/facts/macosx/is_virtual.rb +1 -1
- data/lib/facter/facts/macosx/virtual.rb +3 -3
- data/lib/facter/facts/mariner/os/release.rb +1 -1
- data/lib/facter/facts/photon/os/release.rb +1 -1
- data/lib/facter/facts/solaris/kernelmajversion.rb +1 -1
- data/lib/facter/facts/solaris/ldom.rb +1 -1
- data/lib/facter/facts/windows/hypervisors/kvm.rb +1 -1
- data/lib/facter/facts/windows/interfaces.rb +1 -1
- data/lib/facter/framework/benchmarking/timer.rb +2 -2
- data/lib/facter/framework/cli/cli.rb +6 -8
- data/lib/facter/framework/cli/cli_launcher.rb +1 -1
- data/lib/facter/framework/config/fact_groups.rb +1 -1
- data/lib/facter/framework/core/cache_manager.rb +5 -6
- data/lib/facter/framework/core/fact_loaders/fact_loader.rb +1 -3
- data/lib/facter/framework/core/fact_manager.rb +4 -4
- data/lib/facter/framework/core/file_loader.rb +734 -733
- data/lib/facter/framework/core/options/config_file_options.rb +4 -6
- data/lib/facter/framework/formatters/hocon_fact_formatter.rb +3 -2
- data/lib/facter/framework/formatters/legacy_fact_formatter.rb +4 -4
- data/lib/facter/framework/logging/logger.rb +6 -6
- data/lib/facter/framework/logging/logger_helper.rb +10 -11
- data/lib/facter/resolvers/aix/ffi/ffi_helper.rb +1 -1
- data/lib/facter/resolvers/aix/networking.rb +1 -1
- data/lib/facter/resolvers/aix/serialnumber.rb +1 -1
- data/lib/facter/resolvers/amzn/os_release_rpm.rb +1 -1
- data/lib/facter/resolvers/dmi.rb +2 -1
- data/lib/facter/resolvers/fips_enabled.rb +1 -1
- data/lib/facter/resolvers/freebsd/dmi.rb +1 -1
- data/lib/facter/resolvers/freebsd/swap_memory.rb +1 -1
- data/lib/facter/resolvers/freebsd/virtual.rb +1 -1
- data/lib/facter/resolvers/linux/hostname.rb +1 -1
- data/lib/facter/resolvers/macosx/dmi.rb +1 -1
- data/lib/facter/resolvers/macosx/filesystems.rb +1 -1
- data/lib/facter/resolvers/memory.rb +1 -1
- data/lib/facter/resolvers/networking.rb +3 -3
- data/lib/facter/resolvers/os_release.rb +1 -1
- data/lib/facter/resolvers/partitions.rb +2 -2
- data/lib/facter/resolvers/processors_lscpu.rb +2 -2
- data/lib/facter/resolvers/solaris/ffi/ffi.rb +2 -2
- data/lib/facter/resolvers/solaris/mountpoints.rb +1 -1
- data/lib/facter/resolvers/solaris/networking.rb +1 -1
- data/lib/facter/resolvers/solaris/os_release.rb +2 -2
- data/lib/facter/resolvers/virt_what.rb +2 -1
- data/lib/facter/resolvers/windows/memory.rb +3 -2
- data/lib/facter/resolvers/windows/product_release.rb +7 -7
- data/lib/facter/util/aix/odm_query.rb +1 -1
- data/lib/facter/util/api_debugger.rb +2 -2
- data/lib/facter/util/facts/posix/virtual_detector.rb +8 -5
- data/lib/facter/util/facts/unit_converter.rb +2 -2
- data/lib/facter/util/file_helper.rb +1 -2
- data/lib/facter/util/macosx/system_profile_executor.rb +3 -3
- data/lib/facter/util/resolvers/networking/networking.rb +4 -3
- data/lib/facter/util/utils.rb +2 -2
- data/lib/facter/version.rb +1 -1
- data/lib/facter.rb +7 -0
- metadata +10 -9
@@ -60,10 +60,8 @@ module Facter
|
|
60
60
|
def augment_custom(file_global_conf)
|
61
61
|
return unless file_global_conf
|
62
62
|
|
63
|
-
if Options.cli?
|
64
|
-
|
65
|
-
@options[:no_custom_facts] = file_global_conf['no-custom-facts']
|
66
|
-
end
|
63
|
+
if Options.cli? && !file_global_conf['no-custom-facts'].nil?
|
64
|
+
@options[:no_custom_facts] = file_global_conf['no-custom-facts']
|
67
65
|
end
|
68
66
|
|
69
67
|
@options[:custom_dir] = file_global_conf['custom-dir'] unless file_global_conf['custom-dir'].nil?
|
@@ -73,8 +71,8 @@ module Facter
|
|
73
71
|
def augment_external(global_conf)
|
74
72
|
return unless global_conf
|
75
73
|
|
76
|
-
if Options.cli?
|
77
|
-
@options[:no_external_facts] = global_conf['no-external-facts']
|
74
|
+
if Options.cli? && !global_conf['no-external-facts'].nil?
|
75
|
+
@options[:no_external_facts] = global_conf['no-external-facts']
|
78
76
|
end
|
79
77
|
|
80
78
|
@options[:external_dir] = [global_conf['external-dir']].flatten unless global_conf['external-dir'].nil?
|
@@ -14,7 +14,8 @@ module Facter
|
|
14
14
|
|
15
15
|
user_query = user_queries.first
|
16
16
|
return format_for_no_query(resolved_facts) if user_query.empty?
|
17
|
-
|
17
|
+
|
18
|
+
format_for_single_user_query(user_queries.first, resolved_facts) unless user_query.empty?
|
18
19
|
end
|
19
20
|
|
20
21
|
private
|
@@ -39,7 +40,7 @@ module Facter
|
|
39
40
|
|
40
41
|
return '' unless fact_value
|
41
42
|
|
42
|
-
fact_value.
|
43
|
+
fact_value.instance_of?(Hash) ? hash_to_hocon(fact_value) : fact_value
|
43
44
|
end
|
44
45
|
|
45
46
|
def hash_to_hocon(fact_collection)
|
@@ -42,7 +42,7 @@ module Facter
|
|
42
42
|
pretty_json = handle_newlines(pretty_json)
|
43
43
|
|
44
44
|
@log.debug('Remove quotes from value if value is a string')
|
45
|
-
pretty_json.gsub(/^(\S*) =>
|
45
|
+
pretty_json.gsub(/^(\S*) => "(.*)"/, '\1 => \2')
|
46
46
|
end
|
47
47
|
|
48
48
|
def format_for_single_user_query(user_query, resolved_facts)
|
@@ -55,7 +55,7 @@ module Facter
|
|
55
55
|
pretty_json = fact_value.nil? ? '' : hash_to_facter_format(fact_value)
|
56
56
|
|
57
57
|
@log.debug('Remove quotes from value if it is a simple string')
|
58
|
-
pretty_json.gsub(/^"(.*)
|
58
|
+
pretty_json.gsub(/^"(.*)"/, '\1')
|
59
59
|
end
|
60
60
|
|
61
61
|
def hash_to_facter_format(facts_hash)
|
@@ -66,7 +66,7 @@ module Facter
|
|
66
66
|
pretty_json.gsub!(/":\s/, '" => ')
|
67
67
|
|
68
68
|
@log.debug('Remove quotes from parent nodes')
|
69
|
-
pretty_json.gsub!(
|
69
|
+
pretty_json.gsub!(/"(.*)"\ =>/, '\1 =>')
|
70
70
|
|
71
71
|
@log.debug('Remove double backslashes from paths')
|
72
72
|
pretty_json.gsub(/\\\\/, '\\')
|
@@ -95,7 +95,7 @@ module Facter
|
|
95
95
|
# quotation marks that come after \ are not removed
|
96
96
|
@log.debug('Remove unnecessary comma and quotation marks on root facts')
|
97
97
|
output.split("\n")
|
98
|
-
.map! { |line|
|
98
|
+
.map! { |line| /^\s+/.match?(line) ? line : line.gsub(/,$|(?<!\\)"/, '').gsub('\\"', '"') }.join("\n")
|
99
99
|
end
|
100
100
|
end
|
101
101
|
end
|
@@ -107,7 +107,7 @@ module Facter
|
|
107
107
|
@@message_callback.call(:debug, msg)
|
108
108
|
else
|
109
109
|
msg = colorize(msg, CYAN) if Options[:color]
|
110
|
-
@@logger.debug(@class_name
|
110
|
+
@@logger.debug("#{@class_name} - #{msg}")
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
@@ -128,7 +128,7 @@ module Facter
|
|
128
128
|
@@message_callback.call(:info, msg)
|
129
129
|
else
|
130
130
|
msg = colorize(msg, GREEN) if Options[:color]
|
131
|
-
@@logger.info(@class_name
|
131
|
+
@@logger.info("#{@class_name} - #{msg}")
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
@@ -137,7 +137,7 @@ module Facter
|
|
137
137
|
@@message_callback.call(:warn, msg)
|
138
138
|
else
|
139
139
|
msg = colorize(msg, YELLOW) if Options[:color]
|
140
|
-
@@logger.warn(@class_name
|
140
|
+
@@logger.warn("#{@class_name} - #{msg}")
|
141
141
|
end
|
142
142
|
end
|
143
143
|
|
@@ -149,20 +149,20 @@ module Facter
|
|
149
149
|
warn(message_string)
|
150
150
|
end
|
151
151
|
|
152
|
-
def error(msg, colorize = false)
|
152
|
+
def error(msg, colorize = false) # rubocop:disable Style/OptionalBooleanParameter
|
153
153
|
@@has_errors = true
|
154
154
|
|
155
155
|
if @@message_callback && Options[:allow_external_loggers]
|
156
156
|
@@message_callback.call(:error, msg)
|
157
157
|
else
|
158
158
|
msg = colorize(msg, RED) if colorize || Options[:color]
|
159
|
-
@@logger.error(@class_name
|
159
|
+
@@logger.error("#{@class_name} - #{msg}")
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
163
163
|
def log_exception(exception)
|
164
164
|
msg = exception.message
|
165
|
-
msg += "\n
|
165
|
+
msg += "\n#{exception.backtrace.join("\n")}" if Options[:trace]
|
166
166
|
|
167
167
|
error(msg, true)
|
168
168
|
end
|
@@ -3,17 +3,16 @@
|
|
3
3
|
class LoggerHelper
|
4
4
|
class << self
|
5
5
|
def determine_callers_name(sender_self)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
class_name
|
6
|
+
case sender_self
|
7
|
+
when String
|
8
|
+
sender_self
|
9
|
+
when Class
|
10
|
+
sender_self.name
|
11
|
+
when Module
|
12
|
+
sender_self.name
|
13
|
+
else # when class is singleton
|
14
|
+
sender_self.class.name
|
15
|
+
end
|
17
16
|
end
|
18
17
|
end
|
19
18
|
end
|
@@ -47,7 +47,7 @@ module Facter
|
|
47
47
|
|
48
48
|
info = line.split("\s")
|
49
49
|
interface_name = info[0]
|
50
|
-
mac = info[3][/^([0-9a-f]{1,2}[
|
50
|
+
mac = info[3][/^([0-9a-f]{1,2}[.:-]){5}([0-9a-f]{1,2})$/]
|
51
51
|
if interfaces[interface_name]
|
52
52
|
interfaces[interface_name][:mtu] = info[1].to_i
|
53
53
|
interfaces[interface_name][:mac] = format_mac_address(mac) if mac
|
@@ -15,7 +15,7 @@ module Facter
|
|
15
15
|
|
16
16
|
def rpm_system_call(fact_name)
|
17
17
|
output = Facter::Core::Execution.execute(
|
18
|
-
'rpm -q --qf \'
|
18
|
+
'rpm -q --qf \'%<NAME>s\n%<VERSION>s\n%<RELEASE>s\n%<VENDOR>s\' -f /etc/os-release',
|
19
19
|
logger: log
|
20
20
|
)
|
21
21
|
build_fact_list(output)
|
data/lib/facter/resolvers/dmi.rb
CHANGED
@@ -22,6 +22,7 @@ module Facter
|
|
22
22
|
# :product_serial
|
23
23
|
# :product_name
|
24
24
|
# :product_uuid
|
25
|
+
# :product_version
|
25
26
|
|
26
27
|
private
|
27
28
|
|
@@ -32,7 +33,7 @@ module Facter
|
|
32
33
|
def read_facts(fact_name)
|
33
34
|
files = %w[bios_date bios_vendor bios_version board_asset_tag board_vendor board_name
|
34
35
|
board_serial chassis_asset_tag chassis_type sys_vendor product_name
|
35
|
-
product_serial product_uuid]
|
36
|
+
product_serial product_uuid product_version]
|
36
37
|
return unless File.directory?('/sys/class/dmi')
|
37
38
|
|
38
39
|
file_content = Facter::Util::FileHelper.safe_read("/sys/class/dmi/id/#{fact_name}", nil)
|
@@ -15,7 +15,7 @@ module Facter
|
|
15
15
|
|
16
16
|
def read_swap_memory(fact_name)
|
17
17
|
output = Facter::Core::Execution.execute('swapinfo -k', logger: log)
|
18
|
-
data = output.split("\n")[1
|
18
|
+
data = output.split("\n")[1..].map { |line| line.split(/\s+/) }
|
19
19
|
|
20
20
|
unless data.empty?
|
21
21
|
@fact_list[:total_bytes] = kilobytes_to_bytes(data.map { |line| line[1].to_i }.inject(:+))
|
@@ -16,7 +16,7 @@ module Facter
|
|
16
16
|
|
17
17
|
def read_filesystems(fact_name)
|
18
18
|
output = Facter::Core::Execution.execute('mount', logger: log)
|
19
|
-
filesystems = output.scan(/\(([a-z]+)
|
19
|
+
filesystems = output.scan(/\(([a-z]+),*/).flatten
|
20
20
|
@fact_list[:macosx_filesystems] = filesystems.uniq.sort.join(',')
|
21
21
|
@fact_list[fact_name]
|
22
22
|
end
|
@@ -57,7 +57,7 @@ module Facter
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def compute_capacity(used, total)
|
60
|
-
format('%<computed_capacity>.2f', computed_capacity: (used / total.to_f * 100))
|
60
|
+
"#{format('%<computed_capacity>.2f', computed_capacity: (used / total.to_f * 100))}%"
|
61
61
|
end
|
62
62
|
|
63
63
|
def compute_used(total, free)
|
@@ -39,12 +39,12 @@ module Facter
|
|
39
39
|
# convert ip ranges into single ip. eg. 10.16.132.213 --> 10.16.132.213 is converted to 10.16.132.213
|
40
40
|
# convert ip6 ranges into single ip. eg. 2001:db8:cafe::132:213 -->
|
41
41
|
# 2001:db8:cafe::132:213 is converted to 2001:db8:cafe::132:213
|
42
|
-
response.gsub!(/([\da-fA-F]+([
|
42
|
+
response.gsub!(/([\da-fA-F]+([.:]+[\da-fA-F]+)*)\s+-->\s+[\da-fA-F]+([.:]+[\da-fA-F]+)*/, '\\1')
|
43
43
|
end
|
44
44
|
|
45
45
|
def parse_interfaces_response(response)
|
46
46
|
parsed_interfaces_data = {}
|
47
|
-
interfaces_data = Hash[*response.split(/^([A-Za-z0-9_
|
47
|
+
interfaces_data = Hash[*response.split(/^([A-Za-z0-9_.]+): /)[1..]]
|
48
48
|
|
49
49
|
interfaces_data.each do |interface_name, raw_data|
|
50
50
|
parsed_interface_data = {}
|
@@ -66,7 +66,7 @@ module Facter
|
|
66
66
|
|
67
67
|
def extract_mac(raw_data, parsed_interface_data)
|
68
68
|
mac = raw_data.match(/(?:ether|lladdr)\s+((?:\w?\w:){5}\w?\w)|(?:infiniband)\s+((?:\w?\w:){19}\w?\w)/)
|
69
|
-
|
69
|
+
&.captures&.compact&.first
|
70
70
|
parsed_interface_data[:mac] = mac unless mac.nil?
|
71
71
|
end
|
72
72
|
|
@@ -110,7 +110,7 @@ module Facter
|
|
110
110
|
|
111
111
|
def append_linux_to_os_name
|
112
112
|
os_name = @fact_list[:name]
|
113
|
-
@fact_list[:name] = os_name
|
113
|
+
@fact_list[:name] = "#{os_name}Linux" if os_name.downcase.start_with?('virtuozzo')
|
114
114
|
end
|
115
115
|
end
|
116
116
|
end
|
@@ -112,9 +112,9 @@ module Facter
|
|
112
112
|
|
113
113
|
def execute_and_extract_blkid_info
|
114
114
|
stdout = Facter::Core::Execution.execute('blkid', logger: log)
|
115
|
-
output_hash = Hash[*stdout.split(/^([^:]+):/)[1
|
115
|
+
output_hash = Hash[*stdout.split(/^([^:]+):/)[1..]]
|
116
116
|
output_hash.each do |key, value|
|
117
|
-
output_hash[key] = Hash[*value.delete('"').chomp.rstrip.split(/ ([^= ]+)=/)[1
|
117
|
+
output_hash[key] = Hash[*value.delete('"').chomp.rstrip.split(/ ([^= ]+)=/)[1..]]
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
@@ -26,7 +26,7 @@ module Facter
|
|
26
26
|
|
27
27
|
@fact_list[:major] = major
|
28
28
|
@fact_list[:minor] = minor
|
29
|
-
@fact_list[:full] = major == '10' ? major
|
29
|
+
@fact_list[:full] = major == '10' ? "#{major}_u#{minor}" : "#{major}.#{minor}"
|
30
30
|
break
|
31
31
|
end
|
32
32
|
@fact_list[fact_name]
|
@@ -36,7 +36,7 @@ module Facter
|
|
36
36
|
result = text.match(regex_pattern)
|
37
37
|
major, minor = result.captures if result
|
38
38
|
minor = regex_pattern == /Solaris (\d+)/ ? '0' : minor
|
39
|
-
|
39
|
+
[major, minor] if major && minor
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -30,7 +30,8 @@ module Facter
|
|
30
30
|
xen_info = xen_info.to_s
|
31
31
|
return 'xenu' if /xen-domu/.match?(xen_info)
|
32
32
|
return 'xenhvm' if /xen-hvm/.match?(xen_info)
|
33
|
-
|
33
|
+
|
34
|
+
'xen0' if /xen-dom0/.match?(xen_info)
|
34
35
|
end
|
35
36
|
|
36
37
|
def determine_other(output)
|
@@ -58,8 +58,9 @@ module Facter
|
|
58
58
|
@fact_list[:total_bytes] = result[:total_bytes]
|
59
59
|
@fact_list[:available_bytes] = result[:available_bytes]
|
60
60
|
@fact_list[:used_bytes] = result[:used_bytes]
|
61
|
-
@fact_list[:capacity] = format(
|
62
|
-
|
61
|
+
@fact_list[:capacity] = format(
|
62
|
+
'%<capacity>.2f%%', capacity: (result[:used_bytes] / result[:total_bytes].to_f * 100)
|
63
|
+
)
|
63
64
|
end
|
64
65
|
end
|
65
66
|
end
|
@@ -23,19 +23,19 @@ module Facter
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def build_fact_list(reg)
|
26
|
-
reg.each do |name,
|
26
|
+
reg.each do |name, _type, value|
|
27
27
|
case name
|
28
28
|
when 'EditionID'
|
29
|
-
@fact_list[:edition_id] =
|
29
|
+
@fact_list[:edition_id] = value
|
30
30
|
when 'InstallationType'
|
31
|
-
@fact_list[:installation_type] =
|
31
|
+
@fact_list[:installation_type] = value
|
32
32
|
when 'ProductName'
|
33
|
-
@fact_list[:product_name] =
|
33
|
+
@fact_list[:product_name] = value
|
34
34
|
when 'DisplayVersion'
|
35
|
-
@fact_list[:release_id] =
|
36
|
-
@fact_list[:display_version] =
|
35
|
+
@fact_list[:release_id] = value
|
36
|
+
@fact_list[:display_version] = value
|
37
37
|
when 'ReleaseId'
|
38
|
-
@fact_list[:release_id] =
|
38
|
+
@fact_list[:release_id] = value unless @fact_list[:release_id]
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
@@ -34,9 +34,9 @@ module Facter
|
|
34
34
|
|
35
35
|
options.split(',').each do |option|
|
36
36
|
if option.start_with?('-')
|
37
|
-
exclude << option[1
|
37
|
+
exclude << option[1..].to_sym
|
38
38
|
elsif option.start_with?('+')
|
39
|
-
print_caller << option[1
|
39
|
+
print_caller << option[1..].to_sym
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -7,11 +7,10 @@ module Facter
|
|
7
7
|
module VirtualDetector
|
8
8
|
class << self
|
9
9
|
def platform
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
@@fact_value
|
10
|
+
@fact_value ||= # rubocop:disable Naming/MemoizedInstanceVariableName
|
11
|
+
check_docker_lxc || check_freebsd || check_gce || check_illumos_lx || \
|
12
|
+
retrieve_from_virt_what || check_vmware || check_open_vz || check_vserver || \
|
13
|
+
check_xen || check_other_facts || check_lspci || 'physical'
|
15
14
|
end
|
16
15
|
|
17
16
|
private
|
@@ -25,6 +24,10 @@ module Facter
|
|
25
24
|
'gce' if bios_vendor&.include?('Google')
|
26
25
|
end
|
27
26
|
|
27
|
+
def check_illumos_lx
|
28
|
+
'illumos-lx' if Facter::Resolvers::Uname.resolve(:kernelversion) == 'BrandZ virtual linux'
|
29
|
+
end
|
30
|
+
|
28
31
|
def check_vmware
|
29
32
|
Facter::Resolvers::Vmware.resolve(:vm)
|
30
33
|
end
|
@@ -19,12 +19,12 @@ module Facter
|
|
19
19
|
|
20
20
|
validated_speed, metric_prefix = determine_metric_prefix(speed)
|
21
21
|
|
22
|
-
format('%<displayed_speed>.2f', displayed_speed: validated_speed.round(2))
|
22
|
+
"#{format('%<displayed_speed>.2f', displayed_speed: validated_speed.round(2))} #{metric_prefix}Hz"
|
23
23
|
end
|
24
24
|
|
25
25
|
def bytes_to_human_readable(bytes)
|
26
26
|
return unless bytes
|
27
|
-
return bytes
|
27
|
+
return "#{bytes} bytes" if bytes < 1024
|
28
28
|
|
29
29
|
number, multiple = determine_exponent(bytes)
|
30
30
|
|
@@ -23,12 +23,12 @@ module Facter
|
|
23
23
|
private
|
24
24
|
|
25
25
|
def output_to_hash(output)
|
26
|
-
output.scan(/.*:
|
26
|
+
output.scan(/.*: .*$/).map { |e| e.strip.match(/(.*?): (.*)/).captures }.to_h
|
27
27
|
end
|
28
28
|
|
29
29
|
def normalize_keys(system_profiler_hash)
|
30
|
-
system_profiler_hash.
|
31
|
-
|
30
|
+
system_profiler_hash.transform_keys do |k|
|
31
|
+
k.downcase.tr(' ', '_').delete("\(\)").to_sym
|
32
32
|
end.to_h
|
33
33
|
end
|
34
34
|
end
|
@@ -54,7 +54,8 @@ module Facter
|
|
54
54
|
'site'
|
55
55
|
elsif addrinfo.ipv6_loopback?
|
56
56
|
'host'
|
57
|
-
else
|
57
|
+
else
|
58
|
+
'global'
|
58
59
|
end
|
59
60
|
scope6.join
|
60
61
|
end
|
@@ -102,7 +103,7 @@ module Facter
|
|
102
103
|
def expand_interfaces(interfaces)
|
103
104
|
interfaces.each_value do |values|
|
104
105
|
expand_binding(values, values[:bindings]) if values[:bindings]
|
105
|
-
expand_binding(values, values[:bindings6], false) if values[:bindings6]
|
106
|
+
expand_binding(values, values[:bindings6], ipv4_type: false) if values[:bindings6]
|
106
107
|
end
|
107
108
|
end
|
108
109
|
|
@@ -112,7 +113,7 @@ module Facter
|
|
112
113
|
end
|
113
114
|
end
|
114
115
|
|
115
|
-
def expand_binding(values, bindings, ipv4_type
|
116
|
+
def expand_binding(values, bindings, ipv4_type: true)
|
116
117
|
binding = find_valid_binding(bindings)
|
117
118
|
ip_protocol_type = ipv4_type ? '' : '6'
|
118
119
|
|
data/lib/facter/util/utils.rb
CHANGED
@@ -3,10 +3,10 @@
|
|
3
3
|
module Facter
|
4
4
|
module Utils
|
5
5
|
# Sort nested hash.
|
6
|
-
def self.sort_hash_by_key(hash, recursive
|
6
|
+
def self.sort_hash_by_key(hash, recursive: true, &block)
|
7
7
|
hash.keys.sort(&block).each_with_object(hash.class.new) do |key, seed|
|
8
8
|
seed[key] = hash[key]
|
9
|
-
seed[key] = sort_hash_by_key(seed[key], true, &block) if recursive && seed[key].is_a?(Hash)
|
9
|
+
seed[key] = sort_hash_by_key(seed[key], recursive: true, &block) if recursive && seed[key].is_a?(Hash)
|
10
10
|
|
11
11
|
seed
|
12
12
|
end
|
data/lib/facter/version.rb
CHANGED
data/lib/facter.rb
CHANGED