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.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +2 -0
  3. data/CHANGELOG.md +12 -0
  4. data/README.md +5 -5
  5. data/VERSION +1 -1
  6. data/lib/facts/aix/interfaces.rb +16 -0
  7. data/lib/facts/aix/ipaddress6_interfaces.rb +20 -0
  8. data/lib/facts/aix/ipaddress_interfaces.rb +20 -0
  9. data/lib/facts/aix/macaddress_interfaces.rb +20 -0
  10. data/lib/facts/aix/mtu_interfaces.rb +20 -0
  11. data/lib/facts/aix/netmask6_interfaces.rb +20 -0
  12. data/lib/facts/aix/netmask_interfaces.rb +20 -0
  13. data/lib/facts/aix/network6_interfaces.rb +20 -0
  14. data/lib/facts/aix/network_interfaces.rb +20 -0
  15. data/lib/facts/aix/networking/interfaces.rb +18 -0
  16. data/lib/facts/aix/networking/ip6.rb +18 -0
  17. data/lib/facts/aix/networking/mac.rb +18 -0
  18. data/lib/facts/aix/networking/mtu.rb +17 -0
  19. data/lib/facts/aix/networking/netmask.rb +18 -0
  20. data/lib/facts/aix/networking/netmask6.rb +18 -0
  21. data/lib/facts/aix/networking/network.rb +18 -0
  22. data/lib/facts/aix/networking/network6.rb +18 -0
  23. data/lib/facts/aix/networking/primary.rb +1 -1
  24. data/lib/facts/aix/networking/scope6.rb +17 -0
  25. data/lib/facts/aix/processor.rb +20 -0
  26. data/lib/facts/aix/scope6_interfaces.rb +25 -0
  27. data/lib/facts/linux/dhcp_servers.rb +2 -2
  28. data/lib/facts/linux/networking/dhcp.rb +1 -4
  29. data/lib/facts/linux/networking/domain.rb +1 -0
  30. data/lib/facts/linux/networking/fqdn.rb +1 -0
  31. data/lib/facts/linux/networking/hostname.rb +1 -0
  32. data/lib/facts/linux/networking/interfaces.rb +1 -0
  33. data/lib/facts/linux/networking/ip.rb +1 -4
  34. data/lib/facts/linux/networking/ip6.rb +1 -4
  35. data/lib/facts/linux/networking/mac.rb +1 -4
  36. data/lib/facts/linux/networking/mtu.rb +1 -4
  37. data/lib/facts/linux/networking/netmask.rb +1 -4
  38. data/lib/facts/linux/networking/netmask6.rb +1 -4
  39. data/lib/facts/linux/networking/network.rb +1 -4
  40. data/lib/facts/linux/networking/network6.rb +1 -4
  41. data/lib/facts/linux/networking/scope6.rb +1 -4
  42. data/lib/facts/linux/scope6_interfaces.rb +6 -8
  43. data/lib/facts/macosx/is_virtual.rb +3 -3
  44. data/lib/facts/macosx/networking/domain.rb +1 -0
  45. data/lib/facts/macosx/networking/fqdn.rb +1 -0
  46. data/lib/facts/macosx/networking/hostname.rb +1 -0
  47. data/lib/facts/macosx/networking/interfaces.rb +0 -4
  48. data/lib/facts/macosx/networking/ip.rb +1 -4
  49. data/lib/facts/macosx/networking/ip6.rb +1 -4
  50. data/lib/facts/macosx/networking/mac.rb +1 -4
  51. data/lib/facts/macosx/networking/mtu.rb +1 -4
  52. data/lib/facts/macosx/networking/netmask.rb +1 -4
  53. data/lib/facts/macosx/networking/netmask6.rb +1 -4
  54. data/lib/facts/macosx/networking/network.rb +1 -4
  55. data/lib/facts/macosx/networking/network6.rb +1 -4
  56. data/lib/facts/macosx/networking/scope6.rb +1 -4
  57. data/lib/facts/macosx/system_profiler/boot_mode.rb +1 -1
  58. data/lib/facts/macosx/system_profiler/boot_rom_version.rb +1 -1
  59. data/lib/facts/macosx/system_profiler/boot_volume.rb +1 -1
  60. data/lib/facts/macosx/system_profiler/computer_name.rb +1 -1
  61. data/lib/facts/macosx/system_profiler/cores.rb +1 -1
  62. data/lib/facts/macosx/system_profiler/hardware_uuid.rb +1 -1
  63. data/lib/facts/macosx/system_profiler/kernel_version.rb +1 -1
  64. data/lib/facts/macosx/system_profiler/l2_cache_per_core.rb +1 -1
  65. data/lib/facts/macosx/system_profiler/l3_cache.rb +1 -1
  66. data/lib/facts/macosx/system_profiler/memory.rb +1 -1
  67. data/lib/facts/macosx/system_profiler/model_identifier.rb +1 -1
  68. data/lib/facts/macosx/system_profiler/model_name.rb +1 -1
  69. data/lib/facts/macosx/system_profiler/processor_name.rb +1 -1
  70. data/lib/facts/macosx/system_profiler/processor_speed.rb +1 -1
  71. data/lib/facts/macosx/system_profiler/processors.rb +1 -1
  72. data/lib/facts/macosx/system_profiler/secure_virtual_memory.rb +1 -1
  73. data/lib/facts/macosx/system_profiler/serial_number.rb +1 -1
  74. data/lib/facts/macosx/system_profiler/smc_version.rb +1 -1
  75. data/lib/facts/macosx/system_profiler/system_version.rb +1 -1
  76. data/lib/facts/macosx/system_profiler/uptime.rb +1 -1
  77. data/lib/facts/macosx/system_profiler/username.rb +1 -1
  78. data/lib/facts/macosx/virtual.rb +32 -0
  79. data/lib/resolvers/aix/networking_resolver.rb +47 -5
  80. data/lib/resolvers/macosx/{networking.rb → networking_resolver.rb} +30 -32
  81. data/lib/resolvers/macosx/system_profiler_resolver.rb +37 -53
  82. data/lib/resolvers/macosx/utils/system_profile_executor.rb +38 -0
  83. data/lib/resolvers/networking_linux_resolver.rb +1 -2
  84. data/lib/resolvers/os_release_resolver.rb +5 -0
  85. data/lib/resolvers/utils/networking.rb +19 -5
  86. data/lib/resolvers/windows/ffi/network_utils.rb +0 -27
  87. data/lib/resolvers/windows/networking_resolver.rb +7 -50
  88. metadata +25 -3
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_hardware_uuid'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:hardware_uuid)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:hardware_uuid)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_kernel_version'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:kernel_version)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:kernel_version)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_l2_cache_per_core'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:l2_cache_per_core)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:l2_cache_per_core)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_l3_cache'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:l3_cache)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:l3_cache)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_memory'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:memory)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:memory)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_machine_model'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:model_identifier)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:model_identifier)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_machine_name'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:model_name)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:model_name)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_processor_name'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:processor_name)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:processor_name)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_current_processor_speed'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:processor_speed)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:processor_speed)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_cpu_type'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:number_of_processors)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:number_of_processors)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_secure_vm'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:secure_virtual_memory)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:secure_virtual_memory)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_serial_number'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:serial_number_system)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:serial_number_system)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_smc_version_system'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:smc_version_system)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:smc_version_system)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_os_version'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:system_version)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:system_version)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_uptime'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:time_since_boot)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:time_since_boot)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'sp_user_name'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::SystemProfiler.resolve(:user_name)
11
+ fact_value = Facter::Resolvers::Macosx::SystemProfiler.resolve(:user_name)
12
12
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
13
  end
