facter 4.0.32 → 4.0.37

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 (346) hide show
  1. checksums.yaml +4 -4
  2. data/lib/facter/custom_facts/util/directory_loader.rb +12 -2
  3. data/lib/facter/custom_facts/util/fact.rb +4 -1
  4. data/lib/facter/fact_groups.conf +140 -1
  5. data/lib/facter/facts/aix/disks.rb +17 -2
  6. data/lib/facter/facts/aix/networking/scope6.rb +3 -1
  7. data/lib/facter/facts/aix/scope6_interfaces.rb +0 -2
  8. data/lib/facter/facts/aix/serialnumber.rb +20 -0
  9. data/lib/facter/facts/aix/ssh.rb +3 -1
  10. data/lib/facter/facts/aix/sshalgorithmkey.rb +17 -0
  11. data/lib/facter/facts/aix/sshfp_algorithm.rb +20 -0
  12. data/lib/facter/facts/bsd/load_averages.rb +1 -1
  13. data/lib/facter/facts/debian/os/distro/release.rb +6 -1
  14. data/lib/facter/facts/freebsd/augeas/version.rb +19 -0
  15. data/lib/facter/facts/freebsd/dmi/bios/release_date.rb +19 -0
  16. data/lib/facter/facts/freebsd/dmi/bios/vendor.rb +19 -0
  17. data/lib/facter/facts/freebsd/dmi/bios/version.rb +19 -0
  18. data/lib/facter/facts/freebsd/dmi/manufacturer.rb +17 -0
  19. data/lib/facter/facts/freebsd/dmi/product/name.rb +19 -0
  20. data/lib/facter/facts/freebsd/dmi/product/serial_number.rb +19 -0
  21. data/lib/facter/facts/freebsd/dmi/product/uuid.rb +19 -0
  22. data/lib/facter/facts/freebsd/facterversion.rb +14 -0
  23. data/lib/facter/facts/freebsd/identity/gid.rb +16 -0
  24. data/lib/facter/facts/{solaris/solaris_zones/current.rb → freebsd/identity/group.rb} +6 -6
  25. data/lib/facter/facts/freebsd/identity/privileged.rb +16 -0
  26. data/lib/facter/facts/freebsd/identity/uid.rb +16 -0
  27. data/lib/facter/facts/freebsd/identity/user.rb +17 -0
  28. data/lib/facter/facts/freebsd/kernel.rb +14 -0
  29. data/lib/facter/facts/freebsd/kernelrelease.rb +14 -0
  30. data/lib/facter/facts/freebsd/memory/swap/available.rb +21 -0
  31. data/lib/facter/facts/freebsd/memory/swap/available_bytes.rb +20 -0
  32. data/lib/facter/facts/freebsd/memory/swap/capacity.rb +18 -0
  33. data/lib/facter/facts/freebsd/memory/swap/encrypted.rb +19 -0
  34. data/lib/facter/facts/freebsd/memory/swap/total.rb +21 -0
  35. data/lib/facter/facts/freebsd/memory/swap/total_bytes.rb +20 -0
  36. data/lib/facter/facts/freebsd/memory/swap/used.rb +20 -0
  37. data/lib/facter/facts/freebsd/memory/swap/used_bytes.rb +18 -0
  38. data/lib/facter/facts/freebsd/memory/system/available.rb +21 -0
  39. data/lib/facter/facts/freebsd/memory/system/available_bytes.rb +20 -0
  40. data/lib/facter/facts/freebsd/memory/system/capacity.rb +18 -0
  41. data/lib/facter/facts/freebsd/memory/system/total.rb +21 -0
  42. data/lib/facter/facts/freebsd/memory/system/total_bytes.rb +20 -0
  43. data/lib/facter/facts/freebsd/memory/system/used.rb +20 -0
  44. data/lib/facter/facts/freebsd/memory/system/used_bytes.rb +18 -0
  45. data/lib/facter/facts/freebsd/mountpoints.rb +21 -0
  46. data/lib/facter/facts/freebsd/netmask6_interfaces.rb +20 -0
  47. data/lib/facter/facts/freebsd/netmask_interfaces.rb +20 -0
  48. data/lib/facter/facts/freebsd/network6_interfaces.rb +20 -0
  49. data/lib/facter/facts/freebsd/network_interfaces.rb +20 -0
  50. data/lib/facter/facts/freebsd/networking/dhcp.rb +17 -0
  51. data/lib/facter/facts/freebsd/networking/domain.rb +18 -0
  52. data/lib/facter/facts/freebsd/networking/fqdn.rb +18 -0
  53. data/lib/facter/facts/freebsd/networking/hostname.rb +18 -0
  54. data/lib/facter/facts/freebsd/networking/interfaces.rb +17 -0
  55. data/lib/facter/facts/freebsd/networking/ip.rb +18 -0
  56. data/lib/facter/facts/freebsd/networking/ip6.rb +18 -0
  57. data/lib/facter/facts/freebsd/networking/mac.rb +18 -0
  58. data/lib/facter/facts/freebsd/networking/mtu.rb +17 -0
  59. data/lib/facter/facts/freebsd/networking/netmask.rb +18 -0
  60. data/lib/facter/facts/freebsd/networking/netmask6.rb +18 -0
  61. data/lib/facter/facts/freebsd/networking/network.rb +18 -0
  62. data/lib/facter/facts/freebsd/networking/network6.rb +18 -0
  63. data/lib/facter/facts/freebsd/networking/primary.rb +17 -0
  64. data/lib/facter/facts/freebsd/networking/scope6.rb +17 -0
  65. data/lib/facter/facts/freebsd/os/architecture.rb +18 -0
  66. data/lib/facter/facts/freebsd/os/hardware.rb +18 -0
  67. data/lib/facter/facts/freebsd/os/name.rb +18 -0
  68. data/lib/facter/facts/{bsd/bsd_example_fact.rb → freebsd/path.rb} +5 -4
  69. data/lib/facter/facts/freebsd/processors/isa.rb +17 -0
  70. data/lib/facter/facts/freebsd/puppet_version.rb +15 -0
  71. data/lib/facter/facts/freebsd/ruby/platform.rb +18 -0
  72. data/lib/facter/facts/freebsd/ruby/sitedir.rb +18 -0
  73. data/lib/facter/facts/freebsd/ruby/version.rb +18 -0
  74. data/lib/facter/facts/freebsd/ssh.rb +26 -0
  75. data/lib/facter/facts/freebsd/sshalgorithmkey.rb +17 -0
  76. data/lib/facter/facts/freebsd/sshfp_algorithm.rb +20 -0
  77. data/lib/facter/facts/freebsd/system_uptime/days.rb +18 -0
  78. data/lib/facter/facts/freebsd/system_uptime/hours.rb +18 -0
  79. data/lib/facter/facts/freebsd/system_uptime/seconds.rb +18 -0
  80. data/lib/facter/facts/freebsd/system_uptime/uptime.rb +18 -0
  81. data/lib/facter/facts/freebsd/timezone.rb +15 -0
  82. data/lib/facter/facts/freebsd/zfs_featurenumbers.rb +14 -0
  83. data/lib/facter/facts/freebsd/zfs_version.rb +14 -0
  84. data/lib/facter/facts/freebsd/zpool_featureflags.rb +14 -0
  85. data/lib/facter/facts/freebsd/zpool_featurenumbers.rb +14 -0
  86. data/lib/facter/facts/freebsd/zpool_version.rb +14 -0
  87. data/lib/facter/facts/linux/disks.rb +20 -1
  88. data/lib/facter/facts/linux/dmi/board/asset_tag.rb +19 -0
  89. data/lib/facter/facts/linux/ec2_metadata.rb +5 -3
  90. data/lib/facter/facts/linux/ec2_userdata.rb +5 -3
  91. data/lib/facter/facts/linux/gce.rb +16 -0
  92. data/lib/facter/facts/linux/is_virtual.rb +1 -3
  93. data/lib/facter/facts/linux/mountpoints.rb +1 -1
  94. data/lib/facter/facts/linux/networking/scope6.rb +3 -1
  95. data/lib/facter/facts/linux/partitions.rb +2 -2
  96. data/lib/facter/facts/linux/processors/speed.rb +17 -0
  97. data/lib/facter/facts/linux/scope6_interfaces.rb +1 -2
  98. data/lib/facter/facts/linux/ssh.rb +19 -9
  99. data/lib/facter/facts/linux/sshfp_algorithm.rb +1 -1
  100. data/lib/facter/facts/linux/system_uptime/days.rb +7 -1
  101. data/lib/facter/facts/linux/system_uptime/hours.rb +7 -1
  102. data/lib/facter/facts/linux/system_uptime/seconds.rb +7 -1
  103. data/lib/facter/facts/linux/system_uptime/uptime.rb +7 -1
  104. data/lib/facter/facts/linux/virtual.rb +17 -0
  105. data/lib/facter/facts/linux/xen.rb +28 -0
  106. data/lib/facter/facts/macosx/dhcp_servers.rb +2 -2
  107. data/lib/facter/facts/macosx/interfaces.rb +1 -1
  108. data/lib/facter/facts/macosx/ipaddress6_interfaces.rb +1 -1
  109. data/lib/facter/facts/macosx/ipaddress_interfaces.rb +1 -1
  110. data/lib/facter/facts/macosx/macaddress_interfaces.rb +1 -1
  111. data/lib/facter/facts/macosx/mtu_interfaces.rb +1 -1
  112. data/lib/facter/facts/macosx/netmask6_interfaces.rb +1 -1
  113. data/lib/facter/facts/macosx/netmask_interfaces.rb +1 -1
  114. data/lib/facter/facts/macosx/network6_interfaces.rb +1 -1
  115. data/lib/facter/facts/macosx/network_interfaces.rb +1 -1
  116. data/lib/facter/facts/macosx/networking/dhcp.rb +1 -1
  117. data/lib/facter/facts/macosx/networking/interfaces.rb +1 -1
  118. data/lib/facter/facts/macosx/networking/ip.rb +1 -1
  119. data/lib/facter/facts/macosx/networking/ip6.rb +1 -1
  120. data/lib/facter/facts/macosx/networking/mac.rb +1 -1
  121. data/lib/facter/facts/macosx/networking/mtu.rb +1 -1
  122. data/lib/facter/facts/macosx/networking/netmask.rb +1 -1
  123. data/lib/facter/facts/macosx/networking/netmask6.rb +1 -1
  124. data/lib/facter/facts/macosx/networking/network.rb +1 -1
  125. data/lib/facter/facts/macosx/networking/network6.rb +1 -1
  126. data/lib/facter/facts/macosx/networking/primary.rb +1 -1
  127. data/lib/facter/facts/macosx/networking/scope6.rb +4 -2
  128. data/lib/facter/facts/macosx/scope6_interfaces.rb +1 -3
  129. data/lib/facter/facts/macosx/ssh.rb +19 -11
  130. data/lib/facter/facts/macosx/sshfp_algorithm.rb +1 -1
  131. data/lib/facter/facts/macosx/virtual.rb +1 -1
  132. data/lib/facter/facts/solaris/current_zone.rb +16 -0
  133. data/lib/facter/facts/solaris/disks.rb +33 -0
  134. data/lib/facter/facts/solaris/dmi/bios/release_date.rb +24 -0
  135. data/lib/facter/facts/solaris/dmi/bios/vendor.rb +24 -0
  136. data/lib/facter/facts/solaris/dmi/bios/version.rb +24 -0
  137. data/lib/facter/facts/solaris/dmi/chassis/asset_tag.rb +24 -0
  138. data/lib/facter/facts/solaris/dmi/chassis/type.rb +24 -0
  139. data/lib/facter/facts/solaris/dmi/manufacturer.rb +25 -0
  140. data/lib/facter/facts/solaris/dmi/product/name.rb +27 -0
  141. data/lib/facter/facts/solaris/dmi/product/serial_number.rb +27 -0
  142. data/lib/facter/facts/solaris/dmi/product/uuid.rb +24 -0
  143. data/lib/facter/facts/solaris/hypervisors/ldom.rb +24 -0
  144. data/lib/facter/facts/solaris/hypervisors/zone.rb +39 -0
  145. data/lib/facter/facts/solaris/is_virtual.rb +64 -0
  146. data/lib/facter/facts/solaris/kernelmajversion.rb +1 -1
  147. data/lib/facter/facts/solaris/ldom.rb +35 -0
  148. data/lib/facter/facts/solaris/load_averages.rb +14 -0
  149. data/lib/facter/facts/solaris/memory/swap/available.rb +22 -0
  150. data/lib/facter/facts/solaris/memory/swap/available_bytes.rb +22 -0
  151. data/lib/facter/facts/solaris/memory/swap/capacity.rb +20 -0
  152. data/lib/facter/facts/solaris/memory/swap/total.rb +22 -0
  153. data/lib/facter/facts/solaris/memory/swap/total_bytes.rb +22 -0
  154. data/lib/facter/facts/solaris/memory/swap/used.rb +21 -0
  155. data/lib/facter/facts/solaris/memory/swap/used_bytes.rb +19 -0
  156. data/lib/facter/facts/solaris/memory/system/available.rb +22 -0
  157. data/lib/facter/facts/solaris/memory/system/available_bytes.rb +22 -0
  158. data/lib/facter/facts/solaris/memory/system/capacity.rb +20 -0
  159. data/lib/facter/facts/solaris/memory/system/total.rb +22 -0
  160. data/lib/facter/facts/solaris/memory/system/total_bytes.rb +22 -0
  161. data/lib/facter/facts/solaris/memory/system/used.rb +21 -0
  162. data/lib/facter/facts/solaris/memory/system/used_bytes.rb +19 -0
  163. data/lib/facter/facts/solaris/mountpoints.rb +1 -1
  164. data/lib/facter/facts/solaris/os/release.rb +3 -3
  165. data/lib/facter/facts/solaris/ssh.rb +19 -9
  166. data/lib/facter/facts/solaris/sshalgorithmkey.rb +17 -0
  167. data/lib/facter/facts/solaris/sshfp_algorithm.rb +20 -0
  168. data/lib/facter/facts/solaris/virtual.rb +60 -0
  169. data/lib/facter/facts/solaris/zfs_featurenumbers.rb +1 -1
  170. data/lib/facter/facts/solaris/zfs_version.rb +1 -1
  171. data/lib/facter/facts/solaris/zones.rb +60 -0
  172. data/lib/facter/facts/solaris/zpool_featureflags.rb +1 -1
  173. data/lib/facter/facts/solaris/zpool_featurenumbers.rb +1 -1
  174. data/lib/facter/facts/solaris/zpool_version.rb +1 -1
  175. data/lib/facter/facts/ubuntu/lsbdistrelease.rb +23 -0
  176. data/lib/facter/facts/windows/dhcp_servers.rb +2 -2
  177. data/lib/facter/facts/windows/ec2_metadata.rb +5 -3
  178. data/lib/facter/facts/windows/ec2_userdata.rb +5 -3
  179. data/lib/facter/facts/windows/gce.rb +16 -0
  180. data/lib/facter/facts/windows/interfaces.rb +1 -1
  181. data/lib/facter/facts/windows/ipaddress6_interfaces.rb +1 -1
  182. data/lib/facter/facts/windows/ipaddress_interfaces.rb +1 -1
  183. data/lib/facter/facts/windows/macaddress_interfaces.rb +1 -1
  184. data/lib/facter/facts/windows/mtu_interfaces.rb +1 -1
  185. data/lib/facter/facts/windows/netmask6_interfaces.rb +1 -1
  186. data/lib/facter/facts/windows/netmask_interfaces.rb +1 -1
  187. data/lib/facter/facts/windows/network6_interfaces.rb +1 -1
  188. data/lib/facter/facts/windows/network_interfaces.rb +1 -1
  189. data/lib/facter/facts/windows/networking/dhcp.rb +1 -1
  190. data/lib/facter/facts/windows/networking/domain.rb +1 -1
  191. data/lib/facter/facts/windows/networking/fqdn.rb +1 -1
  192. data/lib/facter/facts/windows/networking/interfaces.rb +1 -1
  193. data/lib/facter/facts/windows/networking/ip.rb +1 -1
  194. data/lib/facter/facts/windows/networking/ip6.rb +1 -1
  195. data/lib/facter/facts/windows/networking/mac.rb +1 -1
  196. data/lib/facter/facts/windows/networking/mtu.rb +1 -1
  197. data/lib/facter/facts/windows/networking/netmask.rb +1 -1
  198. data/lib/facter/facts/windows/networking/netmask6.rb +1 -1
  199. data/lib/facter/facts/windows/networking/network.rb +1 -1
  200. data/lib/facter/facts/windows/networking/network6.rb +1 -1
  201. data/lib/facter/facts/windows/networking/primary.rb +1 -1
  202. data/lib/facter/facts/windows/networking/scope6.rb +4 -2
  203. data/lib/facter/facts/windows/scope6_interfaces.rb +1 -1
  204. data/lib/facter/facts/windows/sshalgorithmkey.rb +22 -0
  205. data/lib/facter/facts/windows/sshfp_algorithm.rb +25 -0
  206. data/lib/facter/facts_utils/facts_utils.rb +2 -0
  207. data/lib/facter/framework/benchmarking/timer.rb +23 -0
  208. data/lib/facter/framework/cli/cli.rb +21 -4
  209. data/lib/facter/framework/config/fact_groups.rb +13 -0
  210. data/lib/facter/framework/core/fact/internal/core_fact.rb +2 -0
  211. data/lib/facter/framework/core/fact/internal/internal_fact_manager.rb +11 -25
  212. data/lib/facter/framework/core/fact_filter.rb +13 -0
  213. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +24 -1
  214. data/lib/facter/framework/core/fact_loaders/internal_fact_loader.rb +7 -7
  215. data/lib/facter/framework/core/file_loader.rb +2 -0
  216. data/lib/facter/framework/core/options/option_store.rb +3 -1
  217. data/lib/facter/framework/core/session_cache.rb +1 -4
  218. data/lib/facter/framework/detector/os_detector.rb +5 -1
  219. data/lib/facter/framework/formatters/legacy_fact_formatter.rb +8 -1
  220. data/lib/facter/framework/formatters/yaml_fact_formatter.rb +1 -1
  221. data/lib/facter/os_hierarchy.json +6 -7
  222. data/lib/facter/resolvers/aio_agent_version.rb +0 -1
  223. data/lib/facter/resolvers/aix/architecture_resolver.rb +0 -1
  224. data/lib/facter/resolvers/aix/disks.rb +2 -3
  225. data/lib/facter/resolvers/aix/filesystem_resolver.rb +0 -1
  226. data/lib/facter/resolvers/aix/hardware_resolver.rb +0 -1
  227. data/lib/facter/resolvers/aix/load_averages_resolver.rb +0 -1
  228. data/lib/facter/resolvers/aix/memory.rb +2 -3
  229. data/lib/facter/resolvers/aix/mountpoints.rb +0 -1
  230. data/lib/facter/resolvers/aix/networking_resolver.rb +0 -1
  231. data/lib/facter/resolvers/aix/nim.rb +0 -1
  232. data/lib/facter/resolvers/aix/os_level_resolver.rb +0 -1
  233. data/lib/facter/resolvers/aix/partitions.rb +2 -3
  234. data/lib/facter/resolvers/aix/processors.rb +0 -1
  235. data/lib/facter/resolvers/aix/serialnumber.rb +36 -0
  236. data/lib/facter/resolvers/augeas_resolver.rb +0 -1
  237. data/lib/facter/resolvers/base_resolver.rb +10 -5
  238. data/lib/facter/resolvers/bsd/ffi/ffi_helper.rb +0 -10
  239. data/lib/facter/resolvers/bsd/processors.rb +0 -1
  240. data/lib/facter/resolvers/containers.rb +0 -1
  241. data/lib/facter/resolvers/debian_version.rb +0 -1
  242. data/lib/facter/resolvers/disk_resolver.rb +0 -1
  243. data/lib/facter/resolvers/dmi_decode.rb +0 -1
  244. data/lib/facter/resolvers/dmi_resolver.rb +4 -4
  245. data/lib/facter/resolvers/ec2.rb +4 -19
  246. data/lib/facter/resolvers/eos_release_resolver.rb +0 -1
  247. data/lib/facter/resolvers/facterversion_resolver.rb +0 -1
  248. data/lib/facter/resolvers/filesystems_resolver.rb +1 -2
  249. data/lib/facter/resolvers/fips_enabled_resolver.rb +0 -1
  250. data/lib/facter/resolvers/freebsd/dmi_resolver.rb +37 -0
  251. data/lib/facter/resolvers/freebsd/ffi/ffi_helper.rb +19 -0
  252. data/lib/facter/resolvers/freebsd/freebsd_version_resolver.rb +0 -1
  253. data/lib/facter/resolvers/freebsd/geom_resolver.rb +0 -1
  254. data/lib/facter/resolvers/freebsd/processors.rb +0 -1
  255. data/lib/facter/resolvers/freebsd/swap_memory_resolver.rb +38 -0
  256. data/lib/facter/resolvers/freebsd/system_memory_resolver.rb +40 -0
  257. data/lib/facter/resolvers/gce.rb +53 -0
  258. data/lib/facter/resolvers/hostname_resolver.rb +0 -1
  259. data/lib/facter/resolvers/identity_resolver.rb +0 -1
  260. data/lib/facter/resolvers/linux/docker_uptime.rb +44 -0
  261. data/lib/facter/resolvers/{load_averages_resolver.rb → linux/load_averages.rb} +0 -2
  262. data/lib/facter/resolvers/load_averages.rb +25 -0
  263. data/lib/facter/resolvers/lpar_resolver.rb +0 -1
  264. data/lib/facter/resolvers/lsb_release_resolver.rb +0 -1
  265. data/lib/facter/resolvers/lspci.rb +2 -1
  266. data/lib/facter/resolvers/macosx/dmi_resolver.rb +0 -1
  267. data/lib/facter/resolvers/macosx/filesystems_resolver.rb +1 -6
  268. data/lib/facter/resolvers/macosx/load_averages_resolver.rb +0 -1
  269. data/lib/facter/resolvers/macosx/mountpoints_resolver.rb +3 -3
  270. data/lib/facter/resolvers/macosx/processor_resolver.rb +0 -1
  271. data/lib/facter/resolvers/macosx/swap_memory_resolver.rb +0 -1
  272. data/lib/facter/resolvers/macosx/system_memory_resolver.rb +0 -1
  273. data/lib/facter/resolvers/macosx/system_profiler_resolver.rb +0 -1
  274. data/lib/facter/resolvers/memory_resolver.rb +13 -2
  275. data/lib/facter/resolvers/mountpoints_resolver.rb +41 -44
  276. data/lib/facter/resolvers/networking_linux_resolver.rb +11 -1
  277. data/lib/facter/resolvers/networking_resolver.rb +105 -0
  278. data/lib/facter/resolvers/open_vz.rb +0 -1
  279. data/lib/facter/resolvers/os_level_resolver.rb +0 -1
  280. data/lib/facter/resolvers/os_release_resolver.rb +1 -2
  281. data/lib/facter/resolvers/partitions.rb +37 -2
  282. data/lib/facter/resolvers/path_resolver.rb +0 -1
  283. data/lib/facter/resolvers/processors_resolver.rb +24 -3
  284. data/lib/facter/resolvers/puppet_version_resolver.rb +0 -1
  285. data/lib/facter/resolvers/redhat_release_resolver.rb +0 -1
  286. data/lib/facter/resolvers/ruby_resolver.rb +0 -1
  287. data/lib/facter/resolvers/selinux_resolver.rb +0 -1
  288. data/lib/facter/resolvers/solaris/disks.rb +50 -0
  289. data/lib/facter/resolvers/solaris/dmi.rb +56 -0
  290. data/lib/facter/resolvers/solaris/dmi_sparc.rb +46 -0
  291. data/lib/facter/resolvers/solaris/ffi/ffi.rb +5 -0
  292. data/lib/facter/resolvers/solaris/{filesystems_resolver.rb → filesystems.rb} +0 -1
  293. data/lib/facter/resolvers/solaris/{ipaddress_resolver.rb → ipaddress.rb} +0 -1
  294. data/lib/facter/resolvers/solaris/ldom.rb +69 -0
  295. data/lib/facter/resolvers/solaris/memory.rb +92 -0
  296. data/lib/facter/resolvers/solaris/{networking_resolver.rb → networking.rb} +2 -7
  297. data/lib/facter/resolvers/solaris/os_release.rb +43 -0
  298. data/lib/facter/resolvers/solaris/processors.rb +0 -1
  299. data/lib/facter/resolvers/solaris/zone.rb +50 -0
  300. data/lib/facter/resolvers/solaris/zone_name.rb +30 -0
  301. data/lib/facter/resolvers/ssh_resolver.rb +0 -1
  302. data/lib/facter/resolvers/suse_release_resolver.rb +0 -1
  303. data/lib/facter/resolvers/sw_vers_resolver.rb +0 -1
  304. data/lib/facter/resolvers/timezone_resolver.rb +0 -1
  305. data/lib/facter/resolvers/uname_resolver.rb +0 -1
  306. data/lib/facter/resolvers/uptime_resolver.rb +1 -28
  307. data/lib/facter/resolvers/utils/ffi/load_averages.rb +27 -0
  308. data/lib/facter/resolvers/utils/http.rb +68 -0
  309. data/lib/facter/resolvers/utils/networking.rb +2 -0
  310. data/lib/facter/resolvers/utils/uptime_helper.rb +32 -0
  311. data/lib/facter/resolvers/virt_what.rb +0 -1
  312. data/lib/facter/resolvers/vmware.rb +0 -1
  313. data/lib/facter/resolvers/windows/aio_agent_version.rb +0 -1
  314. data/lib/facter/resolvers/windows/dmi_bios_resolver.rb +0 -1
  315. data/lib/facter/resolvers/windows/dmi_computersystem_resolver.rb +0 -1
  316. data/lib/facter/resolvers/windows/ffi/ffi.rb +1 -1
  317. data/lib/facter/resolvers/windows/fips_resolver.rb +0 -1
  318. data/lib/facter/resolvers/windows/hardware_architecture_resolver.rb +0 -1
  319. data/lib/facter/resolvers/windows/identity_resolver.rb +0 -1
  320. data/lib/facter/resolvers/windows/kernel_resolver.rb +0 -1
  321. data/lib/facter/resolvers/windows/memory_resolver.rb +0 -1
  322. data/lib/facter/resolvers/windows/netkvm_resolver.rb +0 -1
  323. data/lib/facter/resolvers/windows/networking_resolver.rb +99 -100
  324. data/lib/facter/resolvers/windows/processors_resolver.rb +0 -1
  325. data/lib/facter/resolvers/windows/product_release_resolver.rb +0 -1
  326. data/lib/facter/resolvers/windows/ssh.rb +0 -1
  327. data/lib/facter/resolvers/windows/system32_resolver.rb +0 -1
  328. data/lib/facter/resolvers/windows/uptime_resolver.rb +0 -1
  329. data/lib/facter/resolvers/windows/virtualization_resolver.rb +0 -1
  330. data/lib/facter/resolvers/windows/win_os_description_resolver.rb +0 -1
  331. data/lib/facter/resolvers/wpar_resolver.rb +0 -1
  332. data/lib/facter/resolvers/xen.rb +28 -1
  333. data/lib/facter/resolvers/zfs.rb +31 -0
  334. data/lib/facter/resolvers/zpool.rb +33 -0
  335. data/lib/facter/version.rb +1 -1
  336. metadata +146 -18
  337. data/lib/facter/facts/freebsd/solaris_zones/current.rb +0 -15
  338. data/lib/facter/facts/freebsd/solaris_zones/zone.rb +0 -15
  339. data/lib/facter/facts/solaris/solaris_zones/zone.rb +0 -62
  340. data/lib/facter/resolvers/bsd/load_averages_resolver.rb +0 -26
  341. data/lib/facter/resolvers/macosx/networking_resolver.rb +0 -108
  342. data/lib/facter/resolvers/solaris/solaris_os_release_resolver.rb +0 -42
  343. data/lib/facter/resolvers/solaris/solaris_zone_name.rb +0 -28
  344. data/lib/facter/resolvers/solaris/zfs_resolver.rb +0 -34
  345. data/lib/facter/resolvers/solaris/zone_resolver.rb +0 -48
  346. data/lib/facter/resolvers/solaris/zpool_resolver.rb +0 -36
