facter 4.0.34 → 4.0.39

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f04518bbd83ad1cf3fb6d5d026e1258cf46a374d7535f28066bcab0939e18360
4
- data.tar.gz: c7ee4b28049507ce0035377863eca35faf2c5aed82bda495fbc8b8174aa7a3db
3
+ metadata.gz: e1cc7c2dc4026c1c24f4140c319b3ac68c5b77dd1b42e61c46f07facff044380
4
+ data.tar.gz: 3565addd16973284508cfc3058aab779dcf3bb30d4c65257fc9831cee898a380
5
5
  SHA512:
6
- metadata.gz: a369de0d02f412b1d385d5f52a7e4d458e076dc765eab53e2bb4fc0866eb56e7e8f28f0664a55eb7f3abe0e6cb23cc830df38d8b3b0862f33ac90e9648386f17
7
- data.tar.gz: 905d45c95b4e2802e3fd4e990d75b6afb8d7ce641783283543c11d624ce3764576c5d39ac1d5550e68dd6c43385eca996f0251b2826ef3153e65b937903c9683
6
+ metadata.gz: ca715b689b8b050d20021ed104770a75737fed542236826592068d01066adfc369b222dbf94f2d1eb867c5b3d2023689f8ebd458f690f3f969e98c1c39375ddb
7
+ data.tar.gz: cf6be422f902d75dcbf6fb6d147c3c95f718ab2129a18756b0ffe0626f3cfb3fd4f652a8c9f3278801826a7e15e35e9574cf11e22780593f79db315c6aa3b87b
@@ -13,6 +13,8 @@ module Facter
13
13
  Options.init
14
14
  Log.output(STDOUT)
15
15
  @already_searched = {}
16
+ @debug_once = []
17
+ @warn_once = []
16
18
 
17
19
  class << self
18
20
  def clear_messages
@@ -54,6 +56,8 @@ module Facter
54
56
  # @api public
55
57
  def clear
56
58
  @already_searched = {}
59
+ @debug_once = []
60
+ @warn_once = []
57
61
  LegacyFacter.clear
58
62
  Options[:custom_dir] = []
59
63
  LegacyFacter.collection.invalidate_custom_facts
@@ -68,24 +72,54 @@ module Facter
68
72
  fact_collection.dig(*splitted_user_query)
69
73
  end
70
74
 
71
- # Prints out a debug message when debug option is set to true
72
- # @param msg [String] Message to be printed out
75
+ # Logs debug message when debug option is set to true
76
+ # @param message [Object] Message object to be logged
73
77
  #
74
78
  # @return [nil]
75
79
  #
76
80
  # @api public
77
- def debug(msg)
81
+ def debug(message)
78
82
  return unless debugging?
79
83
 
80
- logger.debug(msg)
84
+ logger.debug(message.to_s)
81
85
  nil
82
86
  end
83
87
 
88
+ # Logs the same debug message only once when debug option is set to true
89
+ # @param message [Object] Message object to be logged
90
+ #
91
+ # @return [nil]
92
+ #
93
+ # @api public
94
+ def debugonce(message)
95
+ return unless debugging?
96
+
97
+ message_string = message.to_s
98
+ return if @debug_once.include? message_string
99
+
100
+ @debug_once << message_string
101
+ logger.debug(message_string)
102
+ nil
103
+ end
104
+
105
+ # Define a new fact or extend an existing fact.
106
+ #
107
+ # @param name [Symbol] The name of the fact to define
108
+ # @param options [Hash] A hash of options to set on the fact
109
+ #
110
+ # @return [Facter::Util::Fact] The fact that was defined
111
+ #
112
+ # @api public
113
+ def define_fact(name, options = {}, &block)
114
+ options[:fact_type] = :custom
115
+ LegacyFacter.define_fact(name, options, &block)
116
+ end
117
+
84
118
  def on_message(&block)
85
119
  Facter::Log.on_message(&block)
86
120
  end
87
121
 
88
- # Check whether debuging is enabled
122
+ # Check whether debugging is enabled
89
123
  #
90
124
  # @return [bool]
91
125
  #
@@ -104,11 +138,31 @@ module Facter
104
138
  Facter::Options[:debug] = debug_bool
105
139
  end
106
140
 
141
+ # Iterates over fact names and values
142
+ #
143
+ # @yieldparam [String] name the fact name
144
+ # @yieldparam [String] value the current value of the fact
145
+ #
146
+ # @return [Facter]
147
+ #
148
+ # @api public
149
+ def each
150
+ log_blocked_facts
151
+ resolved_facts = Facter::FactManager.instance.resolve_facts
152
+ SessionCache.invalidate_all_caches
153
+
154
+ resolved_facts.each do |fact|
155
+ yield(fact.name, fact.value)
156
+ end
157
+
158
+ self
159
+ end
160
+
107
161
  # Returns a fact object by name. If you use this, you still have to
