facter 4.0.30 → 4.0.35

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 (254) hide show
  1. checksums.yaml +4 -4
  2. data/lib/facter.rb +3 -4
  3. data/lib/facter/custom_facts/util/directory_loader.rb +10 -0
  4. data/lib/facter/custom_facts/util/parser.rb +3 -3
  5. data/lib/facter/facts/aix/disks.rb +17 -0
  6. data/lib/facter/facts/aix/memory/swap/available.rb +22 -0
  7. data/lib/facter/facts/aix/memory/swap/available_bytes.rb +22 -0
  8. data/lib/facter/facts/aix/memory/swap/capacity.rb +20 -0
  9. data/lib/facter/facts/aix/memory/swap/total.rb +22 -0
  10. data/lib/facter/facts/aix/memory/swap/total_bytes.rb +22 -0
  11. data/lib/facter/facts/aix/memory/swap/used.rb +21 -0
  12. data/lib/facter/facts/aix/memory/swap/used_bytes.rb +19 -0
  13. data/lib/facter/facts/aix/memory/system/available.rb +22 -0
  14. data/lib/facter/facts/aix/memory/system/available_bytes.rb +22 -0
  15. data/lib/facter/facts/aix/memory/system/capacity.rb +20 -0
  16. data/lib/facter/facts/aix/memory/system/total.rb +22 -0
  17. data/lib/facter/facts/aix/memory/system/total_bytes.rb +22 -0
  18. data/lib/facter/facts/aix/memory/system/used.rb +21 -0
  19. data/lib/facter/facts/aix/memory/system/used_bytes.rb +19 -0
  20. data/lib/facter/facts/aix/ssh.rb +3 -1
  21. data/lib/facter/facts/bsd/load_averages.rb +1 -1
  22. data/lib/facter/facts/freebsd/augeas/version.rb +19 -0
  23. data/lib/facter/facts/freebsd/dmi/bios/release_date.rb +19 -0
  24. data/lib/facter/facts/freebsd/dmi/bios/vendor.rb +19 -0
  25. data/lib/facter/facts/freebsd/dmi/bios/version.rb +19 -0
  26. data/lib/facter/facts/freebsd/dmi/manufacturer.rb +17 -0
  27. data/lib/facter/facts/freebsd/dmi/product/name.rb +19 -0
  28. data/lib/facter/facts/freebsd/dmi/product/serial_number.rb +19 -0
  29. data/lib/facter/facts/freebsd/dmi/product/uuid.rb +19 -0
  30. data/lib/facter/facts/freebsd/facterversion.rb +14 -0
  31. data/lib/facter/facts/freebsd/identity/gid.rb +16 -0
  32. data/lib/facter/facts/{solaris/solaris_zones/current.rb → freebsd/identity/group.rb} +6 -6
  33. data/lib/facter/facts/freebsd/identity/privileged.rb +16 -0
  34. data/lib/facter/facts/freebsd/identity/uid.rb +16 -0
  35. data/lib/facter/facts/freebsd/identity/user.rb +17 -0
  36. data/lib/facter/facts/freebsd/kernel.rb +14 -0
  37. data/lib/facter/facts/freebsd/kernelrelease.rb +14 -0
  38. data/lib/facter/facts/freebsd/memory/swap/available.rb +21 -0
  39. data/lib/facter/facts/freebsd/memory/swap/available_bytes.rb +20 -0
  40. data/lib/facter/facts/freebsd/memory/swap/capacity.rb +18 -0
  41. data/lib/facter/facts/freebsd/memory/swap/encrypted.rb +19 -0
  42. data/lib/facter/facts/freebsd/memory/swap/total.rb +21 -0
  43. data/lib/facter/facts/freebsd/memory/swap/total_bytes.rb +20 -0
  44. data/lib/facter/facts/freebsd/memory/swap/used.rb +20 -0
  45. data/lib/facter/facts/freebsd/memory/swap/used_bytes.rb +18 -0
  46. data/lib/facter/facts/freebsd/memory/system/available.rb +21 -0
  47. data/lib/facter/facts/freebsd/memory/system/available_bytes.rb +20 -0
  48. data/lib/facter/facts/freebsd/memory/system/capacity.rb +18 -0
  49. data/lib/facter/facts/freebsd/memory/system/total.rb +21 -0
  50. data/lib/facter/facts/freebsd/memory/system/total_bytes.rb +20 -0
  51. data/lib/facter/facts/freebsd/memory/system/used.rb +20 -0
  52. data/lib/facter/facts/freebsd/memory/system/used_bytes.rb +18 -0
  53. data/lib/facter/facts/freebsd/mountpoints.rb +21 -0
  54. data/lib/facter/facts/freebsd/netmask6_interfaces.rb +20 -0
  55. data/lib/facter/facts/freebsd/netmask_interfaces.rb +20 -0
  56. data/lib/facter/facts/freebsd/network6_interfaces.rb +20 -0
  57. data/lib/facter/facts/freebsd/network_interfaces.rb +20 -0
  58. data/lib/facter/facts/freebsd/networking/dhcp.rb +17 -0
  59. data/lib/facter/facts/freebsd/networking/domain.rb +18 -0
  60. data/lib/facter/facts/freebsd/networking/fqdn.rb +18 -0
  61. data/lib/facter/facts/freebsd/networking/hostname.rb +18 -0
  62. data/lib/facter/facts/freebsd/networking/interfaces.rb +17 -0
  63. data/lib/facter/facts/freebsd/networking/ip.rb +18 -0
  64. data/lib/facter/facts/freebsd/networking/ip6.rb +18 -0
  65. data/lib/facter/facts/freebsd/networking/mac.rb +18 -0
  66. data/lib/facter/facts/freebsd/networking/mtu.rb +17 -0
  67. data/lib/facter/facts/freebsd/networking/netmask.rb +18 -0
  68. data/lib/facter/facts/freebsd/networking/netmask6.rb +18 -0
  69. data/lib/facter/facts/freebsd/networking/network.rb +18 -0
  70. data/lib/facter/facts/freebsd/networking/network6.rb +18 -0
  71. data/lib/facter/facts/freebsd/networking/primary.rb +17 -0
  72. data/lib/facter/facts/freebsd/networking/scope6.rb +17 -0
  73. data/lib/facter/facts/freebsd/os/architecture.rb +18 -0
  74. data/lib/facter/facts/freebsd/os/hardware.rb +18 -0
  75. data/lib/facter/facts/freebsd/os/name.rb +18 -0
  76. data/lib/facter/facts/{bsd/bsd_example_fact.rb → freebsd/path.rb} +5 -4
  77. data/lib/facter/facts/freebsd/processors/isa.rb +17 -0
  78. data/lib/facter/facts/freebsd/puppet_version.rb +15 -0
  79. data/lib/facter/facts/freebsd/ruby/platform.rb +18 -0
  80. data/lib/facter/facts/freebsd/ruby/sitedir.rb +18 -0
  81. data/lib/facter/facts/freebsd/ruby/version.rb +18 -0
  82. data/lib/facter/facts/freebsd/ssh.rb +26 -0
  83. data/lib/facter/facts/freebsd/system_uptime/days.rb +18 -0
  84. data/lib/facter/facts/freebsd/system_uptime/hours.rb +18 -0
  85. data/lib/facter/facts/freebsd/system_uptime/seconds.rb +18 -0
  86. data/lib/facter/facts/freebsd/system_uptime/uptime.rb +18 -0
  87. data/lib/facter/facts/freebsd/timezone.rb +15 -0
  88. data/lib/facter/facts/freebsd/zfs_featurenumbers.rb +14 -0
  89. data/lib/facter/facts/freebsd/zfs_version.rb +14 -0
  90. data/lib/facter/facts/freebsd/zpool_featureflags.rb +14 -0
  91. data/lib/facter/facts/freebsd/zpool_featurenumbers.rb +14 -0
  92. data/lib/facter/facts/freebsd/zpool_version.rb +14 -0
  93. data/lib/facter/facts/linux/hypervisors/vmware.rb +2 -1
  94. data/lib/facter/facts/linux/mountpoints.rb +1 -1
  95. data/lib/facter/facts/linux/partitions.rb +1 -1
  96. data/lib/facter/facts/linux/ssh.rb +19 -9
  97. data/lib/facter/facts/linux/system_uptime/days.rb +7 -1
  98. data/lib/facter/facts/linux/system_uptime/hours.rb +7 -1
  99. data/lib/facter/facts/linux/system_uptime/seconds.rb +7 -1
  100. data/lib/facter/facts/linux/system_uptime/uptime.rb +7 -1
  101. data/lib/facter/facts/linux/virtual.rb +17 -0
  102. data/lib/facter/facts/macosx/dhcp_servers.rb +2 -2
  103. data/lib/facter/facts/macosx/interfaces.rb +1 -1
  104. data/lib/facter/facts/macosx/ipaddress6_interfaces.rb +1 -1
  105. data/lib/facter/facts/macosx/ipaddress_interfaces.rb +1 -1
  106. data/lib/facter/facts/macosx/macaddress_interfaces.rb +1 -1
  107. data/lib/facter/facts/macosx/mtu_interfaces.rb +1 -1
  108. data/lib/facter/facts/macosx/netmask6_interfaces.rb +1 -1
  109. data/lib/facter/facts/macosx/netmask_interfaces.rb +1 -1
  110. data/lib/facter/facts/macosx/network6_interfaces.rb +1 -1
  111. data/lib/facter/facts/macosx/network_interfaces.rb +1 -1
  112. data/lib/facter/facts/macosx/networking/dhcp.rb +1 -1
  113. data/lib/facter/facts/macosx/networking/interfaces.rb +1 -1
  114. data/lib/facter/facts/macosx/networking/ip.rb +1 -1
  115. data/lib/facter/facts/macosx/networking/ip6.rb +1 -1
  116. data/lib/facter/facts/macosx/networking/mac.rb +1 -1
  117. data/lib/facter/facts/macosx/networking/mtu.rb +1 -1
  118. data/lib/facter/facts/macosx/networking/netmask.rb +1 -1
  119. data/lib/facter/facts/macosx/networking/netmask6.rb +1 -1
  120. data/lib/facter/facts/macosx/networking/network.rb +1 -1
  121. data/lib/facter/facts/macosx/networking/network6.rb +1 -1
  122. data/lib/facter/facts/macosx/networking/primary.rb +1 -1
  123. data/lib/facter/facts/macosx/networking/scope6.rb +1 -1
  124. data/lib/facter/facts/macosx/scope6_interfaces.rb +2 -2
  125. data/lib/facter/facts/macosx/ssh.rb +19 -11
  126. data/lib/facter/facts/macosx/system_profiler/hardware_uuid.rb +1 -1
  127. data/lib/facter/facts/macosx/system_profiler/l2_cache_per_core.rb +1 -1
  128. data/lib/facter/facts/macosx/system_profiler/memory.rb +1 -1
  129. data/lib/facter/facts/macosx/system_profiler/processor_name.rb +1 -1
  130. data/lib/facter/facts/macosx/system_profiler/processors.rb +1 -1
  131. data/lib/facter/facts/macosx/virtual.rb +1 -1
  132. data/lib/facter/facts/solaris/current_zone.rb +16 -0
  133. data/lib/facter/facts/solaris/disks.rb +14 -0
  134. data/lib/facter/facts/solaris/dmi/bios/release_date.rb +24 -0
  135. data/lib/facter/facts/solaris/dmi/bios/vendor.rb +24 -0
  136. data/lib/facter/facts/solaris/dmi/bios/version.rb +24 -0
  137. data/lib/facter/facts/solaris/dmi/chassis/asset_tag.rb +24 -0
  138. data/lib/facter/facts/solaris/dmi/chassis/type.rb +24 -0
  139. data/lib/facter/facts/solaris/dmi/manufacturer.rb +25 -0
  140. data/lib/facter/facts/solaris/dmi/product/name.rb +27 -0
  141. data/lib/facter/facts/solaris/dmi/product/serial_number.rb +27 -0
  142. data/lib/facter/facts/solaris/dmi/product/uuid.rb +24 -0
  143. data/lib/facter/facts/solaris/load_averages.rb +14 -0
  144. data/lib/facter/facts/solaris/memory/swap/available.rb +22 -0
  145. data/lib/facter/facts/solaris/memory/swap/available_bytes.rb +22 -0
  146. data/lib/facter/facts/solaris/memory/swap/capacity.rb +20 -0
  147. data/lib/facter/facts/solaris/memory/swap/total.rb +22 -0
  148. data/lib/facter/facts/solaris/memory/swap/total_bytes.rb +22 -0
  149. data/lib/facter/facts/solaris/memory/swap/used.rb +21 -0
  150. data/lib/facter/facts/solaris/memory/swap/used_bytes.rb +19 -0
  151. data/lib/facter/facts/solaris/memory/system/available.rb +22 -0
  152. data/lib/facter/facts/solaris/memory/system/available_bytes.rb +22 -0
  153. data/lib/facter/facts/solaris/memory/system/capacity.rb +20 -0
  154. data/lib/facter/facts/solaris/memory/system/total.rb +22 -0
  155. data/lib/facter/facts/solaris/memory/system/total_bytes.rb +22 -0
  156. data/lib/facter/facts/solaris/memory/system/used.rb +21 -0
  157. data/lib/facter/facts/solaris/memory/system/used_bytes.rb +19 -0
  158. data/lib/facter/facts/solaris/mountpoints.rb +1 -1
  159. data/lib/facter/facts/solaris/os/release.rb +3 -3
  160. data/lib/facter/facts/solaris/ssh.rb +19 -9
  161. data/lib/facter/facts/solaris/zfs_featurenumbers.rb +1 -1
  162. data/lib/facter/facts/solaris/zfs_version.rb +1 -1
  163. data/lib/facter/facts/solaris/zones.rb +60 -0
  164. data/lib/facter/facts/solaris/zpool_featureflags.rb +1 -1
  165. data/lib/facter/facts/solaris/zpool_featurenumbers.rb +1 -1
  166. data/lib/facter/facts/solaris/zpool_version.rb +1 -1
  167. data/lib/facter/facts/windows/dhcp_servers.rb +2 -2
  168. data/lib/facter/facts/windows/interfaces.rb +1 -1
  169. data/lib/facter/facts/windows/ipaddress6_interfaces.rb +1 -1
  170. data/lib/facter/facts/windows/ipaddress_interfaces.rb +1 -1
  171. data/lib/facter/facts/windows/macaddress_interfaces.rb +1 -1
  172. data/lib/facter/facts/windows/mtu_interfaces.rb +1 -1
  173. data/lib/facter/facts/windows/netmask6_interfaces.rb +1 -1
  174. data/lib/facter/facts/windows/netmask_interfaces.rb +1 -1
  175. data/lib/facter/facts/windows/network6_interfaces.rb +1 -1
  176. data/lib/facter/facts/windows/network_interfaces.rb +1 -1
  177. data/lib/facter/facts/windows/networking/dhcp.rb +1 -1
  178. data/lib/facter/facts/windows/networking/domain.rb +1 -1
  179. data/lib/facter/facts/windows/networking/fqdn.rb +1 -1
  180. data/lib/facter/facts/windows/networking/interfaces.rb +1 -1
  181. data/lib/facter/facts/windows/networking/ip.rb +1 -1
  182. data/lib/facter/facts/windows/networking/ip6.rb +1 -1
  183. data/lib/facter/facts/windows/networking/mac.rb +1 -1
  184. data/lib/facter/facts/windows/networking/mtu.rb +1 -1
  185. data/lib/facter/facts/windows/networking/netmask.rb +1 -1
  186. data/lib/facter/facts/windows/networking/netmask6.rb +1 -1
  187. data/lib/facter/facts/windows/networking/network.rb +1 -1
  188. data/lib/facter/facts/windows/networking/network6.rb +1 -1
  189. data/lib/facter/facts/windows/networking/primary.rb +1 -1
  190. data/lib/facter/facts/windows/networking/scope6.rb +1 -1
  191. data/lib/facter/facts/windows/scope6_interfaces.rb +1 -1
  192. data/lib/facter/framework/cli/cli.rb +35 -6
  193. data/lib/facter/framework/config/fact_groups.rb +13 -0
  194. data/lib/facter/framework/core/fact/internal/internal_fact_manager.rb +1 -1
  195. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +2 -0
  196. data/lib/facter/framework/core/options.rb +1 -0
  197. data/lib/facter/framework/core/options/option_store.rb +3 -6
  198. data/lib/facter/framework/detector/os_detector.rb +5 -1
  199. data/lib/facter/framework/logging/logger.rb +13 -5
  200. data/lib/facter/os_hierarchy.json +6 -7
  201. data/lib/facter/resolvers/aix/disks.rb +63 -0
  202. data/lib/facter/resolvers/aix/memory.rb +65 -0
  203. data/lib/facter/resolvers/aix/partitions.rb +9 -20
  204. data/lib/facter/resolvers/aix/utils/info_extractor.rb +20 -0
  205. data/lib/facter/resolvers/augeas_resolver.rb +19 -2
  206. data/lib/facter/resolvers/base_resolver.rb +1 -1
  207. data/lib/facter/resolvers/bsd/ffi/ffi_helper.rb +0 -10
  208. data/lib/facter/resolvers/ec2.rb +2 -2
  209. data/lib/facter/resolvers/filesystems_resolver.rb +1 -1
  210. data/lib/facter/resolvers/freebsd/dmi_resolver.rb +38 -0
  211. data/lib/facter/resolvers/freebsd/ffi/ffi_helper.rb +19 -0
  212. data/lib/facter/resolvers/freebsd/swap_memory_resolver.rb +39 -0
  213. data/lib/facter/resolvers/freebsd/system_memory_resolver.rb +41 -0
  214. data/lib/facter/resolvers/linux/docker_uptime.rb +45 -0
  215. data/lib/facter/resolvers/{load_averages_resolver.rb → linux/load_averages.rb} +0 -1
  216. data/lib/facter/resolvers/load_averages.rb +26 -0
  217. data/lib/facter/resolvers/lspci.rb +2 -0
  218. data/lib/facter/resolvers/mountpoints_resolver.rb +42 -44
  219. data/lib/facter/resolvers/networking_linux_resolver.rb +16 -1
  220. data/lib/facter/resolvers/networking_resolver.rb +106 -0
  221. data/lib/facter/resolvers/os_release_resolver.rb +1 -1
  222. data/lib/facter/resolvers/redhat_release_resolver.rb +4 -3
  223. data/lib/facter/resolvers/solaris/disks.rb +51 -0
  224. data/lib/facter/resolvers/solaris/dmi.rb +57 -0
  225. data/lib/facter/resolvers/solaris/dmi_sparc.rb +47 -0
  226. data/lib/facter/resolvers/solaris/ffi/ffi.rb +5 -0
  227. data/lib/facter/resolvers/solaris/{filesystems_resolver.rb → filesystems.rb} +0 -0
  228. data/lib/facter/resolvers/solaris/{ipaddress_resolver.rb → ipaddress.rb} +0 -0
  229. data/lib/facter/resolvers/solaris/memory.rb +93 -0
  230. data/lib/facter/resolvers/solaris/{networking_resolver.rb → networking.rb} +2 -6
  231. data/lib/facter/resolvers/solaris/os_release.rb +44 -0
  232. data/lib/facter/resolvers/solaris/zone.rb +51 -0
  233. data/lib/facter/resolvers/solaris/zone_name.rb +31 -0
  234. data/lib/facter/resolvers/uptime_resolver.rb +1 -27
  235. data/lib/facter/resolvers/utils/ffi/load_averages.rb +27 -0
  236. data/lib/facter/resolvers/utils/networking.rb +2 -0
  237. data/lib/facter/resolvers/utils/uptime_helper.rb +32 -0
  238. data/lib/facter/resolvers/windows/ffi/ffi.rb +1 -1
  239. data/lib/facter/resolvers/windows/networking_resolver.rb +100 -100
  240. data/lib/facter/resolvers/zfs.rb +32 -0
  241. data/lib/facter/resolvers/zpool.rb +34 -0
  242. data/lib/facter/templates/man.erb +122 -0
  243. data/lib/facter/version.rb +1 -1
  244. metadata +140 -18
  245. data/lib/facter/facts/freebsd/solaris_zones/current.rb +0 -15
  246. data/lib/facter/facts/freebsd/solaris_zones/zone.rb +0 -15
  247. data/lib/facter/facts/solaris/solaris_zones/zone.rb +0 -62
  248. data/lib/facter/resolvers/bsd/load_averages_resolver.rb +0 -26
  249. data/lib/facter/resolvers/macosx/networking_resolver.rb +0 -108
  250. data/lib/facter/resolvers/solaris/solaris_os_release_resolver.rb +0 -42
  251. data/lib/facter/resolvers/solaris/solaris_zone_name.rb +0 -28
  252. data/lib/facter/resolvers/solaris/zfs_resolver.rb +0 -34
  253. data/lib/facter/resolvers/solaris/zone_resolver.rb +0 -48
  254. data/lib/facter/resolvers/solaris/zpool_resolver.rb +0 -36
