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
@@ -12,10 +12,10 @@ module Facter
12
12
  @facts.select { |fact| fact.type == :legacy }
13
13
  end
14
14
 
15
- def initialize
15
+ def initialize(os_descendents = nil)
16
16
  @facts = []
17
17
 
18
- os_descendents = OsDetector.instance.hierarchy
18
+ os_descendents ||= OsDetector.instance.hierarchy
19
19
  load_all_oses_in_descending_order(os_descendents)
20
20
  end
21
21
 
@@ -9,6 +9,16 @@ module Facter
9
9
 
10
10
  augment_config_path(config_path)
11
11
 
12
+ augment_all
13
+ end
14
+
15
+ def get
16
+ @options || {}
17
+ end
18
+
19
+ private
20
+
21
+ def augment_all
12
22
  if Options.cli?
13
23
  augment_cli(Facter::ConfigReader.cli)
14
24
  augment_ruby(Facter::ConfigReader.global)
@@ -16,15 +26,9 @@ module Facter
16
26
  augment_custom(Facter::ConfigReader.global)
17
27
  augment_external(Facter::ConfigReader.global)
18
28
  augment_show_legacy(Facter::ConfigReader.global)
19
- augment_facts(Facter::ConfigReader.ttls)
29
+ augment_facts(Facter::ConfigReader.ttls, Facter::ConfigReader.fact_groups)
20
30
  end
21
31
 
22
- def get
23
- @options || {}
24
- end
25
-
26
- private
27
-
28
32
  def augment_config_path(config_path)
29
33
  @options[:config] = config_path
30
34
  end
@@ -72,11 +76,16 @@ module Facter
72
76
  @options[:show_legacy] = global_conf['show-legacy'] unless global_conf['show-legacy'].nil?
73
77
  end
74
78
 
75
- def augment_facts(ttls)
76
- blocked_facts = Facter::FactGroups.new.blocked_facts
77
- @options[:blocked_facts] = blocked_facts unless blocked_facts.nil?
79
+ def augment_facts(ttls, groups)
80
+ fact_groups = Facter::FactGroups.new
78
81
 
82
+ @options[:blocked_facts] = fact_groups.blocked_facts unless fact_groups.blocked_facts.nil?
83
+ @options[:block_list] = fact_groups.block_list
79
84
  @options[:ttls] = ttls unless ttls.nil?
85
+
86
+ f_groups = fact_groups.groups || {}
87
+ f_groups = groups.merge(f_groups) unless groups.nil?
88
+ @options[:fact_groups] = f_groups
80
89
  end
81
90
  end
82
91
  end
@@ -21,6 +21,8 @@ module Facter
21
21
  @cache = true
22
22
  @blocked_facts = []
23
23
  @user_query = []
24
+ @block_list = {}
25
+ @fact_groups = {}
24
26
 
25
27
  class << self
26
28
  attr_reader :debug, :verbose, :log_level, :show_legacy, :trace, :ruby,
@@ -28,7 +30,8 @@ module Facter
28
30
 
29
31
  attr_accessor :config, :user_query, :strict, :json, :haml, :external_facts,
30
32
  :cache, :yaml, :puppet, :ttls, :block, :cli, :config_file_custom_dir,
31
- :config_file_external_dir, :default_external_dir
33
+ :config_file_external_dir, :default_external_dir, :fact_groups,
34
+ :block_list
32
35
 
33
36
  attr_writer :external_dir
34
37
 
@@ -152,16 +155,22 @@ module Facter
152
155
  @log_level = :warn
153
156
  @show_legacy = true
154
157
  @block = true
158
+ @ruby = true
159
+ @user_query = []
160
+ @cli = nil
161
+ @cache = true
162
+ reset_config
163
+ end
164
+
165
+ def reset_config
155
166
  @custom_dir = []
156
167
  @custom_facts = true
157
168
  @external_dir = []
158
169
  @default_external_dir = []
159
170
  @external_facts = true
160
- @ruby = true
161
171
  @blocked_facts = []
162
- @user_query = []
163
- @cli = nil
164
- @cache = true
172
+ @fact_groups = {}
173
+ @block_list = {}
165
174
  end
166
175
 
167
176
  def fallback_external_dir
@@ -24,6 +24,8 @@ class OsDetector
24
24
  :macosx
25
25
  when /linux/