108
162
  # call {Facter::Util::Fact#value `value`} on it to retrieve the actual
109
163
  # value.
110
164
  #
111
- # @param name [String] the name of the fact
165
+ # @param user_query [String] the name of the fact
112
166
  #
113
167
  # @return [Facter::Util::Fact, nil] The fact object, or nil if no fact
114
168
  # is found.
@@ -134,6 +188,16 @@ module Facter
134
188
  nil
135
189
  end
136
190
 
191
+ # Loads all facts
192
+ #
193
+ # @return [nil]
194
+ #
195
+ # @api public
196
+ def loadfacts
197
+ LegacyFacter.loadfacts
198
+ nil
199
+ end
200
+
137
201
  # Register directories to be searched for custom facts. The registered directories
138
202
  # must be absolute paths or they will be ignored.
139
203
  #
@@ -199,7 +263,7 @@ module Facter
199
263
  end
200
264
 
201
265
  # Enable or disable trace
202
- # @param debug_bool [bool] Set trace on debug state
266
+ # @param bool [bool] Set trace on debug state
203
267
  #
204
268
  # @return [type] [description]
205
269
  #
@@ -210,7 +274,7 @@ module Facter
210
274
 
211
275
  # Gets the value for a fact. Returns `nil` if no such fact exists.
212
276
  #
213
- # @param name [String] the fact name
277
+ # @param user_query [String] the fact name
214
278
  # @return [String] the value of the fact, or nil if no fact is found
215
279
  #
216
280
  # @api public
@@ -262,6 +326,43 @@ module Facter
262
326
  logger.error(arr.flatten.join("\n"))
263
327
  end
264
328
 
329
+ # Returns a list with the names of all solved facts
330
+ #
331
+ # @return [Array] the list with all the fact names
332
+ #
333
+ # @api public
334
+ def list
335
+ to_hash.keys.sort
336
+ end
337
+
338
+ # Logs the message parameter as a warning.
339
+ #
340
+ # @param message [Object] the warning object to be displayed
341
+ #
342
+ # @return [nil]
343
+ #
344
+ # @api public
345
+ def warn(message)
346
+ logger.warn(message.to_s)
347
+ nil
348
+ end
349
+
350
+ # Logs only once the same warning message.
351
+ #
352
+ # @param message [Object] the warning message object
353
+ #
354
+ # @return [nil]
355
+ #
356
+ # @api public
357
+ def warnonce(message)
358
+ message_string = message.to_s
359
+ return if @warn_once.include? message_string
360
+
361
+ @warn_once << message_string
362
+ logger.warn(message_string)
363
+ nil
364
+ end
365
+
265
366
  private
266
367
 
267
368
  def logger
@@ -303,10 +404,9 @@ module Facter
303
404
  # Returns exit status when user query contains facts that do
304
405
  # not exist
305
406
  #
306
- # @param dirs [Array] Arguments sent to CLI
307
- # @param dirs [Array] List of resolved facts
407
+ # @param resolved_facts [Array] List of resolved facts
308
408
  #
309
- # @return [Integer, nil] Will return status 1 if user query contains
409
+ # @return [1/nil] Will return status 1 if user query contains
310
410
  # facts that are not found or resolved, otherwise it will return nil
311
411
  #
312
412
  # @api private
@@ -6,6 +6,10 @@ module Facter
6
6
  class Base
7
7
  STDERR_MESSAGE = 'Command %s resulted with the following stderr message: %s'
8
8
 
9
+ def initialize
10
+ @log = Log.new(self)
11
+ end
12
+
9
13
  # This is part of the public API. No race condition can happen
10
14
  # here because custom facts are executed sequentially
11
15
  def with_env(values)
@@ -36,9 +40,7 @@ module Facter
36
40
  end
37
41
 
38
42
  def execute(command, options = {})
39
- on_fail = options.fetch(:on_fail, :raise)
40
- expand = options.fetch(:expand, true)
41
- logger = options[:logger]
43
+ on_fail, expand, logger, time_limit = extract_options(options)
42
44
 
43
45
  expanded_command = if !expand && builtin_command?(command) || logger
44
46
  command
@@ -55,11 +57,21 @@ module Facter
55
57
  return on_fail
56
58
  end
57
59
 
58
- execute_command(expanded_command, on_fail, logger)
60
+ execute_command(expanded_command, on_fail, logger, time_limit)
59
61
  end
