facter 4.0.8.pre → 4.0.9.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (424) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/.rubocop_todo.yml +564 -31
  4. data/.travis.yml +2 -2
  5. data/VERSION +1 -1
  6. data/agent/facter-ng.gemspec +1 -1
  7. data/facter.gemspec +1 -1
  8. data/lib/custom_facts/util/collection.rb +3 -7
  9. data/lib/custom_facts/util/fact.rb +6 -3
  10. data/lib/custom_facts/util/parser.rb +13 -2
  11. data/lib/facter.rb +131 -115
  12. data/lib/facts/aix/augeas/version.rb +8 -6
  13. data/lib/facts/aix/facterversion.rb +3 -3
  14. data/lib/facts/aix/hypervisors/lpar.rb +11 -9
  15. data/lib/facts/aix/hypervisors/wpar.rb +10 -7
  16. data/lib/facts/aix/kernel.rb +3 -3
  17. data/lib/facts/aix/kernelmajversion.rb +3 -3
  18. data/lib/facts/aix/kernelrelease.rb +2 -2
  19. data/lib/facts/aix/kernelversion.rb +3 -3
  20. data/lib/facts/aix/load_averages.rb +3 -3
  21. data/lib/facts/aix/networking/domain.rb +9 -7
  22. data/lib/facts/aix/networking/fqdn.rb +9 -7
  23. data/lib/facts/aix/networking/hostname.rb +9 -7
  24. data/lib/facts/aix/networking/ip.rb +9 -7
  25. data/lib/facts/aix/networking/primary.rb +8 -6
  26. data/lib/facts/aix/os/architecture.rb +9 -7
  27. data/lib/facts/aix/os/family.rb +9 -7
  28. data/lib/facts/aix/os/hardware.rb +8 -6
  29. data/lib/facts/aix/os/name.rb +9 -7
  30. data/lib/facts/aix/os/release.rb +12 -10
  31. data/lib/facts/aix/path.rb +3 -3
  32. data/lib/facts/aix/ruby/platform.rb +8 -6
  33. data/lib/facts/aix/ruby/sitedir.rb +8 -6
  34. data/lib/facts/aix/ruby/version.rb +9 -7
  35. data/lib/facts/aix/ssh.rb +3 -3
  36. data/lib/facts/debian/disks.rb +15 -0
  37. data/lib/facts/debian/dmi/bios/release_date.rb +18 -0
  38. data/lib/facts/debian/dmi/bios/vendor.rb +18 -0
  39. data/lib/facts/debian/dmi/bios/version.rb +18 -0
  40. data/lib/facts/debian/dmi/board/manufacturer.rb +18 -0
  41. data/lib/facts/debian/dmi/board/product.rb +18 -0
  42. data/lib/facts/debian/dmi/board/serial_number.rb +18 -0
  43. data/lib/facts/debian/dmi/chassis/asset_tag.rb +18 -0
  44. data/lib/facts/debian/dmi/chassis/type.rb +18 -0
  45. data/lib/facts/debian/dmi/manufacturer.rb +16 -0
  46. data/lib/facts/debian/dmi/product/name.rb +18 -0
  47. data/lib/facts/debian/dmi/product/serial_number.rb +18 -0
  48. data/lib/facts/debian/dmi/product/uuid.rb +18 -0
  49. data/lib/facts/debian/facterversion.rb +3 -3
  50. data/lib/facts/debian/filesystems.rb +14 -0
  51. data/lib/facts/debian/fips_enabled.rb +14 -0
  52. data/lib/facts/debian/kernel.rb +3 -3
  53. data/lib/facts/debian/kernelmajversion.rb +3 -3
  54. data/lib/facts/debian/kernelrelease.rb +3 -3
  55. data/lib/facts/debian/kernelversion.rb +3 -3
  56. data/lib/facts/debian/load_averages.rb +14 -0
  57. data/lib/facts/debian/memory/swap/available.rb +11 -7
  58. data/lib/facts/debian/memory/swap/available_bytes.rb +10 -6
  59. data/lib/facts/debian/memory/swap/capacity.rb +10 -6
  60. data/lib/facts/debian/memory/swap/total.rb +19 -0
  61. data/lib/facts/debian/memory/swap/total_bytes.rb +18 -0
  62. data/lib/facts/debian/memory/swap/used.rb +11 -7
  63. data/lib/facts/debian/memory/swap/used_bytes.rb +10 -6
  64. data/lib/facts/debian/memory/system/available.rb +19 -0
  65. data/lib/facts/debian/memory/system/available_bytes.rb +18 -0
  66. data/lib/facts/debian/memory/system/capacity.rb +18 -0
  67. data/lib/facts/debian/memory/system/total.rb +19 -0
  68. data/lib/facts/debian/memory/system/total_bytes.rb +18 -0
  69. data/lib/facts/debian/memory/system/used.rb +19 -0
  70. data/lib/facts/debian/memory/system/used_bytes.rb +18 -0
  71. data/lib/facts/debian/mountpoints.rb +21 -0
  72. data/lib/facts/debian/networking/domain.rb +9 -7
  73. data/lib/facts/debian/networking/fqdn.rb +9 -7
  74. data/lib/facts/debian/networking/hostname.rb +9 -7
  75. data/lib/facts/debian/networking/interfaces.rb +8 -6
  76. data/lib/facts/debian/networking/ip.rb +9 -7
  77. data/lib/facts/debian/networking/primary.rb +8 -6
  78. data/lib/facts/debian/os/architecture.rb +10 -8
  79. data/lib/facts/debian/os/distro.rb +20 -18
  80. data/lib/facts/debian/os/family.rb +11 -8
  81. data/lib/facts/debian/os/hardware.rb +8 -6
  82. data/lib/facts/debian/os/name.rb +9 -7
  83. data/lib/facts/debian/os/release.rb +17 -15
  84. data/lib/facts/debian/os/selinux.rb +13 -11
  85. data/lib/facts/debian/path.rb +2 -2
  86. data/lib/facts/debian/processors/count.rb +16 -0
  87. data/lib/facts/debian/processors/isa.rb +25 -0
  88. data/lib/facts/debian/processors/models.rb +16 -0
  89. data/lib/facts/debian/processors/physicalcount.rb +16 -0
  90. data/lib/facts/debian/ruby/platform.rb +8 -6
  91. data/lib/facts/debian/ruby/sitedir.rb +8 -6
  92. data/lib/facts/debian/ruby/version.rb +9 -7
  93. data/lib/facts/debian/ssh.rb +26 -0
  94. data/lib/facts/debian/system_uptime/days.rb +17 -0
  95. data/lib/facts/debian/system_uptime/hours.rb +17 -0
  96. data/lib/facts/debian/system_uptime/minutes.rb +17 -0
  97. data/lib/facts/debian/system_uptime/uptime.rb +17 -0
  98. data/lib/facts/debian/timezone.rb +2 -2
  99. data/lib/facts/el/disks.rb +3 -3
  100. data/lib/facts/el/dmi/bios/release_date.rb +10 -6
  101. data/lib/facts/el/dmi/bios/vendor.rb +10 -6
  102. data/lib/facts/el/dmi/bios/version.rb +10 -6
  103. data/lib/facts/el/dmi/board/manufacturer.rb +10 -6
  104. data/lib/facts/el/dmi/board/product.rb +10 -6
  105. data/lib/facts/el/dmi/board/serial_number.rb +10 -6
  106. data/lib/facts/el/dmi/chassis/asset_tag.rb +10 -6
  107. data/lib/facts/el/dmi/chassis/type.rb +10 -6
  108. data/lib/facts/el/dmi/manufacturer.rb +8 -6
  109. data/lib/facts/el/dmi/product/name.rb +10 -6
  110. data/lib/facts/el/dmi/product/serial_number.rb +10 -6
  111. data/lib/facts/el/dmi/product/uuid.rb +10 -6
  112. data/lib/facts/el/facterversion.rb +3 -3
  113. data/lib/facts/el/filesystems.rb +3 -3
  114. data/lib/facts/el/fips_enabled.rb +3 -3
  115. data/lib/facts/el/kernel.rb +3 -3
  116. data/lib/facts/el/kernelmajversion.rb +3 -3
  117. data/lib/facts/el/kernelrelease.rb +3 -3
  118. data/lib/facts/el/kernelversion.rb +3 -3
  119. data/lib/facts/el/load_averages.rb +3 -3
  120. data/lib/facts/el/memory/swap/available.rb +11 -7
  121. data/lib/facts/el/memory/swap/available_bytes.rb +10 -6
  122. data/lib/facts/el/memory/swap/capacity.rb +10 -6
  123. data/lib/facts/el/memory/swap/total.rb +11 -7
  124. data/lib/facts/el/memory/swap/total_bytes.rb +10 -6
  125. data/lib/facts/el/memory/swap/used.rb +11 -7
  126. data/lib/facts/el/memory/swap/used_bytes.rb +10 -6
  127. data/lib/facts/el/memory/system/available.rb +11 -7
  128. data/lib/facts/el/memory/system/available_bytes.rb +10 -6
  129. data/lib/facts/el/memory/system/capacity.rb +10 -6
  130. data/lib/facts/el/memory/system/total.rb +11 -7
  131. data/lib/facts/el/memory/system/total_bytes.rb +10 -6
  132. data/lib/facts/el/memory/system/used.rb +11 -7
  133. data/lib/facts/el/memory/system/used_bytes.rb +10 -6
  134. data/lib/facts/el/mountpoints.rb +4 -4
  135. data/lib/facts/el/networking/domain.rb +9 -7
  136. data/lib/facts/el/networking/fqdn.rb +9 -7
  137. data/lib/facts/el/networking/hostname.rb +9 -7
  138. data/lib/facts/el/networking/interfaces.rb +8 -6
  139. data/lib/facts/el/networking/ip.rb +9 -7
  140. data/lib/facts/el/networking/primary.rb +8 -6
  141. data/lib/facts/el/os/architecture.rb +9 -7
  142. data/lib/facts/el/os/family.rb +8 -6
  143. data/lib/facts/el/os/hardware.rb +8 -6
  144. data/lib/facts/el/os/name.rb +10 -8
  145. data/lib/facts/el/os/release.rb +11 -9
  146. data/lib/facts/el/os/selinux.rb +13 -11
  147. data/lib/facts/el/path.rb +3 -3
  148. data/lib/facts/el/processors/count.rb +8 -6
  149. data/lib/facts/el/processors/isa.rb +13 -11
  150. data/lib/facts/el/processors/models.rb +8 -6
  151. data/lib/facts/el/processors/physicalcount.rb +8 -6
  152. data/lib/facts/el/ruby/platform.rb +8 -6
  153. data/lib/facts/el/ruby/sitedir.rb +8 -6
  154. data/lib/facts/el/ruby/version.rb +9 -7
  155. data/lib/facts/el/ssh.rb +3 -3
  156. data/lib/facts/el/system_uptime/days.rb +8 -6
  157. data/lib/facts/el/system_uptime/hours.rb +8 -6
  158. data/lib/facts/el/system_uptime/seconds.rb +8 -6
  159. data/lib/facts/el/system_uptime/uptime.rb +8 -6
  160. data/lib/facts/el/timezone.rb +3 -3
  161. data/lib/facts/macosx/augeas.rb +3 -3
  162. data/lib/facts/macosx/dmi/product/name.rb +10 -6
  163. data/lib/facts/macosx/facterversion.rb +3 -3
  164. data/lib/facts/macosx/filesystems.rb +3 -3
  165. data/lib/facts/macosx/identity/gid.rb +8 -6
  166. data/lib/facts/macosx/identity/group.rb +8 -6
  167. data/lib/facts/macosx/identity/privileged.rb +8 -6
  168. data/lib/facts/macosx/identity/uid.rb +8 -6
  169. data/lib/facts/macosx/identity/user.rb +8 -6
  170. data/lib/facts/macosx/is_virtual.rb +2 -2
  171. data/lib/facts/macosx/kernel.rb +3 -3
  172. data/lib/facts/macosx/kernelmajversion.rb +3 -3
  173. data/lib/facts/macosx/kernelrelease.rb +3 -3
  174. data/lib/facts/macosx/kernelversion.rb +3 -3
  175. data/lib/facts/macosx/load_averages.rb +3 -3
  176. data/lib/facts/macosx/memory/swap/available.rb +11 -7
  177. data/lib/facts/macosx/memory/swap/available_bytes.rb +10 -6
  178. data/lib/facts/macosx/memory/swap/capacity.rb +10 -6
  179. data/lib/facts/macosx/memory/swap/encrypted.rb +10 -6
  180. data/lib/facts/macosx/memory/swap/total.rb +11 -7
  181. data/lib/facts/macosx/memory/swap/total_bytes.rb +10 -6
  182. data/lib/facts/macosx/memory/swap/used.rb +11 -7
  183. data/lib/facts/macosx/memory/swap/used_bytes.rb +10 -6
  184. data/lib/facts/macosx/memory/system/available.rb +11 -7
  185. data/lib/facts/macosx/memory/system/available_bytes.rb +10 -6
  186. data/lib/facts/macosx/memory/system/capacity.rb +10 -6
  187. data/lib/facts/macosx/memory/system/total.rb +11 -7
  188. data/lib/facts/macosx/memory/system/total_bytes.rb +10 -6
  189. data/lib/facts/macosx/memory/system/used.rb +11 -7
  190. data/lib/facts/macosx/memory/system/used_bytes.rb +10 -6
  191. data/lib/facts/macosx/mountpoints.rb +4 -4
  192. data/lib/facts/macosx/networking/domain.rb +9 -7
  193. data/lib/facts/macosx/networking/fqdn.rb +9 -7
  194. data/lib/facts/macosx/networking/hostname.rb +9 -7
  195. data/lib/facts/macosx/networking/ip.rb +18 -0
  196. data/lib/facts/macosx/os/architecture.rb +9 -7
  197. data/lib/facts/macosx/os/family.rb +9 -7
  198. data/lib/facts/macosx/os/hardware.rb +8 -6
  199. data/lib/facts/macosx/os/macosx/build.rb +19 -0
  200. data/lib/facts/macosx/os/macosx/product.rb +19 -0
  201. data/lib/facts/macosx/os/macosx/version.rb +21 -0
  202. data/lib/facts/macosx/os/name.rb +9 -7
  203. data/lib/facts/macosx/os/release.rb +12 -10
  204. data/lib/facts/macosx/path.rb +3 -3
  205. data/lib/facts/macosx/processors/count.rb +16 -0
  206. data/lib/facts/macosx/processors/isa.rb +16 -0
  207. data/lib/facts/macosx/processors/models.rb +16 -0
  208. data/lib/facts/macosx/processors/physicalcount.rb +16 -0
  209. data/lib/facts/macosx/processors/speed.rb +16 -0
  210. data/lib/facts/macosx/ruby/platform.rb +8 -6
  211. data/lib/facts/macosx/ruby/sitedir.rb +8 -6
  212. data/lib/facts/macosx/ruby/version.rb +9 -7
  213. data/lib/facts/macosx/system_profiler/boot_mode.rb +8 -6
  214. data/lib/facts/macosx/system_profiler/boot_rom_version.rb +8 -6
  215. data/lib/facts/macosx/system_profiler/boot_volume.rb +8 -6
  216. data/lib/facts/macosx/system_profiler/computer_name.rb +8 -6
  217. data/lib/facts/macosx/system_profiler/cores.rb +8 -6
  218. data/lib/facts/macosx/system_profiler/hardware_uuid.rb +8 -6
  219. data/lib/facts/macosx/system_profiler/kernel_version.rb +8 -6
  220. data/lib/facts/macosx/system_profiler/l2_cache_per_core.rb +8 -6
  221. data/lib/facts/macosx/system_profiler/l3_cache.rb +8 -6
  222. data/lib/facts/macosx/system_profiler/memory.rb +8 -6
  223. data/lib/facts/macosx/system_profiler/model_identifier.rb +8 -6
  224. data/lib/facts/macosx/system_profiler/model_name.rb +8 -6
  225. data/lib/facts/macosx/system_profiler/processor_name.rb +8 -6
  226. data/lib/facts/macosx/system_profiler/processor_speed.rb +8 -6
  227. data/lib/facts/macosx/system_profiler/processors.rb +8 -6
  228. data/lib/facts/macosx/system_profiler/secure_virtual_memory.rb +8 -6
  229. data/lib/facts/macosx/system_profiler/serial_number.rb +8 -6
  230. data/lib/facts/macosx/system_profiler/smc_version.rb +8 -6
  231. data/lib/facts/macosx/system_profiler/system_version.rb +8 -6
  232. data/lib/facts/macosx/system_profiler/uptime.rb +8 -6
  233. data/lib/facts/macosx/system_profiler/username.rb +8 -6
  234. data/lib/facts/macosx/system_uptime/days.rb +16 -0
  235. data/lib/facts/macosx/system_uptime/hours.rb +16 -0
  236. data/lib/facts/macosx/system_uptime/seconds.rb +8 -6
  237. data/lib/facts/macosx/system_uptime/uptime.rb +8 -6
  238. data/lib/facts/macosx/timezone.rb +2 -2
  239. data/lib/facts/sles/facterversion.rb +3 -3
  240. data/lib/facts/sles/kernel.rb +3 -3
  241. data/lib/facts/sles/kernelmajversion.rb +3 -3
  242. data/lib/facts/sles/kernelrelease.rb +3 -3
  243. data/lib/facts/sles/kernelversion.rb +3 -3
  244. data/lib/facts/sles/memory/swap/available.rb +11 -7
  245. data/lib/facts/sles/memory/swap/available_bytes.rb +10 -6
  246. data/lib/facts/sles/memory/swap/capacity.rb +10 -6
  247. data/lib/facts/sles/memory/swap/total.rb +11 -7
  248. data/lib/facts/sles/memory/swap/total_bytes.rb +10 -6
  249. data/lib/facts/sles/memory/swap/used.rb +11 -7
  250. data/lib/facts/sles/memory/swap/used_bytes.rb +10 -6
  251. data/lib/facts/sles/memory/system/available.rb +11 -7
  252. data/lib/facts/sles/memory/system/available_bytes.rb +10 -6
  253. data/lib/facts/sles/memory/system/capacity.rb +10 -6
  254. data/lib/facts/sles/memory/system/total.rb +11 -7
  255. data/lib/facts/sles/memory/system/total_bytes.rb +10 -6
  256. data/lib/facts/sles/memory/system/used.rb +11 -7
  257. data/lib/facts/sles/memory/system/used_bytes.rb +10 -6
  258. data/lib/facts/sles/networking/domain.rb +9 -7
  259. data/lib/facts/sles/networking/fqdn.rb +9 -7
  260. data/lib/facts/sles/networking/hostname.rb +9 -7
  261. data/lib/facts/sles/networking/interfaces.rb +8 -6
  262. data/lib/facts/sles/networking/ip.rb +9 -7
  263. data/lib/facts/sles/networking/primary.rb +8 -6
  264. data/lib/facts/sles/os/architecture.rb +9 -7
  265. data/lib/facts/sles/os/family.rb +8 -6
  266. data/lib/facts/sles/os/hardware.rb +8 -6
  267. data/lib/facts/sles/os/name.rb +9 -7
  268. data/lib/facts/sles/os/release.rb +19 -17
  269. data/lib/facts/sles/os/selinux.rb +13 -11
  270. data/lib/facts/sles/path.rb +3 -3
  271. data/lib/facts/sles/ruby/platform.rb +8 -6
  272. data/lib/facts/sles/ruby/sitedir.rb +8 -6
  273. data/lib/facts/sles/ruby/version.rb +9 -7
  274. data/lib/facts/sles/ssh.rb +3 -3
  275. data/lib/facts/sles/timezone.rb +3 -3
  276. data/lib/facts/solaris/facterversion.rb +3 -3
  277. data/lib/facts/solaris/kernel.rb +3 -3
  278. data/lib/facts/solaris/kernelmajversion.rb +3 -3
  279. data/lib/facts/solaris/kernelrelease.rb +3 -3
  280. data/lib/facts/solaris/kernelversion.rb +3 -3
  281. data/lib/facts/solaris/networking/domain.rb +9 -7
  282. data/lib/facts/solaris/networking/fqdn.rb +9 -7
  283. data/lib/facts/solaris/networking/hostname.rb +9 -7
  284. data/lib/facts/solaris/networking/ip.rb +18 -0
  285. data/lib/facts/solaris/os/architecture.rb +9 -7
  286. data/lib/facts/solaris/os/family.rb +8 -6
  287. data/lib/facts/solaris/os/hardware.rb +8 -6
  288. data/lib/facts/solaris/os/name.rb +10 -8
  289. data/lib/facts/solaris/os/release.rb +13 -11
  290. data/lib/facts/solaris/path.rb +3 -3
  291. data/lib/facts/solaris/ruby/platform.rb +8 -6
  292. data/lib/facts/solaris/ruby/sitedir.rb +8 -6
  293. data/lib/facts/solaris/ruby/version.rb +9 -7
  294. data/lib/facts/solaris/solaris_zones/current.rb +8 -6
  295. data/lib/facts/solaris/solaris_zones/zone.rb +18 -16
  296. data/lib/facts/solaris/zfs_featurenumbers.rb +4 -4
  297. data/lib/facts/solaris/zfs_version.rb +4 -4
  298. data/lib/facts/solaris/zpool_featurenumbers.rb +4 -4
  299. data/lib/facts/solaris/zpool_version.rb +4 -4
  300. data/lib/facts/windows/dhcp_servers.rb +4 -4
  301. data/lib/facts/windows/dmi/manufacturer.rb +9 -7
  302. data/lib/facts/windows/dmi/product/name.rb +11 -7
  303. data/lib/facts/windows/dmi/product/serial_number.rb +11 -7
  304. data/lib/facts/windows/dmi/product/uuid.rb +11 -7
  305. data/lib/facts/windows/facterversion.rb +3 -3
  306. data/lib/facts/windows/fips_enabled.rb +3 -3
  307. data/lib/facts/windows/hypervisors/hyperv.rb +13 -11
  308. data/lib/facts/windows/hypervisors/kvm.rb +20 -18
  309. data/lib/facts/windows/hypervisors/virtualbox.rb +22 -20
  310. data/lib/facts/windows/hypervisors/vmware.rb +13 -11
  311. data/lib/facts/windows/hypervisors/xen.rb +12 -10
  312. data/lib/facts/windows/identity/privileged.rb +8 -6
  313. data/lib/facts/windows/identity/user.rb +9 -7
  314. data/lib/facts/windows/interfaces.rb +3 -3
  315. data/lib/facts/windows/ipaddress6_interfaces.rb +3 -3
  316. data/lib/facts/windows/ipaddress_interfaces.rb +3 -3
  317. data/lib/facts/windows/{kernel/kernel.rb → kernel.rb} +3 -3
  318. data/lib/facts/windows/kernelmajversion.rb +15 -0
  319. data/lib/facts/windows/kernelrelease.rb +15 -0
  320. data/lib/facts/windows/kernelversion.rb +15 -0
  321. data/lib/facts/windows/macaddress_interfaces.rb +3 -3
  322. data/lib/facts/windows/memory/system/available.rb +12 -8
  323. data/lib/facts/windows/memory/system/available_bytes.rb +12 -8
  324. data/lib/facts/windows/memory/system/capacity.rb +10 -6
  325. data/lib/facts/windows/memory/system/total.rb +12 -8
  326. data/lib/facts/windows/memory/system/total_bytes.rb +12 -8
  327. data/lib/facts/windows/memory/system/used.rb +11 -7
  328. data/lib/facts/windows/memory/system/used_bytes.rb +10 -6
  329. data/lib/facts/windows/mtu_interfaces.rb +3 -3
  330. data/lib/facts/windows/netmask6_interfaces.rb +3 -3
  331. data/lib/facts/windows/netmask_interfaces.rb +3 -3
  332. data/lib/facts/windows/network6_interfaces.rb +3 -3
  333. data/lib/facts/windows/network_interfaces.rb +3 -3
  334. data/lib/facts/windows/networking/dhcp.rb +8 -6
  335. data/lib/facts/windows/networking/domain.rb +9 -7
  336. data/lib/facts/windows/networking/fqdn.rb +12 -10
  337. data/lib/facts/windows/networking/hostname.rb +9 -7
  338. data/lib/facts/windows/networking/interfaces.rb +8 -6
  339. data/lib/facts/windows/networking/ip.rb +9 -7
  340. data/lib/facts/windows/networking/ip6.rb +9 -7
  341. data/lib/facts/windows/networking/mac.rb +9 -7
  342. data/lib/facts/windows/networking/mtu.rb +8 -6
  343. data/lib/facts/windows/networking/netmask.rb +9 -7
  344. data/lib/facts/windows/networking/netmask6.rb +9 -7
  345. data/lib/facts/windows/networking/network.rb +9 -7
  346. data/lib/facts/windows/networking/network6.rb +9 -7
  347. data/lib/facts/windows/networking/primary.rb +8 -6
  348. data/lib/facts/windows/networking/scope6.rb +8 -6
  349. data/lib/facts/windows/os/architecture.rb +9 -7
  350. data/lib/facts/windows/os/family.rb +9 -7
  351. data/lib/facts/windows/os/hardware.rb +9 -7
  352. data/lib/facts/windows/os/name.rb +9 -7
  353. data/lib/facts/windows/os/release.rb +24 -22
  354. data/lib/facts/windows/os/windows/edition_id.rb +11 -7
  355. data/lib/facts/windows/os/windows/installation_type.rb +11 -7
  356. data/lib/facts/windows/os/windows/product_name.rb +11 -7
  357. data/lib/facts/windows/os/windows/release_id.rb +11 -7
  358. data/lib/facts/windows/os/windows/system32.rb +11 -7
  359. data/lib/facts/windows/path.rb +3 -3
  360. data/lib/facts/windows/processor.rb +3 -3
  361. data/lib/facts/windows/processors/count.rb +9 -7
  362. data/lib/facts/windows/processors/isa.rb +9 -7
  363. data/lib/facts/windows/processors/models.rb +8 -6
  364. data/lib/facts/windows/processors/physicalcount.rb +9 -7
  365. data/lib/facts/windows/ruby/platform.rb +9 -7
  366. data/lib/facts/windows/ruby/sitedir.rb +9 -7
  367. data/lib/facts/windows/ruby/version.rb +9 -7
  368. data/lib/facts/windows/scope6_interfaces.rb +3 -3
  369. data/lib/facts/windows/system_uptime/days.rb +18 -0
  370. data/lib/facts/windows/system_uptime/hours.rb +18 -0
  371. data/lib/facts/windows/system_uptime/seconds.rb +18 -0
  372. data/lib/facts/windows/system_uptime/uptime.rb +18 -0
  373. data/lib/facts/windows/timezone.rb +3 -3
  374. data/lib/facts/windows/virtualization/is_virtual.rb +8 -6
  375. data/lib/facts/windows/virtualization/virtual.rb +8 -6
  376. data/lib/framework/cli/cli_launcher.rb +3 -0
  377. data/lib/framework/config/block_list.rb +1 -1
  378. data/lib/framework/core/fact_filter.rb +0 -9
  379. data/lib/framework/core/fact_loaders/class_discoverer.rb +13 -2
  380. data/lib/framework/core/fact_loaders/internal_fact_loader.rb +5 -8
  381. data/lib/framework/core/fact_manager.rb +1 -3
  382. data/lib/framework/core/file_loader.rb +0 -2
  383. data/lib/framework/core/options.rb +2 -2
  384. data/lib/framework/core/options/default_options.rb +1 -0
  385. data/lib/framework/core/options/helper_options.rb +18 -6
  386. data/lib/framework/core/options/options_validator.rb +1 -0
  387. data/lib/framework/core/options/validate_options.rb +5 -3
  388. data/lib/framework/formatters/formatter_helper.rb +1 -1
  389. data/lib/framework/logging/logger.rb +38 -13
  390. data/lib/framework/logging/multilogger.rb +4 -0
  391. data/lib/framework/parsers/query_parser.rb +1 -1
  392. data/lib/framework/utils/utils.rb +13 -0
  393. data/lib/models/resolved_fact.rb +1 -1
  394. data/lib/models/searched_fact.rb +1 -1
  395. data/lib/resolvers/base_resolver.rb +1 -1
  396. data/lib/resolvers/fips_enabled_resolver.rb +2 -0
  397. data/lib/{facts → resolvers}/macosx/processor_resolver.rb +0 -0
  398. metadata +62 -34
  399. data/lib/facts/base/network_interface.rb +0 -9
  400. data/lib/facts/debian/system_uptime/system_uptime_days.rb +0 -15
  401. data/lib/facts/debian/system_uptime/system_uptime_hours.rb +0 -15
  402. data/lib/facts/debian/system_uptime/system_uptime_minutes.rb +0 -15
  403. data/lib/facts/debian/system_uptime/system_uptime_uptime.rb +0 -15
  404. data/lib/facts/macosx/count.rb +0 -14
  405. data/lib/facts/macosx/isa.rb +0 -14
  406. data/lib/facts/macosx/models.rb +0 -14
  407. data/lib/facts/macosx/network_ip.rb +0 -13
  408. data/lib/facts/macosx/networking/ipaddress.rb +0 -14
  409. data/lib/facts/macosx/os/sw_vers/build.rb +0 -15
  410. data/lib/facts/macosx/os/sw_vers/product.rb +0 -15
  411. data/lib/facts/macosx/os/sw_vers/version.rb +0 -17
  412. data/lib/facts/macosx/physicalcount.rb +0 -14
  413. data/lib/facts/macosx/speed.rb +0 -14
  414. data/lib/facts/macosx/system_uptime/system_uptime_days.rb +0 -14
  415. data/lib/facts/macosx/system_uptime/system_uptime_hours.rb +0 -14
  416. data/lib/facts/solaris/networking/ipaddress.rb +0 -14
  417. data/lib/facts/windows/kernel/kernel_maj_version.rb +0 -15
  418. data/lib/facts/windows/kernel/kernel_release.rb +0 -15
  419. data/lib/facts/windows/kernel/kernel_version.rb +0 -15
  420. data/lib/facts/windows/system_uptime/system_uptime_days.rb +0 -16
  421. data/lib/facts/windows/system_uptime/system_uptime_hours.rb +0 -16
  422. data/lib/facts/windows/system_uptime/system_uptime_seconds.rb +0 -16
  423. data/lib/facts/windows/system_uptime/system_uptime_uptime.rb +0 -16
  424. data/lib/framework/logging/legacy_logger.rb +0 -31