@@ -14,10 +14,10 @@ module Facts
14
14
  private
15
15
 
16
16
  def construct_addresses_hash
17
- interfaces = Facter::Resolvers::Networking.resolve(:interfaces)
17
+ interfaces = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
18
18
  return unless interfaces
19
19
 
20
- servers = { system: Facter::Resolvers::Networking.resolve(:dhcp) }
20
+ servers = { system: Facter::Resolvers::Windows::Networking.resolve(:dhcp) }
21
21
  interfaces&.each { |interface_name, info| servers[interface_name] = info[:dhcp] if info[:dhcp] }
22
22
  servers
23
23
  end
@@ -6,7 +6,7 @@ module Facts
6
6
  FACT_NAME = 'interfaces'
7
7
 
8
8
  def call_the_resolver
9
- fact_value = Facter::Resolvers::Networking.resolve(:interfaces)
9
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
10
10
 
11
11
  Facter::ResolvedFact.new(FACT_NAME, fact_value ? fact_value.keys.join(',') : nil, :legacy)
12
12
  end
@@ -8,7 +8,7 @@ module Facts
8
8
 
9
9
  def call_the_resolver
10
10
  arr = []
11
- interfaces = Facter::Resolvers::Networking.resolve(:interfaces)
11
+ interfaces = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
12
12
  interfaces&.each do |interface_name, info|
