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,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Aix
6
6
  class Processors < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Aix
6
+ class Serialnumber < BaseResolver
7
+ @fact_list ||= {}
8
+
9
+ class << self
10
+ private
11
+
12
+ def post_resolve(fact_name)
13
+ @fact_list.fetch(fact_name) { read_serialnumber(fact_name) }
14
+ end
15
+
16
+ def read_serialnumber(fact_name)
17
+ odmquery = Facter::ODMQuery.new
18
+ odmquery
19
+ .equals('name', 'sys0')
20
+ .equals('attribute', 'systemid')
21
+ result = odmquery.execute
22
+
23
+ result.each_line do |line|
24
+ if line.include?('value')
25
+ @fact_list[:serialnumber] = line.split('=')[1].strip.delete('\"')[6..-1]
26
+ break
27
+ end
28
+ end
29
+
30
+ @fact_list[fact_name]
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Augeas < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -16,15 +16,20 @@ module Facter
16
16
  end
17
17
 
18
18
  def self.resolve(fact_name)
19
- @semaphore.synchronize do
20
- subscribe_to_manager
21
- post_resolve(fact_name)
22
- end
23
- rescue LoadError => e
19
+ subscribe_to_manager
20
+ post_resolve(fact_name)
21
+
22
+ validate_resolution(fact_name)
23
+ rescue LoadError, NameError => e
24
24
  log.debug("resolving fact #{fact_name}, but #{e}")
25
25
  @fact_list[fact_name] = nil
26
26
  end
27
27
 
28
+ def self.validate_resolution(fact_name)
29
+ @fact_list.fetch(fact_name) { @fact_list[fact_name] = nil }
30
+ @fact_list[fact_name]
31
+ end
32
+
28
33
  def self.post_resolve(_fact_name)
29
34
  raise NotImplementedError, "You must implement post_resolve(fact_name) method in #{name}"
30
35
  end
@@ -5,7 +5,6 @@ module Facter
5
5
  module Bsd
6
6
  class Processors < BaseResolver
7
7
  @log = Facter::Log.new(self)
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
11
10
  private
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ class Cloud < BaseResolver
6
+ # cloud_provider
7
+
8
+ @fact_list ||= {}
9
+
10
+ class << self
11
+ private
12
+
13
+ def post_resolve(fact_name)
14
+ @fact_list.fetch(fact_name) { detect_azure(fact_name) }
15
+ end
16
+
17
+ def detect_azure(fact_name)
18
+ search_dirs = %w[/var/lib/dhcp /var/lib/NetworkManager]
19
+ search_dirs.each do |path|
20
+ next if !File.readable?(path) || !File.directory?(path)
21
+
22
+ files = Dir.entries(path)
23
+ files.select! { |filename| filename =~ /^dhclient.*lease.*$/ }
24
+ files.each do |file|
25
+ path = File.join([path, file])
26
+ output = Util::FileHelper.safe_read(path)
27
+
28
+ if output.include?('option unknown-245') || output.include?('option 245')
29
+ @fact_list[:cloud_provider] = 'azure'
30
+ return @fact_list[fact_name]
31
+ end
32
+ end
33
+ end
34
+ nil
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -6,7 +6,6 @@ module Facter
6
6
  # :virtual
7
7
  # :hypervisor
8
8
 
9
- @semaphore = Mutex.new
10
9
  @fact_list ||= {}
11
10
  INFO = { 'docker' => 'id', 'lxc' => 'name' }.freeze
12
11
 
@@ -7,7 +7,6 @@ module Facter
7
7
  # :minor
8
8
  # :full
9
9
 
10
- @semaphore = Mutex.new
11
10
  @fact_list ||= {}
12
11
 
13
12
  class << self
@@ -5,7 +5,6 @@ module Facter
5
5
  module Linux
6
6
  class Disk < BaseResolver
