facter 4.0.20 → 4.0.21

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 (344) hide show
  1. checksums.yaml +4 -4
  2. data/.github/actions/presuite.rb +109 -0
  3. data/.github/workflows/acceptance_tests.yml +61 -0
  4. data/.github/workflows/checks.yaml +71 -0
  5. data/.github/workflows/unit_tests.yaml +41 -0
  6. data/.rubocop.yml +71 -52
  7. data/.rubocop_todo.yml +5 -28
  8. data/CHANGELOG.md +25 -0
  9. data/README.md +5 -2
  10. data/VERSION +1 -1
  11. data/facter.conf +4 -0
  12. data/facter.gemspec +1 -2
  13. data/lib/custom_facts/core/execution.rb +8 -1
  14. data/lib/custom_facts/core/execution/base.rb +16 -8
  15. data/lib/custom_facts/util/normalization.rb +1 -1
  16. data/lib/custom_facts/util/parser.rb +10 -2
  17. data/lib/facter.rb +18 -12
  18. data/lib/facts/{el → aix}/processors/count.rb +2 -2
  19. data/lib/facts/{el → aix}/processors/isa.rb +1 -10
  20. data/lib/facts/{sles → aix}/processors/models.rb +2 -2
  21. data/lib/facts/aix/processors/speed.rb +17 -0
  22. data/lib/facts/debian/{os/architecture.rb → architecture.rb} +1 -0
  23. data/lib/facts/debian/os/distro/release.rb +9 -21
  24. data/lib/facts/debian/os/release.rb +9 -21
  25. data/lib/facts/freebsd/os/release.rb +43 -0
  26. data/lib/facts/{sles → linux}/augeas/version.rb +1 -1
  27. data/lib/facts/linux/dhcp_servers.rb +27 -0
  28. data/lib/facts/{sles → linux}/disks.rb +1 -1
  29. data/lib/facts/{sles → linux}/dmi/bios/release_date.rb +1 -1
  30. data/lib/facts/{el → linux}/dmi/bios/vendor.rb +1 -1
  31. data/lib/facts/{sles → linux}/dmi/bios/version.rb +1 -1
  32. data/lib/facts/{sles → linux}/dmi/board/manufacturer.rb +1 -1
  33. data/lib/facts/{el → linux}/dmi/board/product.rb +1 -1
  34. data/lib/facts/{el → linux}/dmi/board/serial_number.rb +1 -1
  35. data/lib/facts/{sles → linux}/dmi/chassis/asset_tag.rb +1 -1
  36. data/lib/facts/{sles → linux}/dmi/chassis/type.rb +1 -1
  37. data/lib/facts/{el → linux}/dmi/manufacturer.rb +1 -1
  38. data/lib/facts/{el → linux}/dmi/product/name.rb +1 -1
  39. data/lib/facts/{sles → linux}/dmi/product/serial_number.rb +1 -1
  40. data/lib/facts/{sles → linux}/dmi/product/uuid.rb +1 -1
  41. data/lib/facts/{debian → linux}/facterversion.rb +1 -1
  42. data/lib/facts/{el → linux}/filesystems.rb +1 -1
  43. data/lib/facts/{el → linux}/fips_enabled.rb +1 -1
  44. data/lib/facts/{sles → linux}/identity/gid.rb +1 -1
  45. data/lib/facts/{el → linux}/identity/group.rb +1 -1
  46. data/lib/facts/{el → linux}/identity/privileged.rb +1 -1
  47. data/lib/facts/{sles → linux}/identity/uid.rb +1 -1
  48. data/lib/facts/{el → linux}/identity/user.rb +1 -1
  49. data/lib/facts/{el → linux}/interfaces.rb +1 -1
  50. data/lib/facts/linux/ipaddress6_interfaces.rb +20 -0
  51. data/lib/facts/linux/ipaddress_interfaces.rb +20 -0
  52. data/lib/facts/{debian → linux}/kernel.rb +1 -1
  53. data/lib/facts/{debian → linux}/kernelmajversion.rb +1 -1
  54. data/lib/facts/{el → linux}/kernelrelease.rb +1 -1
  55. data/lib/facts/{debian → linux}/kernelversion.rb +1 -1
  56. data/lib/facts/{el → linux}/load_averages.rb +1 -1
  57. data/lib/facts/{debian → linux}/lsbdistrelease.rb +1 -1
  58. data/lib/facts/linux/macaddress_interfaces.rb +20 -0
  59. data/lib/facts/{el → linux}/memory/swap/available.rb +1 -1
  60. data/lib/facts/{debian → linux}/memory/swap/available_bytes.rb +1 -1
  61. data/lib/facts/{sles → linux}/memory/swap/capacity.rb +1 -1
  62. data/lib/facts/{el → linux}/memory/swap/total.rb +1 -1
  63. data/lib/facts/{el → linux}/memory/swap/total_bytes.rb +1 -1
  64. data/lib/facts/{el → linux}/memory/swap/used.rb +1 -1
  65. data/lib/facts/{el → linux}/memory/swap/used_bytes.rb +1 -1
  66. data/lib/facts/{debian → linux}/memory/system/available.rb +1 -1
  67. data/lib/facts/{debian → linux}/memory/system/available_bytes.rb +1 -1
  68. data/lib/facts/{el → linux}/memory/system/capacity.rb +1 -1
  69. data/lib/facts/{sles → linux}/memory/system/total.rb +1 -1
  70. data/lib/facts/{sles → linux}/memory/system/total_bytes.rb +1 -1
  71. data/lib/facts/{sles → linux}/memory/system/used.rb +1 -1
  72. data/lib/facts/{el → linux}/memory/system/used_bytes.rb +1 -1
  73. data/lib/facts/{sles → linux}/mountpoints.rb +1 -1
  74. data/lib/facts/linux/mtu_interfaces.rb +20 -0
  75. data/lib/facts/linux/netmask6_interfaces.rb +20 -0
  76. data/lib/facts/linux/netmask_interfaces.rb +20 -0
  77. data/lib/facts/linux/network6_interfaces.rb +20 -0
  78. data/lib/facts/linux/network_interfaces.rb +20 -0
  79. data/lib/facts/linux/networking/dhcp.rb +20 -0
  80. data/lib/facts/{el → linux}/networking/domain.rb +1 -1
  81. data/lib/facts/{el → linux}/networking/fqdn.rb +1 -1
  82. data/lib/facts/{el → linux}/networking/hostname.rb +1 -1
  83. data/lib/facts/{sles → linux}/networking/interfaces.rb +1 -1
  84. data/lib/facts/{sles → linux}/networking/ip.rb +5 -2
  85. data/lib/facts/linux/networking/ip6.rb +21 -0
  86. data/lib/facts/{debian → linux}/networking/mac.rb +5 -2
  87. data/lib/facts/linux/networking/mtu.rb +20 -0
  88. data/lib/facts/linux/networking/netmask.rb +21 -0
  89. data/lib/facts/linux/networking/netmask6.rb +21 -0
  90. data/lib/facts/linux/networking/network.rb +21 -0
  91. data/lib/facts/linux/networking/network6.rb +21 -0
  92. data/lib/facts/{sles → linux}/networking/primary.rb +1 -1
  93. data/lib/facts/linux/networking/scope6.rb +20 -0
  94. data/lib/facts/{el → linux}/os/architecture.rb +3 -1
  95. data/lib/facts/{sles/os/distro/specification.rb → linux/os/distro/codename.rb} +5 -5
  96. data/lib/facts/{debian/os/distro/specification.rb → linux/os/distro/description.rb} +5 -5
  97. data/lib/facts/linux/os/distro/id.rb +21 -0
  98. data/lib/facts/linux/os/distro/release.rb +31 -0
  99. data/lib/facts/{el → linux}/os/distro/specification.rb +1 -1
  100. data/lib/facts/{debian → linux}/os/family.rb +1 -1
  101. data/lib/facts/{el → linux}/os/hardware.rb +1 -1
  102. data/lib/facts/{sles → linux}/os/name.rb +1 -1
  103. data/lib/facts/{el → linux}/os/release.rb +1 -1
  104. data/lib/facts/{el → linux}/os/selinux/config_mode.rb +1 -1
  105. data/lib/facts/{sles → linux}/os/selinux/config_policy.rb +1 -1
  106. data/lib/facts/{el → linux}/os/selinux/current_mode.rb +1 -1
  107. data/lib/facts/{el → linux}/os/selinux/enabled.rb +1 -1
  108. data/lib/facts/{el → linux}/os/selinux/enforced.rb +1 -1
  109. data/lib/facts/{el → linux}/os/selinux/policy_version.rb +1 -1
  110. data/lib/facts/{sles → linux}/partitions.rb +1 -1
  111. data/lib/facts/{debian → linux}/path.rb +1 -1
  112. data/lib/facts/{el → linux}/processor.rb +1 -1
  113. data/lib/facts/{sles → linux}/processors/count.rb +1 -1
  114. data/lib/facts/{debian → linux}/processors/isa.rb +1 -1
  115. data/lib/facts/{el → linux}/processors/models.rb +1 -1
  116. data/lib/facts/{sles → linux}/processors/physicalcount.rb +1 -2
  117. data/lib/facts/{el → linux}/puppet_version.rb +1 -1
  118. data/lib/facts/{sles → linux}/ruby/platform.rb +1 -1
  119. data/lib/facts/{sles → linux}/ruby/sitedir.rb +1 -1
  120. data/lib/facts/{sles → linux}/ruby/version.rb +1 -1
  121. data/lib/facts/linux/scope6_interfaces.rb +26 -0
  122. data/lib/facts/{el → linux}/ssh.rb +1 -1
  123. data/lib/facts/{sles → linux}/sshalgorithmkey.rb +1 -1
  124. data/lib/facts/{el → linux}/sshfp_algorithm.rb +1 -1
  125. data/lib/facts/{sles → linux}/system_uptime/days.rb +1 -1
  126. data/lib/facts/{el → linux}/system_uptime/hours.rb +1 -1
  127. data/lib/facts/{el → linux}/system_uptime/seconds.rb +1 -1
  128. data/lib/facts/{el → linux}/system_uptime/uptime.rb +1 -1
  129. data/lib/facts/{el → linux}/timezone.rb +1 -1
  130. data/lib/facts/{el → rhel}/os/distro/codename.rb +1 -1
  131. data/lib/facts/{el → rhel}/os/distro/description.rb +1 -1
  132. data/lib/facts/{el → rhel}/os/distro/id.rb +1 -1
  133. data/lib/facts/{el → rhel}/os/distro/release.rb +1 -1
  134. data/lib/facts/{el → rhel}/os/family.rb +1 -1
  135. data/lib/facts/{el → rhel}/os/name.rb +1 -1
  136. data/lib/facts/rhel/os/release.rb +36 -0
  137. data/lib/facts/ubuntu/os/distro/release.rb +31 -0
  138. data/lib/facts/ubuntu/os/release.rb +20 -0
  139. data/lib/facts/windows/dhcp_servers.rb +5 -2
  140. data/lib/facts/windows/networking/primary.rb +1 -1
  141. data/lib/facts_utils/uptime_parser.rb +6 -3
  142. data/lib/framework/config/config_reader.rb +4 -0
  143. data/lib/framework/config/fact_groups.rb +2 -1
  144. data/lib/framework/core/cache_manager.rb +19 -21
  145. data/lib/framework/core/fact_loaders/internal_fact_loader.rb +2 -2
  146. data/lib/framework/core/options/config_file_options.rb +19 -10
  147. data/lib/framework/core/options/option_store.rb +14 -5
  148. data/lib/framework/detector/os_detector.rb +2 -0
  149. data/lib/framework/formatters/yaml_fact_formatter.rb +50 -4
  150. data/lib/resolvers/aix/mountpoints.rb +3 -3
  151. data/lib/resolvers/aix/networking_resolver.rb +1 -1
  152. data/lib/resolvers/aix/os_level_resolver.rb +1 -1
  153. data/lib/resolvers/aix/partitions.rb +3 -6
  154. data/lib/resolvers/aix/processors.rb +80 -0
  155. data/lib/resolvers/aix/utils/odm_query.rb +2 -1
  156. data/lib/resolvers/augeas_resolver.rb +1 -1
  157. data/lib/resolvers/eos_release_resolver.rb +3 -1
  158. data/lib/resolvers/freebsd/freebsd_version_resolver.rb +37 -0
  159. data/lib/resolvers/hostname_resolver.rb +1 -2
  160. data/lib/resolvers/lpar_resolver.rb +1 -2
  161. data/lib/resolvers/lsb_release_resolver.rb +2 -5
  162. data/lib/resolvers/macosx/dmi_resolver.rb +1 -2
  163. data/lib/resolvers/macosx/filesystems_resolver.rb +1 -2
  164. data/lib/resolvers/macosx/ipaddress_resolver.rb +3 -4
  165. data/lib/resolvers/macosx/load_averages_resolver.rb +1 -2
  166. data/lib/resolvers/macosx/mountpoints_resolver.rb +0 -1
  167. data/lib/resolvers/macosx/processor_resolver.rb +1 -2
  168. data/lib/resolvers/macosx/swap_memory_resolver.rb +2 -3
  169. data/lib/resolvers/macosx/system_memory_resolver.rb +3 -4
  170. data/lib/resolvers/macosx/system_profiler_resolver.rb +3 -1
  171. data/lib/resolvers/mountpoints_resolver.rb +3 -3
  172. data/lib/resolvers/networking_linux_resolver.rb +78 -19
  173. data/lib/resolvers/os_level_resolver.rb +3 -2
  174. data/lib/resolvers/partitions.rb +7 -4
  175. data/lib/resolvers/processors_resolver.rb +5 -0
  176. data/lib/resolvers/selinux_resolver.rb +1 -1
  177. data/lib/resolvers/solaris/filesystems_resolver.rb +1 -1
  178. data/lib/resolvers/solaris/ipaddress_resolver.rb +2 -3
  179. data/lib/resolvers/solaris/processors.rb +2 -6
  180. data/lib/resolvers/solaris/solaris_os_release_resolver.rb +2 -12
  181. data/lib/resolvers/solaris/solaris_zone_name.rb +2 -8
  182. data/lib/resolvers/solaris/zfs_resolver.rb +1 -2
  183. data/lib/resolvers/solaris/zone_resolver.rb +3 -9
  184. data/lib/resolvers/solaris/zpool_resolver.rb +1 -2
  185. data/lib/resolvers/sw_vers_resolver.rb +1 -1
  186. data/lib/resolvers/uname_resolver.rb +2 -2
  187. data/lib/resolvers/utils/filesystem_helper.rb +1 -1
  188. data/lib/resolvers/windows/ffi/network_utils.rb +1 -1
  189. data/lib/resolvers/windows/networking_resolver.rb +8 -7
  190. data/lib/resolvers/windows/virtualization_resolver.rb +5 -4
  191. data/lib/resolvers/wpar_resolver.rb +3 -3
  192. data/os_hierarchy.json +7 -4
  193. data/tasks/fact_list_generator.rake +26 -0
  194. metadata +130 -262
  195. data/.github/workflows/rtc.yml +0 -11
  196. data/.travis.yml +0 -47
  197. data/lib/facts/debian/augeas/version.rb +0 -19
  198. data/lib/facts/debian/disks.rb +0 -15
  199. data/lib/facts/debian/dmi/bios/release_date.rb +0 -19
  200. data/lib/facts/debian/dmi/bios/vendor.rb +0 -19
  201. data/lib/facts/debian/dmi/bios/version.rb +0 -19
  202. data/lib/facts/debian/dmi/board/manufacturer.rb +0 -19
  203. data/lib/facts/debian/dmi/board/product.rb +0 -19
  204. data/lib/facts/debian/dmi/board/serial_number.rb +0 -19
  205. data/lib/facts/debian/dmi/chassis/asset_tag.rb +0 -19
  206. data/lib/facts/debian/dmi/chassis/type.rb +0 -19
  207. data/lib/facts/debian/dmi/manufacturer.rb +0 -17
  208. data/lib/facts/debian/dmi/product/name.rb +0 -19
  209. data/lib/facts/debian/dmi/product/serial_number.rb +0 -18
  210. data/lib/facts/debian/dmi/product/uuid.rb +0 -18
  211. data/lib/facts/debian/filesystems.rb +0 -14
  212. data/lib/facts/debian/fips_enabled.rb +0 -14
  213. data/lib/facts/debian/identity/gid.rb +0 -16
  214. data/lib/facts/debian/identity/group.rb +0 -18
  215. data/lib/facts/debian/identity/privileged.rb +0 -16
  216. data/lib/facts/debian/identity/uid.rb +0 -16
  217. data/lib/facts/debian/identity/user.rb +0 -17
  218. data/lib/facts/debian/interfaces.rb +0 -16
  219. data/lib/facts/debian/kernelrelease.rb +0 -14
  220. data/lib/facts/debian/load_averages.rb +0 -14
  221. data/lib/facts/debian/memory/swap/available.rb +0 -20
  222. data/lib/facts/debian/memory/swap/capacity.rb +0 -18
  223. data/lib/facts/debian/memory/swap/total.rb +0 -20
  224. data/lib/facts/debian/memory/swap/total_bytes.rb +0 -20
  225. data/lib/facts/debian/memory/swap/used.rb +0 -19
  226. data/lib/facts/debian/memory/swap/used_bytes.rb +0 -18
  227. data/lib/facts/debian/memory/system/capacity.rb +0 -18
  228. data/lib/facts/debian/memory/system/total.rb +0 -20
  229. data/lib/facts/debian/memory/system/total_bytes.rb +0 -20
  230. data/lib/facts/debian/memory/system/used.rb +0 -19
  231. data/lib/facts/debian/memory/system/used_bytes.rb +0 -18
  232. data/lib/facts/debian/mountpoints.rb +0 -21
  233. data/lib/facts/debian/networking/domain.rb +0 -17
  234. data/lib/facts/debian/networking/fqdn.rb +0 -17
  235. data/lib/facts/debian/networking/hostname.rb +0 -17
  236. data/lib/facts/debian/networking/interfaces.rb +0 -16
  237. data/lib/facts/debian/networking/ip.rb +0 -18
  238. data/lib/facts/debian/networking/primary.rb +0 -17
  239. data/lib/facts/debian/os/hardware.rb +0 -18
  240. data/lib/facts/debian/os/name.rb +0 -18
  241. data/lib/facts/debian/os/selinux/config_mode.rb +0 -21
  242. data/lib/facts/debian/os/selinux/config_policy.rb +0 -21
  243. data/lib/facts/debian/os/selinux/current_mode.rb +0 -21
  244. data/lib/facts/debian/os/selinux/enabled.rb +0 -21
  245. data/lib/facts/debian/os/selinux/enforced.rb +0 -21
  246. data/lib/facts/debian/os/selinux/policy_version.rb +0 -21
  247. data/lib/facts/debian/partitions.rb +0 -26
  248. data/lib/facts/debian/processors/count.rb +0 -17
  249. data/lib/facts/debian/processors/models.rb +0 -16
  250. data/lib/facts/debian/processors/physicalcount.rb +0 -17
  251. data/lib/facts/debian/puppet_version.rb +0 -15
  252. data/lib/facts/debian/ruby/platform.rb +0 -18
  253. data/lib/facts/debian/ruby/sitedir.rb +0 -18
  254. data/lib/facts/debian/ruby/version.rb +0 -18
  255. data/lib/facts/debian/ssh.rb +0 -26
  256. data/lib/facts/debian/system_uptime/days.rb +0 -18
  257. data/lib/facts/debian/system_uptime/hours.rb +0 -18
  258. data/lib/facts/debian/system_uptime/seconds.rb +0 -18
  259. data/lib/facts/debian/system_uptime/uptime.rb +0 -18
  260. data/lib/facts/debian/timezone.rb +0 -14
  261. data/lib/facts/el/augeas/version.rb +0 -19
  262. data/lib/facts/el/disks.rb +0 -15
  263. data/lib/facts/el/dmi/bios/release_date.rb +0 -19
  264. data/lib/facts/el/dmi/bios/version.rb +0 -19
  265. data/lib/facts/el/dmi/board/manufacturer.rb +0 -19
  266. data/lib/facts/el/dmi/chassis/asset_tag.rb +0 -19
  267. data/lib/facts/el/dmi/chassis/type.rb +0 -19
  268. data/lib/facts/el/dmi/product/serial_number.rb +0 -19
  269. data/lib/facts/el/dmi/product/uuid.rb +0 -19
  270. data/lib/facts/el/facterversion.rb +0 -14
  271. data/lib/facts/el/identity/gid.rb +0 -16
  272. data/lib/facts/el/identity/uid.rb +0 -16
  273. data/lib/facts/el/kernel.rb +0 -14
  274. data/lib/facts/el/kernelmajversion.rb +0 -23
  275. data/lib/facts/el/kernelversion.rb +0 -21
  276. data/lib/facts/el/memory/swap/available_bytes.rb +0 -20
  277. data/lib/facts/el/memory/swap/capacity.rb +0 -18
  278. data/lib/facts/el/memory/system/available.rb +0 -20
  279. data/lib/facts/el/memory/system/available_bytes.rb +0 -20
  280. data/lib/facts/el/memory/system/total.rb +0 -20
  281. data/lib/facts/el/memory/system/total_bytes.rb +0 -20
  282. data/lib/facts/el/memory/system/used.rb +0 -19
  283. data/lib/facts/el/mountpoints.rb +0 -21
  284. data/lib/facts/el/networking/interfaces.rb +0 -16
  285. data/lib/facts/el/networking/ip.rb +0 -18
  286. data/lib/facts/el/networking/mac.rb +0 -18
  287. data/lib/facts/el/networking/primary.rb +0 -17
  288. data/lib/facts/el/os/selinux/config_policy.rb +0 -21
  289. data/lib/facts/el/partitions.rb +0 -26
  290. data/lib/facts/el/path.rb +0 -14
  291. data/lib/facts/el/processors/physicalcount.rb +0 -18
  292. data/lib/facts/el/ruby/platform.rb +0 -18
  293. data/lib/facts/el/ruby/sitedir.rb +0 -18
  294. data/lib/facts/el/ruby/version.rb +0 -18
  295. data/lib/facts/el/sshalgorithmkey.rb +0 -17
  296. data/lib/facts/el/system_uptime/days.rb +0 -18
  297. data/lib/facts/sles/dmi/bios/vendor.rb +0 -19
  298. data/lib/facts/sles/dmi/board/product.rb +0 -19
  299. data/lib/facts/sles/dmi/board/serial_number.rb +0 -19
  300. data/lib/facts/sles/dmi/manufacturer.rb +0 -17
  301. data/lib/facts/sles/dmi/product/name.rb +0 -19
  302. data/lib/facts/sles/facterversion.rb +0 -14
  303. data/lib/facts/sles/filesystems.rb +0 -14
  304. data/lib/facts/sles/fips_enabled.rb +0 -14
  305. data/lib/facts/sles/identity/group.rb +0 -18
  306. data/lib/facts/sles/identity/privileged.rb +0 -16
  307. data/lib/facts/sles/identity/user.rb +0 -17
  308. data/lib/facts/sles/interfaces.rb +0 -16
  309. data/lib/facts/sles/kernel.rb +0 -14
  310. data/lib/facts/sles/kernelmajversion.rb +0 -15
  311. data/lib/facts/sles/kernelrelease.rb +0 -14
  312. data/lib/facts/sles/kernelversion.rb +0 -15
  313. data/lib/facts/sles/load_averages.rb +0 -14
  314. data/lib/facts/sles/memory/swap/available.rb +0 -20
  315. data/lib/facts/sles/memory/swap/available_bytes.rb +0 -20
  316. data/lib/facts/sles/memory/swap/total.rb +0 -20
  317. data/lib/facts/sles/memory/swap/total_bytes.rb +0 -20
  318. data/lib/facts/sles/memory/swap/used.rb +0 -19
  319. data/lib/facts/sles/memory/swap/used_bytes.rb +0 -18
  320. data/lib/facts/sles/memory/system/available.rb +0 -20
  321. data/lib/facts/sles/memory/system/available_bytes.rb +0 -20
  322. data/lib/facts/sles/memory/system/capacity.rb +0 -18
  323. data/lib/facts/sles/memory/system/used_bytes.rb +0 -18
  324. data/lib/facts/sles/networking/domain.rb +0 -17
  325. data/lib/facts/sles/networking/fqdn.rb +0 -17
  326. data/lib/facts/sles/networking/hostname.rb +0 -17
  327. data/lib/facts/sles/networking/mac.rb +0 -18
  328. data/lib/facts/sles/os/architecture.rb +0 -18
  329. data/lib/facts/sles/os/hardware.rb +0 -18
  330. data/lib/facts/sles/os/selinux/config_mode.rb +0 -21
  331. data/lib/facts/sles/os/selinux/current_mode.rb +0 -21
  332. data/lib/facts/sles/os/selinux/enabled.rb +0 -21
  333. data/lib/facts/sles/os/selinux/enforced.rb +0 -21
  334. data/lib/facts/sles/os/selinux/policy_version.rb +0 -21
  335. data/lib/facts/sles/path.rb +0 -14
  336. data/lib/facts/sles/processor.rb +0 -20
  337. data/lib/facts/sles/processors/isa.rb +0 -27
  338. data/lib/facts/sles/puppet_version.rb +0 -15
  339. data/lib/facts/sles/ssh.rb +0 -26
  340. data/lib/facts/sles/sshfp_algorithm.rb +0 -20
  341. data/lib/facts/sles/system_uptime/hours.rb +0 -18
  342. data/lib/facts/sles/system_uptime/seconds.rb +0 -18
  343. data/lib/facts/sles/system_uptime/uptime.rb +0 -18
  344. data/lib/facts/sles/timezone.rb +0 -14
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Macosx
6
6
  class DmiBios < BaseResolver