@@ -9,6 +9,8 @@ module Facter
9
9
  def create
10
10
  fact_class = @searched_fact.fact_class
11
11
 
12
+ return unless fact_class
13
+
12
14
  fact_class.new.call_the_resolver
13
15
  end
14
16
  end
@@ -6,9 +6,8 @@ module Facter
6
6
 
7
7
  def resolve_facts(searched_facts)
8
8
  internal_searched_facts = filter_internal_facts(searched_facts)
9
- threads = start_threads(internal_searched_facts)
10
- resolved_facts = join_threads(threads, internal_searched_facts)
11
9
 
10
+ resolved_facts = resolve(internal_searched_facts)
12
11
  nil_resolved_facts = resolve_nil_facts(searched_facts)
13
12
 
14
13
  resolved_facts.concat(nil_resolved_facts)
@@ -29,36 +28,23 @@ module Facter
29
28
  resolved_facts
30
29
  end
31
30
 
32
- def start_threads(searched_facts)
33
- threads = []
34
- # only resolve a fact once, even if multiple search facts depend on that fact
31
+ def resolve(searched_facts)
32
+ resolved_facts = []
33
+
35
34
  searched_facts
36
35
  .uniq { |searched_fact| searched_fact.fact_class.name }
37
36
  .each do |searched_fact|
