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,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Solaris
6
+ class Memory < BaseResolver
7
+ BLOCKSIZE = 512
8
+ # :system
9
+ # :swap
10
+ @fact_list ||= {}
11
+ class << self
12
+ private
13
+
14
+ def post_resolve(fact_name)
15
+ @fact_list.fetch(fact_name) { calculate_memory(fact_name) }
16
+ end
17
+
18
+ def calculate_memory(fact_name)
19
+ @fact_list = { system: sys, swap: swap }
20
+
21
+ @fact_list[fact_name]
22
+ end
23
+
24
+ def sys
25
+ sys = {}
26
+ output = Facter::Core::Execution.execute('/usr/bin/kstat -m unix -n system_pages', logger: log).strip
27
+ total, free = parse_sys_output(output)
28
+
29
+ return unless total || free
30
+
31
+ sys[:total_bytes] = total
32
+ sys[:available_bytes] = free
33
+ sys[:used_bytes] = total - free
34
+ sys[:capacity] = FilesystemHelper.compute_capacity(total - free, total)
35
+
36
+ sys
37
+ end
38
+
39
+ def swap
40
+ swap_hash = {}
41
+ output = Facter::Core::Execution.execute('/usr/sbin/swap -l', logger: log).strip
42
+ total, free = parse_swap_output(output)
43
+
44
+ swap_hash[:total_bytes] = total
45
+ swap_hash[:available_bytes] = free
46
+ swap_hash[:used_bytes] = total - free
47
+ swap_hash[:capacity] = FilesystemHelper.compute_capacity(total - free, total)
48
+
49
+ swap_hash if total != 0
50
+ end
51
+
52
+ def parse_sys_output(output)
53
+ kstats = output.scan(/(physmem|pagesfree)\s+(\d+)/)
54
+ kstats = kstats.to_h
55
+ return unless kstats['physmem'] || kstats['pagesfree']
56
+ return unless pagesize != 0
57
+
58
+ total = kstats['physmem'].to_i * pagesize
59
+ free = kstats['pagesfree'].to_i * pagesize
60
+
61
+ [total, free]
62
+ end
63
+
64
+ def parse_swap_output(output)
65
+ total = 0
66
+ free = 0
67
+
68
+ output.each_line do |line|
69
+ swap_sizes = line.match(/(\d+)\s+(\d+)$/)
70
+ next if swap_sizes.nil?
71
+
72
+ total += swap_sizes[1].to_i
73
+ free += swap_sizes[2].to_i
74
+ end
75
+ total *= BLOCKSIZE
76
+ free *= BLOCKSIZE
77
+
78
+ [total, free]
79
+ end
80
+
81
+ def pagesize
82
+ unless @fact_list[:pagesize]
83
+ @fact_list[:pagesize] = Facter::Core::Execution.execute('pagesize', logger: log).strip.to_i
84
+ log.debug("Pagesize: #{@fact_list[:pagesize]}")
85
+ end
86
+ @fact_list[:pagesize]
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -8,15 +8,9 @@ module Facter
8
8
  module Solaris
9
9
  class Networking < BaseResolver
10
10
  @log = Facter::Log.new(self)
11
- @semaphore = Mutex.new
12
11
  @fact_list ||= {}
13
12
  @interfaces = {}
14
13
 
15
- BINDINGS_KEY = {
16
- FFI::AF_INET => :bindings,
17
- FFI::AF_INET6 => :bindings6
18
- }.freeze
19
-
20
14
  class << self
21
15
  private
22
16
 
@@ -141,7 +135,8 @@ module Facter
141
135
  end
142
136
 
143
137
  def add_dhcp(interface_name)
144
- result = Facter::Core::Execution.execute("dhcpinfo -i #{interface_name} ServerID", logger: log)
138
+ dhcpinfo_command = Facter::Core::Execution.which('dhcpinfo') || '/sbin/dhcpinfo'
139
+ result = Facter::Core::Execution.execute("#{dhcpinfo_command} -i #{interface_name} ServerID", logger: log)
145
140
 
146
141
  @interfaces[interface_name][:dhcp] = result.chomp
