facter 4.0.34 → 4.0.39

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 (312) hide show
  1. checksums.yaml +4 -4
  2. data/lib/facter.rb +111 -11
  3. data/lib/facter/custom_facts/core/execution/base.rb +36 -6
  4. data/lib/facter/custom_facts/util/directory_loader.rb +12 -2
  5. data/lib/facter/custom_facts/util/fact.rb +4 -1
  6. data/lib/facter/fact_groups.conf +140 -1
  7. data/lib/facter/facts/aix/disks.rb +17 -2
  8. data/lib/facter/facts/aix/kernel.rb +1 -1
  9. data/lib/facter/facts/aix/kernelmajversion.rb +1 -1
  10. data/lib/facter/facts/aix/kernelrelease.rb +1 -1
  11. data/lib/facter/facts/aix/kernelversion.rb +1 -1
  12. data/lib/facter/facts/aix/networking/scope6.rb +3 -1
  13. data/lib/facter/facts/aix/os/release.rb +1 -1
  14. data/lib/facter/facts/aix/scope6_interfaces.rb +0 -2
  15. data/lib/facter/facts/aix/serialnumber.rb +20 -0
  16. data/lib/facter/facts/aix/ssh.rb +3 -1
  17. data/lib/facter/facts/aix/sshalgorithmkey.rb +17 -0
  18. data/lib/facter/facts/aix/sshfp_algorithm.rb +20 -0
  19. data/lib/facter/facts/debian/os/distro/release.rb +6 -1
  20. data/lib/facter/facts/freebsd/augeas/version.rb +19 -0
  21. data/lib/facter/facts/freebsd/facterversion.rb +14 -0
  22. data/lib/facter/facts/freebsd/identity/gid.rb +16 -0
  23. data/lib/facter/facts/{solaris/solaris_zones/current.rb → freebsd/identity/group.rb} +6 -6
  24. data/lib/facter/facts/freebsd/identity/privileged.rb +16 -0
  25. data/lib/facter/facts/freebsd/identity/uid.rb +16 -0
  26. data/lib/facter/facts/freebsd/identity/user.rb +17 -0
  27. data/lib/facter/facts/freebsd/kernel.rb +14 -0
  28. data/lib/facter/facts/freebsd/kernelrelease.rb +14 -0
  29. data/lib/facter/facts/freebsd/mountpoints.rb +21 -0
  30. data/lib/facter/facts/freebsd/netmask6_interfaces.rb +20 -0
  31. data/lib/facter/facts/freebsd/netmask_interfaces.rb +20 -0
  32. data/lib/facter/facts/freebsd/network6_interfaces.rb +20 -0
  33. data/lib/facter/facts/freebsd/network_interfaces.rb +20 -0
  34. data/lib/facter/facts/freebsd/networking/dhcp.rb +17 -0
  35. data/lib/facter/facts/freebsd/networking/domain.rb +18 -0
  36. data/lib/facter/facts/freebsd/networking/fqdn.rb +18 -0
  37. data/lib/facter/facts/freebsd/networking/hostname.rb +18 -0
  38. data/lib/facter/facts/freebsd/networking/interfaces.rb +17 -0
  39. data/lib/facter/facts/freebsd/networking/ip.rb +18 -0
  40. data/lib/facter/facts/freebsd/networking/ip6.rb +18 -0
  41. data/lib/facter/facts/freebsd/networking/mac.rb +18 -0
  42. data/lib/facter/facts/freebsd/networking/mtu.rb +17 -0
  43. data/lib/facter/facts/freebsd/networking/netmask.rb +18 -0
  44. data/lib/facter/facts/freebsd/networking/netmask6.rb +18 -0
  45. data/lib/facter/facts/freebsd/networking/network.rb +18 -0
  46. data/lib/facter/facts/freebsd/networking/network6.rb +18 -0
  47. data/lib/facter/facts/freebsd/networking/primary.rb +17 -0
  48. data/lib/facter/facts/freebsd/networking/scope6.rb +17 -0
  49. data/lib/facter/facts/freebsd/os/architecture.rb +18 -0
  50. data/lib/facter/facts/freebsd/os/hardware.rb +18 -0
  51. data/lib/facter/facts/freebsd/os/name.rb +18 -0
  52. data/lib/facter/facts/{bsd/bsd_example_fact.rb → freebsd/path.rb} +5 -4
  53. data/lib/facter/facts/freebsd/processors/isa.rb +17 -0
  54. data/lib/facter/facts/freebsd/puppet_version.rb +15 -0
  55. data/lib/facter/facts/freebsd/ruby/platform.rb +18 -0
  56. data/lib/facter/facts/freebsd/ruby/sitedir.rb +18 -0
  57. data/lib/facter/facts/freebsd/ruby/version.rb +18 -0
  58. data/lib/facter/facts/freebsd/ssh.rb +26 -0
  59. data/lib/facter/facts/freebsd/sshalgorithmkey.rb +17 -0
  60. data/lib/facter/facts/freebsd/sshfp_algorithm.rb +20 -0
  61. data/lib/facter/facts/freebsd/system_uptime/days.rb +18 -0
  62. data/lib/facter/facts/freebsd/system_uptime/hours.rb +18 -0
  63. data/lib/facter/facts/freebsd/system_uptime/seconds.rb +18 -0
  64. data/lib/facter/facts/freebsd/system_uptime/uptime.rb +18 -0
  65. data/lib/facter/facts/freebsd/timezone.rb +15 -0
  66. data/lib/facter/facts/freebsd/zfs_featurenumbers.rb +14 -0
  67. data/lib/facter/facts/freebsd/zfs_version.rb +14 -0
  68. data/lib/facter/facts/freebsd/zpool_featureflags.rb +14 -0
  69. data/lib/facter/facts/freebsd/zpool_featurenumbers.rb +14 -0
  70. data/lib/facter/facts/freebsd/zpool_version.rb +14 -0
  71. data/lib/facter/facts/linux/cloud.rb +15 -0
  72. data/lib/facter/facts/linux/disks.rb +20 -1
  73. data/lib/facter/facts/linux/dmi/board/asset_tag.rb +19 -0
  74. data/lib/facter/facts/linux/ec2_metadata.rb +9 -5
  75. data/lib/facter/facts/linux/ec2_userdata.rb +5 -3
  76. data/lib/facter/facts/linux/gce.rb +16 -0
  77. data/lib/facter/facts/linux/is_virtual.rb +1 -3
  78. data/lib/facter/facts/linux/mountpoints.rb +1 -1
  79. data/lib/facter/facts/linux/networking/scope6.rb +3 -1
  80. data/lib/facter/facts/linux/partitions.rb +2 -2
  81. data/lib/facter/facts/linux/processors/speed.rb +17 -0
  82. data/lib/facter/facts/linux/scope6_interfaces.rb +1 -2
  83. data/lib/facter/facts/linux/ssh.rb +19 -9
  84. data/lib/facter/facts/linux/sshfp_algorithm.rb +1 -1
  85. data/lib/facter/facts/linux/system_uptime/days.rb +7 -1
  86. data/lib/facter/facts/linux/system_uptime/hours.rb +7 -1
  87. data/lib/facter/facts/linux/system_uptime/seconds.rb +7 -1
  88. data/lib/facter/facts/linux/system_uptime/uptime.rb +7 -1
  89. data/lib/facter/facts/linux/xen.rb +28 -0
  90. data/lib/facter/facts/macosx/dhcp_servers.rb +2 -2
  91. data/lib/facter/facts/macosx/interfaces.rb +1 -1
  92. data/lib/facter/facts/macosx/ipaddress6_interfaces.rb +1 -1
  93. data/lib/facter/facts/macosx/ipaddress_interfaces.rb +1 -1
  94. data/lib/facter/facts/macosx/macaddress_interfaces.rb +1 -1
  95. data/lib/facter/facts/macosx/mtu_interfaces.rb +1 -1
  96. data/lib/facter/facts/macosx/netmask6_interfaces.rb +1 -1
  97. data/lib/facter/facts/macosx/netmask_interfaces.rb +1 -1
  98. data/lib/facter/facts/macosx/network6_interfaces.rb +1 -1
  99. data/lib/facter/facts/macosx/network_interfaces.rb +1 -1
  100. data/lib/facter/facts/macosx/networking/dhcp.rb +1 -1
  101. data/lib/facter/facts/macosx/networking/interfaces.rb +1 -1
  102. data/lib/facter/facts/macosx/networking/ip.rb +1 -1
  103. data/lib/facter/facts/macosx/networking/ip6.rb +1 -1
  104. data/lib/facter/facts/macosx/networking/mac.rb +1 -1
  105. data/lib/facter/facts/macosx/networking/mtu.rb +1 -1
  106. data/lib/facter/facts/macosx/networking/netmask.rb +1 -1
  107. data/lib/facter/facts/macosx/networking/netmask6.rb +1 -1
  108. data/lib/facter/facts/macosx/networking/network.rb +1 -1
  109. data/lib/facter/facts/macosx/networking/network6.rb +1 -1
  110. data/lib/facter/facts/macosx/networking/primary.rb +1 -1
  111. data/lib/facter/facts/macosx/networking/scope6.rb +4 -2
  112. data/lib/facter/facts/macosx/scope6_interfaces.rb +1 -3
  113. data/lib/facter/facts/macosx/ssh.rb +19 -11
  114. data/lib/facter/facts/macosx/sshfp_algorithm.rb +1 -1
  115. data/lib/facter/facts/rhel/os/release.rb +2 -2
  116. data/lib/facter/facts/solaris/current_zone.rb +16 -0
  117. data/lib/facter/facts/solaris/disks.rb +33 -0
  118. data/lib/facter/facts/solaris/dmi/bios/release_date.rb +24 -0
  119. data/lib/facter/facts/solaris/dmi/bios/vendor.rb +24 -0
  120. data/lib/facter/facts/solaris/dmi/bios/version.rb +24 -0
  121. data/lib/facter/facts/solaris/dmi/chassis/asset_tag.rb +24 -0
  122. data/lib/facter/facts/solaris/dmi/chassis/type.rb +24 -0
  123. data/lib/facter/facts/solaris/dmi/manufacturer.rb +25 -0
  124. data/lib/facter/facts/solaris/dmi/product/name.rb +27 -0
  125. data/lib/facter/facts/solaris/dmi/product/serial_number.rb +27 -0
  126. data/lib/facter/facts/solaris/dmi/product/uuid.rb +24 -0
  127. data/lib/facter/facts/solaris/hypervisors/ldom.rb +24 -0
  128. data/lib/facter/facts/solaris/hypervisors/zone.rb +39 -0
  129. data/lib/facter/facts/solaris/is_virtual.rb +64 -0
  130. data/lib/facter/facts/solaris/kernelmajversion.rb +1 -1
  131. data/lib/facter/facts/solaris/ldom.rb +35 -0
  132. data/lib/facter/facts/solaris/mountpoints.rb +1 -1
  133. data/lib/facter/facts/solaris/os/release.rb +3 -3
  134. data/lib/facter/facts/solaris/ssh.rb +19 -9
  135. data/lib/facter/facts/solaris/sshalgorithmkey.rb +17 -0
  136. data/lib/facter/facts/solaris/sshfp_algorithm.rb +20 -0
  137. data/lib/facter/facts/solaris/virtual.rb +60 -0
  138. data/lib/facter/facts/solaris/zfs_featurenumbers.rb +1 -1
  139. data/lib/facter/facts/solaris/zfs_version.rb +1 -1
  140. data/lib/facter/facts/solaris/zones.rb +60 -0
  141. data/lib/facter/facts/solaris/zpool_featureflags.rb +1 -1
  142. data/lib/facter/facts/solaris/zpool_featurenumbers.rb +1 -1
  143. data/lib/facter/facts/solaris/zpool_version.rb +1 -1
  144. data/lib/facter/facts/ubuntu/lsbdistrelease.rb +23 -0
  145. data/lib/facter/facts/windows/dhcp_servers.rb +2 -2
  146. data/lib/facter/facts/windows/ec2_metadata.rb +5 -3
  147. data/lib/facter/facts/windows/ec2_userdata.rb +5 -3
  148. data/lib/facter/facts/windows/gce.rb +16 -0
  149. data/lib/facter/facts/windows/interfaces.rb +1 -1
  150. data/lib/facter/facts/windows/ipaddress6_interfaces.rb +1 -1
  151. data/lib/facter/facts/windows/ipaddress_interfaces.rb +1 -1
  152. data/lib/facter/facts/windows/macaddress_interfaces.rb +1 -1
  153. data/lib/facter/facts/windows/mtu_interfaces.rb +1 -1
  154. data/lib/facter/facts/windows/netmask6_interfaces.rb +1 -1
  155. data/lib/facter/facts/windows/netmask_interfaces.rb +1 -1
  156. data/lib/facter/facts/windows/network6_interfaces.rb +1 -1
  157. data/lib/facter/facts/windows/network_interfaces.rb +1 -1
  158. data/lib/facter/facts/windows/networking/dhcp.rb +1 -1
  159. data/lib/facter/facts/windows/networking/domain.rb +1 -1
  160. data/lib/facter/facts/windows/networking/fqdn.rb +1 -1
  161. data/lib/facter/facts/windows/networking/interfaces.rb +1 -1
  162. data/lib/facter/facts/windows/networking/ip.rb +1 -1
  163. data/lib/facter/facts/windows/networking/ip6.rb +1 -1
  164. data/lib/facter/facts/windows/networking/mac.rb +1 -1
  165. data/lib/facter/facts/windows/networking/mtu.rb +1 -1
  166. data/lib/facter/facts/windows/networking/netmask.rb +1 -1
  167. data/lib/facter/facts/windows/networking/netmask6.rb +1 -1
  168. data/lib/facter/facts/windows/networking/network.rb +1 -1
  169. data/lib/facter/facts/windows/networking/network6.rb +1 -1
  170. data/lib/facter/facts/windows/networking/primary.rb +1 -1
  171. data/lib/facter/facts/windows/networking/scope6.rb +4 -2
  172. data/lib/facter/facts/windows/scope6_interfaces.rb +1 -1
  173. data/lib/facter/facts/windows/sshalgorithmkey.rb +22 -0
  174. data/lib/facter/facts/windows/sshfp_algorithm.rb +25 -0
  175. data/lib/facter/facts_utils/facts_utils.rb +2 -0
  176. data/lib/facter/framework/benchmarking/timer.rb +23 -0
  177. data/lib/facter/framework/cli/cli.rb +21 -4
  178. data/lib/facter/framework/config/fact_groups.rb +13 -0
  179. data/lib/facter/framework/core/fact/internal/core_fact.rb +2 -0
  180. data/lib/facter/framework/core/fact/internal/internal_fact_manager.rb +11 -25
  181. data/lib/facter/framework/core/fact_filter.rb +13 -0
  182. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +24 -1
  183. data/lib/facter/framework/core/fact_loaders/internal_fact_loader.rb +7 -7
  184. data/lib/facter/framework/core/file_loader.rb +2 -0
  185. data/lib/facter/framework/core/options/option_store.rb +3 -1
  186. data/lib/facter/framework/core/session_cache.rb +1 -4
  187. data/lib/facter/framework/formatters/legacy_fact_formatter.rb +8 -1
  188. data/lib/facter/framework/formatters/yaml_fact_formatter.rb +1 -1
  189. data/lib/facter/framework/logging/logger.rb +2 -6
  190. data/lib/facter/os_hierarchy.json +3 -6
  191. data/lib/facter/patches/sysfilesystem/sys/statvfs.rb +92 -0
  192. data/lib/facter/resolvers/aio_agent_version.rb +0 -1
  193. data/lib/facter/resolvers/aix/architecture_resolver.rb +0 -1
  194. data/lib/facter/resolvers/aix/disks.rb +2 -3
  195. data/lib/facter/resolvers/aix/filesystem_resolver.rb +0 -1
  196. data/lib/facter/resolvers/aix/hardware_resolver.rb +0 -1
  197. data/lib/facter/resolvers/aix/load_averages_resolver.rb +0 -1
  198. data/lib/facter/resolvers/aix/memory.rb +2 -3
  199. data/lib/facter/resolvers/aix/mountpoints.rb +0 -1
  200. data/lib/facter/resolvers/aix/networking_resolver.rb +0 -1
  201. data/lib/facter/resolvers/aix/nim.rb +0 -1
  202. data/lib/facter/resolvers/aix/os_level.rb +27 -0
  203. data/lib/facter/resolvers/aix/partitions.rb +2 -3
  204. data/lib/facter/resolvers/aix/processors.rb +0 -1
  205. data/lib/facter/resolvers/aix/serialnumber.rb +36 -0
  206. data/lib/facter/resolvers/augeas_resolver.rb +0 -1
  207. data/lib/facter/resolvers/base_resolver.rb +10 -5
  208. data/lib/facter/resolvers/bsd/processors.rb +0 -1
  209. data/lib/facter/resolvers/cloud.rb +39 -0
  210. data/lib/facter/resolvers/containers.rb +0 -1
  211. data/lib/facter/resolvers/debian_version.rb +0 -1
  212. data/lib/facter/resolvers/disk_resolver.rb +0 -1
  213. data/lib/facter/resolvers/dmi_decode.rb +0 -1
  214. data/lib/facter/resolvers/dmi_resolver.rb +4 -4
  215. data/lib/facter/resolvers/ec2.rb +4 -19
  216. data/lib/facter/resolvers/eos_release_resolver.rb +0 -1
  217. data/lib/facter/resolvers/facterversion_resolver.rb +0 -1
  218. data/lib/facter/resolvers/filesystems_resolver.rb +1 -2
  219. data/lib/facter/resolvers/fips_enabled_resolver.rb +0 -1
  220. data/lib/facter/resolvers/freebsd/dmi_resolver.rb +0 -1
  221. data/lib/facter/resolvers/freebsd/freebsd_version_resolver.rb +0 -1
  222. data/lib/facter/resolvers/freebsd/geom_resolver.rb +0 -1
  223. data/lib/facter/resolvers/freebsd/processors.rb +0 -1
  224. data/lib/facter/resolvers/freebsd/swap_memory_resolver.rb +0 -1
  225. data/lib/facter/resolvers/freebsd/system_memory_resolver.rb +0 -1
  226. data/lib/facter/resolvers/gce.rb +53 -0
  227. data/lib/facter/resolvers/hostname_resolver.rb +0 -1
  228. data/lib/facter/resolvers/identity_resolver.rb +0 -1
  229. data/lib/facter/resolvers/linux/docker_uptime.rb +44 -0
  230. data/lib/facter/resolvers/linux/load_averages.rb +0 -2
  231. data/lib/facter/resolvers/load_averages.rb +2 -1
  232. data/lib/facter/resolvers/lpar_resolver.rb +0 -1
  233. data/lib/facter/resolvers/lsb_release_resolver.rb +0 -1
  234. data/lib/facter/resolvers/lspci.rb +0 -1
  235. data/lib/facter/resolvers/macosx/dmi_resolver.rb +0 -1
  236. data/lib/facter/resolvers/macosx/filesystems_resolver.rb +1 -6
  237. data/lib/facter/resolvers/macosx/load_averages_resolver.rb +0 -1
  238. data/lib/facter/resolvers/macosx/mountpoints_resolver.rb +3 -3
  239. data/lib/facter/resolvers/macosx/processor_resolver.rb +0 -1
  240. data/lib/facter/resolvers/macosx/swap_memory_resolver.rb +0 -1
  241. data/lib/facter/resolvers/macosx/system_memory_resolver.rb +0 -1
  242. data/lib/facter/resolvers/macosx/system_profiler_resolver.rb +0 -1
  243. data/lib/facter/resolvers/memory_resolver.rb +13 -2
  244. data/lib/facter/resolvers/mountpoints_resolver.rb +41 -44
  245. data/lib/facter/resolvers/networking_linux_resolver.rb +0 -1
  246. data/lib/facter/resolvers/networking_resolver.rb +105 -0
  247. data/lib/facter/resolvers/open_vz.rb +0 -1
  248. data/lib/facter/resolvers/os_release_resolver.rb +0 -1
  249. data/lib/facter/resolvers/partitions.rb +37 -2
  250. data/lib/facter/resolvers/path_resolver.rb +0 -1
  251. data/lib/facter/resolvers/processors_resolver.rb +24 -3
  252. data/lib/facter/resolvers/puppet_version_resolver.rb +0 -1
  253. data/lib/facter/resolvers/redhat_release_resolver.rb +0 -1
  254. data/lib/facter/resolvers/ruby_resolver.rb +0 -1
  255. data/lib/facter/resolvers/selinux_resolver.rb +0 -1
  256. data/lib/facter/resolvers/solaris/disks.rb +50 -0
  257. data/lib/facter/resolvers/solaris/dmi.rb +56 -0
  258. data/lib/facter/resolvers/solaris/dmi_sparc.rb +46 -0
  259. data/lib/facter/resolvers/solaris/{filesystems_resolver.rb → filesystems.rb} +0 -1
  260. data/lib/facter/resolvers/solaris/{ipaddress_resolver.rb → ipaddress.rb} +0 -1
  261. data/lib/facter/resolvers/solaris/ldom.rb +69 -0
  262. data/lib/facter/resolvers/solaris/memory.rb +0 -1
  263. data/lib/facter/resolvers/solaris/{networking_resolver.rb → networking.rb} +0 -1
  264. data/lib/facter/resolvers/solaris/os_release.rb +43 -0
  265. data/lib/facter/resolvers/solaris/processors.rb +0 -1
  266. data/lib/facter/resolvers/solaris/zone.rb +50 -0
  267. data/lib/facter/resolvers/solaris/zone_name.rb +30 -0
  268. data/lib/facter/resolvers/ssh_resolver.rb +0 -1
  269. data/lib/facter/resolvers/suse_release_resolver.rb +0 -1
  270. data/lib/facter/resolvers/sw_vers_resolver.rb +0 -1
  271. data/lib/facter/resolvers/timezone_resolver.rb +0 -1
  272. data/lib/facter/resolvers/uname_resolver.rb +0 -1
  273. data/lib/facter/resolvers/uptime_resolver.rb +1 -28
  274. data/lib/facter/resolvers/utils/filesystem_helper.rb +3 -1
  275. data/lib/facter/resolvers/utils/http.rb +68 -0
  276. data/lib/facter/resolvers/utils/uptime_helper.rb +32 -0
  277. data/lib/facter/resolvers/virt_what.rb +0 -1
  278. data/lib/facter/resolvers/vmware.rb +0 -1
  279. data/lib/facter/resolvers/windows/aio_agent_version.rb +0 -1
  280. data/lib/facter/resolvers/windows/dmi_bios_resolver.rb +0 -1
  281. data/lib/facter/resolvers/windows/dmi_computersystem_resolver.rb +0 -1
  282. data/lib/facter/resolvers/windows/fips_resolver.rb +0 -1
  283. data/lib/facter/resolvers/windows/hardware_architecture_resolver.rb +0 -1
  284. data/lib/facter/resolvers/windows/identity_resolver.rb +0 -1
  285. data/lib/facter/resolvers/windows/kernel_resolver.rb +0 -1
  286. data/lib/facter/resolvers/windows/memory_resolver.rb +0 -1
  287. data/lib/facter/resolvers/windows/netkvm_resolver.rb +0 -1
  288. data/lib/facter/resolvers/windows/networking_resolver.rb +99 -98
  289. data/lib/facter/resolvers/windows/processors_resolver.rb +0 -1
  290. data/lib/facter/resolvers/windows/product_release_resolver.rb +0 -1
  291. data/lib/facter/resolvers/windows/ssh.rb +0 -1
  292. data/lib/facter/resolvers/windows/system32_resolver.rb +0 -1
  293. data/lib/facter/resolvers/windows/uptime_resolver.rb +0 -1
  294. data/lib/facter/resolvers/windows/virtualization_resolver.rb +0 -1
  295. data/lib/facter/resolvers/windows/win_os_description_resolver.rb +0 -1
  296. data/lib/facter/resolvers/wpar_resolver.rb +0 -1
  297. data/lib/facter/resolvers/xen.rb +28 -1
  298. data/lib/facter/resolvers/zfs.rb +31 -0
  299. data/lib/facter/resolvers/zpool.rb +33 -0
  300. data/lib/facter/version.rb +1 -1
  301. metadata +106 -18
  302. data/lib/facter/facts/freebsd/solaris_zones/current.rb +0 -15
  303. data/lib/facter/facts/freebsd/solaris_zones/zone.rb +0 -15
  304. data/lib/facter/facts/solaris/solaris_zones/zone.rb +0 -62
  305. data/lib/facter/resolvers/aix/os_level_resolver.rb +0 -26
  306. data/lib/facter/resolvers/macosx/networking_resolver.rb +0 -108
  307. data/lib/facter/resolvers/os_level_resolver.rb +0 -29
  308. data/lib/facter/resolvers/solaris/solaris_os_release_resolver.rb +0 -42
  309. data/lib/facter/resolvers/solaris/solaris_zone_name.rb +0 -28
  310. data/lib/facter/resolvers/solaris/zfs_resolver.rb +0 -34
  311. data/lib/facter/resolvers/solaris/zone_resolver.rb +0 -48
  312. data/lib/facter/resolvers/solaris/zpool_resolver.rb +0 -36