13
13
  arr << Facter::ResolvedFact.new("ipaddress6_#{interface_name}", info[:ip6], :legacy) if info[:ip6]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
 
9
9
  def call_the_resolver
10
10
  arr = []
11
- interfaces = Facter::Resolvers::Networking.resolve(:interfaces)
11
+ interfaces = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
12
12
  interfaces&.each do |interface_name, info|
13
13
  arr << Facter::ResolvedFact.new("ipaddress_#{interface_name}", info[:ip], :legacy) if info[:ip]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
 
9
9
  def call_the_resolver
10
10
  arr = []
11
- interfaces = Facter::Resolvers::Networking.resolve(:interfaces)
11
+ interfaces = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
12
12
  interfaces&.each do |interface_name, info|
13
13
  arr << Facter::ResolvedFact.new("macaddress_#{interface_name}", info[:mac], :legacy) if info[:mac]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
 
9
9
  def call_the_resolver
10
10
  arr = []
11
- interfaces = Facter::Resolvers::Networking.resolve(:interfaces)
11
+ interfaces = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
12
12
  interfaces&.each do |interface_name, info|
13
13
  arr << Facter::ResolvedFact.new("mtu_#{interface_name}", info[:mtu], :legacy) if info[:mtu]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
 
9
9
  def call_the_resolver