7
- @log = Facter::Log.new(self)
8
7
  @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
 
@@ -19,7 +18,7 @@ module Facter
19
18
 
20
19
  def read_facts
21
20
  # OSX only supports the product name
22
- output, _status = Open3.capture2('sysctl -n hw.model')
21
+ output = Facter::Core::Execution.execute('sysctl -n hw.model', logger: log)
23
22
  @fact_list[:macosx_model] = output&.strip
24
23
  end
25
24
  end
@@ -7,7 +7,6 @@ module Facter
7
7
  # :macosx_filesystems
8
8
  @semaphore = Mutex.new
9
9
  @fact_list ||= {}
10
- @log = Facter::Log.new(self)
11
10
 
12
11
  class << self
13
12
  private
@@ -17,7 +16,7 @@ module Facter
17
16
  end
18
17
 
19
18
  def read_filesystems(fact_name)
20
- output, _status = Open3.capture2('mount')
19
+ output = Facter::Core::Execution.execute('mount', logger: log)
21
20
  filesystems = []
22
21
  output.each_line do |line|
23
22
  filesystem = line.match(/\(([a-z]+)\,*/).to_s
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Macosx
6
6
  class Ipaddress < BaseResolver
7
- @log = Facter::Log.new(self)
8
7
  @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
@@ -19,7 +18,7 @@ module Facter
19
18
  primary_interface = read_primary_interface
20
19
  unless primary_interface.nil?
21
20
  @fact_list[:primary] = primary_interface
22
- output, _status = Open3.capture2("ipconfig getifaddr #{primary_interface}")
21
+ output = Facter::Core::Execution.execute("ipconfig getifaddr #{primary_interface}", logger: log)
23
22
  ip = output.strip
24
23
  end
25
24
  find_all_interfaces
@@ -29,7 +28,7 @@ module Facter
29
28
 
30
29
  def read_primary_interface
31
30
  iface = nil
32
- output, _status = Open3.capture2('route -n get default')
31
+ output = Facter::Core::Execution.execute('route -n get default', logger: log)
33
32
  output.split(/^\S/).each do |str|
34
33
  iface = Regexp.last_match(1) if str.strip =~ /interface: (\S+)/
35
34
  end
@@ -37,7 +36,7 @@ module Facter
37
36
  end
38
37
 
39
38
  def find_all_interfaces
40
- output, _status = Open3.capture2('ifconfig -a 2>/dev/null')
39
+ output = Facter::Core::Execution.execute('ifconfig -a', logger: log)
41
40
 
42
41
  data_hash = Hash[*output.split(/^([A-Za-z0-9_]+): /)[1..-1]]
43
42
 
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Macosx
6
6
  class LoadAverages < BaseResolver
7
- @log = Facter::Log.new(self)
8
7
  @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
@@ -15,7 +14,7 @@ module Facter
15
14
  end
16
15
 
17
16
  def read_load_averages_file(fact_name)
18
- output, _status = Open3.capture2('sysctl -n vm.loadavg')
17
+ output = Facter::Core::Execution.execute('sysctl -n vm.loadavg', logger: log)
19
18
  @fact_list[:load_averages] = {}.tap { |h| _, h['1m'], h['5m'], h['15m'], = output.split.map(&:to_f) }
20
19
 
21
20
  @fact_list[fact_name]
@@ -7,7 +7,6 @@ module Facter
7
7
  include Facter::FilesystemHelper
8
8
  @semaphore = Mutex.new
9
9
  @fact_list ||= {}
10
- @log = Facter::Log.new(self)
11
10
  class << self
12
11
  private
13
12
 
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Macosx
6
6
  class Processors < BaseResolver
7
- @log = Facter::Log.new(self)
8
7
  @semaphore = Mutex.new
9
8
  @fact_list = {}
10
9
  ITEMS = { logical_count: 'hw.logicalcpu_max',
@@ -24,7 +23,7 @@ module Facter
24
23
  end
25
24
 
26
25
  def read_processor_data(fact_name)
27
- output, _status = Open3.capture2("sysctl #{ITEMS.values.join(' ')}")
26
+ output = Facter::Core::Execution.execute("sysctl #{ITEMS.values.join(' ')}", logger: log)
28
27
  build_fact_list(output.split("\n"))
29
28
  @fact_list[fact_name]
30
29
  end
@@ -6,7 +6,6 @@ module Facter
6
6
  class SwapMemory < BaseResolver
7
7
  @semaphore = Mutex.new
8
8
  @fact_list ||= {}
9
- @log = Facter::Log.new(self)
10
9
  class << self
11
10
  private
12
11
 
@@ -15,7 +14,7 @@ module Facter
15
14
  end
16
15
 
17
16
  def read_swap_memory(fact_name) # rubocop:disable Metrics/AbcSize
18
- output = Open3.capture2('sysctl -n vm.swapusage').first
17
+ output = Facter::Core::Execution.execute('sysctl -n vm.swapusage', logger: log)
19
18
  data = output.match(/^total = ([\d.]+)M used = ([\d.]+)M free = ([\d.]+)M (\(encrypted\))$/)
20
19
 
21
20
  if data[1].to_f.positive?
@@ -34,7 +33,7 @@ module Facter
34
33
  end
35
34
 
36
35
  def compute_capacity(used, total)
37
- format('%.2f', (used / total.to_f * 100)) + '%'
36
+ "#{format('%<value>.2f', value: (used / total.to_f * 100))}%"
38
37
  end
39
38
  end
40
39
  end
@@ -6,7 +6,6 @@ module Facter
6
6
  class SystemMemory < BaseResolver
7
7
  @semaphore = Mutex.new
8
8
  @fact_list ||= {}
9
- @log = Facter::Log.new(self)
10
9
  class << self
11
10
  private
12
11
 
@@ -25,7 +24,7 @@ module Facter
25
24
  end
26
25
 
27
26
  def read_available_memory_in_bytes
28
- output, _status = Open3.capture2('vm_stat')
27
+ output = Facter::Core::Execution.execute('vm_stat', logger: log)
29
28
  page_size = output.match(/page size of (\d+) bytes/)[1].to_i
30
29
  pages_free = output.match(/Pages free:\s+(\d+)/)[1].to_i
31
30
 
@@ -33,11 +32,11 @@ module Facter
33
32
  end
34
33
 
35
34
  def read_total_memory_in_bytes
36
- @fact_list[:total_bytes] = Open3.capture2('sysctl -n hw.memsize').first.to_i
35
+ @fact_list[:total_bytes] = Facter::Core::Execution.execute('sysctl -n hw.memsize', logger: log).to_i
37
36
  end
38
37
 
39
38
  def compute_capacity(used, total)
40
- format('%.2f', (used / total.to_f * 100)) + '%'
39
+ "#{format('%<value>.2f', value: (used / total.to_f * 100))}%"
41
40
  end
42
41
  end
43
42
  end
@@ -42,7 +42,9 @@ module Facter
42
42
  @fact_list ||= {}
43
43
 
44
44
  log.debug 'Executing command: system_profiler SPSoftwareDataType SPHardwareDataType'
45
- output, _status = Open3.capture2('system_profiler SPHardwareDataType SPSoftwareDataType')
45
+ output = Facter::Core::Execution.execute(
46
+ 'system_profiler SPHardwareDataType SPSoftwareDataType', logger: log
47
+ )
46
48
  @fact_list = output.scan(/.*:[ ].*$/).map { |e| e.strip.match(/(.*?): (.*)/).captures }.to_h
47
49
  normalize_factlist
48
50
 
@@ -39,10 +39,10 @@ module Facter
39
39
  next if path =~ %r{^/(proc|sys)} && filesystem != 'tmpfs' || filesystem == 'autofs'
40
40
 
41
41
  stats = FilesystemHelper.read_mountpoint_stats(path)
42
- size_bytes = stats.bytes_total
43
- available_bytes = stats.bytes_available
42
+ size_bytes = stats.bytes_total.abs
43
+ available_bytes = stats.bytes_available.abs
44
44
 
45
- used_bytes = stats.bytes_used
45
+ used_bytes = stats.bytes_used.abs
46
46
  total_bytes = used_bytes + available_bytes
47
47
  capacity = FilesystemHelper.compute_capacity(used_bytes, total_bytes)
48
48
 
@@ -5,6 +5,7 @@ module Facter
5
5
  class NetworkingLinux < BaseResolver
6
6
  @semaphore = Mutex.new
7
7
  @fact_list = {}
8
+ DIRS = ['/var/lib/dhclient/', '/var/lib/dhcp/', '/var/lib/dhcp3/', '/var/lib/NetworkManager/', '/var/db/'].freeze
8
9
 
9
10
  class << self
10
11
  private
@@ -18,20 +19,23 @@ module Facter
18
19
  def retrieve_network_info(fact_name)
19
20
  @fact_list ||= {}
20
21
 
21
- retrieve_default_interface_and_ip
22
22
  retrieve_interface_info
23
- retrieve_macaddress
23
+ retrieve_interfaces_mac_and_mtu
24
+ retrieve_default_interface
24
25
  @fact_list[fact_name]
25
26
  end
26
27
 
27
- def retrieve_macaddress
28
- output, _status = Open3.capture2("ip link show #{@fact_list[:primary_interface]}")
29
- macaddress = */ether ([^ ]*) /.match(output)
30
- @fact_list[:macaddress] = macaddress[1]
28
+ def retrieve_interfaces_mac_and_mtu
29
+ @fact_list[:interfaces].map do |name, info|
30
+ macaddress = Util::FileHelper.safe_read("/sys/class/net/#{name}/address", nil)
31
+ info[:mac] = macaddress.strip if macaddress && !macaddress.include?('00:00:00:00:00:00')
32
+ mtu = Util::FileHelper.safe_read("/sys/class/net/#{name}/mtu", nil)
33
+ info[:mtu] = mtu.strip.to_i if mtu
34
+ end
31
35
  end
32
36
 
33
37
  def retrieve_interface_info
34
- output, _status = Open3.capture2('ip -o address')
38
+ output = Facter::Core::Execution.execute('ip -o address', logger: log)
35
39
  interfaces = {}
36
40
 
37
41
  output.each_line do |ip_line|
@@ -39,48 +43,103 @@ module Facter
39
43
 
40
44
  fill_ip_v4_info!(ip_tokens, interfaces)
41
45
  fill_io_v6_info!(ip_tokens, interfaces)
46
+ find_dhcp!(ip_tokens, interfaces)
42
47
  end
43
48
 
44
49
  @fact_list[:interfaces] = interfaces
45
50
  end
46
51
 
52
+ def find_dhcp!(tokens, network_info)
53
+ interface_name = tokens[1]
54
+ return if !network_info[interface_name] || network_info[interface_name][:dhcp]
55
+
56
+ index = tokens[0].delete(':')
57
+ dhcp = Util::FileHelper.safe_read("/run/systemd/netif/leases/#{index}", nil)
58
+ network_info[interface_name][:dhcp] = dhcp.match(/SERVER_ADDRESS=(.*)/)[1] if dhcp
59
+ network_info[interface_name][:dhcp] ||= retrieve_from_other_directories(interface_name)
60
+ end
61
+
62
+ def retrieve_from_other_directories(interface_name)
63
+ DIRS.each do |dir|
64
+ next unless File.readable?(dir)
65
+
66
+ lease_files = Dir.entries(dir).select { |file| file =~ /dhclient.*\.lease/ }
67
+ next if lease_files.empty?
68
+
69
+ lease_files.select do |file|
70
+ content = Util::FileHelper.safe_read("#{dir}#{file}", nil)
71
+ next unless content =~ /interface.*#{interface_name}/
72
+
73
+ return content.match(/dhcp-server-identifier ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/)[1]
74
+ end
75
+ end
76
+ return unless File.readable?('/var/lib/NetworkManager/')
77
+
78
+ search_internal_leases(interface_name)
79
+ end
80
+
81
+ def search_internal_leases(interface_name)
82
+ files = Dir.entries('/var/lib/NetworkManager/').reject { |dir| dir =~ /^\.+$/ }
83
+ lease_file = files.find { |file| file =~ /internal.*#{interface_name}\.lease/ }
84
+ return unless lease_file
85
+
86
+ dhcp = Util::FileHelper.safe_read("/var/lib/NetworkManager/#{lease_file}", nil)
87
+ dhcp ? dhcp.match(/SERVER_ADDRESS=(.*)/)[1] : nil
88
+ end
89
+
47
90
  def fill_ip_v4_info!(ip_tokens, network_info)
48
91
  return unless ip_tokens[2].casecmp('inet').zero?
49
92
 
50
- interface_name = ip_tokens[1]
51
- ip4_info = ip_tokens[3].split('/')
52
- ip4_address = ip4_info[0]
53
- ip4_mask_length = ip4_info[1]
93
+ interface_name, ip4_address, ip4_mask_length = retrieve_name_and_ip_info(ip_tokens)
54
94
 
55
95
  binding = build_binding(ip4_address, ip4_mask_length)
56
96
  build_network_info_structure!(network_info, interface_name, 'bindings')
57
97
 
98
+ populate_other_ipv4_facts(network_info, interface_name, binding)
99
+ end
100
+
101
+ def populate_other_ipv4_facts(network_info, interface_name, binding)
58
102
  network_info[interface_name]['bindings'] << binding
103
+ network_info[interface_name][:ip] ||= binding[:address]
104
+ network_info[interface_name][:network] ||= binding[:network]
105
+ network_info[interface_name][:netmask] ||= binding[:netmask]
106
+ end
107
+
108
+ def retrieve_name_and_ip_info(tokens)
109
+ interface_name = tokens[1]
110
+ ip_info = tokens[3].split('/')
111
+ ip_address = ip_info[0]
112
+ ip_mask_length = ip_info[1]
113
+
114
+ [interface_name, ip_address, ip_mask_length]
59
115
  end
60
116
 
61
117
  def fill_io_v6_info!(ip_tokens, network_info)
62
118
  return unless ip_tokens[2].casecmp('inet6').zero?
63
119
 
64
- interface_name = ip_tokens[1]
65
- ip6_info = ip_tokens[3].split('/')
66
- ip6_address = ip6_info[0]
67
- ip6_mask_length = ip6_info[1]
120
+ interface_name, ip6_address, ip6_mask_length = retrieve_name_and_ip_info(ip_tokens)
68
121
 
69
122
  binding = build_binding(ip6_address, ip6_mask_length)
70
123
 
71
124
  build_network_info_structure!(network_info, interface_name, 'bindings6')
72
125
 
126
+ network_info[interface_name][:scope6] ||= ip_tokens[5]
127
+ populate_other_ipv6_facts(network_info, interface_name, binding)
128
+ end
129
+
130
+ def populate_other_ipv6_facts(network_info, interface_name, binding)
73
131
  network_info[interface_name]['bindings6'] << binding
132
+ network_info[interface_name][:ip6] ||= binding[:address]
133
+ network_info[interface_name][:network6] ||= binding[:network]
134
+ network_info[interface_name][:netmask6] ||= binding[:netmask]
74
135
  end
75
136
 
76
- def retrieve_default_interface_and_ip
77
- output, _status = Open3.capture2('ip route get 1')
137
+ def retrieve_default_interface
138
+ output = Facter::Core::Execution.execute('ip route get 1', logger: log)
78
139
 
79
140
  ip_route_tokens = output.each_line.first.strip.split(' ')
80
141
  default_interface = ip_route_tokens[4]
81
- default_ip = ip_route_tokens[6]
82
142
 
83
- @fact_list[:ip] = default_ip
84
143
  @fact_list[:primary_interface] = default_interface
85
144
  end
86
145
 
@@ -16,8 +16,9 @@ module Facter
16
16
  end
17
17
 
18
18
  def read_oslevel(fact_name)
19
- output, _status = Open3.capture2('/usr/bin/oslevel -s 2>/dev/null')
20
- @fact_list[:build] = output
19
+ output = Facter::Core::Execution.execute('/usr/bin/oslevel -s', logger: log)
20
+
21
+ @fact_list[:build] = output unless output.empty?
21
22
  @fact_list[:kernel] = 'AIX'
22
23
 
23
24
  @fact_list[fact_name]
@@ -87,14 +87,17 @@ module Facter
87
87
  def blkid_command?
88
88
  return @blkid_exists unless @blkid_exists.nil?
89
89
 
90
- stdout, _stderr, _status = Open3.capture3('which blkid')
91
- @blkid_exists = stdout && !stdout.empty?
90
+ output = Facter::Core::Execution.execute('which blkid', logger: log)
91
+
92
+ @blkid_exists = !output.empty?
92
93
  end
93
94
 
94
95
  def execute_and_extract_blkid_info
95
- stdout, _stderr, _status = Open3.capture3('blkid')
96
+ stdout = Facter::Core::Execution.execute('blkid', logger: log)
96
97
  output_hash = Hash[*stdout.split(/^([^:]+):/)[1..-1]]
97
- output_hash.each { |key, value| output_hash[key] = Hash[*value.delete('"').chomp.split(/ ([^= ]+)=/)[1..-1]] }
98
+ output_hash.each do |key, value|
99
+ output_hash[key] = Hash[*value.delete('"').chomp.rstrip.split(/ ([^= ]+)=/)[1..-1]]
100
+ end
98
101
  end
99
102
 
100
103
  def browse_subdirectories(path)
@@ -25,6 +25,7 @@ module Facter
25
25
  read_processors(cpuinfo_output) # + model names
26
26
 
27
27
  @fact_list[:physical_count] = @fact_list[:physical_processors].uniq.length
28
+ @fact_list[:physical_count] = physical_devices_count if @fact_list[:physical_count].zero?
28
29
  @fact_list[fact_name]
29
30
  end
30
31
 
@@ -51,6 +52,10 @@ module Facter
51
52
  def count_physical_processors(tokens)
52
53
  @fact_list[:physical_processors] << tokens.last.strip.to_i if tokens.first.strip == 'physical id'
53
54
  end
55
+
56
+ def physical_devices_count
57
+ Dir.entries('/sys/devices/system/cpu').count { |dir| dir =~ /cpu[0-9]+$/ }
58
+ end
54
59
  end
55
60
  end
56
61
  end
@@ -21,7 +21,7 @@ module Facter
21
21
  end
22
22
 
23
23
  def read_mounts_file
24
- output, _s = Open3.capture2('cat /proc/self/mounts')
24
+ output = Facter::Core::Execution.execute('cat /proc/self/mounts', logger: log)
25
25
  @fact_list[:enabled] = false
26
26
  mountpoint = ''
27
27
 
@@ -17,7 +17,7 @@ module Facter
17
17
  def read_sysdef_file(fact_name)
18
18
  return unless File.executable?('/usr/sbin/sysdef')
19
19
 
20
- file_content, _status = Open3.capture2('/usr/sbin/sysdef')
20
+ file_content = Facter::Core::Execution.execute('/usr/sbin/sysdef', logger: log)
21
21
  files = file_content.split("\n").map do |line|
22
22
  line.split('/').last if line =~ /^fs\.*/
23
23
  end
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Solaris
6
6
  class Ipaddress < BaseResolver
7
- @log = Facter::Log.new(self)
8
7
  @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
@@ -18,7 +17,7 @@ module Facter
18
17
  ip = nil
19
18
  primary_interface = read_primary_interface
20
19
  unless primary_interface.nil?
21
- output, _status = Open3.capture2("ifconfig #{primary_interface}")
20
+ output = Facter::Core::Execution.execute("ifconfig #{primary_interface}", logger: log)
22
21
  output.each_line do |str|
23
22
  if str.strip =~ /inet\s(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}) .+/
24
23
  @fact_list[:ip] = ip = Regexp.last_match(1)
@@ -30,7 +29,7 @@ module Facter
30
29
  end
31
30
 
32
31
  def read_primary_interface
33
- output, _status = Open3.capture2('route -n get default | grep interface')
32
+ output = Facter::Core::Execution.execute('route -n get default | grep interface', logger: log)
34
33
  output.strip =~ /interface:\s(\S+)/ ? Regexp.last_match(1) : nil
35
34
  end
36
35
  end