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
@@ -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