26
26
  detect_distro
27
+ when /freebsd/
28
+ :freebsd
27
29
  when /bsd/
28
30
  :bsd
29
31
  when /solaris/
@@ -6,13 +6,59 @@ module Facter
6
6
  @log = Log.new(self)
7
7
  end
8
8
 
9
- def format(fact_hash)
10
- yaml_pretty = YAML.dump(JSON.parse(JsonFactFormatter.new.format(fact_hash)))
9
+ def format(resolved_facts)
10
+ user_queries = resolved_facts.uniq(&:user_query).map(&:user_query)
11
+
12
+ facts_to_display = if user_queries.count == 1 && user_queries.first.empty?
13
+ FormatterHelper.retrieve_fact_collection(resolved_facts)
14
+ else
15
+ FormatterHelper.retrieve_facts_to_display_for_user_query(user_queries, resolved_facts)
16
+ end
17
+
18
+ facts_to_display = Psych.parse_stream(facts_to_display.to_yaml)
19
+ facts_to_display.children[0].tag_directives = []
20
+ yaml_pretty = quote_special_strings(facts_to_display)
11
21
 
12
- @log.debug('Replace single backslash with double backslashes')
13
- yaml_pretty.gsub!(/\\/, '\&\&')
14
22
  @log.debug('Replace --- from yaml beginning, to keep it compatible with C facter')
15
23
  yaml_pretty.gsub(/^---[\r\n]+/, '')
16
24
  end
25
+
26
+ private
27
+
28
+ def quote_special_strings(fact_hash)
29
+ require 'psych'
30
+
31
+ fact_hash.grep(Psych::Nodes::Scalar).each do |node|
32
+ next unless needs_quote?(node.value)
33
+
34
+ node.plain = false
35
+ node.quoted = true
36
+ node.style = Psych::Nodes::Scalar::DOUBLE_QUOTED
37
+ end
38
+
39
+ fact_hash = unquote_keys(fact_hash)
40
+ fact_hash.yaml
41
+ end
42
+
43
+ def unquote_keys(fact_hash)
44
+ fact_hash.grep(Psych::Nodes::Mapping).each do |node|
45
+ node.children.each_slice(2) do |k, _|
46
+ k.plain = true
47
+ k.quoted = false
48
+ k.style = Psych::Nodes::Scalar::ANY
49
+ end
50
+ end
51
+ fact_hash
52
+ end
53
+
54
+ def needs_quote?(value)
55
+ return false if value =~ /true|false/
56
+ return false if value[/^[0-9]+$/]
57
+ return true if value =~ /y|Y|yes|Yes|YES|n|N|no|No|NO|True|TRUE|False|FALSE|on|On|ON|off|Off|OFF|:/
58
+ return false if value[/[a-zA-Z]/]
59
+ return false if value[/[0-9]+\.[0-9]+\./]
60
+
61
+ true
62
+ end
17
63
  end
18
64
  end
@@ -17,9 +17,9 @@ module Facter
17
17
 
18
18
  def read_mount(fact_name)
19
19
  @fact_list[:mountpoints] = {}
20
- output, _status = Open3.capture2('mount 2>/dev/null')
20
+ output = Facter::Core::Execution.execute('mount', logger: log)
21
21
  output.split("\n").map do |line|
22
- next if line =~ /\snode\s|---|procfs|ahafs/
22
+ next if line =~ /node|---|procfs|ahafs/
23
23
 
24
24
  elem = line.split("\s")
25
25
 
@@ -32,7 +32,7 @@ module Facter
32
32
  end
33
33
 
34
34
  def retrieve_sizes_for_mounts
35
- output, _status = Open3.capture2('df -P 2>/dev/null')
35
+ output = Facter::Core::Execution.execute('df -P', logger: log)
36
36
  output.split("\n").map do |line|
37
37
  next if line =~ /Filesystem|-\s+-\s+-/
38
38
 
@@ -15,7 +15,7 @@ module Facter
15
15
  end
16
16
 
17
17
  def read_netstat(fact_name)
18
- output, _status = Open3.capture2('netstat -rn')
18
+ output = Facter::Core::Execution.execute('netstat -rn', logger: log)
19
19
  output = output.split("\n").select { |line| (line =~ /\s\s[0-9]+.[0-9]+.[0-9]+.[0-9]+|\s\s.*:[0-9a-f]+/) }