10
10
  arr = []
11
- interfaces = Facter::Resolvers::Networking.resolve(:interfaces)
11
+ interfaces = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
12
12
  interfaces&.each do |interface_name, info|
13
13
  arr << Facter::ResolvedFact.new("netmask6_#{interface_name}", info[:netmask6], :legacy) if info[:netmask6]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
 
9
9
  def call_the_resolver
10
10
  arr = []
11
- interfaces = Facter::Resolvers::Networking.resolve(:interfaces)
11
+ interfaces = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
12
12
  interfaces&.each do |interface_name, info|
13
13
  arr << Facter::ResolvedFact.new("netmask_#{interface_name}", info[:netmask], :legacy) if info[:netmask]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
 
9
9
  def call_the_resolver
10
10
  arr = []
11
- interfaces = Facter::Resolvers::Networking.resolve(:interfaces)
11
+ interfaces = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
12
12
  interfaces&.each do |interface_name, info|
13
13
  arr << Facter::ResolvedFact.new("network6_#{interface_name}", info[:network6], :legacy) if info[:network6]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
 
9
9
  def call_the_resolver
10
10
  arr = []
11
- interfaces = Facter::Resolvers::Networking.resolve(:interfaces)
11
+ interfaces = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
12
12
  interfaces&.each do |interface_name, info|