38
- threads << Thread.new do
39
- begin
40
- fact = CoreFact.new(searched_fact)
41
- fact.create
42
- rescue StandardError => e
43
- @@log.log_exception(e)
44
- nil
45
- end
37
+ begin
38
+ fact = CoreFact.new(searched_fact)
39
+ fact_value = nil
40
+ Facter::Framework::Benchmarking::Timer.measure(searched_fact.name) { fact_value = fact.create }
41
+ resolved_facts << fact_value unless fact_value.nil?
42
+ rescue StandardError => e
43
+ @@log.log_exception(e)
46
44
  end
47
45
  end
48
46
 
49
- threads
50
- end
51
-
52
- def join_threads(threads, searched_facts)
53
- resolved_facts = []
54
-
55
- threads.each do |thread|
56
- thread.join
57
- resolved_facts << thread.value unless thread.value.nil?
58
- end
59
-
60
47
  resolved_facts.flatten!
61
-
62
48
  FactAugmenter.augment_resolved_facts(searched_facts, resolved_facts)
63
49
  end
64
50
  end
@@ -7,6 +7,8 @@ module Facter
7
7
  class FactFilter
8
8
  def filter_facts!(searched_facts)
9
9
  filter_legacy_facts!(searched_facts)
10
+ filter_blocked_legacy_facts!(searched_facts)
11
+
10
12
  searched_facts.each do |fact|
