facter 4.0.46 → 4.0.47

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 (208) hide show
  1. checksums.yaml +4 -4
  2. data/lib/docs/generate.rb +32 -0
  3. data/lib/docs/template.erb +34 -0
  4. data/lib/facter.rb +38 -6
  5. data/lib/facter/config.rb +32 -1
  6. data/lib/facter/custom_facts/util/collection.rb +1 -2
  7. data/lib/facter/custom_facts/util/directory_loader.rb +1 -1
  8. data/lib/facter/custom_facts/util/fact.rb +18 -1
  9. data/lib/facter/custom_facts/util/loader.rb +1 -1
  10. data/lib/facter/custom_facts/util/resolution.rb +1 -1
  11. data/lib/facter/facts/aix/interfaces.rb +1 -0
  12. data/lib/facter/facts/aix/memory/swap/available.rb +1 -1
  13. data/lib/facter/facts/aix/memory/swap/available_bytes.rb +1 -1
  14. data/lib/facter/facts/aix/memory/swap/total.rb +1 -1
  15. data/lib/facter/facts/aix/memory/swap/total_bytes.rb +1 -1
  16. data/lib/facter/facts/aix/memory/swap/used.rb +1 -1
  17. data/lib/facter/facts/aix/memory/system/available.rb +1 -1
  18. data/lib/facter/facts/aix/memory/system/available_bytes.rb +1 -1
  19. data/lib/facter/facts/aix/memory/system/total.rb +1 -1
  20. data/lib/facter/facts/aix/memory/system/total_bytes.rb +1 -1
  21. data/lib/facter/facts/aix/memory/system/used.rb +1 -1
  22. data/lib/facter/facts/aix/processors/speed.rb +1 -1
  23. data/lib/facter/facts/bsd/processors/speed.rb +1 -1
  24. data/lib/facter/facts/freebsd/is_virtual.rb +25 -0
  25. data/lib/facter/facts/freebsd/memory/swap/available.rb +1 -1
  26. data/lib/facter/facts/freebsd/memory/swap/available_bytes.rb +1 -1
  27. data/lib/facter/facts/freebsd/memory/swap/total.rb +1 -1
  28. data/lib/facter/facts/freebsd/memory/swap/total_bytes.rb +1 -1
  29. data/lib/facter/facts/freebsd/memory/swap/used.rb +1 -1
  30. data/lib/facter/facts/freebsd/memory/system/available.rb +1 -1
  31. data/lib/facter/facts/freebsd/memory/system/available_bytes.rb +1 -1
  32. data/lib/facter/facts/freebsd/memory/system/total.rb +1 -1
  33. data/lib/facter/facts/freebsd/memory/system/total_bytes.rb +1 -1
  34. data/lib/facter/facts/freebsd/memory/system/used.rb +1 -1
  35. data/lib/facter/facts/freebsd/processors/speed.rb +1 -1
  36. data/lib/facter/facts/freebsd/virtual.rb +22 -0
  37. data/lib/facter/facts/linux/dhcp_servers.rb +1 -0
  38. data/lib/facter/facts/linux/ec2_metadata.rb +1 -1
  39. data/lib/facter/facts/linux/ec2_userdata.rb +1 -1
  40. data/lib/facter/facts/linux/hypervisors/kvm.rb +1 -1
  41. data/lib/facter/facts/linux/hypervisors/xen.rb +1 -1
  42. data/lib/facter/facts/linux/interfaces.rb +1 -0
  43. data/lib/facter/facts/linux/is_virtual.rb +2 -2
  44. data/lib/facter/facts/linux/memory/swap/available.rb +1 -1
  45. data/lib/facter/facts/linux/memory/swap/available_bytes.rb +1 -1
  46. data/lib/facter/facts/linux/memory/swap/total.rb +1 -1
  47. data/lib/facter/facts/linux/memory/swap/total_bytes.rb +1 -1
  48. data/lib/facter/facts/linux/memory/swap/used.rb +1 -1
  49. data/lib/facter/facts/linux/memory/system/available.rb +1 -1
  50. data/lib/facter/facts/linux/memory/system/available_bytes.rb +1 -1
  51. data/lib/facter/facts/linux/memory/system/total.rb +1 -1
  52. data/lib/facter/facts/linux/memory/system/total_bytes.rb +1 -1
  53. data/lib/facter/facts/linux/memory/system/used.rb +1 -1
  54. data/lib/facter/facts/linux/processors/speed.rb +1 -1
  55. data/lib/facter/facts/linux/virtual.rb +1 -1
  56. data/lib/facter/facts/macosx/dhcp_servers.rb +1 -0
  57. data/lib/facter/facts/macosx/interfaces.rb +1 -0
  58. data/lib/facter/facts/macosx/memory/swap/available.rb +1 -1
  59. data/lib/facter/facts/macosx/memory/swap/available_bytes.rb +1 -1
  60. data/lib/facter/facts/macosx/memory/swap/total.rb +1 -1
  61. data/lib/facter/facts/macosx/memory/swap/total_bytes.rb +1 -1
  62. data/lib/facter/facts/macosx/memory/swap/used.rb +1 -1
  63. data/lib/facter/facts/macosx/memory/system/available.rb +1 -1
  64. data/lib/facter/facts/macosx/memory/system/available_bytes.rb +1 -1
  65. data/lib/facter/facts/macosx/memory/system/total.rb +1 -1
  66. data/lib/facter/facts/macosx/memory/system/total_bytes.rb +1 -1
  67. data/lib/facter/facts/macosx/memory/system/used.rb +1 -1
  68. data/lib/facter/facts/macosx/processors/speed.rb +1 -1
  69. data/lib/facter/facts/solaris/dhcp_servers.rb +1 -0
  70. data/lib/facter/facts/solaris/interfaces.rb +1 -0
  71. data/lib/facter/facts/solaris/is_virtual.rb +2 -2
  72. data/lib/facter/facts/solaris/ldom.rb +31 -4
  73. data/lib/facter/facts/solaris/memory/swap/available.rb +1 -1
  74. data/lib/facter/facts/solaris/memory/swap/available_bytes.rb +1 -1
  75. data/lib/facter/facts/solaris/memory/swap/total.rb +1 -1
  76. data/lib/facter/facts/solaris/memory/swap/total_bytes.rb +1 -1
  77. data/lib/facter/facts/solaris/memory/swap/used.rb +1 -1
  78. data/lib/facter/facts/solaris/memory/system/available.rb +1 -1
  79. data/lib/facter/facts/solaris/memory/system/available_bytes.rb +1 -1
  80. data/lib/facter/facts/solaris/memory/system/total.rb +1 -1
  81. data/lib/facter/facts/solaris/memory/system/total_bytes.rb +1 -1
  82. data/lib/facter/facts/solaris/memory/system/used.rb +1 -1
  83. data/lib/facter/facts/solaris/processors/speed.rb +1 -1
  84. data/lib/facter/facts/solaris/virtual.rb +1 -1
  85. data/lib/facter/facts/windows/dhcp_servers.rb +1 -0
  86. data/lib/facter/facts/windows/interfaces.rb +1 -0
  87. data/lib/facter/facts/windows/memory/system/available.rb +1 -1
  88. data/lib/facter/facts/windows/memory/system/available_bytes.rb +1 -1
  89. data/lib/facter/facts/windows/memory/system/total.rb +1 -1
  90. data/lib/facter/facts/windows/memory/system/total_bytes.rb +1 -1
  91. data/lib/facter/facts/windows/memory/system/used.rb +1 -1
  92. data/lib/facter/facts/windows/os/release.rb +1 -1
  93. data/lib/facter/framework/cli/cli.rb +1 -1
  94. data/lib/facter/framework/core/cache_manager.rb +1 -1
  95. data/lib/facter/framework/core/fact_loaders/external_fact_loader.rb +4 -2
  96. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +16 -0
  97. data/lib/facter/framework/core/fact_manager.rb +14 -2
  98. data/lib/facter/framework/core/file_loader.rb +6 -2
  99. data/lib/facter/framework/core/options/option_store.rb +2 -2
  100. data/lib/facter/framework/logging/logger.rb +3 -3
  101. data/lib/facter/models/fact_collection.rb +11 -1
  102. data/lib/facter/models/loaded_fact.rb +2 -1
  103. data/lib/facter/resolvers/aio_agent_version.rb +1 -1
  104. data/lib/facter/resolvers/aix/architecture_resolver.rb +3 -3
  105. data/lib/facter/resolvers/aix/disks.rb +4 -4
  106. data/lib/facter/resolvers/aix/filesystem_resolver.rb +1 -1
  107. data/lib/facter/resolvers/aix/hardware_resolver.rb +2 -2
  108. data/lib/facter/resolvers/aix/memory.rb +2 -2
  109. data/lib/facter/resolvers/aix/mountpoints.rb +4 -4
  110. data/lib/facter/resolvers/aix/networking_resolver.rb +3 -2
  111. data/lib/facter/resolvers/aix/partitions.rb +5 -5
  112. data/lib/facter/resolvers/aix/processors.rb +3 -3
  113. data/lib/facter/resolvers/aix/serialnumber.rb +1 -1
  114. data/lib/facter/resolvers/base_resolver.rb +3 -0
  115. data/lib/facter/resolvers/cloud.rb +1 -1
  116. data/lib/facter/resolvers/containers.rb +3 -3
  117. data/lib/facter/resolvers/debian_version.rb +1 -1
  118. data/lib/facter/resolvers/disk_resolver.rb +2 -2
  119. data/lib/facter/resolvers/dmi_resolver.rb +1 -1
  120. data/lib/facter/resolvers/ec2.rb +3 -1
  121. data/lib/facter/resolvers/eos_release_resolver.rb +1 -1
  122. data/lib/facter/resolvers/filesystems_resolver.rb +1 -1
  123. data/lib/facter/resolvers/fips_enabled_resolver.rb +1 -1
  124. data/lib/facter/resolvers/freebsd/geom_resolver.rb +1 -1
  125. data/lib/facter/resolvers/freebsd/swap_memory_resolver.rb +3 -2
  126. data/lib/facter/resolvers/freebsd/system_memory_resolver.rb +2 -1
  127. data/lib/facter/resolvers/freebsd/virtual_resolver.rb +45 -0
  128. data/lib/facter/resolvers/gce.rb +1 -1
  129. data/lib/facter/resolvers/hostname_resolver.rb +67 -20
  130. data/lib/facter/resolvers/linux/docker_uptime.rb +1 -1
  131. data/lib/facter/resolvers/linux/load_averages.rb +1 -1
  132. data/lib/facter/resolvers/load_averages.rb +3 -2
  133. data/lib/facter/resolvers/macosx/mountpoints_resolver.rb +7 -7
  134. data/lib/facter/resolvers/macosx/system_profiler_resolver.rb +3 -3
  135. data/lib/facter/resolvers/memory_resolver.rb +1 -1
  136. data/lib/facter/resolvers/mountpoints_resolver.rb +8 -8
  137. data/lib/facter/resolvers/networking_linux_resolver.rb +183 -85
  138. data/lib/facter/resolvers/networking_resolver.rb +8 -5
  139. data/lib/facter/resolvers/open_vz.rb +1 -3
  140. data/lib/facter/resolvers/os_release_resolver.rb +1 -1
  141. data/lib/facter/resolvers/partitions.rb +5 -5
  142. data/lib/facter/resolvers/processors_resolver.rb +2 -2
  143. data/lib/facter/resolvers/redhat_release_resolver.rb +1 -1
  144. data/lib/facter/resolvers/selinux_resolver.rb +3 -3
  145. data/lib/facter/resolvers/solaris/disks.rb +1 -1
  146. data/lib/facter/resolvers/solaris/memory.rb +2 -2
  147. data/lib/facter/resolvers/solaris/mountpoints.rb +11 -10
  148. data/lib/facter/resolvers/solaris/networking.rb +49 -41
  149. data/lib/facter/resolvers/solaris/os_release.rb +1 -1
  150. data/lib/facter/resolvers/ssh_resolver.rb +3 -2
  151. data/lib/facter/resolvers/suse_release_resolver.rb +1 -1
  152. data/lib/facter/resolvers/uptime_resolver.rb +2 -2
  153. data/lib/facter/resolvers/windows/aio_agent_version.rb +1 -1
  154. data/lib/facter/resolvers/windows/dmi_bios_resolver.rb +1 -1
  155. data/lib/facter/resolvers/windows/dmi_computersystem_resolver.rb +1 -1
  156. data/lib/facter/resolvers/windows/memory_resolver.rb +4 -0
  157. data/lib/facter/resolvers/windows/networking_resolver.rb +3 -3
  158. data/lib/facter/resolvers/windows/processors_resolver.rb +1 -1
  159. data/lib/facter/resolvers/windows/ssh.rb +2 -2
  160. data/lib/facter/resolvers/windows/uptime_resolver.rb +1 -1
  161. data/lib/facter/resolvers/windows/virtualization_resolver.rb +1 -1
  162. data/lib/facter/resolvers/windows/win_os_description_resolver.rb +1 -1
  163. data/lib/facter/resolvers/xen.rb +1 -1
  164. data/lib/facter/util/aix/info_extractor.rb +24 -0
  165. data/lib/facter/util/aix/odm_query.rb +46 -0
  166. data/lib/facter/util/api_debugger.rb +33 -29
  167. data/lib/facter/util/facts/facts_utils.rb +14 -0
  168. data/lib/facter/util/facts/unit_converter.rb +61 -0
  169. data/lib/facter/util/facts/uptime_parser.rb +128 -0
  170. data/lib/facter/util/facts/virtual_detector.rb +90 -0
  171. data/lib/facter/util/facts/windows_release_finder.rb +55 -0
  172. data/lib/facter/{resolvers/macosx/utils → util/macosx}/system_profile_executor.rb +1 -1
  173. data/lib/facter/util/resolvers/aws_token.rb +37 -0
  174. data/lib/facter/{resolvers/utils → util/resolvers}/ffi/load_averages.rb +2 -2
  175. data/lib/facter/util/resolvers/filesystem_helper.rb +47 -0
  176. data/lib/facter/util/resolvers/fingerprint.rb +15 -0
  177. data/lib/facter/{resolvers/utils → util/resolvers}/http.rb +17 -10
  178. data/lib/facter/util/resolvers/networking.rb +90 -0
  179. data/lib/facter/util/resolvers/networking/dhcp.rb +21 -0
  180. data/lib/facter/util/resolvers/networking/networking.rb +109 -0
  181. data/lib/facter/util/resolvers/networking/primary_interface.rb +82 -0
  182. data/lib/facter/util/resolvers/ssh.rb +17 -0
  183. data/lib/facter/util/resolvers/ssh_helper.rb +31 -0
  184. data/lib/facter/{resolvers/utils → util/resolvers}/uptime_helper.rb +2 -2
  185. data/lib/facter/{framework/utils → util}/utils.rb +0 -0
  186. data/lib/facter/util/windows/win32ole.rb +30 -0
  187. data/lib/facter/version.rb +1 -1
  188. metadata +29 -41
  189. data/lib/facter/facts/aix/puppet_version.rb +0 -15
  190. data/lib/facter/facts/freebsd/puppet_version.rb +0 -15
  191. data/lib/facter/facts/linux/puppet_version.rb +0 -15
  192. data/lib/facter/facts/macosx/puppet_version.rb +0 -15
  193. data/lib/facter/facts/solaris/puppet_version.rb +0 -15
  194. data/lib/facter/facts/windows/puppet_version.rb +0 -15
  195. data/lib/facter/facts_utils/facts_utils.rb +0 -12
  196. data/lib/facter/facts_utils/unit_converter.rb +0 -59
  197. data/lib/facter/facts_utils/uptime_parser.rb +0 -124
  198. data/lib/facter/facts_utils/virtual_detector.rb +0 -78
  199. data/lib/facter/facts_utils/windows_release_finder.rb +0 -51
  200. data/lib/facter/resolvers/aix/utils/info_extractor.rb +0 -20
  201. data/lib/facter/resolvers/aix/utils/odm_query.rb +0 -42
  202. data/lib/facter/resolvers/puppet_version_resolver.rb +0 -26
  203. data/lib/facter/resolvers/utils/filesystem_helper.rb +0 -43
  204. data/lib/facter/resolvers/utils/fingerprint.rb +0 -11
  205. data/lib/facter/resolvers/utils/networking.rb +0 -88
  206. data/lib/facter/resolvers/utils/ssh.rb +0 -13
  207. data/lib/facter/resolvers/utils/ssh_helper.rb +0 -27
  208. data/lib/facter/resolvers/windows/utils/win32ole.rb +0 -24
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facts
4
- module Solaris
5
- class PuppetVersion
6
- FACT_NAME = 'puppetversion'
7
-
8
- def call_the_resolver
9
- fact_value = Facter::Resolvers::PuppetVersionResolver.resolve(:puppetversion)
10
-
11
- Facter::ResolvedFact.new(FACT_NAME, fact_value)
12
- end
13
- end
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facts
4
- module Windows
5
- class PuppetVersion
6
- FACT_NAME = 'puppetversion'
7
-
8
- def call_the_resolver
9
- fact_value = Facter::Resolvers::PuppetVersionResolver.resolve(:puppetversion)
10
-
11
- Facter::ResolvedFact.new(FACT_NAME, fact_value)
12
- end
13
- end
14
- end
15
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facter
4
- module FactsUtils
5
- HYPERVISORS_HASH = { 'VMware' => 'vmware', 'VirtualBox' => 'virtualbox', 'Parallels' => 'parallels',
6
- 'KVM' => 'kvm', 'Virtual Machine' => 'hyperv', 'RHEV Hypervisor' => 'rhev',
7
- 'oVirt Node' => 'ovirt', 'HVM domU' => 'xenhvm', 'Bochs' => 'bochs', 'OpenBSD' => 'vmm',
8
- 'BHYVE' => 'bhyve' }.freeze
9
-
10
- PHYSICAL_HYPERVISORS = %w[physical xen0 vmware_server vmware_workstation openvzhn vserver_host].freeze
11
- end
12
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facter
4
- module FactsUtils
5
- class UnitConverter
6
- class << self
7
- def bytes_to_mb(value_in_bytes)
8
- return unless value_in_bytes
9
-
10
- value_in_bytes = value_in_bytes.to_i
11
-
12
- (value_in_bytes / (1024.0 * 1024.0)).round(2)
13
- end
14
-
15
- def hertz_to_human_readable(speed)
16
- speed = speed.to_i
17
- return if !speed || speed.zero?
18
-
19
- prefix = { 3 => 'k', 6 => 'M', 9 => 'G', 12 => 'T' }
20
- power = Math.log10(speed).floor
21
- validated_speed = power.zero? ? speed.to_f : speed.fdiv(10**power)
22
- format('%<displayed_speed>.2f', displayed_speed: validated_speed).to_s + ' ' + prefix[power] + 'Hz'
23
- end
24
-
25
- def bytes_to_human_readable(bytes)
26
- return unless bytes
27
- return bytes.to_s + ' bytes' if bytes < 1024
28
-
29
- number, multiple = determine_exponent(bytes)
30
-
31
- "#{pad_number(number)} #{multiple}"
32
- end
33
-
34
- private
35
-
36
- def pad_number(number)
37
- number = number.to_s
38
- number << '0' if number.split('.').last.length == 1
39
- number
40
- end
41
-
42
- def determine_exponent(bytes)
43
- prefix = %w[KiB MiB GiB TiB PiB EiB]
44
- exp = (Math.log2(bytes) / 10.0).floor
45
- converted_number = (100.0 * (bytes / 1024.0**exp)).round / 100.0
46
-
47
- if (converted_number - 1024.0).abs < Float::EPSILON
48
- exp += 1
49
- converted_number = 1.00
50
- end
51
- multiple = prefix[exp - 1] || 'bytes'
52
-
53
- converted_number = bytes if multiple == 'bytes'
54
- [converted_number, multiple]
55
- end
56
- end
57
- end
58
- end
59
- end
@@ -1,124 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'time'
4
-
5
- module Facter
6
- class UptimeParser
7
- SECS_IN_A_DAY = 86_400
8
- SECS_IN_AN_HOUR = 3_600
9
- SECS_IN_A_MINUTE = 60
10
-
11
- @log = Facter::Log.new(self)
12
-
13
- class << self
14
- def uptime_seconds_unix
15
- uptime_proc_uptime || uptime_sysctl || uptime_executable
16
- end
17
-
18
- private
19
-
20
- def uptime_proc_uptime
21
- output = Facter::Core::Execution.execute("/bin/cat #{uptime_file}", logger: @log)
22
-
23
- output.chomp.split(' ').first.to_i unless output.empty?
24
- end
25
-
26
- def uptime_sysctl
27
- output = Facter::Core::Execution.execute("sysctl -n #{uptime_sysctl_variable}", logger: @log)
28
-
29
- compute_uptime(Time.at(output.match(/\d+/)[0].to_i)) unless output.empty?
30
- end
31
-
32
- def uptime_executable
33
- output = Facter::Core::Execution.execute(uptime_executable_cmd, logger: @log)
34
-
35
- return unless output
36
-
37
- up = 0
38
- output_calculator_methods.find { |method| up = send(method, output) }
39
- up || 0
40
- end
41
-
42
- def uptime_file
43
- '/proc/uptime'
44
- end
45
-
46
- def uptime_sysctl_variable
47
- 'kern.boottime'
48
- end
49
-
50
- def uptime_executable_cmd
51
- 'uptime'
52
- end
53
-
54
- def output_calculator_methods
55
- %i[
56
- calculate_days_hours_minutes
57
- calculate_days_hours
58
- calculate_days_minutes
59
- calculate_days
60
- calculate_hours_minutes
61
- calculate_hours
62
- calculate_minutes
63
- ]
64
- end
65
-
66
- def compute_uptime(time)
67
- (Time.now - time).to_i
68
- end
69
-
70
- # Regexp handles Solaris, AIX, HP-UX, and Tru64.
71
- # 'day(?:s|\(s\))?' says maybe 'day', 'days',
72
- # or 'day(s)', and don't set $2.
73
- def calculate_days_hours_minutes(output)
74
- return unless output =~ /(\d+) day(?:s|\(s\))?,?\s+(\d+):-?(\d+)/
75
-
76
- SECS_IN_A_DAY * Regexp.last_match(1).to_i +
77
- SECS_IN_AN_HOUR * Regexp.last_match(2).to_i +
78
- SECS_IN_A_MINUTE * Regexp.last_match(3).to_i
79
- end
80
-
81
- def calculate_days_hours(output)
82
- return unless output =~ /(\d+) day(?:s|\(s\))?,\s+(\d+) hr(?:s|\(s\))?,/
83
-
84
- SECS_IN_A_DAY * Regexp.last_match(1).to_i +
85
- SECS_IN_AN_HOUR * Regexp.last_match(2).to_i
86
- end
87
-
88
- def calculate_days_minutes(output)
89
- return unless output =~ /(\d+) day(?:s|\(s\))?,\s+(\d+) min(?:s|\(s\))?,/
90
-
91
- SECS_IN_A_DAY * Regexp.last_match(1).to_i +
92
- SECS_IN_A_MINUTE * Regexp.last_match(2).to_i
93
- end
94
-
95
- def calculate_days(output)
96
- return unless output =~ /(\d+) day(?:s|\(s\))?,/
97
-
98
- SECS_IN_A_DAY * Regexp.last_match(1).to_i
99
- end
100
-
101
- # must anchor to 'up' to avoid matching time of day
102
- # at beginning of line. Certain versions of uptime on
103
- # Solaris may insert a '-' into the minutes field.
104
- def calculate_hours_minutes(output)
105
- return unless output =~ /up\s+(\d+):-?(\d+),/
106
-
107
- SECS_IN_AN_HOUR * Regexp.last_match(1).to_i +
108
- SECS_IN_A_MINUTE * Regexp.last_match(2).to_i
109
- end
110
-
111
- def calculate_hours(output)
112
- return unless output =~ /(\d+) hr(?:s|\(s\))?,/
113
-
114
- SECS_IN_AN_HOUR * Regexp.last_match(1).to_i
115
- end
116
-
117
- def calculate_minutes(output)
118
- return unless output =~ /(\d+) min(?:s|\(s\))?,/
119
-
120
- SECS_IN_A_MINUTE * Regexp.last_match(1).to_i
121
- end
122
- end
123
- end
124
- end
@@ -1,78 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facter
4
- class VirtualDetector
5
- def initialize
6
- @log = Facter::Log.new(self)
7
- end
8
-
9
- def platform # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
10
- fact_value = check_docker_lxc || check_dmi || check_gce || retrieve_from_virt_what || check_vmware
11
- fact_value ||= check_open_vz || check_vserver || check_xen || check_other_facts || check_lspci || 'physical'
12
-
13
- fact_value
14
- end
15
-
16
- def check_docker_lxc
17
- @log.debug('Checking Docker and LXC')
18
- Facter::Resolvers::Containers.resolve(:vm)
19
- end
20
-
21
- def check_dmi
22
- @log.debug('Checking DMI')
23
- vendor = Facter::Resolvers::DmiDecode.resolve(:vendor)
24
- @log.debug("dmi detected vendor: #{vendor}")
25
- return 'kvm' if vendor =~ /Amazon/
26
-
27
- 'xen' if vendor =~ /Xen/
28
- end
29
-
30
- def check_gce
31
- @log.debug('Checking GCE')
32
- bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
33
- 'gce' if bios_vendor&.include?('Google')
34
- end
35
-
36
- def check_vmware
37
- @log.debug('Checking VMware')
38
- Facter::Resolvers::Vmware.resolve(:vm)
39
- end
40
-
41
- def retrieve_from_virt_what
42
- @log.debug('Checking virtual_what')
43
- Facter::Resolvers::VirtWhat.resolve(:vm)
44
- end
45
-
46
- def check_open_vz
47
- @log.debug('Checking OpenVZ')
48
- Facter::Resolvers::OpenVz.resolve(:vm)
49
- end
50
-
51
- def check_vserver
52
- @log.debug('Checking VServer')
53
- Facter::Resolvers::VirtWhat.resolve(:vserver)
54
- end
55
-
56
- def check_xen
57
- @log.debug('Checking XEN')
58
- Facter::Resolvers::Xen.resolve(:vm)
59
- end
60
-
61
- def check_other_facts
62
- @log.debug('Checking others')
63
- product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
64
- bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
65
- return 'kvm' if bios_vendor&.include?('Amazon EC2')
66
- return unless product_name
67
-
68
- Facter::FactsUtils::HYPERVISORS_HASH.each { |key, value| return value if product_name.include?(key) }
69
-
70
- nil
71
- end
72
-
73
- def check_lspci
74
- @log.debug('Checking lspci')
75
- Facter::Resolvers::Lspci.resolve(:vm)
76
- end
77
- end
78
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facter
4
- class WindowsReleaseFinder
5
- class << self
6
- def find_release(input)
7
- version = input[:version]
8
- return unless version
9
-
10
- consumerrel = input[:consumerrel]
11
- description = input[:description]
12
- kernel_version = input[:kernel_version]
13
-
14
- if version =~ /10.0/
15
- check_version_10(consumerrel, kernel_version)
16
- else
17
- check_version_6(version, consumerrel) || check_version_5(version, consumerrel, description) || version
18
- end
19
- end
20
-
21
- private
22
-
23
- def check_version_10(consumerrel, kernel_version)
24
- build_number = kernel_version[/([^.]*)$/].to_i
25
- if consumerrel
26
- '10'
27
- elsif build_number >= 17_623
28
- '2019'
29
- else
30
- '2016'
31
- end
32
- end
33
-
34
- def check_version_6(version, consumerrel)
35
- hash = {}
36
- hash['6.3'] = consumerrel ? '8.1' : '2012 R2'
37
- hash['6.2'] = consumerrel ? '8' : '2012'
38
- hash['6.1'] = consumerrel ? '7' : '2008 R2'
39
- hash['6.0'] = consumerrel ? 'Vista' : '2008'
40
- hash[version]
41
- end
42
-
43
- def check_version_5(version, consumerrel, description)
44
- return unless version =~ /5.2/
45
- return 'XP' if consumerrel
46
-
47
- description == 'R2' ? '2003 R2' : '2003'
48
- end
49
- end
50
- end
51
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facter
4
- module InfoExtractor
5
- MEGABYTES_EXPONENT = 1024**2
6
- GIGABYTES_EXPONENT = 1024**3
7
-
8
- def self.extract(content, regex)
9
- content = content.each_line.map do |line|
10
- next unless regex =~ line
11
-
12
- line.split(/:\s*|\s{2,}/)
13
- end
14
-
15
- content.flatten!.reject!(&:nil?)
16
-
17
- Hash[*content]
18
- end
19
- end
20
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # CuAt (Customized Attributes) non-default attribute values
4
- # CuDv (Customized Devices) the devices present on this machine
5
- # PdAt (Predefined Attributes) default values for all device attributes
6
- # PdDv (Predefined Devices) the list of all devices supported by this release of AIX
7
-
8
- module Facter
9
- class ODMQuery
10
- REPOS = %w[CuAt CuDv PdAt PdDv].freeze
11
-
12
- def initialize
13
- @query = ''
14
- @conditions = []
15
- @log = Facter::Log.new(self)
16
- end
17
-
18
- def equals(field, value)
19
- @conditions << "#{field}='#{value}'"
20
- self
21
- end
22
-
23
- def like(field, value)
24
- @conditions << "#{field} like '#{value}'"
25
- self
26
- end
27
-
28
- def execute
29
- result = nil
30
- REPOS.each do |repo|
31
- break if result && !result.empty?
32
-
33
- result = Facter::Core::Execution.execute("#{query} #{repo}", logger: @log)
34
- end
35
- result
36
- end
37
-
38
- def query
39
- 'odmget -q "' + @conditions.join(' AND ') + '"'
40
- end
41
- end
42
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facter
4
- module Resolvers
5
- class PuppetVersionResolver < BaseResolver
6
- # :puppetversion
7
-
8
- init_resolver
9
-
10
- class << self
11
- private
12
-
13
- def post_resolve(fact_name)
14
- @fact_list.fetch(fact_name) { puppet_version(fact_name) }
15
- end
16
-
17
- def puppet_version(fact_name)
18
- require 'puppet/version'
19
- @fact_list[:puppetversion] = Puppet.version
20
-
21
- @fact_list[fact_name]
22
- end
23
- end
24
- end
25
- end
26
- end