facter 4.0.28 → 4.0.29
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/.rubocop_todo.yml +2 -0
- data/CHANGELOG.md +12 -0
- data/README.md +5 -5
- data/VERSION +1 -1
- data/lib/facts/aix/interfaces.rb +16 -0
- data/lib/facts/aix/ipaddress6_interfaces.rb +20 -0
- data/lib/facts/aix/ipaddress_interfaces.rb +20 -0
- data/lib/facts/aix/macaddress_interfaces.rb +20 -0
- data/lib/facts/aix/mtu_interfaces.rb +20 -0
- data/lib/facts/aix/netmask6_interfaces.rb +20 -0
- data/lib/facts/aix/netmask_interfaces.rb +20 -0
- data/lib/facts/aix/network6_interfaces.rb +20 -0
- data/lib/facts/aix/network_interfaces.rb +20 -0
- data/lib/facts/aix/networking/interfaces.rb +18 -0
- data/lib/facts/aix/networking/ip6.rb +18 -0
- data/lib/facts/aix/networking/mac.rb +18 -0
- data/lib/facts/aix/networking/mtu.rb +17 -0
- data/lib/facts/aix/networking/netmask.rb +18 -0
- data/lib/facts/aix/networking/netmask6.rb +18 -0
- data/lib/facts/aix/networking/network.rb +18 -0
- data/lib/facts/aix/networking/network6.rb +18 -0
- data/lib/facts/aix/networking/primary.rb +1 -1
- data/lib/facts/aix/networking/scope6.rb +17 -0
- data/lib/facts/aix/processor.rb +20 -0
- data/lib/facts/aix/scope6_interfaces.rb +25 -0
- data/lib/facts/linux/dhcp_servers.rb +2 -2
- data/lib/facts/linux/networking/dhcp.rb +1 -4
- data/lib/facts/linux/networking/domain.rb +1 -0
- data/lib/facts/linux/networking/fqdn.rb +1 -0
- data/lib/facts/linux/networking/hostname.rb +1 -0
- data/lib/facts/linux/networking/interfaces.rb +1 -0
- data/lib/facts/linux/networking/ip.rb +1 -4
- data/lib/facts/linux/networking/ip6.rb +1 -4
- data/lib/facts/linux/networking/mac.rb +1 -4
- data/lib/facts/linux/networking/mtu.rb +1 -4
- data/lib/facts/linux/networking/netmask.rb +1 -4
- data/lib/facts/linux/networking/netmask6.rb +1 -4
- data/lib/facts/linux/networking/network.rb +1 -4
- data/lib/facts/linux/networking/network6.rb +1 -4
- data/lib/facts/linux/networking/scope6.rb +1 -4
- data/lib/facts/linux/scope6_interfaces.rb +6 -8
- data/lib/facts/macosx/is_virtual.rb +3 -3
- data/lib/facts/macosx/networking/domain.rb +1 -0
- data/lib/facts/macosx/networking/fqdn.rb +1 -0
- data/lib/facts/macosx/networking/hostname.rb +1 -0
- data/lib/facts/macosx/networking/interfaces.rb +0 -4
- data/lib/facts/macosx/networking/ip.rb +1 -4
- data/lib/facts/macosx/networking/ip6.rb +1 -4
- data/lib/facts/macosx/networking/mac.rb +1 -4
- data/lib/facts/macosx/networking/mtu.rb +1 -4
- data/lib/facts/macosx/networking/netmask.rb +1 -4
- data/lib/facts/macosx/networking/netmask6.rb +1 -4
- data/lib/facts/macosx/networking/network.rb +1 -4
- data/lib/facts/macosx/networking/network6.rb +1 -4
- data/lib/facts/macosx/networking/scope6.rb +1 -4
- data/lib/facts/macosx/system_profiler/boot_mode.rb +1 -1
- data/lib/facts/macosx/system_profiler/boot_rom_version.rb +1 -1
- data/lib/facts/macosx/system_profiler/boot_volume.rb +1 -1
- data/lib/facts/macosx/system_profiler/computer_name.rb +1 -1
- data/lib/facts/macosx/system_profiler/cores.rb +1 -1
- data/lib/facts/macosx/system_profiler/hardware_uuid.rb +1 -1
- data/lib/facts/macosx/system_profiler/kernel_version.rb +1 -1
- data/lib/facts/macosx/system_profiler/l2_cache_per_core.rb +1 -1
- data/lib/facts/macosx/system_profiler/l3_cache.rb +1 -1
- data/lib/facts/macosx/system_profiler/memory.rb +1 -1
- data/lib/facts/macosx/system_profiler/model_identifier.rb +1 -1
- data/lib/facts/macosx/system_profiler/model_name.rb +1 -1
- data/lib/facts/macosx/system_profiler/processor_name.rb +1 -1
- data/lib/facts/macosx/system_profiler/processor_speed.rb +1 -1
- data/lib/facts/macosx/system_profiler/processors.rb +1 -1
- data/lib/facts/macosx/system_profiler/secure_virtual_memory.rb +1 -1
- data/lib/facts/macosx/system_profiler/serial_number.rb +1 -1
- data/lib/facts/macosx/system_profiler/smc_version.rb +1 -1
- data/lib/facts/macosx/system_profiler/system_version.rb +1 -1
- data/lib/facts/macosx/system_profiler/uptime.rb +1 -1
- data/lib/facts/macosx/system_profiler/username.rb +1 -1
- data/lib/facts/macosx/virtual.rb +32 -0
- data/lib/resolvers/aix/networking_resolver.rb +47 -5
- data/lib/resolvers/macosx/{networking.rb → networking_resolver.rb} +30 -32
- data/lib/resolvers/macosx/system_profiler_resolver.rb +37 -53
- data/lib/resolvers/macosx/utils/system_profile_executor.rb +38 -0
- data/lib/resolvers/networking_linux_resolver.rb +1 -2
- data/lib/resolvers/os_release_resolver.rb +5 -0
- data/lib/resolvers/utils/networking.rb +19 -5
- data/lib/resolvers/windows/ffi/network_utils.rb +0 -27
- data/lib/resolvers/windows/networking_resolver.rb +7 -50
- metadata +25 -3
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Facter
|
|
4
|
+
module Resolvers
|
|
5
|
+
module Macosx
|
|
6
|
+
class SystemProfileExecutor
|
|
7
|
+
@log = Log.new(self)
|
|
8
|
+
|
|
9
|
+
class << self
|
|
10
|
+
def execute(category_name)
|
|
11
|
+
@log.debug "Executing command: system_profiler #{category_name}"
|
|
12
|
+
output = Facter::Core::Execution.execute(
|
|
13
|
+
"system_profiler #{category_name}", logger: @log
|
|
14
|
+
)&.force_encoding('UTF-8')
|
|
15
|
+
|
|
16
|
+
return unless output
|
|
17
|
+
|
|
18
|
+
system_profiler_hash = output_to_hash(output)
|
|
19
|
+
|
|
20
|
+
normalize_keys(system_profiler_hash)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def output_to_hash(output)
|
|
26
|
+
output.scan(/.*:[ ].*$/).map { |e| e.strip.match(/(.*?): (.*)/).captures }.to_h
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def normalize_keys(system_profiler_hash)
|
|
30
|
+
system_profiler_hash.map do |k, v|
|
|
31
|
+
[k.downcase.tr(' ', '_').delete("\(\)").to_sym, v]
|
|
32
|
+
end.to_h
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -22,6 +22,7 @@ module Facter
|
|
|
22
22
|
retrieve_interface_info
|
|
23
23
|
retrieve_interfaces_mac_and_mtu
|
|
24
24
|
retrieve_default_interface
|
|
25
|
+
::Resolvers::Utils::Networking.expand_main_bindings(@fact_list)
|
|
25
26
|
@fact_list[fact_name]
|
|
26
27
|
end
|
|
27
28
|
|
|
@@ -46,8 +47,6 @@ module Facter
|
|
|
46
47
|
find_dhcp!(ip_tokens, interfaces)
|
|
47
48
|
end
|
|
48
49
|
|
|
49
|
-
::Resolvers::Utils::Networking.expand_main_bindings(interfaces)
|
|
50
|
-
|
|
51
50
|
@fact_list[:interfaces] = interfaces
|
|
52
51
|
end
|
|
53
52
|
|
|
@@ -37,6 +37,7 @@ module Facter
|
|
|
37
37
|
fill_fact_list(pairs)
|
|
38
38
|
process_name
|
|
39
39
|
pad_version_id
|
|
40
|
+
normalize_opensuse_identifier
|
|
40
41
|
|
|
41
42
|
@fact_list[fact_name]
|
|
42
43
|
end
|
|
@@ -61,6 +62,10 @@ module Facter
|
|
|
61
62
|
@fact_list[:name].split(' ')[0].strip
|
|
62
63
|
end
|
|
63
64
|
end
|
|
65
|
+
|
|
66
|
+
def normalize_opensuse_identifier
|
|
67
|
+
@fact_list[:identifier] = 'opensuse' if @fact_list[:identifier] =~ /opensuse/i
|
|
68
|
+
end
|
|
64
69
|
end
|
|
65
70
|
end
|
|
66
71
|
end
|
|
@@ -17,11 +17,12 @@ module Resolvers
|
|
|
17
17
|
{ address: addr, netmask: mask.to_s, network: ip.mask(mask_length).to_s }
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def expand_main_bindings(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
def expand_main_bindings(networking_facts)
|
|
21
|
+
primary = networking_facts[:primary_interface]
|
|
22
|
+
interfaces = networking_facts[:interfaces]
|
|
23
|
+
|
|
24
|
+
expand_interfaces(interfaces) unless interfaces.nil?
|
|
25
|
+
expand_primary_interface(networking_facts, primary) unless primary.nil? || interfaces.nil?
|
|
25
26
|
end
|
|
26
27
|
|
|
27
28
|
def get_scope(ip)
|
|
@@ -55,6 +56,19 @@ module Resolvers
|
|
|
55
56
|
|
|
56
57
|
private
|
|
57
58
|
|
|
59
|
+
def expand_interfaces(interfaces)
|
|
60
|
+
interfaces.each_value do |values|
|
|
61
|
+
expand_binding(values, values[:bindings]) if values[:bindings]
|
|
62
|
+
expand_binding(values, values[:bindings6], false) if values[:bindings6]
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def expand_primary_interface(networking_facts, primary)
|
|
67
|
+
networking_facts[:interfaces][primary].each do |key, value|
|
|
68
|
+
networking_facts[key] = value unless %i[bindings bindings6].include?(key)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
58
72
|
def expand_binding(values, bindings, ipv4_type = true)
|
|
59
73
|
binding = find_valid_binding(bindings)
|
|
60
74
|
ip_protocol_type = ipv4_type ? '' : '6'
|
|
@@ -34,32 +34,5 @@ class NetworkUtils
|
|
|
34
34
|
.map { |e| format('%<mac_address>02x', mac_address: e.to_i) }
|
|
35
35
|
.join(':').upcase
|
|
36
36
|
end
|
|
37
|
-
|
|
38
|
-
def build_binding(addr, mask_length)
|
|
39
|
-
ip = IPAddr.new(addr)
|
|
40
|
-
mask = if ip.ipv6?
|
|
41
|
-
IPAddr.new('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff').mask(mask_length)
|
|
42
|
-
else
|
|
43
|
-
IPAddr.new('255.255.255.255').mask(mask_length)
|
|
44
|
-
end
|
|
45
|
-
{ address: addr, netmask: mask.to_s, network: ip.mask(mask_length).to_s }
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def get_scope(sockaddr)
|
|
49
|
-
require 'socket'
|
|
50
|
-
scope6 = []
|
|
51
|
-
addrinfo = Addrinfo.new(['AF_INET6', 0, nil, sockaddr], :INET6)
|
|
52
|
-
|
|
53
|
-
scope6 << 'compat,' if addrinfo.ipv6_v4compat?
|
|
54
|
-
scope6 << if addrinfo.ipv6_linklocal?
|
|
55
|
-
'link'
|
|
56
|
-
elsif addrinfo.ipv6_sitelocal?
|
|
57
|
-
'site'
|
|
58
|
-
elsif addrinfo.ipv6_loopback?
|
|
59
|
-
'host'
|
|
60
|
-
else 'global'
|
|
61
|
-
end
|
|
62
|
-
scope6.join
|
|
63
|
-
end
|
|
64
37
|
end
|
|
65
38
|
end
|
|
@@ -26,8 +26,9 @@ module Facter
|
|
|
26
26
|
return unless (adapter_addresses = get_adapter_addresses(size_ptr, adapter_addresses, flags))
|
|
27
27
|
|
|
28
28
|
iterate_list(adapter_addresses)
|
|
29
|
-
|
|
30
|
-
@fact_list
|
|
29
|
+
|
|
30
|
+
::Resolvers::Utils::Networking.expand_main_bindings(@fact_list)
|
|
31
|
+
|
|
31
32
|
@fact_list[fact_name]
|
|
32
33
|
end
|
|
33
34
|
|
|
@@ -70,7 +71,7 @@ module Facter
|
|
|
70
71
|
next
|
|
71
72
|
end
|
|
72
73
|
@fact_list[:domain] ||= adapter_address[:DnsSuffix].read_wide_string_without_length
|
|
73
|
-
name = adapter_address[:FriendlyName].read_wide_string_without_length
|
|
74
|
+
name = adapter_address[:FriendlyName].read_wide_string_without_length
|
|
74
75
|
net_interface[name] = build_interface_info(adapter_address, name)
|
|
75
76
|
end
|
|
76
77
|
|
|
@@ -120,58 +121,14 @@ module Facter
|
|
|
120
121
|
def find_bindings(sock_addr, unicast, addr)
|
|
121
122
|
return unless [NetworkingFFI::AF_INET, NetworkingFFI::AF_INET6].include?(sock_addr[:sa_family])
|
|
122
123
|
|
|
123
|
-
|
|
124
|
+
::Resolvers::Utils::Networking.build_binding(addr, unicast[:OnLinkPrefixLength])
|
|
124
125
|
end
|
|
125
126
|
|
|
126
127
|
def find_primary_interface(sock_addr, name, addr)
|
|
127
128
|
if !@fact_list[:primary_interface] &&
|
|
128
129
|
([NetworkingFFI::AF_INET, NetworkingFFI::AF_INET6].include?(sock_addr[:sa_family]) &&
|
|
129
|
-
|
|
130
|
-
@fact_list[:primary_interface] = name
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def set_interfaces_other_facts
|
|
135
|
-
@fact_list[:interfaces].each do |interface_name, value|
|
|
136
|
-
if value[:bindings]
|
|
137
|
-
binding = find_valid_binding(value[:bindings])
|
|
138
|
-
populate_interface(binding, value)
|
|
139
|
-
end
|
|
140
|
-
if value[:bindings6]
|
|
141
|
-
binding = find_valid_binding(value[:bindings6])
|
|
142
|
-
populate_interface(binding, value, true)
|
|
143
|
-
end
|
|
144
|
-
set_networking_other_facts(value, interface_name)
|
|
145
|
-
end
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
def find_valid_binding(bindings)
|
|
149
|
-
bindings.each do |binding|
|
|
150
|
-
return binding unless NetworkUtils.ignored_ip_address(binding[:address])
|
|
151
|
-
end
|
|
152
|
-
bindings.empty? ? nil : bindings.first
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
def populate_interface(bind, interface, ipv6 = false)
|
|
156
|
-
return if !bind || bind.empty?
|
|
157
|
-
|
|
158
|
-
if ipv6
|
|
159
|
-
interface[:ip6] = bind[:address]
|
|
160
|
-
interface[:netmask6] = bind[:netmask]
|
|
161
|
-
interface[:network6] = bind[:network]
|
|
162
|
-
interface[:scope6] = NetworkUtils.get_scope(bind[:address])
|
|
163
|
-
else
|
|
164
|
-
interface[:network] = bind[:network]
|
|
165
|
-
interface[:netmask] = bind[:netmask]
|
|
166
|
-
interface[:ip] = bind[:address]
|
|
167
|
-
end
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
def set_networking_other_facts(value, interface_name)
|
|
171
|
-
return unless @fact_list[:primary_interface] == interface_name
|
|
172
|
-
|
|
173
|
-
%i[mtu dhcp mac ip ip6 scope6 netmask netmask6 network network6].each do |key|
|
|
174
|
-
@fact_list[key] = value[key]
|
|
130
|
+
!::Resolvers::Utils::Networking.ignored_ip_address(addr))
|
|
131
|
+
@fact_list[:primary_interface] = name.to_s
|
|
175
132
|
end
|
|
176
133
|
end
|
|
177
134
|
end
|
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.29
|
|
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-07-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -383,17 +383,35 @@ files:
|
|
|
383
383
|
- lib/facts/aix/identity/privileged.rb
|
|
384
384
|
- lib/facts/aix/identity/uid.rb
|
|
385
385
|
- lib/facts/aix/identity/user.rb
|
|
386
|
+
- lib/facts/aix/interfaces.rb
|
|
387
|
+
- lib/facts/aix/ipaddress6_interfaces.rb
|
|
388
|
+
- lib/facts/aix/ipaddress_interfaces.rb
|
|
386
389
|
- lib/facts/aix/kernel.rb
|
|
387
390
|
- lib/facts/aix/kernelmajversion.rb
|
|
388
391
|
- lib/facts/aix/kernelrelease.rb
|
|
389
392
|
- lib/facts/aix/kernelversion.rb
|
|
390
393
|
- lib/facts/aix/load_averages.rb
|
|
394
|
+
- lib/facts/aix/macaddress_interfaces.rb
|
|
391
395
|
- lib/facts/aix/mountpoints.rb
|
|
396
|
+
- lib/facts/aix/mtu_interfaces.rb
|
|
397
|
+
- lib/facts/aix/netmask6_interfaces.rb
|
|
398
|
+
- lib/facts/aix/netmask_interfaces.rb
|
|
399
|
+
- lib/facts/aix/network6_interfaces.rb
|
|
400
|
+
- lib/facts/aix/network_interfaces.rb
|
|
392
401
|
- lib/facts/aix/networking/domain.rb
|
|
393
402
|
- lib/facts/aix/networking/fqdn.rb
|
|
394
403
|
- lib/facts/aix/networking/hostname.rb
|
|
404
|
+
- lib/facts/aix/networking/interfaces.rb
|
|
395
405
|
- lib/facts/aix/networking/ip.rb
|
|
406
|
+
- lib/facts/aix/networking/ip6.rb
|
|
407
|
+
- lib/facts/aix/networking/mac.rb
|
|
408
|
+
- lib/facts/aix/networking/mtu.rb
|
|
409
|
+
- lib/facts/aix/networking/netmask.rb
|
|
410
|
+
- lib/facts/aix/networking/netmask6.rb
|
|
411
|
+
- lib/facts/aix/networking/network.rb
|
|
412
|
+
- lib/facts/aix/networking/network6.rb
|
|
396
413
|
- lib/facts/aix/networking/primary.rb
|
|
414
|
+
- lib/facts/aix/networking/scope6.rb
|
|
397
415
|
- lib/facts/aix/nim_type.rb
|
|
398
416
|
- lib/facts/aix/os/architecture.rb
|
|
399
417
|
- lib/facts/aix/os/family.rb
|
|
@@ -402,6 +420,7 @@ files:
|
|
|
402
420
|
- lib/facts/aix/os/release.rb
|
|
403
421
|
- lib/facts/aix/partitions.rb
|
|
404
422
|
- lib/facts/aix/path.rb
|
|
423
|
+
- lib/facts/aix/processor.rb
|
|
405
424
|
- lib/facts/aix/processors/count.rb
|
|
406
425
|
- lib/facts/aix/processors/isa.rb
|
|
407
426
|
- lib/facts/aix/processors/models.rb
|
|
@@ -410,6 +429,7 @@ files:
|
|
|
410
429
|
- lib/facts/aix/ruby/platform.rb
|
|
411
430
|
- lib/facts/aix/ruby/sitedir.rb
|
|
412
431
|
- lib/facts/aix/ruby/version.rb
|
|
432
|
+
- lib/facts/aix/scope6_interfaces.rb
|
|
413
433
|
- lib/facts/aix/ssh.rb
|
|
414
434
|
- lib/facts/aix/system_uptime/days.rb
|
|
415
435
|
- lib/facts/aix/system_uptime/hours.rb
|
|
@@ -644,6 +664,7 @@ files:
|
|
|
644
664
|
- lib/facts/macosx/system_uptime/seconds.rb
|
|
645
665
|
- lib/facts/macosx/system_uptime/uptime.rb
|
|
646
666
|
- lib/facts/macosx/timezone.rb
|
|
667
|
+
- lib/facts/macosx/virtual.rb
|
|
647
668
|
- lib/facts/rhel/os/distro/codename.rb
|
|
648
669
|
- lib/facts/rhel/os/distro/description.rb
|
|
649
670
|
- lib/facts/rhel/os/distro/id.rb
|
|
@@ -869,11 +890,12 @@ files:
|
|
|
869
890
|
- lib/resolvers/macosx/filesystems_resolver.rb
|
|
870
891
|
- lib/resolvers/macosx/load_averages_resolver.rb
|
|
871
892
|
- lib/resolvers/macosx/mountpoints_resolver.rb
|
|
872
|
-
- lib/resolvers/macosx/
|
|
893
|
+
- lib/resolvers/macosx/networking_resolver.rb
|
|
873
894
|
- lib/resolvers/macosx/processor_resolver.rb
|
|
874
895
|
- lib/resolvers/macosx/swap_memory_resolver.rb
|
|
875
896
|
- lib/resolvers/macosx/system_memory_resolver.rb
|
|
876
897
|
- lib/resolvers/macosx/system_profiler_resolver.rb
|
|
898
|
+
- lib/resolvers/macosx/utils/system_profile_executor.rb
|
|
877
899
|
- lib/resolvers/memory_resolver.rb
|
|
878
900
|
- lib/resolvers/mountpoints_resolver.rb
|
|
879
901
|
- lib/resolvers/networking_linux_resolver.rb
|