@@ -1,4 +1,4 @@
1
- sudo: false
1
+ os: linux
2
2
  language: ruby
3
3
  cache:
4
4
  bundler: true
@@ -12,7 +12,7 @@ before_install:
12
12
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
13
13
  - chmod +x ./cc-test-reporter
14
14
  - ./cc-test-reporter before-build
15
- matrix:
15
+ jobs:
16
16
  include:
17
17
  - rvm: 2.6
18
18
  script:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.0.8.pre
1
+ 4.0.9.pre
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
36
36
 
37
37
  spec.add_development_dependency 'bundler', '~> 2.0'
38
38
  spec.add_development_dependency 'coveralls', '~> 0.8.23'
39
- spec.add_development_dependency 'rake', '~> 10.0'
39
+ spec.add_development_dependency 'rake', '>= 12.3.3'
40
40
  spec.add_development_dependency 'rspec', '~> 3.0'
41
41
  spec.add_development_dependency 'rubocop', '~> 0.74.0'
42
42
  spec.add_development_dependency 'rubycritic', '~> 4.1.0'
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
37
37
 
38
38
  spec.add_development_dependency 'bundler', '~> 2.0'
39
39
  spec.add_development_dependency 'coveralls', '~> 0.8.23'
40
- spec.add_development_dependency 'rake', '~> 10.0'
40
+ spec.add_development_dependency 'rake', '>= 12.3.3'
41
41
  spec.add_development_dependency 'rspec', '~> 3.0'