60
62
 
61
63
  private
62
64
 
65
+ def extract_options(options)
66
+ on_fail = options.fetch(:on_fail, :raise)
67
+ expand = options.fetch(:expand, true)
68
+ logger = options[:logger]
69
+ time_limit = options[:limit].to_i
70
+ time_limit = time_limit.positive? ? time_limit : nil
71
+
72
+ [on_fail, expand, logger, time_limit]
73
+ end
74
+
63
75
  def log_stderr(msg, command, logger)
64
76
  return if !msg || msg.empty?
65
77
 
@@ -77,12 +89,30 @@ module Facter
77
89
  output.chomp =~ /builtin/ ? true : false
78
90
  end
79
91
 
80
- def execute_command(command, on_fail, logger = nil)
92
+ def execute_command(command, on_fail, logger = nil, time_limit = nil)
93
+ time_limit ||= 1.5
81
94
  begin
82
95
  # Set LC_ALL and LANG to force i18n to C for the duration of this exec;
83
96
  # this ensures that any code that parses the
84
97
  # output of the command can expect it to be in a consistent / predictable format / locale
85
- out, stderr, _status_ = Open3.capture3({ 'LC_ALL' => 'C', 'LANG' => 'C' }, command.to_s)
98
+ opts = { 'LC_ALL' => 'C', 'LANG' => 'C' }
99
+ require 'timeout'
100
+ @log.debug("Executing command: #{command}")
101
+ out, stderr = Open3.popen3(opts, command.to_s) do |_, stdout, stderr, wait_thr|
102
+ pid = wait_thr.pid
103
+ output = +''
104
+ err = +''
105
+ begin
106
+ Timeout.timeout(time_limit) do
107
+ output << stdout.read
108
+ err << stderr.read
109
+ end
110
+ rescue Timeout::Error
111
+ @log.debug("Timeout encounter after #{time_limit}s, killing process with pid: #{pid}")
112
+ Process.kill('KILL', pid)
113
+ end
114
+ [output, err]
115
+ end
86
116
  log_stderr(stderr, command, logger)
87
117
  rescue StandardError => e
88
118
  return '' if logger
@@ -35,6 +35,7 @@ module LegacyFacter
35
35
  def initialize(dir = LegacyFacter::Util::Config.external_facts_dirs, weight = EXTERNAL_FACT_WEIGHT)
36
36
  @directories = [dir].flatten
37
37
  @weight = weight
38
+ @log ||= Facter::Log.new(self)
38
39
  end
39
40
 
40
41
  # Load facts from files in fact directory using the relevant parser classes to
@@ -83,11 +84,12 @@ module LegacyFacter
83
84
  parser = LegacyFacter::Util::Parser.parser_for(fact.file)
84
85
  next if parser.nil?
85
86
 
86
- data = parser.results
87
+ data = resolve_fact(fact, parser)
88
+
87
89
  if data == false
88
90
  LegacyFacter.warn "Could not interpret fact file #{fact.file}"
89
91
  elsif (data == {}) || data.nil?
90
- LegacyFacter.warn "Fact file #{fact.file} was parsed but returned an empty data set"
92
+ @log.debug("Fact file #{fact.file} was parsed but no key=>value data was returned")
91
93
  else
92
94
  data.each do |p, v|
