facter 4.0.20 → 4.0.21

Sign up to get free protection for your applications and to get access to all the features.
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