42
42
  spec.add_development_dependency 'rubocop', '~> 0.74.0'
43
43
  spec.add_development_dependency 'rubocop-performance', '~> 1.5'
@@ -136,15 +136,11 @@ module LegacyFacter
136
136
  def value(name)
137
137
  fact = fact(name)
138
138
 
139
- return Facter.core_value(name) if fact.nil?
139
+ return Facter.core_value(name) if fact.nil? || fact.value.nil?
140
140
 
141
- value = fact&.value
142
- weight = fact&.used_resolution_weight || 0
141
+ core_value = Facter.core_value(name) if fact.used_resolution_weight <= 0
143
142
 
144
- core_value = Facter.core_value(name)
145
- return core_value if weight <= 0 && core_value
146
-
147
- value
143
+ core_value.nil? ? fact.value : core_value
148
144
  end
149
145
 
150
146
  private
@@ -20,6 +20,7 @@ module LegacyFacter
20
20
  # Fact options e.g. fact_type
21
21
  attr_accessor :options
22
22
 
23
+ # Weight of the resolution that was used to obtain the fact value
23
24
  attr_accessor :used_resolution_weight
24
25
 
25
26
  # Creates a new fact, with no resolution mechanisms. See {Facter.add}
@@ -32,12 +33,14 @@ module LegacyFacter
32
33
  def initialize(name, options = {})