13
13
  arr << Facter::ResolvedFact.new("network_#{interface_name}", info[:network], :legacy) if info[:network]
14
14
  end
@@ -7,7 +7,7 @@ module Facts
7
7
  FACT_NAME = 'networking.dhcp'
8
8
 
9
9
  def call_the_resolver
10
- fact_value = Facter::Resolvers::Networking.resolve(:dhcp)
10
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:dhcp)
11
11
 
12
12
  Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
13
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'domain'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::Networking.resolve(:domain)
11
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:domain)
12
12
 
13
13
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'fqdn'
9
9
 
10
10
  def call_the_resolver
11
- domain = Facter::Resolvers::Networking.resolve(:domain)
11
+ domain = Facter::Resolvers::Windows::Networking.resolve(:domain)
12
12
  hostname = Facter::Resolvers::Hostname.resolve(:hostname)
13
13
  return Facter::ResolvedFact.new(FACT_NAME, nil) if !hostname || hostname.empty?
14
14
 
@@ -7,7 +7,7 @@ module Facts
7
7
  FACT_NAME = 'networking.interfaces'
8
8
 
9
9
  def call_the_resolver
10
- fact_value = Facter::Resolvers::Networking.resolve(:interfaces)
10
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
11
11
 
12
12
  Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
13
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'ipaddress'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::Networking.resolve(:ip)
11
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:ip)
12
12
 