11
13
  fact.value = if fact.filter_tokens.any? && fact.value.respond_to?(:dig)
12
14
  fact.value.dig(*fact.filter_tokens)
@@ -18,6 +20,17 @@ module Facter
18
20
 
19
21
  private
20
22
 
23
+ # This will filter out the legacy facts that should be blocked. Because some legacy facts are just aliases
24
+ # to the core ones, even if they are blocked, facter will resolved them but they won't be displayed.
25
+
26
+ def filter_blocked_legacy_facts!(facts)
27
+ blocked_facts = Options[:blocked_facts] || []
28
+
29
+ facts.reject! do |fact|
30
+ blocked_facts.select { |blocked_fact| fact.name.match(/^#{blocked_fact}/) && fact.type == :legacy }.any?
31
+ end
32
+ end
33
+
21
34
  def filter_legacy_facts!(resolved_facts)
22
35
  return unless !Options[:show_legacy] && Options[:user_query].empty?
23
36
 
@@ -64,11 +64,34 @@ module Facter
64
64
  def block_facts(facts, options)
65
65
  blocked_facts = options[:blocked_facts] || []
66
66
 
67
+ reject_list_core, reject_list_legacy = construct_reject_lists(blocked_facts, facts)
68
+
67
69
  facts = facts.reject do |fact|
68
- blocked_facts.select { |blocked_fact| fact.name.match(/^#{blocked_fact}/) }.any?
70
+ reject_list_core.include?(fact) || reject_list_core.find do |fact_to_block|
71
+ fact_to_block.klass == fact.klass
72
+ end || reject_list_legacy.include?(fact)
69
73
  end
70
74
 
71
75
  facts
72
76
  end
77
+
78
+ def construct_reject_lists(blocked_facts, facts)
79
+ reject_list_core = []
80
+ reject_list_legacy = []
81
+
82
+ blocked_facts.each do |blocked|
83
+ facts.each do |fact|
84
+ next unless fact.name =~ /^#{blocked}/
85
+
86
+ if fact.type == :core
87
+ reject_list_core << fact
88
+ else
89
+ reject_list_legacy << fact
90
+ end
91
+ end
92
+ end
93
+
94
+ [reject_list_core, reject_list_legacy]
95
+ end
73
96
  end
74
97
  end
@@ -30,18 +30,18 @@ module Facter
30
30
  def load_for_os(operating_system)
31
31
  # select only classes
32
32
  classes = ClassDiscoverer.instance.discover_classes(operating_system)
33
-
34
33
  classes.each do |class_name|
35
34
  fact_name = class_name::FACT_NAME
36
-
37
35
  # if fact is already loaded, skip it
38
- next if @facts.any? { |fact| fact.name == fact_name }
39
-
40
- type = class_name.const_defined?('TYPE') ? class_name::TYPE : :core
41
- load_fact(fact_name, class_name, type)
36
+ unless @facts.any? { |fact| fact.name == fact_name }
37
+ type = class_name.const_defined?('TYPE') ? class_name::TYPE : :core
38
+ load_fact(fact_name, class_name, type)
39
+ end
42
40
  next unless class_name.const_defined?('ALIASES')
43
41
 
44
- [*class_name::ALIASES].each { |fact_alias| load_fact(fact_alias, class_name, :legacy) }
42
+ [*class_name::ALIASES].each do |fact_alias|
43
+ load_fact(fact_alias, class_name, :legacy) unless @facts.any? { |fact| fact.name == fact_alias }
44
+ end
45
45
  end
46
46
  end
47
47
 
@@ -39,6 +39,8 @@ load_dir(['resolvers'])
39
39
  load_dir(['facts_utils'])
40
40
  load_dir(%w[framework core])
41
41
  load_dir(['models'])
42
+ load_dir(%w[framework benchmarking])
43
+
42
44
  load_dir(%w[framework core fact_loaders])
43
45
  load_dir(%w[framework core fact internal])
44
46
  load_dir(%w[framework core fact external])
@@ -23,6 +23,7 @@ module Facter
23
23
  @block_list = {}
24
24
  @fact_groups = {}
25
25
  @color = false
26
+ @timing = false
26
27
 
27
28
  class << self
28
29
  attr_reader :debug, :verbose, :log_level, :show_legacy, :ruby,
@@ -31,7 +32,7 @@ module Facter
31
32
  attr_accessor :config, :user_query, :strict, :json, :haml, :external_facts,
32
33
  :cache, :yaml, :puppet, :ttls, :block, :cli, :config_file_custom_dir,
33
34
  :config_file_external_dir, :default_external_dir, :fact_groups,
34
- :block_list, :color, :trace
35
+ :block_list, :color, :trace, :timing
35
36
 
36
37
  attr_writer :external_dir
37
38
 
@@ -159,6 +160,7 @@ module Facter
159
160
  @blocked_facts = []
160
161
  @fact_groups = {}
161
162
  @block_list = {}
163
+ @timing = false
162
164
  end
163
165
 
164
166
  def fallback_external_dir
@@ -2,13 +2,10 @@
2
2
 
3
3
  module Facter
4
4
  class SessionCache
5
- @semaphore = Mutex.new
6
5
  @resolvers = []
7
6
 
8
7
  def self.subscribe(resolver)
9
- @semaphore.synchronize do
10
- @resolvers << resolver
11
- end
8
+ @resolvers << resolver
12
9
  end
13
10
 
14
11
  def self.invalidate_all_caches
@@ -44,7 +44,11 @@ class OsDetector
44
44
  hierarchy = @os_hierarchy.construct_hierarchy(identifier)
45
45
  if hierarchy.empty?
46
46
  @log.debug("Could not detect hierarchy using os identifier: #{identifier} , trying with family")
47
- hierarchy = @os_hierarchy.construct_hierarchy(detect_family)
47
+
48
+ detect_family.to_s.split.each do |family|
49
+ hierarchy = @os_hierarchy.construct_hierarchy(family)
50
+ return hierarchy unless hierarchy.empty?
51
+ end
48
52
  end
49
53
 
50
54
  if hierarchy.empty?
@@ -26,7 +26,8 @@ module Facter
26
26
  pretty_json = hash_to_facter_format(fact_collection)
27
27
 
28
28
  pretty_json = remove_enclosing_accolades(pretty_json)
29
- remove_comma_and_quotation(pretty_json)
29
+ pretty_json = remove_comma_and_quotation(pretty_json)
30
+ handle_newlines(pretty_json)
30
31
  end
31
32
 
32
33
  def format_for_multiple_user_queries(user_queries, resolved_facts)
@@ -38,6 +39,7 @@ module Facter
38
39
  pretty_json = hash_to_facter_format(facts_to_display)
39
40
  pretty_json = remove_enclosing_accolades(pretty_json)
40
41
  pretty_json = remove_comma_and_quotation(pretty_json)
42
+ pretty_json = handle_newlines(pretty_json)
41
43
 
42
44
  @log.debug('Remove quotes from value if value is a string')
43
45
  pretty_json.gsub(/^(\S*) => \"(.*)\"/, '\1 => \2')
@@ -84,6 +86,11 @@ module Facter
84
86
  pretty_fact_json.gsub(/^},/, '}')
85
87
  end
86
88
 
89
+ def handle_newlines(pretty_fact_json)
90
+ @log.debug('Convert newline characters to actual newlines')
91
+ pretty_fact_json.gsub('\n', "\n")
92
+ end
93
+
87
94
  def remove_comma_and_quotation(output)
88
95
  # quotation marks that come after \ are not removed
89
96
  @log.debug('Remove unnecessary comma and quotation marks on root facts')
@@ -56,7 +56,7 @@ module Facter
56
56
  return false if value[/^[0-9]+$/]
57
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
58
  return false if value[/[a-zA-Z]/]
59
- return false if value[/[0-9]+\.[0-9]+\./]
59
+ return false if value[/[0-9]+\.[0-9]+/]
60
60
 
61
61
  true
62
62
  end
@@ -12,7 +12,9 @@
12
12
  "Rhel": [
13
13
  "Fedora",
14
14
  "Amzn",
15
- "Centos"
15
+ "Centos",
16
+ "Ol",
17
+ "Scientific"
16
18
  ]
17
19
  },
18
20
  {
@@ -23,14 +25,11 @@
23
25
  ]
24
26
  },
25
27
  {
26
- "Solaris": [
27
- {
28
- "Bsd": [
29
- "Freebsd"
30
- ]
31
- }
28
+ "Bsd": [
29
+ "Freebsd"
32
30
  ]
33
31
  },
32
+ "Solaris",
34
33
  "Macosx",
35
34
  "Windows",
36
35
  "Aix"
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class AioAgentVersion < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class Architecture < BaseResolver
6
6
  # :architecture
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Aix
6
6
  class Disks < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -14,12 +13,12 @@ module Facter
14
13
  end
15
14
 
16
15
  def execute_lspv(fact_name)
17
- @fact_list[:disks] = {}
18
-
19
16
  result = Facter::Core::Execution.execute('lspv', logger: log)
20
17
 
21
18
  return if result.empty?
22
19
 
20
+ @fact_list[:disks] = {}
21
+
23
22
  result.each_line do |line|
24
23
  disk_name = line.split(' ')[0].strip
25
24
  size = find_size(disk_name)
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Aix
6
6
  class Filesystem < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class Hardware < BaseResolver
6
6
  # :hardware
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Aix
6
6
  class LoadAverages < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -5,7 +5,6 @@ module Facter
5
5
  module Aix
6
6
  class Memory < BaseResolver
7
7
  # :hardware
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
11
10
  private
@@ -18,11 +17,11 @@ module Facter
18
17
  result = Facter::Core::Execution.execute('svmon', logger: log)
19
18
  return if result.empty?
20
19
 
21
- @fact_list[:system] = @fact_list[:swap] = {}
22
-
23
20
  pagesize = call_pagesize.to_i
24
21
  return if pagesize.zero?
25
22
 
23
+ @fact_list[:system] = @fact_list[:swap] = {}
24
+
26
25
  result.each_line do |line|
27
26
  @fact_list[:system] = populate_system(line, pagesize) if line.include?('memory')
28
27
  @fact_list[:swap] = populate_swap(line, pagesize) if line =~ /pg\sspace/
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Aix
6
6
  class Mountpoints < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  BLOCK_SIZE = 512
10
9
 
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Aix
6
6
  class Networking < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Aix
6
6
  class Nim < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class OsLevel < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Aix
6
6
  class Partitions < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -14,8 +13,6 @@ module Facter
14
13
  end
15
14
 
16
15
  def query_cudv(fact_name)
17
- @fact_list[:partitions] = {}
18
-
19
16
  odmquery = Facter::ODMQuery.new
20
17
  odmquery.equals('PdDvLn', 'logical_volume/lvsubclass/lvtype')
21
18
 
@@ -23,6 +20,8 @@ module Facter
23
20
 
24
21
  return unless result
25
22
 
23
+ @fact_list[:partitions] = {}
24
+
26
25
  result.each_line do |line|
27
26
  next unless line.include?('name')
28
27
 
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Aix
6
6
  class Processors < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private