33
34
  @name = name.to_s.downcase.intern
34
35
 
36
+ @options = Facter::Utils.deep_copy(options)
35
37
  extract_ldapname_option!(options)
36
38
 
37
39
  @ldapname ||= @name.to_s
38
40
 
39
41
  @resolves = []
40
42
  @searching = false
43
+ @used_resolution_weight = 0
41
44
 
42
45
  @value = nil
43
46
  end
@@ -52,7 +55,7 @@ module LegacyFacter
52
55
  #
53
56
  # @api private
54
57
  def add(options = {}, &block)
55
- @options = options
58
+ @options = Facter::Utils.deep_copy(@options.merge(options))
56
59
  define_resolution(nil, options, &block)
57
60
  end
58
61
 
@@ -158,7 +161,7 @@ module LegacyFacter
158
161
  end
159
162
 
160
163
  def sort_by_weight(resolutions)
161
- resolutions.sort { |a, b| b.weight <=> a.weight }
164
+ resolutions.sort { |a, b| b.weight.to_i <=> a.weight.to_i }
162
165
  end
163
166
 
164
167
  def find_first_real_value(resolutions)
@@ -168,7 +171,7 @@ module LegacyFacter
168
171
  rescue Facter::ResolveCustomFactError
169
172
  break
170
173
  end