13
13
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'ipaddress6'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::Networking.resolve(:ip6)
11
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:ip6)
12
12
 
13
13
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'macaddress'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::Networking.resolve(:mac)
11
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:mac)
12
12
 
13
13
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
14
  end
@@ -7,7 +7,7 @@ module Facts
7
7
  FACT_NAME = 'networking.mtu'
8
8
 
9
9
  def call_the_resolver
10
- fact_value = Facter::Resolvers::Networking.resolve(:mtu)
10
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:mtu)
11
11
 
12
12
  Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
13
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'netmask'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::Networking.resolve(:netmask)
11
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:netmask)
12
12
 
13
13
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'netmask6'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::Networking.resolve(:netmask6)
11
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:netmask6)
12
12
 
13
13
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'network'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::Networking.resolve(:network)
11
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:network)
12
12
 
13
13
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
14
  end
@@ -8,7 +8,7 @@ module Facts
8
8
  ALIASES = 'network6'
9
9
 
10
10
  def call_the_resolver
11
- fact_value = Facter::Resolvers::Networking.resolve(:network6)
11
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:network6)
12
12
 
13
13
  [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
14
  end
@@ -7,7 +7,7 @@ module Facts
7
7
  FACT_NAME = 'networking.primary'
8
8
 
9
9
  def call_the_resolver
10
- fact_value = Facter::Resolvers::Networking.resolve(:primary_interface)
10
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:primary_interface)
11
11
 