14
14
  end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Macosx
5
+ class Virtual
6
+ FACT_NAME = 'virtual'
7
+
8
+ def call_the_resolver
9
+ fact_value = check_vmware || check_virtualbox || check_parallels
10
+
11
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
12
+ end
13
+
14
+ private
15
+
16
+ def check_vmware
17
+ model_identifier = Facter::Resolvers::Macosx::SystemProfiler.resolve(:model_identifier)
18
+ return 'vmware' if model_identifier&.start_with?('VMware')
19
+ end
20
+
21
+ def check_virtualbox
22
+ boot_rom_version = Facter::Resolvers::Macosx::SystemProfiler.resolve(:boot_rom_version)
23
+ return 'virtualbox' if boot_rom_version&.start_with?('VirtualBox')
24
+ end
25
+
26
+ def check_parallels
27
+ subsystem_vendor_id = Facter::Resolvers::Macosx::SystemProfiler.resolve(:subsystem_vendor_id)
28
+ return 'parallels' if subsystem_vendor_id&.start_with?('0x1ab8')
29
+ end
30
+ end
31
+ end
32
+ end
@@ -15,17 +15,59 @@ module Facter
15
15
  end
16
16
 
17
17
  def read_netstat(fact_name)
18
+ @fact_list[:interfaces] = {}
18
19
  output = Facter::Core::Execution.execute('netstat -rn', logger: log)