171
- @used_resolution_weight = resolve.weight
174
+ @used_resolution_weight = resolve.weight || 0
172
175
  return value unless value.nil?
173
176
  end
174
177
  nil
@@ -65,6 +65,17 @@ module LegacyFacter
65
65
  def parse_results
66
66
  raise ArgumentError, 'Subclasses must respond to parse_results'
67
67
  end
68
+
69
+ def parse_executable_output(output)
70
+ res = nil
71
+ begin
72
+ res = YAML.safe_load output
73
+ rescue Exception => e
74
+ Facter.debug("Could not parse executable fact output as YAML or JSON (#{e.message})")
75
+ end
76
+ res = KeyValuePairOutputFormat.parse output unless res.is_a?(Hash)
77
+ res
78
+ end
68
79
  end
69
80
 
70
81
  module KeyValuePairOutputFormat
@@ -120,7 +131,7 @@ module LegacyFacter
120
131
 
121
132
  class ScriptParser < Base
122
133
  def parse_results
123
- KeyValuePairOutputFormat.parse LegacyFacter::Core::Execution.exec(quote(filename))
134
+ parse_executable_output(LegacyFacter::Core::Execution.exec(quote(filename)))
124
135
  end
125
136
 
126
137
  private
@@ -154,7 +165,7 @@ module LegacyFacter
154
165
  shell_command =