12
12
  Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
13
  end
@@ -7,7 +7,7 @@ module Facts
7
7
  FACT_NAME = 'networking.scope6'
8
8
 
9
9
  def call_the_resolver
10
- fact_value = Facter::Resolvers::Networking.resolve(:scope6)
10
+ fact_value = Facter::Resolvers::Windows::Networking.resolve(:scope6)
11
11
 
12
12
  Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
13
  end
@@ -9,7 +9,7 @@ module Facts
9
9
  def call_the_resolver
10
10
  arr = []
11
11
  result = {}
12
- interfaces = Facter::Resolvers::Networking.resolve(:interfaces)
12
+ interfaces = Facter::Resolvers::Windows::Networking.resolve(:interfaces)
13
13
  interfaces&.each { |interface_name, info| result["scope6_#{interface_name}"] = info[:scope6] if info[:scope6] }
14
14
 
15
15
  result.each { |fact, value| arr << Facter::ResolvedFact.new(fact, value, :legacy) }
@@ -35,6 +35,11 @@ module Facter
35
35
  type: :boolean,
36
36
  desc: 'Print this help message.'
37
37
 
38
+ class_option :man,
39
+ hide: true,
40
+ type: :boolean,
41
+ desc: 'Display manual.'
42
+
38
43
  class_option :hocon,
39
44
  type: :boolean,
40
45
  desc: 'Output in Hocon format.'
@@ -103,6 +108,18 @@ module Facter
103
108
  aliases: '-p',
104
109
  desc: 'Load the Puppet libraries, thus allowing Facter to load Puppet-specific facts.'
105
110
 
111
+ desc '--man', 'Manual', hide: true
112
+ map ['--man'] => :man
113
+ def man(*args)
114
+ require 'erb'
115
+ negate_options = %w[block cache custom_facts external_facts]
116
+
117
+ template = File.join(File.dirname(__FILE__), '..', '..', 'templates', 'man.erb')
118
+ erb = ERB.new(File.read(template), nil, '-')
119
+ erb.filename = template
120
+ puts erb.result(binding)
121
+ end
122
+
106
123
  desc 'query', 'Default method', hide: true
107
124
  desc '[options] [query] [query] [...]', ''
108
125
  def query(*args)
@@ -119,16 +136,28 @@ module Facter
119
136
  puts Facter::VERSION
120
137
  end
121
138
 
122
- desc '--list-block-groups', 'List block groups'
139
+ desc '--list-block-groups', 'List block groups', hide: true
123
140
  map ['--list-block-groups'] => :list_block_groups
124
- def list_block_groups(*_args)
125
- puts Facter::FactGroups.new.groups.to_yaml.lines[1..-1].join
141
+ def list_block_groups(*args)
142
+ options = @options.map { |(k, v)| [k.to_sym, v] }.to_h
143
+ Facter::Options.init_from_cli(options, args)
144
+
145
+ block_groups = Facter::FactGroups.new.groups.to_yaml.lines[1..-1].join
146
+ block_groups.gsub!(/:\s*\n/, "\n")
147
+
148
+ puts block_groups
126
149
  end
127
150
 
128
- desc '--list-cache-groups', 'List cache groups'
151
+ desc '--list-cache-groups', 'List cache groups', hide: true
129
152
  map ['--list-cache-groups'] => :list_cache_groups
130
- def list_cache_groups(*_args)
131
- puts Facter::FactGroups.new.groups.to_yaml.lines[1..-1].join
153
+ def list_cache_groups(*args)
154
+ options = @options.map { |(k, v)| [k.to_sym, v] }.to_h
155
+ Facter::Options.init_from_cli(options, args)
156
+
157
+ cache_groups = Facter::FactGroups.new.groups.to_yaml.lines[1..-1].join
158
+ cache_groups.gsub!(/:\s*\n/, "\n")
159
+
160
+ puts cache_groups
132
161
  end
133
162
 
134
163
  def self.exit_on_failure?
@@ -13,6 +13,7 @@ module Facter
13
13
  @groups_file_path = group_list_path || default_path
14
14
  @groups ||= File.readable?(@groups_file_path) ? Hocon.load(@groups_file_path) : {}
15
15
  load_groups
16
+ load_groups_from_options
16
17
  end
17
18
 
18
19
  # Breakes down blocked groups in blocked facts
@@ -42,6 +43,18 @@ module Facter
42
43
 
43
44
  private
44
45
 
46
+ def load_groups_from_options
47
+ Options.external_dir.each do |dir|
48
+ next unless Dir.exist?(dir)
49
+
50
+ ext_facts = Dir.entries(dir)
51
+ ext_facts.reject! { |ef| ef =~ /^(\.|\.\.)$/ }
52
+ ext_facts.each do |ef|
53
+ @groups[ef] = nil
54
+ end
55
+ end
56
+ end
57
+
45
58
  def load_groups