@@ -4,8 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Linux
6
6
  class LoadAverages < BaseResolver
7
- @log = Facter::Log.new(self)
8
- @semaphore = Mutex.new
9
7
  @fact_list ||= {}
10
8
  class << self
11
9
  private
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class LoadAverages < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
  class << self
9
8
  private
@@ -14,6 +13,8 @@ module Facter
14
13
 
15
14
  def read_load_averages(fact_name)
16
15
  require_relative 'utils/ffi/load_averages'
16
+
17
+ log.debug('loading cpu load averages')
17
18
  @fact_list[:load_averages] = %w[1m 5m 15m].zip(Utils::Ffi::LoadAverages.read_load_averages).to_h
18
19
 
19
20
  @fact_list[fact_name]
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Lpar < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -9,7 +9,6 @@ module Facter
9
9
  # :release
10
10
  # :codename
11
11
 
12
- @semaphore = Mutex.new
13
12
  @fact_list ||= {}
14
13
 
15
14
  class << self
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Lspci < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  REGEX_VALUES = { 'VirtualBox' => 'virtualbox', 'XenSource' => 'xenhvm',
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Macosx
6
6
  class DmiBios < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -5,7 +5,6 @@ module Facter
5
5
  module Macosx
6
6
  class Filesystems < BaseResolver
7
7
  # :macosx_filesystems
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
 
11
10
  class << self
@@ -17,11 +16,7 @@ module Facter
17
16
 
18
17
  def read_filesystems(fact_name)
19
18
  output = Facter::Core::Execution.execute('mount', logger: log)
20
- filesystems = []
21
- output.each_line do |line|
22
- filesystem = line.match(/\(([a-z]+)\,*/).to_s
23
- filesystems << filesystem[1..-2]
24
- end
19
+ filesystems = output.scan(/\(([a-z]+)\,*/).flatten
25
20
  @fact_list[:macosx_filesystems] = filesystems.uniq.sort.join(',')
26
21
  @fact_list[fact_name]
27
22
  end
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Macosx
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 Macosx
6
6
  class Mountpoints < BaseResolver
7
7
  include Facter::FilesystemHelper
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
11
10
  private
@@ -16,6 +15,7 @@ module Facter
16
15
 
17
16
  def read_mounts
18
17
  mounts = {}
18
+
19
19
  FilesystemHelper.read_mountpoints.each do |fs|
20
20
  device = fs.name
21
21
  filesystem = fs.mount_type
@@ -36,8 +36,8 @@ module Facter
36
36
  begin
37
37
  stats = FilesystemHelper.read_mountpoint_stats(path)
38
38
  size_bytes = stats.bytes_total
39
- used_bytes = stats.bytes_used
40
- available_bytes = size_bytes - used_bytes
39
+ available_bytes = stats.bytes_available
40
+ used_bytes = size_bytes - available_bytes
41
41
  rescue Sys::Filesystem::Error
42
42
  size_bytes = used_bytes = available_bytes = 0
43
43
  end
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Macosx
6
6
  class Processors < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list = {}
9
8
  ITEMS = { logical_count: 'hw.logicalcpu_max',
10
9
  physical_count: 'hw.physicalcpu_max',
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Macosx
6
6
  class SwapMemory < BaseResolver
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 Macosx
6
6
  class SystemMemory < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -15,7 +15,6 @@ module Facter
15
15
  SP_ETHERNET_DATA_TYPE = %i[type bus vendor_id device_id subsystem_vendor_id
16
16
  subsystem_id revision_id bsd_name kext_name location version].freeze
17
17
 
18
- @semaphore = Mutex.new
19
18
  @fact_list = {}
20
19
 
21
20
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Linux
6
6
  class Memory < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  @log = Facter::Log.new(self)
10
9
  class << self
@@ -27,7 +26,7 @@ module Facter
27
26
  def read_system(output)
28
27
  @fact_list[:total] = kilobytes_to_bytes(output.match(/MemTotal:\s+(\d+)\s/)[1])
29
28
  @fact_list[:memfree] = kilobytes_to_bytes(output.match(/MemFree:\s+(\d+)\s/)[1])
30
- @fact_list[:used_bytes] = compute_used(@fact_list[:total], @fact_list[:memfree])
29
+ @fact_list[:used_bytes] = compute_used(@fact_list[:total], reclaimable_memory(output))
31
30
  @fact_list[:capacity] = compute_capacity(@fact_list[:used_bytes], @fact_list[:total])
32
31
  end
33
32
 
@@ -45,6 +44,18 @@ module Facter
45
44
  quantity.to_i * 1024
46
45
  end
47
46
 
47
+ def reclaimable_memory(output)
48
+ buffers = kilobytes_to_bytes(output.match(/Buffers:\s+(\d+)\s/)[1])
49
+ cached = kilobytes_to_bytes(output.match(/Cached:\s+(\d+)\s/)[1])
50
+ s_reclaimable = output.match(/SReclaimable:\s+(\d+)\s/)
51
+ s_reclaimable = if s_reclaimable
52
+ kilobytes_to_bytes(s_reclaimable[1])
53
+ else
54
+ 0
55
+ end
56
+ @fact_list[:memfree] + buffers + cached + s_reclaimable
57
+ end
58
+
48
59
  def compute_capacity(used, total)
49
60
  format('%<computed_capacity>.2f', computed_capacity: (used / total.to_f * 100)) + '%'
50
61
  end
@@ -2,59 +2,56 @@
2
2
 
3
3
  module Facter
4
4
  module Resolvers
5
- module Linux
6
- class Mountpoints < BaseResolver
7
- include Facter::FilesystemHelper
8
- @semaphore = Mutex.new
9
- @fact_list ||= {}
10
- @log = Facter::Log.new(self)
11
- class << self
12
- private
13
-
14
- def post_resolve(fact_name)
15
- @fact_list.fetch(fact_name) { read_mounts }
16
- end
5
+ class Mountpoints < BaseResolver
6
+ include Facter::FilesystemHelper
7
+ @fact_list ||= {}
8
+ @log = Facter::Log.new(self)
9
+ class << self
10
+ private
11
+
12
+ def post_resolve(fact_name)
13
+ @fact_list.fetch(fact_name) { read_mounts }
14
+ end
17
15
 
18
- def root_device
19
- cmdline = Util::FileHelper.safe_read('/proc/cmdline')
20
- match = cmdline.match(/root=([^\s]+)/)
21
- match&.captures&.first
22
- end
16
+ def root_device
17
+ cmdline = Util::FileHelper.safe_read('/proc/cmdline')
18
+ match = cmdline.match(/root=([^\s]+)/)
19
+ match&.captures&.first
20
+ end
23
21
 
24
- def compute_device(device)
25
- # If the "root" device, lookup the actual device from the kernel options
26
- # This is done because not all systems symlink /dev/root
27
- device = root_device if device == '/dev/root'
28
- device
29
- end
22
+ def compute_device(device)
23
+ # If the "root" device, lookup the actual device from the kernel options
24
+ # This is done because not all systems symlink /dev/root
25
+ device = root_device if device == '/dev/root'
26
+ device
27
+ end
30
28
 
31
- def read_mounts # rubocop:disable Metrics/AbcSize
32
- mounts = []
33
- FilesystemHelper.read_mountpoints.each do |fs|
34
- device = compute_device(fs.name)
35
- filesystem = fs.mount_type
36
- path = fs.mount_point
37
- options = fs.options.split(',').map(&:strip)
29
+ def read_mounts # rubocop:disable Metrics/AbcSize
30
+ mounts = []
31
+ FilesystemHelper.read_mountpoints.each do |fs|
32
+ device = compute_device(fs.name)
33
+ filesystem = fs.mount_type
34
+ path = fs.mount_point
35
+ options = fs.options.split(',').map(&:strip)
38
36
 
39
- next if path =~ %r{^/(proc|sys)} && filesystem != 'tmpfs' || filesystem == 'autofs'
37
+ next if path =~ %r{^/(proc|sys)} && filesystem != 'tmpfs' || filesystem == 'autofs'
40
38
 
41
- stats = FilesystemHelper.read_mountpoint_stats(path)
42
- size_bytes = stats.bytes_total.abs
43
- available_bytes = stats.bytes_available.abs
39
+ stats = FilesystemHelper.read_mountpoint_stats(path)
40
+ size_bytes = stats.bytes_total.abs
41
+ available_bytes = stats.bytes_available.abs
44
42
 
45
- used_bytes = stats.bytes_used.abs
46
- total_bytes = used_bytes + available_bytes
47
- capacity = FilesystemHelper.compute_capacity(used_bytes, total_bytes)
43
+ used_bytes = stats.bytes_used.abs
44
+ total_bytes = used_bytes + available_bytes
45
+ capacity = FilesystemHelper.compute_capacity(used_bytes, total_bytes)
48
46
 
49
- size = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(size_bytes)
50
- available = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(available_bytes)
51
- used = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(used_bytes)
47
+ size = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(size_bytes)
48
+ available = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(available_bytes)
49
+ used = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(used_bytes)
52
50
 
53
- mounts << Hash[FilesystemHelper::MOUNT_KEYS.zip(FilesystemHelper::MOUNT_KEYS
54
- .map { |v| binding.local_variable_get(v) })]
55
- end
56
- @fact_list[:mountpoints] = mounts
51
+ mounts << Hash[FilesystemHelper::MOUNT_KEYS.zip(FilesystemHelper::MOUNT_KEYS
52
+ .map { |v| binding.local_variable_get(v) })]
57
53
  end
54
+ @fact_list[:mountpoints] = mounts
58
55
  end
59
56
  end
60
57
  end
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class NetworkingLinux < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list = {}
8
7
  DIRS = ['/var/lib/dhclient/', '/var/lib/dhcp/', '/var/lib/dhcp3/', '/var/lib/NetworkManager/', '/var/db/'].freeze
9
8
 
@@ -0,0 +1,105 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ class Networking < BaseResolver
6
+ @fact_list ||= {}
7
+
8
+ class << self
9
+ private
10
+
11
+ def post_resolve(fact_name)
12
+ @fact_list.fetch(fact_name) { read_facts(fact_name) }
13
+ end
14
+
15
+ def read_facts(fact_name)
16
+ primary_interface
17
+ interfaces_data
18
+ ::Resolvers::Utils::Networking.expand_main_bindings(@fact_list)
19
+ @fact_list[fact_name]
20
+ end
21
+
22
+ def primary_interface
23
+ result = Facter::Core::Execution.execute('route -n get default', logger: log)
24
+
25
+ @fact_list[:primary_interface] = result.match(/interface: (.+)/)&.captures&.first
26
+ end
27
+
28
+ def interfaces_data
29
+ command_response = Facter::Core::Execution.execute('ifconfig -a', logger: log)
30
+
31
+ clean_up_interfaces_response(command_response)
32
+ parse_interfaces_response(command_response)
33
+ end
34
+
35
+ def clean_up_interfaces_response(response)
36
+ # convert ip ranges into single ip. eg. 10.16.132.213 --> 10.16.132.213 is converted to 10.16.132.213
37
+ response.gsub!(/(\d+(\.\d+)*)\s+-->\s+\d+(\.\d+)*/, '\\1')
38
+ end
39
+
40
+ def parse_interfaces_response(response)
41
+ parsed_interfaces_data = {}
42
+ interfaces_data = Hash[*response.split(/^([A-Za-z0-9_]+): /)[1..-1]]
43
+
44
+ interfaces_data.each do |interface_name, raw_data|
45
+ parsed_interface_data = {}
46
+
47
+ extract_mtu(raw_data, parsed_interface_data)
48
+ extract_mac(raw_data, parsed_interface_data)
49
+ extract_dhcp(interface_name, raw_data, parsed_interface_data)
50
+ extract_ip_data(raw_data, parsed_interface_data)
51
+
52
+ parsed_interfaces_data[interface_name] = parsed_interface_data
53
+ end
54
+ @fact_list[:interfaces] = parsed_interfaces_data unless parsed_interfaces_data.empty?
55
+ end
56
+
57
+ def extract_mtu(raw_data, parsed_interface_data)
58
+ mtu = raw_data.match(/mtu\s+(\d+)/)&.captures&.first&.to_i
59
+ parsed_interface_data[:mtu] = mtu unless mtu.nil?
60
+ end
61
+
62
+ def extract_mac(raw_data, parsed_interface_data)
63
+ mac = raw_data.match(/(?:ether|lladdr)\s+(\w?\w:\w?\w:\w?\w:\w?\w:\w?\w:\w?\w)/)&.captures&.first
64
+ parsed_interface_data[:mac] = mac unless mac.nil?
65
+ end
66
+
67
+ def extract_dhcp(interface_name, raw_data, parsed_interface_data)
68
+ return unless raw_data =~ /status:\s+active/
69
+
70
+ result = Facter::Core::Execution.execute("ipconfig getoption #{interface_name} " \
71
+ 'server_identifier', logger: log)
72
+
73
+ parsed_interface_data[:dhcp] = result.match(/^[\d.a-f:\s]+$/)&.to_s&.strip unless result.empty?
74
+ end
75
+
76
+ def extract_ip_data(raw_data, parsed_interface_data)
77
+ ip = extract_values(raw_data, /inet (\S+)/)
78
+ mask = extract_values(raw_data, /netmask (\S+)/).map { |val| val.hex.to_s(2).count('1') }
79
+
80
+ ip6 = extract_values(raw_data, /inet6 (\S+)/).map { |val| val.gsub(/%.+/, '') }
81
+ mask6 = extract_values(raw_data, /prefixlen (\S+)/)
82
+
83
+ parsed_interface_data[:bindings] = create_bindings(ip, mask) unless ip.empty?
84
+ parsed_interface_data[:bindings6] = create_bindings(ip6, mask6) unless ip6.empty?
85
+ end
86
+
87
+ def extract_values(data, regex)
88
+ results = []
89
+ data.scan(regex).flatten.each do |val|
90
+ results << val
91
+ end
92
+ results
93
+ end
94
+
95
+ def create_bindings(ips, masks)
96
+ bindings = []
97
+ ips.zip(masks).each do |ip, mask|
98
+ bindings << ::Resolvers::Utils::Networking.build_binding(ip, mask)
99
+ end
100
+ bindings
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
@@ -5,7 +5,6 @@ module Facter
5
5
  class OpenVz < BaseResolver
6
6
  # build
7
7
 
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
 
11
10
  class << self
@@ -14,7 +14,6 @@ module Facter
14
14
  # :support_url
15
15
  # :bug_report_url
16
16
 
17
- @semaphore = Mutex.new
18
17
  @fact_list ||= {}
19
18
 
20
19
  class << self
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Partitions < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
  BLOCK_PATH = '/sys/block'
9
8
  BLOCK_SIZE = 512
@@ -66,10 +65,18 @@ module Facter
66
65
  info_hash = { size_bytes: size_bytes,
67
66
  size: Facter::FactsUtils::UnitConverter.bytes_to_human_readable(size_bytes),
68
67
  backing_file: backing_file }
69
- info_hash.merge!(populate_from_blkid(partition_name))
68
+ info_hash.merge!(populate_from_syscalls(partition_name))
70
69
  @fact_list[:partitions][partition_name] = info_hash.reject { |_key, value| value.nil? }
71
70
  end
72
71
 
72
+ def populate_from_syscalls(partition_name)
73
+ part_info = populate_from_blkid(partition_name)
74
+
75
+ return pupulate_from_lsblk(partition_name) if part_info.empty?
76
+
77
+ part_info
78
+ end
79
+
73
80
  def populate_from_blkid(partition_name)
74
81
  return {} unless blkid_command?
75
82
 
@@ -92,6 +99,34 @@ module Facter
92
99
  @blkid_exists = !output.empty?
93
100
  end
94
101
 
102
+ def pupulate_from_lsblk(partition_name)
103
+ return {} unless lsblk_command?
104
+
105
+ @lsblk_content ||= Facter::Core::Execution.execute('lsblk -fp', logger: log)
106
+
107
+ part_info = @lsblk_content.match(/#{partition_name}.*/).to_s.split(' ')
108
+ return {} if part_info.empty?
109
+
110
+ result = { filesystem: part_info[1] }
111
+
112
+ if part_info.count.eql?(5)
113
+ result[:label] = part_info[2]
114
+ result[:uuid] = part_info[3]
115
+ else
116
+ result[:uuid] = part_info[2]
117
+ end
118
+
119
+ result
120
+ end
121
+
122
+ def lsblk_command?
123
+ return @lsblk_exists unless @lsblk_exists.nil?
124
+
125
+ output = Facter::Core::Execution.execute('which lsblk', logger: log)
126
+
127
+ @lsblk_exists = !output.empty?
128
+ end
129
+
95
130
  def execute_and_extract_blkid_info
96
131
  stdout = Facter::Core::Execution.execute('blkid', logger: log)
97
132
  output_hash = Hash[*stdout.split(/^([^:]+):/)[1..-1]]