20
20
  get_primary_interface_info(output)
21
21
 
@@ -14,7 +14,7 @@ module Facter
14
14
  end
15
15
 
16
16
  def read_oslevel(fact_name)
17
- output, _status = Open3.capture2('/usr/bin/oslevel -s 2>/dev/null')
17
+ output = Facter::Core::Execution.execute('/usr/bin/oslevel -s', logger: log)
18
18
  @fact_list[:build] = output
19
19
  @fact_list[:kernel] = 'AIX'
20
20
 
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Aix
6
6
  class Partitions < BaseResolver
7
- @log = Facter::Log.new(self)
8
7
  @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
@@ -40,11 +39,9 @@ module Facter
40
39
  end
41
40
 
42
41
  def populate_from_lslv(name)
43
- stdout, stderr, _status = Open3.capture3("lslv -L #{name}")
44
- if stdout.empty?
45
- @log.debug(stderr)
46
- return
47
- end
42
+ stdout = Facter::Core::Execution.execute("lslv -L #{name}", logger: log)
43
+
44
+ return if stdout.empty?
48
45
 
49
46
  info_hash = extract_info(stdout)
50
47
  size_bytes = compute_size(info_hash)
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Aix
6
+ class Processors < BaseResolver
7
+ @semaphore = Mutex.new
8
+ @fact_list ||= {}
9
+ class << self
10
+ private
11
+
12
+ def post_resolve(fact_name)
13
+ @fact_list.fetch(fact_name) { query_pddv(fact_name) }
14
+ end
15
+
16
+ def query_pddv(fact_name)
17
+ @fact_list[:models] = []
18
+ @fact_list[:logical_count] = 0
19
+
20
+ odmquery = Facter::ODMQuery.new
21
+ odmquery.equals('class', 'processor')
22
+
23
+ result = odmquery.execute
24
+
25
+ return unless result
26
+
27
+ proc_names = retrieve_from_array(result.scan(/uniquetype\s=\s.*/), 1)
28
+
29
+ proc_names.each { |name| populate_from_cudv(name) }
30
+
31
+ @fact_list[fact_name]
32
+ end
33
+
34
+ def populate_from_cudv(name)
35
+ odmquery = Facter::ODMQuery.new
36
+ odmquery.equals('PdDvLn', name)
37
+
38
+ result = odmquery.execute
39
+
40
+ return unless result
41
+
42
+ names = retrieve_from_array(result.scan(/name\s=\s.*/), 1)
43
+
44
+ names.each { |elem| query_cuat(elem) }
45
+ end
46
+
47
+ def query_cuat(name)
48
+ odmquery = Facter::ODMQuery.new
49
+ odmquery.equals('name', name)
50
+
51
+ result = odmquery.execute
52
+
53
+ return unless result
54
+
55
+ type, frequency, smt_threads, smt_enabled = process(result)
56
+
57
+ @fact_list[:speed] ||= frequency if frequency
58
+
59
+ threads = smt_enabled ? smt_threads : 1
60
+
61
+ @fact_list[:logical_count] += threads
62
+ @fact_list[:models].concat([type] * threads)
63
+ end
64
+
65
+ def process(stdout)
66
+ type = retrieve_from_array(stdout.scan(/attribute\s=\s"type"\n\s+value\s=\s.*/), 2).first
67
+ frequency = retrieve_from_array(stdout.scan(/attribute\s=\s"frequency"\n\s+value\s=\s.*/), 2).first
68
+ smt_threads = retrieve_from_array(stdout.scan(/attribute\s=\s"smt_threads"\n\s+value\s=\s.*/), 2).first
69
+ smt_enabled = retrieve_from_array(stdout.scan(/attribute\s=\s"smt_enabled"\n\s+value\s=\s.*/), 2).first
70
+ [type, frequency.to_i, smt_threads.to_i, smt_enabled]
71
+ end
72
+
73
+ def retrieve_from_array(array, pos)
74
+ array.map { |elem| elem.split('=')[pos].strip.delete('"') }
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -12,6 +12,7 @@ module Facter
12
12
  def initialize
13
13
  @query = ''
14
14
  @conditions = []
15
+ @log = Facter::Log.new(self)
15
16
  end
16
17
 
17
18
  def equals(field, value)