46
59
  config = ConfigReader.init(Options[:config])
47
60
  @block_list = config.block_list || {}
@@ -40,7 +40,7 @@ module Facter
40
40
  fact = CoreFact.new(searched_fact)
41
41
  fact.create
42
42
  rescue StandardError => e
43
- @@log.error(e.message + ' ' + e.backtrace.join("\n"))
43
+ @@log.log_exception(e)
44
44
  nil
45
45
  end
46
46
  end
@@ -51,6 +51,8 @@ module Facter
51
51
  @external_facts.concat(@external_fact_loader.custom_facts)
52
52
  end
53
53
 
54
+ @external_facts = block_facts(@external_facts, options)
55
+
54
56
  if options[:external_facts]
55
57
  @log.debug('Loading external facts')
56
58
  @external_facts.concat(@external_fact_loader.external_facts)
@@ -45,6 +45,7 @@ module Facter
45
45
  Facter::OptionStore.cli = true
46
46
  Facter::OptionStore.show_legacy = false
47
47
  Facter::OptionStore.user_query = user_query
48
+ Facter::OptionStore.trace = cli_options[:trace]
48
49
  OptionStore.set(:config, cli_options[:config])
49
50
  ConfigFileOptions.init(cli_options[:config])
50
51
  store(ConfigFileOptions.get)
@@ -25,13 +25,13 @@ module Facter
25
25
  @color = false
26
26
 
27
27
  class << self
28
- attr_reader :debug, :verbose, :log_level, :show_legacy, :trace, :ruby,
28
+ attr_reader :debug, :verbose, :log_level, :show_legacy, :ruby,
29
29
  :custom_facts, :blocked_facts
30
30
 
31
31
  attr_accessor :config, :user_query, :strict, :json, :haml, :external_facts,
32
32
  :cache, :yaml, :puppet, :ttls, :block, :cli, :config_file_custom_dir,
33
33
  :config_file_external_dir, :default_external_dir, :fact_groups,
34
- :block_list, :color
34
+ :block_list, :color, :trace
35
35
 
36
36
  attr_writer :external_dir
37
37
 
@@ -131,10 +131,6 @@ module Facter
131
131
  end
132
132
  end
133
133
 
134
- def trace=(bool)
135
- Facter.trace(bool)
136
- end
137
-
138
134
  def set(key, value)
139
135
  send("#{key}=".to_sym, value)
140
136
  end
@@ -150,6 +146,7 @@ module Facter
150
146
  @user_query = []
151
147
  @cli = nil
152
148
  @cache = true
149
+ @trace = false
153
150
  reset_config
154
151
  end
155
152
 
@@ -44,7 +44,11 @@ class OsDetector
44
44
  hierarchy = @os_hierarchy.construct_hierarchy(identifier)
45
45
  if hierarchy.empty?
46
46
  @log.debug("Could not detect hierarchy using os identifier: #{identifier} , trying with family")
47
- hierarchy = @os_hierarchy.construct_hierarchy(detect_family)
47
+
48
+ detect_family.to_s.split.each do |family|
49
+ hierarchy = @os_hierarchy.construct_hierarchy(family)
50
+ return hierarchy unless hierarchy.empty?
51
+ end
48
52
  end
49
53
 
50
54
  if hierarchy.empty?
@@ -3,10 +3,11 @@
3
3
  require 'logger'
4
4
 
5
5
  module Facter
6
- RED = 31
7
- GREEN = 32
8
- YELLOW = 33
9
- CYAN = 36
6
+ RED = "\e[31m"
7
+ GREEN = "\e[32m"
8
+ YELLOW = "\e[33m"
9
+ CYAN = "\e[36m"
10
+ RESET = "\e[0m"
10
11
 
11
12
  DEFAULT_LOG_LEVEL = :warn
12
13
 
@@ -104,12 +105,19 @@ module Facter
104
105
  end
105
106
  end
106
107
 
108
+ def log_exception(exception)
109
+ msg = colorize(exception.message, RED) + "\n"
110
+ msg += exception.backtrace.join("\n") if Options[:trace]
111
+
112
+ @@logger.error(@class_name + ' - ' + msg)
113
+ end
114
+
107
115
  private
108
116
 
109
117
  def colorize(msg, color)
110
118
  return msg if OsDetector.instance.identifier.eql?(:windows)
111
119
 
112
- "\e[0;#{color}m#{msg}\e[0m"
120
+ "#{color}#{msg}#{RESET}"
113
121
  end
114
122
 
115
123
  def debugging_active?