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
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Utils
6
+ module UptimeHelper
7
+ class << self
8
+ def create_uptime_hash(seconds)
9
+ results = {}
10
+ minutes = (seconds / 60) % 60
11
+
12
+ results[:seconds] = seconds
13
+ results[:hours] = seconds / (60 * 60)
14
+ results[:days] = results[:hours] / 24
15
+ results[:uptime] = build_uptime_text(results[:days], results[:hours], minutes)
16
+
17
+ results
18
+ end
19
+
20
+ def build_uptime_text(days, hours, minutes)
21
+ case days
22
+ when 0 then "#{hours}:#{format('%<minutes>02d', minutes: minutes)} hours"
23
+ when 1 then '1 day'
24
+ else
25
+ "#{days} days"
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class VirtWhat < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Vmware < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -5,7 +5,6 @@ module Facter
5
5
  module Windows
6
6
  class AioAgentVersion < BaseResolver
7
7
  REGISTRY_PATH = 'SOFTWARE\\Puppet Labs\\Puppet'
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
 
11
10
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class DMIBios < BaseResolver
6
6
  @log = Facter::Log.new(self)
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 DMIComputerSystem < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -30,7 +30,7 @@ module FFI
30
30
  def read_wide_string_with_length(char_length)
31
31
  # char_length is number of wide chars (typically excluding NULLs), *not* bytes
32
32
  str = get_bytes(0, char_length * 2).force_encoding('UTF-16LE')
33
- str.encode('UTF-8', str.encoding, {})
33
+ str.encode('UTF-8', str.encoding)
34
34
  end
35
35
 
36
36
  def read_wide_string_without_length
@@ -7,7 +7,6 @@ module Facter
7
7
  module Windows
8
8
  class Fips < BaseResolver
9
9
  # :fips_enabled
10
- @semaphore = Mutex.new
11
10
  @fact_list ||= {}
12
11
  class << self
13
12
  private
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class HardwareArchitecture < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
  class << self
9
8
  private
@@ -5,7 +5,6 @@ module Facter
5
5
  class Identity < BaseResolver
6
6
  NAME_SAM_COMPATIBLE = 2
7
7
  @log = Facter::Log.new(self)
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
 
11
10
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class Kernel < BaseResolver
6
6
  @log = Facter::Log.new(self)
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
  class Memory < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -5,7 +5,6 @@ require 'win32/registry'
5
5
  module Facter
6
6
  module Resolvers
7
7
  class NetKVM < BaseResolver
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
11
10
  private
@@ -1,134 +1,133 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ipaddr'
4
-
5
3
  module Facter
6
4
  module Resolvers
7
- class Networking < BaseResolver
8
- @log = Facter::Log.new(self)
9
- @semaphore = Mutex.new
10
- @fact_list ||= {}
11
- class << self
12
- private
13
-
14
- def post_resolve(fact_name)
15
- @fact_list.fetch(fact_name) { read_network_information(fact_name) }
16
- end
17
-
18
- def read_network_information(fact_name)
19
- require 'facter/resolvers/windows/ffi/networking_ffi'
5
+ module Windows
6
+ class Networking < BaseResolver
7
+ @log = Facter::Log.new(self)
8
+ @fact_list ||= {}
9
+ class << self
10
+ private
11
+
12
+ def post_resolve(fact_name)
13
+ @fact_list.fetch(fact_name) { read_network_information(fact_name) }
14
+ end
20
15
 
21
- size_ptr = FFI::MemoryPointer.new(NetworkingFFI::BUFFER_LENGTH)
22
- adapter_addresses = FFI::MemoryPointer.new(IpAdapterAddressesLh.size, NetworkingFFI::BUFFER_LENGTH)
23
- flags = NetworkingFFI::GAA_FLAG_SKIP_ANYCAST |
24
- NetworkingFFI::GAA_FLAG_SKIP_MULTICAST | NetworkingFFI::GAA_FLAG_SKIP_DNS_SERVER
16
+ def read_network_information(fact_name)
17
+ require 'facter/resolvers/windows/ffi/networking_ffi'
25
18
 
26
- return unless (adapter_addresses = get_adapter_addresses(size_ptr, adapter_addresses, flags))
19
+ size_ptr = FFI::MemoryPointer.new(NetworkingFFI::BUFFER_LENGTH)
20
+ adapter_addresses = FFI::MemoryPointer.new(IpAdapterAddressesLh.size, NetworkingFFI::BUFFER_LENGTH)
21
+ flags = NetworkingFFI::GAA_FLAG_SKIP_ANYCAST |
22
+ NetworkingFFI::GAA_FLAG_SKIP_MULTICAST | NetworkingFFI::GAA_FLAG_SKIP_DNS_SERVER
27
23
 