155
166
  "\"#{powershell}\" -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Bypass -File \"#{filename}\""
156
167
  output = LegacyFacter::Core::Execution.exec(shell_command)
157
- KeyValuePairOutputFormat.parse(output)
168
+ parse_executable_output(output)
158
169
  end
159
170
  end
160
171
 
@@ -11,151 +11,167 @@ module Facter
11
11
  class ResolveCustomFactError < StandardError; end
12
12
 
13
13
  @options = Options.instance
14
+ Log.add_legacy_logger(STDOUT)
15
+ @logger = Log.new(self)
14
16
 
15
- def self.[](name)
16
- fact(name)
17
- end
17
+ class << self
18
+ def [](name)
19
+ fact(name)
20
+ end
18
21
 
19
- def self.add(name, options = {}, &block)
20
- options[:fact_type] = :custom
21
- LegacyFacter.add(name, options, &block)
22
- end
22
+ def add(name, options = {}, &block)
23
+ options[:fact_type] = :custom
24
+ LegacyFacter.add(name, options, &block)
25
+ end
23
26
 
24
- def self.clear
25
- LegacyFacter.clear
26
- end
27
+ def clear
28
+ LegacyFacter.clear
29
+ end
27
30
 
28
- def self.core_value(user_query)
29
- user_query = user_query.to_s
30
- resolved_facts = Facter::FactManager.instance.resolve_core([user_query])
31
- fact_collection = FactCollection.new.build_fact_collection!(resolved_facts)
32
- splitted_user_query = Facter::Utils.split_user_query(user_query)
33
- fact_collection.dig(*splitted_user_query)
34
- end
31
+ def core_value(user_query)
32
+ user_query = user_query.to_s
33
+ resolved_facts = Facter::FactManager.instance.resolve_core([user_query])
34
+ fact_collection = FactCollection.new.build_fact_collection!(resolved_facts)
35
+ splitted_user_query = Facter::Utils.split_user_query(user_query)
36
+ fact_collection.dig(*splitted_user_query)
37
+ end
35
38
 