19
- output = output.split("\n").select { |line| (line =~ /\s\s[0-9]+.[0-9]+.[0-9]+.[0-9]+|\s\s.*:[0-9a-f]+/) }
20
- get_primary_interface_info(output)
20
+ output = output.each_line.select { |line| (line =~ /\s\s[0-9]+.[0-9]+.[0-9]+.[0-9]+|\s\s.*:[0-9a-f]+/) }
21
+ extract_interfaces(output)
21
22
 
23
+ populate_with_mtu_and_mac!(@fact_list[:interfaces])
24
+ get_primary_interface_info(output)
25
+ ::Resolvers::Utils::Networking.expand_main_bindings(@fact_list)
22
26
  @fact_list[fact_name]
23
27
  end
24
28
 
25
29
  def get_primary_interface_info(output)
26
- primary_interface_info = output.find { |line| line =~ /=>/ }.split(' ')
27
- @fact_list[:primary] = primary_interface_info[5]
28
- @fact_list[:ip] = primary_interface_info[1]
30
+ primary_interface_info = output.find { |line| line =~ /=>/ }&.split(' ')
31
+ @fact_list[:primary_interface] = primary_interface_info[5] if primary_interface_info
32
+ end
33
+
34
+ def extract_interfaces(netstat_output)
35
+ netstat_output.each do |line|
36
+ next if line =~ /default/
37
+
38
+ info = line.split("\s")
39
+ mask_length = info[0].match(%r{/([0-9]+)|%([0-9]+)})
40
+ next unless mask_length
41
+
42
+ is_ipv4 = info[1] =~ /[0-9]+.[0-9]+.[0-9]+.[0-9]+/
43
+ build_bindings(info[5], info[1], mask_length[1] || mask_length[2], is_ipv4)
44
+ end
45
+ end
46
+
47
+ def build_bindings(name, ip, mask_length, is_ipv4)
48
+ bind_to_add = is_ipv4 ? :bindings : :bindings6
49
+ ip = ip.gsub(/%[0-9]$/, '') # remove mask information if it exists
50
+ mask_length = mask_length.to_i - 1 unless is_ipv4
51
+ @fact_list[:interfaces][name] ||= {}
52
+ @fact_list[:interfaces][name][bind_to_add] ||= []
53
+ @fact_list[:interfaces][name][bind_to_add] << ::Resolvers::Utils::Networking.build_binding(ip, mask_length)
54
+ end
55
+
56
+ def populate_with_mtu_and_mac!(interfaces)
57
+ output = Facter::Core::Execution.execute('netstat -in', logger: log)
58
+ output.each_line do |line|
59
+ next if line =~ /Name\s/
60
+
61
+ info = line.split("\s")
62
+ interface_name = info[0]
63
+ mac = info[3][/^([0-9a-f]{1,2}[\.:-]){5}([0-9a-f]{1,2})$/]
64
+ interfaces[interface_name][:mtu] = info[1].to_i
65
+ interfaces[interface_name][:mac] = format_mac_address(mac) if mac
66
+ end
67
+ end
68
+
69
+ def format_mac_address(address)
70
+ address.split('.').map { |e| format('%<mac_address>02s', mac_address: e) }.join(':').tr(' ', '0')
29
71
  end
30
72
  end
31
73
  end
@@ -16,11 +16,8 @@ module Facter
16
16
 
17
17
  def read_facts(fact_name)
18
18
  primary_interface
19
- dhcp
20
19
  interfaces_data
21
- unless @fact_list[:interfaces].nil?
22
- ::Resolvers::Utils::Networking.expand_main_bindings(@fact_list[:interfaces])
23
- end
20
+ ::Resolvers::Utils::Networking.expand_main_bindings(@fact_list)
24
21
  @fact_list[fact_name]
25
22
  end
26
23
 