28
- iterate_list(adapter_addresses)
24
+ return unless (adapter_addresses = get_adapter_addresses(size_ptr, adapter_addresses, flags))
29
25
 
30
- ::Resolvers::Utils::Networking.expand_main_bindings(@fact_list)
26
+ iterate_list(adapter_addresses)
31
27
 
32
- @fact_list[fact_name]
33
- end
28
+ ::Resolvers::Utils::Networking.expand_main_bindings(@fact_list)
34
29
 
35
- def get_adapter_addresses(size_ptr, adapter_addresses, flags)
36
- error = nil
37
- 3.times do
38
- error = NetworkingFFI::GetAdaptersAddresses(NetworkingFFI::AF_UNSPEC, flags,
39
- FFI::Pointer::NULL, adapter_addresses, size_ptr)
40
- break if error == NetworkingFFI::ERROR_SUCCES
41
-
42
- if error == NetworkingFFI::ERROR_BUFFER_OVERFLOW
43
- adapter_addresses = FFI::MemoryPointer.new(IpAdapterAddressesLh.size, NetworkingFFI::BUFFER_LENGTH)
44
- else
45
- @log.debug 'Unable to retrieve networking facts!'
46
- return nil
47
- end
30
+ @fact_list[fact_name]
48
31
  end
49
- return nil unless error.zero?
50
32
 
51
- adapter_addresses
52
- end
33
+ def get_adapter_addresses(size_ptr, adapter_addresses, flags)
34
+ error = nil
35
+ 3.times do
36
+ error = NetworkingFFI::GetAdaptersAddresses(NetworkingFFI::AF_UNSPEC, flags,
37
+ FFI::Pointer::NULL, adapter_addresses, size_ptr)
38
+ break if error == NetworkingFFI::ERROR_SUCCES
39
+
40
+ if error == NetworkingFFI::ERROR_BUFFER_OVERFLOW
41
+ adapter_addresses = FFI::MemoryPointer.new(IpAdapterAddressesLh.size, NetworkingFFI::BUFFER_LENGTH)
42
+ else
43
+ @log.debug 'Unable to retrieve networking facts!'
44
+ return nil
45
+ end
46
+ end
47
+ return nil unless error.zero?
53
48
 
54
- def adapter_down?(adapter)
55
- adapter[:OperStatus] != NetworkingFFI::IF_OPER_STATUS_UP ||
56
- ![NetworkingFFI::IF_TYPE_ETHERNET_CSMACD, NetworkingFFI::IF_TYPE_IEEE80211].include?(adapter[:IfType])
57
- end
49
+ adapter_addresses
50
+ end
58
51
 
59
- def retrieve_dhcp_server(adapter)
60
- if !(adapter[:Flags] & NetworkingFFI::IP_ADAPTER_DHCP_ENABLED).zero? &&
61
- adapter[:Union][:Struct][:Length] >= IpAdapterAddressesLh.size
62
- NetworkUtils.address_to_string(adapter[:Dhcpv4Server])
52
+ def adapter_down?(adapter)
53
+ adapter[:OperStatus] != NetworkingFFI::IF_OPER_STATUS_UP ||
54
+ ![NetworkingFFI::IF_TYPE_ETHERNET_CSMACD, NetworkingFFI::IF_TYPE_IEEE80211].include?(adapter[:IfType])
63
55
  end
64
- end
65
56
 
66
- def iterate_list(adapter_addresses)
67
- net_interface = {}
68
- IpAdapterAddressesLh.read_list(adapter_addresses) do |adapter_address|
69
- if adapter_down?(adapter_address)
70
- adapter_address = IpAdapterAddressesLh.new(adapter_address[:Next])
71
- next
57
+ def retrieve_dhcp_server(adapter)
58
+ if !(adapter[:Flags] & NetworkingFFI::IP_ADAPTER_DHCP_ENABLED).zero? &&
59
+ adapter[:Union][:Struct][:Length] >= IpAdapterAddressesLh.size
60
+ NetworkUtils.address_to_string(adapter[:Dhcpv4Server])
72
61
  end
73
- @fact_list[:domain] ||= adapter_address[:DnsSuffix].read_wide_string_without_length
74
- name = adapter_address[:FriendlyName].read_wide_string_without_length
75
- net_interface[name] = build_interface_info(adapter_address, name)
76
62
  end