36
- def self.debug(msg)
37
- return unless debugging?
39
+ def debug(msg)
40
+ return unless debugging?
38
41
 
39
- @logger ||= Log.new(self)
40
- @logger.debug(msg)
41
- nil
42
- end
42
+ @logger.debug(msg)
43
+ nil
44
+ end
43
45
 
44
- def self.debugging?
45
- Options[:debug]
46
- end
46
+ def on_message(&block)
47
+ Facter::Log.on_message(&block)
48
+ end
47
49
 
48
- def self.debugging(debug_bool)
49
- @options.priority_options = { debug: debug_bool }
50
- @options.refresh
50
+ def debugging?
51
+ Options[:debug]
52
+ end
51
53
 
52
- debug_bool
53
- end
54
+ def debugging(debug_bool)
55
+ @options.priority_options[:debug] = debug_bool
56
+ @options.refresh
54
57
 
55
- def self.fact(name)
56
- fact = Facter::Util::Fact.new(name)
57
- val = value(name)
58
- fact.add({}) { setcode { val } }
59
- fact
60
- end
58
+ debug_bool
59
+ end
61
60
 
62
- def self.log_errors(missing_names)
63
- @logger ||= Log.new(self)
61
+ def fact(name)
62
+ fact = Facter::Util::Fact.new(name)
63
+ val = value(name)
64
+ fact.add({}) { setcode { val } }
65
+ fact
66
+ end
64
67
 
65
- missing_names.each do |missing_name|
66
- @logger.error("fact \"#{missing_name}\" does not exist.", true)
68
+ def log_errors(missing_names)
69
+ missing_names.each do |missing_name|
70
+ @logger.error("fact \"#{missing_name}\" does not exist.", true)
71
+ end
67
72
  end
68
- end
69
73
 
70
- def self.method_missing(name, *args, &block)
71
- @logger ||= Log.new(self)
72
- @logger.error(
73
- "--#{name}-- not implemented but required \n" \
74
- 'with params: ' \
75
- "#{args.inspect} \n" \
76
- 'with block: ' \
77
- "#{block.inspect} \n" \
78
- "called by: \n" \
79
- "#{caller} \n"
80
- )
81
- nil
82
- end
74
+ def method_missing(name, *args, &block)
75
+ @logger.error(
76
+ "--#{name}-- not implemented but required \n" \
77
+ 'with params: ' \
78
+ "#{args.inspect} \n" \
79
+ 'with block: ' \
80
+ "#{block.inspect} \n" \
81
+ "called by: \n" \
82
+ "#{caller} \n"
83
+ )
84
+ nil
85
+ end
83
86
 
84
- def self.reset
85
- LegacyFacter.reset
86
- end
87
+ def reset
88
+ LegacyFacter.reset
89
+ end
87
90
 
88
- def self.search(*dirs)
89
- LegacyFacter.search(*dirs)
90
- end
91
+ def search(*dirs)
92
+ LegacyFacter.search(*dirs)
93
+ end
91
94
 
92
- def self.search_external(dirs)
93
- LegacyFacter.search_external(dirs)
94
- end
95
+ def search_external(dirs)
96
+ LegacyFacter.search_external(dirs)
97
+ end
95
98
 
96
- def self.search_external_path
97
- LegacyFacter.search_external_path
98
- end
99
+ def search_external_path
100
+ LegacyFacter.search_external_path
101
+ end
99
102
 