@@ -30,15 +27,6 @@ module Facter
30
27
  @fact_list[:primary_interface] = result.match(/interface: (.+)/)&.captures&.first
31
28
  end
32
29
 
33
- def dhcp
34
- return if @fact_list[:primary_interface].nil?
35
-
36
- result = Facter::Core::Execution.execute("ipconfig getoption #{@fact_list[:primary_interface]} " \
37
- 'server_identifier', logger: log)
38
-
39
- @fact_list[:dhcp] = result.match(/^[\d.a-f:\s]+$/)&.to_s&.strip
40
- end
41
-
42
30
  def interfaces_data
43
31
  command_response = Facter::Core::Execution.execute('ifconfig -a', logger: log)
44
32
 
@@ -55,37 +43,47 @@ module Facter
55
43
  parsed_interfaces_data = {}
56
44
  interfaces_data = Hash[*response.split(/^([A-Za-z0-9_]+): /)[1..-1]]
57
45
 
58
- interfaces_data.each do |interface, properties|
59
- values = {}
46
+ interfaces_data.each do |interface_name, raw_data|
47
+ parsed_interface_data = {}
60
48
 
61
- extract_mtu(properties, values)
62
- extract_mac(properties, values)
63
- extract_ip_data(properties, values)
49
+ extract_mtu(raw_data, parsed_interface_data)
50
+ extract_mac(raw_data, parsed_interface_data)
51
+ extract_dhcp(interface_name, raw_data, parsed_interface_data)
52
+ extract_ip_data(raw_data, parsed_interface_data)
64
53
 
65
- parsed_interfaces_data[interface] = values
54
+ parsed_interfaces_data[interface_name] = parsed_interface_data
66
55
  end
67
56
  @fact_list[:interfaces] = parsed_interfaces_data unless parsed_interfaces_data.empty?
68
57
  end
69
58
 
70
- def extract_mtu(properties, values)
71
- mtu = properties.match(/mtu\s+(\d+)/)&.captures&.first&.to_i
72
- values[:mtu] = mtu unless mtu.nil?
59
+ def extract_mtu(raw_data, parsed_interface_data)
60
+ mtu = raw_data.match(/mtu\s+(\d+)/)&.captures&.first&.to_i
61
+ parsed_interface_data[:mtu] = mtu unless mtu.nil?
73
62
  end
74
63
 
75
- def extract_mac(properties, values)
76
- mac = properties.match(/(?:ether|lladdr)\s+(\w?\w:\w?\w:\w?\w:\w?\w:\w?\w:\w?\w)/)&.captures&.first
77
- values[:mac] = mac unless mac.nil?
64
+ def extract_mac(raw_data, parsed_interface_data)
65
+ mac = raw_data.match(/(?:ether|lladdr)\s+(\w?\w:\w?\w:\w?\w:\w?\w:\w?\w:\w?\w)/)&.captures&.first
66
+ parsed_interface_data[:mac] = mac unless mac.nil?
67
+ end
68
+
69
+ def extract_dhcp(interface_name, raw_data, parsed_interface_data)
70
+ return unless raw_data =~ /status:\s+active/
71
+
72
+ result = Facter::Core::Execution.execute("ipconfig getoption #{interface_name} " \
73
+ 'server_identifier', logger: log)
74
+
75
+ parsed_interface_data[:dhcp] = result.match(/^[\d.a-f:\s]+$/)&.to_s&.strip unless result.empty?
78
76
  end
79
77
 
80
- def extract_ip_data(properties, values)
81
- ip = extract_values(properties, /inet (\S+)/)
82
- mask = extract_values(properties, /netmask (\S+)/).map { |val| val.hex.to_s(2).count('1') }
78
+ def extract_ip_data(raw_data, parsed_interface_data)
79
+ ip = extract_values(raw_data, /inet (\S+)/)
80
+ mask = extract_values(raw_data, /netmask (\S+)/).map { |val| val.hex.to_s(2).count('1') }
83
81
 
84
- ip6 = extract_values(properties, /inet6 (\S+)/).map { |val| val.gsub(/%.+/, '') }
85
- mask6 = extract_values(properties, /prefixlen (\S+)/)
82
+ ip6 = extract_values(raw_data, /inet6 (\S+)/).map { |val| val.gsub(/%.+/, '') }
83
+ mask6 = extract_values(raw_data, /prefixlen (\S+)/)
86
84
 