@@ -29,7 +30,7 @@ module Facter
29
30
  REPOS.each do |repo|
30
31
  break if result && !result.empty?
31
32
 
32
- result, _stderr, _s = Open3.capture3("#{query} #{repo}")
33
+ result = Facter::Core::Execution.execute("#{query} #{repo}", logger: @log)
33
34
  end
34
35
  result
35
36
  end
@@ -14,7 +14,7 @@ module Facter
14
14
  end
15
15
 
16
16
  def read_augeas_version(fact_name)
17
- output, _status = Open3.capture2('augparse --version 2>&1')
17
+ output = Facter::Core::Execution.execute('augparse --version 2>&1', logger: log)
18
18
  @fact_list[:augeas_version] = Regexp.last_match(1) if output =~ /^augparse (\d+\.\d+\.\d+)/
19
19
  @fact_list[fact_name]
20
20
  end
@@ -18,7 +18,9 @@ module Facter
18
18
  end
19
19
 
20
20
  def read_eos_release(fact_name)
21
- output, _status = Open3.capture2('cat /etc/Eos-release')
21
+ output = Util::FileHelper.safe_read('/etc/Eos-release', nil)
22
+ return @fact_list[fact_name] = nil if output.nil?
23
+
22
24
  output_strings = output.split(' ')
23
25
 
24
26
  @fact_list[:name] = output_strings[0]
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Freebsd
6
+ class FreebsdVersion < BaseResolver
7
+ @semaphore = Mutex.new
8
+ @fact_list ||= {}
9
+
10
+ class << self
11
+ private
12
+
13
+ def post_resolve(fact_name)
14
+ @fact_list.fetch(fact_name) { freebsd_version_system_call(fact_name) }
15
+ end
16
+
17
+ def freebsd_version_system_call(fact_name)
18
+ output = Facter::Core::Execution.execute('/bin/freebsd-version -kru', logger: log)
19
+ return if output.empty?
20
+
21
+ build_fact_list(output)
22
+
23
+ @fact_list[fact_name]
24
+ end
25
+
26
+ def build_fact_list(output)
27
+ freebsd_version_results = output.split("\n")
28
+
29
+ @fact_list[:installed_kernel] = freebsd_version_results[0].strip
30
+ @fact_list[:running_kernel] = freebsd_version_results[1].strip
31
+ @fact_list[:installed_userland] = freebsd_version_results[2].strip
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Hostname < BaseResolver
6
- @log = Facter::Log.new(self)
7
6
  @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
@@ -14,7 +13,7 @@ module Facter
14
13
  end
15
14
 
16
15
  def retrieve_hostname(fact_name)
17
- output, _status = Open3.capture2('hostname')
16
+ output = Facter::Core::Execution.execute('hostname', logger: log)
18
17
 
19
18
  # get domain
20
19
  domain = read_domain(output)
@@ -14,8 +14,7 @@ module Facter
14
14
  end
15
15
 
16
16
  def read_lpar(fact_name)
17
- lpar_cmd = '/usr/bin/lparstat -i'
18
- output, _status = Open3.capture2(lpar_cmd)
17
+ output = Facter::Core::Execution.execute('/usr/bin/lparstat -i', logger: log)
19
18
  output.each_line do |line|
20
19
  populate_lpar_data(line.split(':').map(&:strip))
21
20
  end
@@ -10,7 +10,6 @@ module Facter
10
10
  # :codename
11
11
 
12
12
  @semaphore = Mutex.new
13
- @log = Facter::Log.new(self)
14
13
  @fact_list ||= {}
15
14
 
16
15
  class << self
@@ -27,14 +26,12 @@ module Facter
27
26
  end
28
27
 
29
28
  def lsb_release_installed?
30
- output, stderr, _status = Open3.capture3('which lsb_release')
31
- @log.debug(stderr) unless stderr.empty?
29
+ output = Facter::Core::Execution.execute('which lsb_release', logger: log)
32
30
  @fact_list[:lsb_release_installed] = !output.empty?
33
31
  end
34
32
 
35
33
  def read_lsb_release_file
36
- output, stderr, _status = Open3.capture3('lsb_release -a')
37
- @log.debug(stderr) unless stderr.empty?
34
+ output = Facter::Core::Execution.execute('lsb_release -a', logger: log)
38
35
  build_fact_list(output)
39
36
  end
40
37