100
- def self.search_path
101
- LegacyFacter.search_path
102
- end
103
+ def search_path
104
+ LegacyFacter.search_path
105
+ end
103
106
 
104
- def self.to_hash
105
- @options.priority_options = { to_hash: true }
106
- @options.refresh
107
- resolved_facts = Facter::FactManager.instance.resolve_facts(@options)
108
- CacheManager.invalidate_all_caches
109
- FactCollection.new.build_fact_collection!(resolved_facts)
110
- end
107
+ def to_hash
108
+ @options.priority_options[:to_hash] = true
109
+ @options.refresh
111
110
 
112
- def self.to_user_output(cli_options, *args)
113
- @options.priority_options = { is_cli: true }.merge!(cli_options.map { |(k, v)| [k.to_sym, v] }.to_h)
114
- @options.refresh(args)
111
+ log_blocked_facts
115
112
 
116
- resolved_facts = Facter::FactManager.instance.resolve_facts(@options, args)
117
- CacheManager.invalidate_all_caches
118
- fact_formatter = Facter::FormatterFactory.build(@options)
113
+ resolved_facts = Facter::FactManager.instance.resolve_facts
114
+ CacheManager.invalidate_all_caches
115
+ FactCollection.new.build_fact_collection!(resolved_facts)
116
+ end
119
117
 
120
- status = error_check(args, resolved_facts)
118
+ def to_user_output(cli_options, *args)
119
+ @options.priority_options = { is_cli: true }.merge!(cli_options.map { |(k, v)| [k.to_sym, v] }.to_h)
120
+ @options.refresh(args)
121
+ @logger.info("executed with command line: #{ARGV.drop(1).join(' ')}")
122
+ log_blocked_facts
121
123
 
122
- [fact_formatter.format(resolved_facts), status || 0]
123
- end
124
+ resolved_facts = Facter::FactManager.instance.resolve_facts(args)
125
+ CacheManager.invalidate_all_caches
126
+ fact_formatter = Facter::FormatterFactory.build(@options)
124
127
 
125
- def self.trace?
126
- LegacyFacter.trace?
127
- end
128
+ status = error_check(args, resolved_facts)
128
129
 
129
- def self.trace(bool)
130
- LegacyFacter.trace(bool)
131
- end
130
+ [fact_formatter.format(resolved_facts), status || 0]
131
+ end
132
132
 
133
- def self.value(user_query)
134
- @options.refresh([user_query])
135
- user_query = user_query.to_s
136
- resolved_facts = Facter::FactManager.instance.resolve_facts(@options, [user_query])
137
- CacheManager.invalidate_all_caches
138
- fact_collection = FactCollection.new.build_fact_collection!(resolved_facts)
139
- splitted_user_query = Facter::Utils.split_user_query(user_query)
140
- fact_collection.dig(*splitted_user_query)
141
- end
133
+ def trace?
134
+ LegacyFacter.trace?
135
+ end
142
136
 
143
- def self.version
144
- version_file = ::File.join(ROOT_DIR, 'VERSION')
145
- ::File.read(version_file).strip
146
- end
137
+ def trace(bool)
138
+ LegacyFacter.trace(bool)
139
+ end
147
140
 
148
- private_class_method def self.error_check(args, resolved_facts)
149
- if Options.instance[:strict]
150
- missing_names = args - resolved_facts.map(&:user_query).uniq
151
- if missing_names.count.positive?
152
- status = 1
153
- log_errors(missing_names)
154
- else
155
- status = nil
156
- end
141
+ def value(user_query)
142
+ @options.refresh([user_query])
143
+ user_query = user_query.to_s
144
+ resolved_facts = Facter::FactManager.instance.resolve_facts([user_query])
145
+ CacheManager.invalidate_all_caches
146
+ fact_collection = FactCollection.new.build_fact_collection!(resolved_facts)
147
+ splitted_user_query = Facter::Utils.split_user_query(user_query)
148
+ fact_collection.dig(*splitted_user_query)
149
+ end
150
+
151
+ def version
152
+ version_file = ::File.join(ROOT_DIR, 'VERSION')
153
+ ::File.read(version_file).strip
157
154
  end
158
155
 
159
- status
156
+ private
157
+
158
+ def log_blocked_facts
159
+ block_list = BlockList.instance.block_list
160
+ @logger.debug("blocking collection of #{block_list.join("\s")} facts") if block_list.any? && Options[:block]
161
+ end
162
+
163
+ def error_check(args, resolved_facts)
164
+ if Options.instance[:strict]
165
+ missing_names = args - resolved_facts.map(&:user_query).uniq
166
+ if missing_names.count.positive?
167
+ status = 1
168
+ log_errors(missing_names)
169
+ else
170
+ status = nil
171
+ end
172
+ end
173
+
174
+ status
175
+ end
160
176
  end
161
177
  end
@@ -1,13 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Facter
3
+ module Facts
4
4
  module Aix
5
- class AugeasVersion
6
- FACT_NAME = 'augeas.version'
5
+ module Augeas
6
+ class Version
7
+ FACT_NAME = 'augeas.version'
7
8
 
8
- def call_the_resolver
9
- fact_value = Resolvers::Augeas.resolve(:augeas_version)
10
- ResolvedFact.new(FACT_NAME, fact_value)
9
+ def call_the_resolver
10
+ fact_value = Facter::Resolvers::Augeas.resolve(:augeas_version)
11
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
12
+ end
11
13
  end
12
14
  end
13
15
  end
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Facter
3
+ module Facts
4
4
  module Aix
5
5
  class Facterversion
6
6
  FACT_NAME = 'facterversion'
7
7
 
8
8
  def call_the_resolver
9
- fact_value = Resolvers::Facterversion.resolve(:facterversion)
9
+ fact_value = Facter::Resolvers::Facterversion.resolve(:facterversion)
10
10
 
11
- ResolvedFact.new(FACT_NAME, fact_value)
11
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
12
12
  end
13
13
  end
14
14
  end