93
95
  collection.add(p, value: v, fact_type: :external,
@@ -97,6 +99,14 @@ module LegacyFacter
97
99
  end
98
100
  end
99
101
 
102
+ def resolve_fact(fact, parser)
103
+ data = nil
104
+ fact_name = File.basename(fact.file)
105
+ Facter::Framework::Benchmarking::Timer.measure(fact_name) { data = parser.results }
106
+
107
+ data
108
+ end
109
+
100
110
  def entries
101
111
  dirs = @directories.select { |directory| File.directory?(directory) }.map do |directory|
102
112
  Dir.entries(directory).map { |directory_entry| File.join(directory, directory_entry) }
@@ -118,7 +118,10 @@ module Facter
118
118
 
119
119
  searching do
120
120
  suitable_resolutions = sort_by_weight(find_suitable_resolutions(@resolves))
121
- @value = find_first_real_value(suitable_resolutions)
121
+
122
+ Facter::Framework::Benchmarking::Timer.measure(@name) do
123
+ @value = find_first_real_value(suitable_resolutions)
124
+ end
122
125
 
123
126
  announce_when_no_suitable_resolution(suitable_resolutions)
124
127
  announce_when_no_value_found(@value)
@@ -165,5 +165,144 @@
165
165
  "virtual",
166
166
  "is_virtual",
167
167
  "cloud"
168
+ ],
169
+ "legacy": [
170
+ "architecture",
171
+ "augeasversion",
172
+ "bios_release_date",
173
+ "bios_vendor",
174
+ "bios_version",
175
+ "blockdevice_*_model",
176
+ "blockdevice_*_size",
177
+ "blockdevice_*_vendor",
178
+ "blockdevices",
179
+ "boardassettag",
180
+ "boardmanufacturer",
181
+ "boardproductname",
182
+ "boardserialnumber",
183
+ "chassisassettag",
184
+ "chassistype",
185
+ "dhcp_servers",
186
+ "domain",
187
+ "fqdn",
188
+ "gid",
189
+ "hardwareisa",
190
+ "hardwaremodel",
191
+ "hostname",
192
+ "id",
193
+ "interfaces",
194
+ "ipaddress",
195
+ "ipaddress_.*",
196
+ "ipaddress_*",
197
+ "ipaddress6",
198
+ "ipaddress6_.*",
199
+ "ipaddress6_*",
200
+ "ldom_*",
201
+ "lsbdistcodename",
202
+ "lsbdistdescription",
203
+ "lsbdistid",
204
+ "lsbdistrelease",
205
+ "lsbmajdistrelease",
206
+ "lsbminordistrelease",
207
+ "lsbrelease",
208
+ "macaddress",
209
+ "macaddress_.*",
210
+ "macaddress_*",
211
+ "macosx_buildversion",
212
+ "macosx_productname",
213
+ "macosx_productversion",
214
+ "macosx_productversion_major",
215
+ "macosx_productversion_minor",
216
+ "manufacturer",
217
+ "memoryfree",
218
+ "memoryfree_mb",
219
+ "memorysize",
220
+ "memorysize_mb",
221
+ "mtu_.*",
222
+ "mtu_*",
223
+ "netmask",
224
+ "netmask_.*",
225
+ "netmask_*",
226
+ "netmask6",
227
+ "netmask6_.*",
228
+ "netmask6_*",
229
+ "network",
230
+ "network_.*",
231
+ "network_*",
232
+ "network6",
233
+ "network6_.*",
234
+ "network6_*",
235
+ "operatingsystem",
236
+ "operatingsystemmajrelease",
237
+ "operatingsystemrelease",
238
+ "osfamily",
239
+ "physicalprocessorcount",
240
+ "processor.*",
241
+ "processor*",
242
+ "processorcount",
243
+ "productname",
244
+ "rubyplatform",
245
+ "rubysitedir",
246
+ "rubyversion",
247
+ "scope6",
248
+ "scope6_.*",
249
+ "selinux",
250
+ "selinux_config_mode",
251
+ "selinux_config_policy",
252
+ "selinux_current_mode",
253
+ "selinux_enforced",
254
+ "selinux_policyversion",
255
+ "serialnumber",
256
+ "sp_*",
257
+ "sp_boot_mode",
258
+ "sp_boot_rom_version",
259
+ "sp_boot_volume",
260
+ "sp_cpu_type",
261
+ "sp_current_processor_speed",
262
+ "sp_kernel_version",
263
+ "sp_l2_cache_core",
264
+ "sp_l3_cache",
265
+ "sp_local_host_name",
266
+ "sp_machine_model",
267
+ "sp_machine_name",
268
+ "sp_number_processors",
269
+ "sp_os_version",
270
+ "sp_packages",
271
+ "sp_physical_memory",
272
+ "sp_platform_uuid",
273
+ "sp_secure_vm",
274
+ "sp_serial_number",
275
+ "sp_smc_version_system",
276
+ "sp_uptime",
277
+ "sp_user_name",
278
+ "ssh.*key",
279
+ "ssh*key",
280
+ "sshfp_.*",
281
+ "sshfp_*",
282
+ "swapencrypted",
283
+ "swapfree",
284
+ "swapfree_mb",
285
+ "swapsize",
286
+ "swapsize_mb",
287
+ "system32",
288
+ "uptime",
289
+ "uptime_days",
290
+ "uptime_hours",
291
+ "uptime_seconds",
292
+ "uuid",
293
+ "windows_edition_id",
294
+ "windows_installation_type",
295
+ "windows_product_name",
296
+ "windows_release_id",
297
+ "xendomains",
298
+ "zone_*_brand",
299
+ "zone_*_id",
300
+ "zone_*_iptype",
301
+ "zone_*_name",
302
+ "zone_*_path",
303
+ "zone_*_status",
304
+ "zone_*_uuid",
305
+ "zonename",
306
+ "zones"
168
307
  ]
169
- }
308
+ }