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
@@ -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
@@ -7,7 +7,9 @@ module Facter
7
7
  size_bytes used used_bytes capacity].freeze
8
8
  class << self
9
9
  def read_mountpoints
10
- require 'sys/filesystem'
10
+ # TODO: this require must be replaced with "require 'sys/filesystem'" when a new release of
11
+ # djberg96/sys-filesystem gem is available
12
+ require_relative '../../patches/sysfilesystem/sys/statvfs.rb'
11
13
  force_utf(Sys::Filesystem.mounts)
12
14
  end
13
15
 
@@ -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
@@ -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
@@ -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
@@ -2,131 +2,132 @@
2
2
 
3
3
  module Facter
4
4
  module Resolvers
5
- class Networking < BaseResolver
6
- @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
- @fact_list ||= {}
9
- class << self
10
- private
11
-
12
- def post_resolve(fact_name)
13
- @fact_list.fetch(fact_name) { read_network_information(fact_name) }
14
- end
15
-
16
- def read_network_information(fact_name)
17
- 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
18
15
 
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
16
+ def read_network_information(fact_name)
17
+ require 'facter/resolvers/windows/ffi/networking_ffi'
23
18
 
24
- 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
25
23
 
26
- iterate_list(adapter_addresses)
24
+ return unless (adapter_addresses = get_adapter_addresses(size_ptr, adapter_addresses, flags))
27
25
 
28
- ::Resolvers::Utils::Networking.expand_main_bindings(@fact_list)
26
+ iterate_list(adapter_addresses)
29
27
 
30
- @fact_list[fact_name]
31
- end
28
+ ::Resolvers::Utils::Networking.expand_main_bindings(@fact_list)
32
29
 
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
30
+ @fact_list[fact_name]
46
31
  end
47
- return nil unless error.zero?
48
32
 
49
- adapter_addresses
50
- 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?
51
48
 
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])
55
- end
49
+ adapter_addresses
50
+ end
56
51
 
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])
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])
61
55
  end
62
- end
63
56
 
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
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])
70
61
  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
62
  end
75
63
 
76
- @fact_list[:interfaces] = net_interface unless net_interface.empty?
77
- 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
78
75
 
79
- def build_interface_info(adapter_address, name)
80
- hash = {}
76
+ @fact_list[:interfaces] = net_interface unless net_interface.empty?
77
+ end
81
78
 
82
- hash[:dhcp] = retrieve_dhcp_server(adapter_address)
83
- hash[:mtu] = adapter_address[:Mtu]
79
+ def build_interface_info(adapter_address, name)
80
+ hash = {}
84
81
 
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
82
+ hash[:dhcp] = retrieve_dhcp_server(adapter_address)
83
+ hash[:mtu] = adapter_address[:Mtu]
91
84
 
92
- def find_ip_addresses(unicast_addresses, name)
93
- bindings = {}
94
- bindings[:ipv6] = []
95
- 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
96
91
 
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
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)
102
107
  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)
108
+ bindings
107
109
  end
108
- bindings
109
- end
110
110
 
111
- def add_ip_data(addr, unicast, sock_addr, bindings)
112
- result = find_bindings(sock_addr, unicast, addr)
113
- 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
114
114
 
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
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
118
118
 
119
- def find_bindings(sock_addr, unicast, addr)
120
- 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])
121
121
 
122
- ::Resolvers::Utils::Networking.build_binding(addr, unicast[:OnLinkPrefixLength])
123
- end
122
+ ::Resolvers::Utils::Networking.build_binding(addr, unicast[:OnLinkPrefixLength])
123
+ end
124
124
 
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
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
130
131
  end
131
132
  end
132
133
  end