147
142
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Solaris
6
+ class OsRelease < BaseResolver
7
+ @fact_list ||= {}
8
+ @os_version_regex_patterns = ['Solaris \d+ \d+/\d+ s(\d+)[sx]?_u(\d+)wos_',
9
+ 'Solaris (\d+)[.](\d+)', 'Solaris (\d+)']
10
+ class << self
11
+ private
12
+
13
+ def post_resolve(fact_name)
14
+ @fact_list.fetch(fact_name) { build_release_facts(fact_name) }
15
+ end
16
+
17
+ def build_release_facts(fact_name)
18
+ result = Util::FileHelper.safe_read('/etc/release', nil)
19
+ return @fact_list[fact_name] = nil if result.nil?
20
+
21
+ @os_version_regex_patterns.each do |os_version_regex|
22
+ major, minor = search_for_os_version(/#{os_version_regex}/, result)
23
+ next unless major || minor
24
+
25
+ @fact_list[:major] = major
26
+ @fact_list[:minor] = minor
27
+ @fact_list[:full] = major == '10' ? major + '_u' + minor : major + '.' + minor
28
+ break
29
+ end
30
+ @fact_list[fact_name]
31
+ end
32
+
33
+ def search_for_os_version(regex_pattern, text)
34
+ result = text.match(regex_pattern)
35
+ major, minor = result.captures if result
36
+ minor = regex_pattern == /Solaris (\d+)/ ? '0' : minor
37
+ return [major, minor] if major && minor
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Solaris
6
6
  class Processors < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Solaris
6
+ class Zone < BaseResolver
7
+ @fact_list ||= {}
8
+
9
+ class << self
10
+ private
11
+
12
+ def post_resolve(fact_name)
13
+ @fact_list.fetch(fact_name) { build_zone_fact(fact_name) }
14
+ end
15
+
16
+ def build_zone_fact(fact_name)
17
+ command = '/usr/sbin/zoneadm list -cp'
18
+ zone_adm_output = Facter::Core::Execution.execute(command, logger: log)
19
+
20
+ if zone_adm_output.empty?
21
+ log.debug("Command #{command} returned an empty result")
22
+ return
23
+ end
24
+ @fact_list[:zone] = create_zone_facts(zone_adm_output)
25
+
26
+ @fact_list[fact_name]
27
+ end
28
+
29
+ def create_zone_facts(zones_result)
30
+ zones_fact = []
31
+ zones_result.each_line do |zone_line|
32
+ id, name, status, path, uuid, brand, ip_type = zone_line.split(':')
33
+ zones_fact << {
34
+ brand: brand,
35
+ id: id,
36
+ iptype: ip_type.chomp,
37
+ name: name,
38
+ uuid: uuid,
39
+ status: status,
40
+ path: path
41
+
42
+ }
43
+ end
44
+ zones_fact
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Solaris
6
+ class ZoneName < BaseResolver
7
+ @fact_list ||= {}
8
+
9
+ class << self
10
+ private
11
+
12
+ def post_resolve(fact_name)
13
+ @fact_list.fetch(fact_name) { build_current_zone_name_fact(fact_name) }
14
+ end
15
+
16
+ def build_current_zone_name_fact(fact_name)
17
+ zone_name_output = Facter::Core::Execution.execute('/bin/zonename', logger: log)
18
+
19
+ if zone_name_output.empty?
20
+ log.debug("Command #{command} returned an empty result")
21
+ return
22
+ end
23
+ @fact_list[:current_zone_name] = zone_name_output.chomp
24
+ @fact_list[fact_name]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class SshResolver < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  @file_names = %w[ssh_host_rsa_key.pub ssh_host_dsa_key.pub ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub]
10
9
  @file_paths = %w[/etc/ssh /usr/local/etc/ssh /etc /usr/local/etc /etc/opt/ssh]
@@ -7,7 +7,6 @@ module Facter
7
7
  # :version
8
8
  # :codename
9
9
 
10
- @semaphore = Mutex.new
11
10
  @fact_list ||= {}
12
11
 
13
12
  class << self
@@ -7,7 +7,6 @@ module Facter
7
7
  # :productversion
8
8
  # :buildversion
9
9
  #
10
- @semaphore = Mutex.new
11
10
  @fact_list ||= {}
12
11
 
13
12
  class << self
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Timezone < 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 Uname < 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 Uptime < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -23,33 +22,7 @@ module Facter
23
22
  def build_fact_list(seconds)
24
23
  return @fact_list[:uptime] = 'unknown' unless seconds
25
24
 
26
- uptime_hash = create_uptime_hash(seconds)
27
-
28
- @fact_list[:seconds] = uptime_hash[:seconds]
29
- @fact_list[:hours] = uptime_hash[:hours]
30
- @fact_list[:days] = uptime_hash[:days]
31
- @fact_list[:uptime] = uptime_hash[:uptime]
32
- end
33
-
34
- def create_uptime_hash(seconds)
35
- results = {}
36
- minutes = (seconds / 60) % 60
37
-
38
- results[:seconds] = seconds
39
- results[:hours] = seconds / (60 * 60)
40
- results[:days] = results[:hours] / 24
41
- results[:uptime] = build_uptime_text(results[:days], results[:hours], minutes)
42
-
43
- results
44
- end
45
-
46
- def build_uptime_text(days, hours, minutes)
47
- case days
48
- when 0 then "#{hours}:#{format('%<minutes>02d', minutes: minutes)} hours"
49
- when 1 then '1 day'
50
- else
51
- "#{days} days"
52
- end
25
+ @fact_list = Utils::UptimeHelper.create_uptime_hash(seconds)
53
26
  end
54
27
  end
55
28
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ffi'
4
+
5
+ module Facter
6
+ module Resolvers
7
+ module Utils
8
+ module Ffi
9
+ module LoadAverages
10
+ extend ::FFI::Library
11
+ ffi_lib ::FFI::Library::LIBC
12
+
13
+ attach_function :getloadavg, %i[pointer int], :int
14
+
15
+ def self.read_load_averages
16
+ raw_loadavg = ::FFI::MemoryPointer.new(:double, 3)
17
+
18
+ res = LoadAverages.getloadavg(raw_loadavg, 3)
19
+ return unless res == 3
20
+
21
+ raw_loadavg.read_array_of_double(res)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Utils
6
+ module Http
7
+ @log = Facter::Log.new(self)
8
+
9
+ class << self
10
+ CONNECTION_TIMEOUT = 0.6
11
+ SESSION_TIMEOUT = 5
12
+
13
+ # Makes a GET http request and returns it's response.
14
+ #
15
+ # Params:
16
+ # url: String which contains the address to which the request will be made
17
+ # headers: Hash which contains the headers you need to add to your request.
18
+ # Default headers is an empty hash
19
+ # Example: { "Accept": 'application/json' }
20
+ # timeouts: Hash that includes the values for the session and connection timeouts.
21
+ # Example: { session: 2.4. connection: 5 }
22
+ #
23
+ # Return value:
24
+ # is a string with the response body if the response code is 200.
25
+ # If the response code is not 200, an empty string is returned.
26
+ def get_request(url, headers = {}, timeouts = {})
27
+ make_request(url, headers, timeouts, 'GET')
28
+ end
29
+
30
+ private
31
+
32
+ def make_request(url, headers, timeouts, request_type)
33
+ require 'net/http'
34
+
35
+ uri = URI.parse(url)
36
+ http = http_obj(uri, timeouts)
37
+ request = request_obj(headers, uri, request_type)
38
+
39
+ # Make the request
40
+ resp = http.request(request)
41
+ response_code_valid?(resp.code.to_i) ? resp.body : ''
42
+ rescue StandardError => e
43
+ @log.debug("Trying to connect to #{url} but got: #{e.message}")
44
+ ''
45
+ end
46
+
47
+ def http_obj(parsed_url, timeouts)
48
+ http = Net::HTTP.new(parsed_url.host)
49
+ http.read_timeout = timeouts[:session] || SESSION_TIMEOUT
50
+ http.open_timeout = timeouts[:connection] || CONNECTION_TIMEOUT
51
+ http
52
+ end
53
+
54
+ def request_obj(headers, parsed_url, request_type)
55
+ return Net::HTTP::Get.new(parsed_url.request_uri, headers) if request_type == 'GET'
56
+
57
+ raise StandardError("Unknown http request type: #{request_type}")
58
+ end
59
+
60
+ def response_code_valid?(http_code)
61
+ @log.debug("Request failed with error code #{http_code}") unless http_code.equal?(200)
62
+ http_code.equal?(200)
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'ipaddr'
4
+
3
5
  module Resolvers
4
6
  module Utils
5
7
  module Networking