87
- values[:bindings] = create_bindings(ip, mask) unless ip.empty?
88
- values[:bindings6] = create_bindings(ip6, mask6) unless ip6.empty?
85
+ parsed_interface_data[:bindings] = create_bindings(ip, mask) unless ip.empty?
86
+ parsed_interface_data[:bindings6] = create_bindings(ip6, mask6) unless ip6.empty?
89
87
  end
90
88
 
91
89
  def extract_values(data, regex)
@@ -2,59 +2,43 @@
2
2
 
3
3
  module Facter
4
4
  module Resolvers
5
- class SystemProfiler < BaseResolver
6
- # model_name
7
- # model_identifier
8
- # processor_name
9
- # processor_speed
10
- # number_of_processors
11
- # total_number_of_cores
12
- # l2_cache_per_core
13
- # l3_cache
14
- # hyper-threading_technology
15
- # memory
16
- # boot_rom_version
17
- # serial_number_system
18
- # hardware_uuid
19
- # activation_lock_status
20
- # system_version
21
- # kernel_version
22
- # boot_volume
23
- # boot_mode
24
- # computer_name
25
- # user_name
26
- # secure_virtual_memory
27
- # system_integrity_protection
28
- # time_since_boot
29
- # smc_version_system
30
-
31
- @semaphore = Mutex.new
32
- @fact_list = {}
33
-
34
- class << self
35
- private
36
-
37
- def post_resolve(fact_name)
38
- @fact_list.fetch(fact_name) { retrieve_system_profiler(fact_name) }
39
- end
40
-
41
- def retrieve_system_profiler(fact_name)
42
- @fact_list ||= {}
43
-
44
- log.debug 'Executing command: system_profiler SPSoftwareDataType SPHardwareDataType'
45
- output = Facter::Core::Execution.execute(
46
- 'system_profiler SPHardwareDataType SPSoftwareDataType', logger: log
47
- ).force_encoding('UTF-8')
48
- @fact_list = output.scan(/.*:[ ].*$/).map { |e| e.strip.match(/(.*?): (.*)/).captures }.to_h
49
- normalize_factlist
50
-
51
- @fact_list[fact_name]
52
- end
53
-
54
- def normalize_factlist
55
- @fact_list = @fact_list.map do |k, v|
56
- [k.downcase.tr(' ', '_').delete("\(\)").to_sym, v]
57
- end.to_h
5
+ module Macosx
6
+ class SystemProfiler < BaseResolver
7
+ SP_HARDWARE_DATA_TYPE = %i[model_name model_identifier processor_speed number_of_processors processor_name
8
+ total_number_of_cores l2_cache_per_core l3_cache memory boot_rom_version
9
+ smc_version_system serial_number_system hardware_uuid hyper-threading_technology
10
+ activation_lock_status].freeze
11
+
12
+ SP_SOFTWARE_DATA_TYPE = %i[system_version kernel_version boot_volume boot_mode computer_name
13
+ user_name secure_virtual_memory system_integrity_protection time_since_boot].freeze
14
+
15
+ SP_ETHERNET_DATA_TYPE = %i[type bus vendor_id device_id subsystem_vendor_id
16
+ subsystem_id revision_id bsd_name kext_name location version].freeze
17
+
18
+ @semaphore = Mutex.new
19
+ @fact_list = {}
20
+
21
+ class << self
22
+ private
23
+
24
+ def post_resolve(fact_name)
25
+ @fact_list.fetch(fact_name) { retrieve_system_profiler(fact_name) }
26
+ end
27
+
28
+ def retrieve_system_profiler(fact_name)
29
+ @fact_list ||= {}
30
+
31
+ case fact_name
32
+ when *SP_HARDWARE_DATA_TYPE
33
+ @fact_list.merge!(SystemProfileExecutor.execute('SPHardwareDataType'))
34
+ when *SP_SOFTWARE_DATA_TYPE
35
+ @fact_list.merge!(SystemProfileExecutor.execute('SPSoftwareDataType'))
36
+ when *SP_ETHERNET_DATA_TYPE
37
+ @fact_list.merge!(SystemProfileExecutor.execute('SPEthernetDataType'))
38
+ end
39
+
40
+ @fact_list[fact_name]
41
+ end
58
42
  end
59
43
  end
60
44
  end