7
7
  @log = Facter::Log.new(self)
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  DIR = '/sys/block'
11
10
  FILE_PATHS = { model: 'device/model', size: 'size', vendor: 'device/vendor' }.freeze
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class DmiDecode < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  ADDRESS_TO_VERSION = {
@@ -5,13 +5,13 @@ module Facter
5
5
  module Linux
6
6
  class DmiBios < BaseResolver
7
7
  @log = Facter::Log.new(self)
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
 
11
10
  class << self
12
11
  # :bios_vendor
13
12
  # :bios_date
14
13
  # :bios_version
14
+ # :board_asset_tag
15
15
  # :board_vendor
16
16
  # :board_serial
17
17
  # :board_name
@@ -29,9 +29,9 @@ module Facter
29
29
  end
30
30
 
31
31
  def read_facts(fact_name)
32
- files = %w[bios_date bios_vendor bios_version board_vendor board_name board_serial
33
- chassis_asset_tag chassis_type sys_vendor product_name product_serial
34
- product_uuid]
32
+ files = %w[bios_date bios_vendor bios_version board_asset_tag board_vendor board_name
33
+ board_serial chassis_asset_tag chassis_type sys_vendor product_name
34
+ product_serial product_uuid]
35
35
  return unless File.directory?('/sys/class/dmi')
36
36
 
37
37
  file_content = Util::FileHelper.safe_read("/sys/class/dmi/id/#{fact_name}", nil)
@@ -1,21 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'net/http'
4
-
5
3
  module Facter
6
4
  module Resolvers
7
5
  class Ec2 < BaseResolver
8
- @semaphore = Mutex.new
9
6
  @fact_list ||= {}
10
7
  EC2_METADATA_ROOT_URL = 'http://169.254.169.254/latest/meta-data/'
11
8
  EC2_USERDATA_ROOT_URL = 'http://169.254.169.254/latest/user-data/'
12
- EC2_CONNECTION_TIMEOUT = 0.6
13
9
  EC2_SESSION_TIMEOUT = 5
14
10
 
15
11
  class << self
16
12
  private
17
13
 
18
14
  def post_resolve(fact_name)
15
+ log.debug('Querying Ec2 metadata')
19
16
  @fact_list.fetch(fact_name) { read_facts(fact_name) }
20
17
  end
21
18
 
@@ -31,7 +28,7 @@ module Facter
31
28
  metadata.each_line do |line|
32
29
  next if line.empty?
33
30
 
34
- http_path_component = build_path_compoent(line)
31
+ http_path_component = build_path_component(line)
35
32
  next if http_path_component == 'security-credentials/'
36
33
 
37
34
  if http_path_component.end_with?('/')
@@ -46,25 +43,13 @@ module Facter
46
43
  end
47
44
  end
48
45
 
49
- def build_path_compoent(line)
46
+ def build_path_component(line)
50
47
  array_match = /^(\d+)=.*$/.match(line)
51
48
  array_match ? "#{array_match[1]}/" : line.strip
52
49
  end
53
50
 
54
51
  def get_data_from(url)
55
- parsed_url = URI.parse(url)
56
- http = Net::HTTP.new(parsed_url.host)
57
- http.read_timeout = determine_session_timeout
58
- http.open_timeout = EC2_CONNECTION_TIMEOUT
59
- resp = http.get(parsed_url.path)
60
- response_code_valid?(resp.code) ? resp.body : ''
61
- rescue StandardError => e
62
- log.debug("Trying to connect to #{url} but got: #{e.message}")
63
- ''
64
- end
65
-
66
- def response_code_valid?(http_code)
67
- http_code.to_i.equal?(200)
52
+ Utils::Http.get_request(url, {}, { session: determine_session_timeout })
68
53
  end
69
54
 
70
55
  def determine_session_timeout
@@ -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
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Facterversion < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -5,7 +5,6 @@ module Facter
5
5
  module Linux
6
6
  class Filesystems < BaseResolver
7
7
  # :systems
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  @log = Facter::Log.new(self)
11
10
  class << self
@@ -22,7 +21,7 @@ module Facter
22
21
  filesystems = []
23
22
  output.each do |line|
24
23
  tokens = line.split(' ')
25
- filesystems << tokens if tokens.size == 1
24
+ filesystems << tokens if tokens.size == 1 && tokens.first != 'fuseblk'
26
25
  end
27
26
  @fact_list[:systems] = filesystems.sort.join(',')
28
27
  @fact_list[fact_name]
@@ -5,7 +5,6 @@ module Facter
5
5
  module Linux
6
6
  class FipsEnabled < BaseResolver
7
7
  #:fips_enabled
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  @log = Facter::Log.new(self)
11
10
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Freebsd
6
6
  class DmiBios < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Freebsd
6
6
  class FreebsdVersion < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Freebsd
6
6
  class Geom < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -7,7 +7,6 @@ module Facter
7
7
  module Freebsd
8
8
  class Processors < BaseResolver
9
9
  @log = Facter::Log.new(self)
10
- @semaphore = Mutex.new
11
10
  @fact_list ||= {}
12
11
  class << self
13
12
  private
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  module Freebsd
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 Freebsd
6
6
  class SystemMemory < BaseResolver
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ class Gce < BaseResolver
6
+ @fact_list ||= {}
7
+ METADATA_URL = 'http://metadata.google.internal/computeMetadata/v1/?recursive=true&alt=json'
8
+ HEADERS = { "Metadata-Flavor": 'Google', "Accept": 'application/json' }.freeze
9
+
10
+ class << self
11
+ private
12
+
13
+ def post_resolve(fact_name)
14
+ log.debug('reading Gce metadata')
15
+ @fact_list.fetch(fact_name) { read_facts(fact_name) }
16
+ end
17
+
18
+ def read_facts(fact_name)
19
+ @fact_list[:metadata] = query_for_metadata
20
+ @fact_list[fact_name]
21
+ end
22
+
23
+ def query_for_metadata
24
+ gce_data = extract_to_hash(Utils::Http.get_request(METADATA_URL, HEADERS))
25
+ parse_instance(gce_data)
26
+
27
+ gce_data.empty? ? nil : gce_data
28
+ end
29
+
30
+ def extract_to_hash(metadata)
31
+ JSON.parse(metadata)
32
+ rescue JSON::ParserError => e
33
+ log.debug("Trying to parse result but got: #{e.message}")
34
+ {}
35
+ end
36
+
37
+ def parse_instance(gce_data)
38
+ instance_data = gce_data['instance']
39
+ return if instance_data.nil? || instance_data.empty?
40
+
41
+ %w[image machineType zone].each do |key|
42
+ instance_data[key] = instance_data[key].split('/').last if instance_data[key]
43
+ end
44
+
45
+ network = instance_data.dig('networkInterfaces', 0, 'network')
46
+ instance_data['networkInterfaces'][0]['network'] = network.split('/').last unless network.nil?
47
+
48
+ gce_data['instance'] = instance_data
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Hostname < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
  class << self
9
8
  private
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class PosxIdentity < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Linux
6
+ class DockerUptime < BaseResolver
7
+ @fact_list ||= {}
8
+ class << self
9
+ private
10
+
11
+ def post_resolve(fact_name)
12
+ @fact_list.fetch(fact_name) { detect_uptime(fact_name) }
13
+ end
14
+
15
+ def detect_uptime(fact_name)
16
+ days, hours, minutes, seconds = extract_uptime_from_docker
17
+ total_seconds = convert_to_seconds(days, hours, minutes, seconds)
18
+ @fact_list = Utils::UptimeHelper.create_uptime_hash(total_seconds)
19
+
20
+ @fact_list[fact_name]
21
+ end
22
+
23
+ def extract_uptime_from_docker
24
+ # time format [dd-][hh:]mm:ss
25
+ time = Facter::Core::Execution.execute('ps -o etime= -p "1"', logger: log)
26
+ extracted_time = time.split(/[-:]/)
27
+
28
+ reversed_time = extracted_time.reverse
29
+ seconds = reversed_time[0].to_i
30
+ minutes = reversed_time[1].to_i
31
+ hours = reversed_time[2].to_i
32
+ days = reversed_time[3].to_i
33
+
34
+ [days, hours, minutes, seconds]
35
+ end
36
+
37
+ def convert_to_seconds(days, hours, minutes, seconds)
38
+ days * 24 * 3600 + hours * 3600 + minutes * 60 + seconds
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end