77
63
 
78
- @fact_list[:interfaces] = net_interface unless net_interface.empty?
79
- end
64
+ def iterate_list(adapter_addresses)
65
+ net_interface = {}
66
+ IpAdapterAddressesLh.read_list(adapter_addresses) do |adapter_address|
67
+ if adapter_down?(adapter_address)
68
+ adapter_address = IpAdapterAddressesLh.new(adapter_address[:Next])
69
+ next
70
+ end
71
+ @fact_list[:domain] ||= adapter_address[:DnsSuffix].read_wide_string_without_length
72
+ name = adapter_address[:FriendlyName].read_wide_string_without_length
73
+ net_interface[name] = build_interface_info(adapter_address, name)
74
+ end
80
75
 
81
- def build_interface_info(adapter_address, name)
82
- hash = {}
76
+ @fact_list[:interfaces] = net_interface unless net_interface.empty?
77
+ end
83
78
 
84
- hash[:dhcp] = retrieve_dhcp_server(adapter_address)
85
- hash[:mtu] = adapter_address[:Mtu]
79
+ def build_interface_info(adapter_address, name)
80
+ hash = {}
86
81
 
87
- bindings = find_ip_addresses(adapter_address[:FirstUnicastAddress], name)
88
- hash[:bindings] = bindings[:ipv4] unless bindings[:ipv4].empty?
89
- hash[:bindings6] = bindings[:ipv6] unless bindings[:ipv6].empty?
90
- hash[:mac] = NetworkUtils.find_mac_address(adapter_address)
91
- hash
92
- end
82
+ hash[:dhcp] = retrieve_dhcp_server(adapter_address)
83
+ hash[:mtu] = adapter_address[:Mtu]
93
84
 
94
- def find_ip_addresses(unicast_addresses, name)
95
- bindings = {}
96
- bindings[:ipv6] = []
97
- bindings[:ipv4] = []
85
+ bindings = find_ip_addresses(adapter_address[:FirstUnicastAddress], name)
86
+ hash[:bindings] = bindings[:ipv4] unless bindings[:ipv4].empty?
87
+ hash[:bindings6] = bindings[:ipv6] unless bindings[:ipv6].empty?
88
+ hash[:mac] = NetworkUtils.find_mac_address(adapter_address)
89
+ hash
90
+ end
98
91
 
99
- IpAdapterUnicastAddressLH.read_list(unicast_addresses) do |unicast|
100
- addr = NetworkUtils.address_to_string(unicast[:Address])
101
- unless addr
102
- unicast = IpAdapterUnicastAddressLH.new(unicast[:Next])
103
- next
92
+ def find_ip_addresses(unicast_addresses, name)
93
+ bindings = {}
94
+ bindings[:ipv6] = []
95
+ bindings[:ipv4] = []
96
+
97
+ IpAdapterUnicastAddressLH.read_list(unicast_addresses) do |unicast|
98
+ addr = NetworkUtils.address_to_string(unicast[:Address])
99
+ unless addr
100
+ unicast = IpAdapterUnicastAddressLH.new(unicast[:Next])
101
+ next
102
+ end
103
+
104
+ sock_addr = SockAddr.new(unicast[:Address][:lpSockaddr])
105
+ add_ip_data(addr, unicast, sock_addr, bindings)
106
+ find_primary_interface(sock_addr, name, addr)
104
107
  end
105
-
106
- sock_addr = SockAddr.new(unicast[:Address][:lpSockaddr])
107
- add_ip_data(addr, unicast, sock_addr, bindings)
108
- find_primary_interface(sock_addr, name, addr)
108
+ bindings
109
109
  end
110
- bindings
111
- end
112
110
 
113
- def add_ip_data(addr, unicast, sock_addr, bindings)
114
- result = find_bindings(sock_addr, unicast, addr)
115
- return unless result
111
+ def add_ip_data(addr, unicast, sock_addr, bindings)
112
+ result = find_bindings(sock_addr, unicast, addr)
113
+ return unless result
116
114
 
117
- bindings[:ipv6] << result if sock_addr[:sa_family] == NetworkingFFI::AF_INET6
118
- bindings[:ipv4] << result if sock_addr[:sa_family] == NetworkingFFI::AF_INET
119
- end
115
+ bindings[:ipv6] << result if sock_addr[:sa_family] == NetworkingFFI::AF_INET6
116
+ bindings[:ipv4] << result if sock_addr[:sa_family] == NetworkingFFI::AF_INET
117
+ end
120
118
 
121
- def find_bindings(sock_addr, unicast, addr)
122
- return unless [NetworkingFFI::AF_INET, NetworkingFFI::AF_INET6].include?(sock_addr[:sa_family])
119
+ def find_bindings(sock_addr, unicast, addr)
120
+ return unless [NetworkingFFI::AF_INET, NetworkingFFI::AF_INET6].include?(sock_addr[:sa_family])
123
121
 
124
- ::Resolvers::Utils::Networking.build_binding(addr, unicast[:OnLinkPrefixLength])
125
- end
122
+ ::Resolvers::Utils::Networking.build_binding(addr, unicast[:OnLinkPrefixLength])
123
+ end
126
124
 
127
- def find_primary_interface(sock_addr, name, addr)
128
- if !@fact_list[:primary_interface] &&
129
- ([NetworkingFFI::AF_INET, NetworkingFFI::AF_INET6].include?(sock_addr[:sa_family]) &&
130
- !::Resolvers::Utils::Networking.ignored_ip_address(addr))
131
- @fact_list[:primary_interface] = name.to_s
125
+ def find_primary_interface(sock_addr, name, addr)
126
+ if !@fact_list[:primary_interface] &&
127
+ ([NetworkingFFI::AF_INET, NetworkingFFI::AF_INET6].include?(sock_addr[:sa_family]) &&
128
+ !::Resolvers::Utils::Networking.ignored_ip_address(addr))
129
+ @fact_list[:primary_interface] = name.to_s
130
+ end
132
131
  end
133
132
  end
134
133
  end
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Processors < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list = {}
8
7
  class << self
9
8
  # Count
@@ -5,7 +5,6 @@ require 'win32/registry'
5
5
  module Facter
6
6
  module Resolvers
7
7
  class ProductRelease < BaseResolver
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
11
10
  private
@@ -5,7 +5,6 @@ module Facter
5
5
  module Windows
6
6
  class Ssh < BaseResolver
7
7
  @log = Facter::Log.new(self)
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  FILE_NAMES = %w[ssh_host_rsa_key.pub ssh_host_dsa_key.pub
11
10
  ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub].freeze
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class System32 < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -7,7 +7,6 @@ module Facter
7
7
  module Windows
8
8
  class Uptime < BaseResolver
9
9
  @log = Facter::Log.new(self)
10
- @semaphore = Mutex.new
11
10
  @fact_list ||= {}
12
11
 
13
12
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class Virtualization < BaseResolver
6
6
  @log = Facter::Log.new(self)
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 WinOsDescription < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Wpar < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -3,10 +3,11 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Xen < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  XEN_PATH = '/proc/xen/capabilities'
9
+ XEN_TOOLSTACK = '/usr/lib/xen-common/bin/xen-toolstack'
10
+ XEN_COMMANDS = ['/usr/sbin/xl', '/usr/sbin/xm'].freeze
10
11
 
11
12
  class << self
12
13
  private
@@ -18,6 +19,7 @@ module Facter
18
19
  def detect_xen(fact_name)
19
20
  @fact_list[:vm] = detect_xen_type
20
21
  @fact_list[:privileged] = privileged?(@fact_list[:vm])
22
+ @fact_list[:domains] = detect_domains
21
23
 
22
24
  @fact_list[fact_name]
23
25
  end
@@ -33,6 +35,31 @@ module Facter
33
35
  content = Util::FileHelper.safe_read(XEN_PATH, nil)
34
36
  content&.strip == 'control_d' || xen_type == 'xen0'
35
37
  end
38
+
39
+ def detect_domains
40
+ domains = []
41
+ xen_command = find_command
42
+ return unless xen_command
43
+
44
+ output = Facter::Core::Execution.execute("#{xen_command} list", logger: log)
45
+ return if output.empty?
46
+
47
+ output.each_line do |line|
48
+ next if line =~ /Domain-0|Name/
49
+
50
+ domain = line.match(/^([^\s]*)\s/)
51
+ domain = domain&.captures&.first
52
+ domains << domain if domain
53
+ end
54
+
55
+ domains
56
+ end
57
+
58
+ def find_command
59
+ return XEN_TOOLSTACK if File.exist?(XEN_TOOLSTACK)
60
+
61
+ XEN_COMMANDS.each { |command| return command if File.exist?(command) }
62
+ end
36
63
  end
37
64
  end
38
65
  end