facter 4.0.35 → 4.0.40

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 (185) hide show
  1. checksums.yaml +4 -4
  2. data/bin/facter +3 -4
  3. data/lib/facter.rb +163 -23
  4. data/lib/facter/custom_facts/core/execution/base.rb +36 -6
  5. data/lib/facter/custom_facts/util/directory_loader.rb +13 -3
  6. data/lib/facter/custom_facts/util/fact.rb +4 -1
  7. data/lib/facter/fact_groups.conf +140 -1
  8. data/lib/facter/facts/aix/disks.rb +17 -2
  9. data/lib/facter/facts/aix/kernel.rb +1 -1
  10. data/lib/facter/facts/aix/kernelmajversion.rb +1 -1
  11. data/lib/facter/facts/aix/kernelrelease.rb +1 -1
  12. data/lib/facter/facts/aix/kernelversion.rb +1 -1
  13. data/lib/facter/facts/aix/networking/scope6.rb +3 -1
  14. data/lib/facter/facts/aix/os/release.rb +1 -1
  15. data/lib/facter/facts/aix/scope6_interfaces.rb +0 -2
  16. data/lib/facter/facts/aix/serialnumber.rb +20 -0
  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/sshalgorithmkey.rb +17 -0
  21. data/lib/facter/facts/freebsd/sshfp_algorithm.rb +20 -0
  22. data/lib/facter/facts/linux/cloud.rb +15 -0
  23. data/lib/facter/facts/linux/disks.rb +20 -1
  24. data/lib/facter/facts/linux/dmi/board/asset_tag.rb +19 -0
  25. data/lib/facter/facts/linux/ec2_metadata.rb +11 -6
  26. data/lib/facter/facts/linux/ec2_userdata.rb +7 -4
  27. data/lib/facter/facts/linux/gce.rb +16 -0
  28. data/lib/facter/facts/linux/is_virtual.rb +1 -3
  29. data/lib/facter/facts/linux/networking/scope6.rb +3 -1
  30. data/lib/facter/facts/linux/partitions.rb +1 -1
  31. data/lib/facter/facts/linux/processors/speed.rb +17 -0
  32. data/lib/facter/facts/linux/scope6_interfaces.rb +1 -2
  33. data/lib/facter/facts/linux/sshfp_algorithm.rb +1 -1
  34. data/lib/facter/facts/linux/xen.rb +28 -0
  35. data/lib/facter/facts/macosx/networking/scope6.rb +3 -1
  36. data/lib/facter/facts/macosx/scope6_interfaces.rb +0 -2
  37. data/lib/facter/facts/macosx/sshfp_algorithm.rb +1 -1
  38. data/lib/facter/facts/rhel/os/release.rb +2 -2
  39. data/lib/facter/facts/solaris/disks.rb +21 -2
  40. data/lib/facter/facts/solaris/hypervisors/ldom.rb +24 -0
  41. data/lib/facter/facts/solaris/hypervisors/zone.rb +39 -0
  42. data/lib/facter/facts/solaris/is_virtual.rb +64 -0
  43. data/lib/facter/facts/solaris/kernelmajversion.rb +1 -1
  44. data/lib/facter/facts/solaris/ldom.rb +35 -0
  45. data/lib/facter/facts/solaris/sshalgorithmkey.rb +17 -0
  46. data/lib/facter/facts/solaris/sshfp_algorithm.rb +20 -0
  47. data/lib/facter/facts/solaris/virtual.rb +60 -0
  48. data/lib/facter/facts/solaris/zones.rb +1 -1
  49. data/lib/facter/facts/ubuntu/lsbdistrelease.rb +23 -0
  50. data/lib/facter/facts/windows/ec2_metadata.rb +5 -3
  51. data/lib/facter/facts/windows/ec2_userdata.rb +5 -3
  52. data/lib/facter/facts/windows/gce.rb +16 -0
  53. data/lib/facter/facts/windows/networking/scope6.rb +3 -1
  54. data/lib/facter/facts/windows/sshalgorithmkey.rb +22 -0
  55. data/lib/facter/facts/windows/sshfp_algorithm.rb +25 -0
  56. data/lib/facter/facts_utils/facts_utils.rb +2 -0
  57. data/lib/facter/framework/benchmarking/timer.rb +23 -0
  58. data/lib/facter/framework/cli/cli.rb +86 -34
  59. data/lib/facter/framework/cli/cli_launcher.rb +34 -38
  60. data/lib/facter/framework/config/fact_groups.rb +36 -2
  61. data/lib/facter/framework/core/cache_manager.rb +30 -18
  62. data/lib/facter/framework/core/fact/internal/core_fact.rb +2 -0
  63. data/lib/facter/framework/core/fact/internal/internal_fact_manager.rb +11 -25
  64. data/lib/facter/framework/core/fact_filter.rb +13 -0
  65. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +38 -12
  66. data/lib/facter/framework/core/fact_loaders/internal_fact_loader.rb +7 -7
  67. data/lib/facter/framework/core/file_loader.rb +2 -0
  68. data/lib/facter/framework/core/options/config_file_options.rb +5 -3
  69. data/lib/facter/framework/core/options/option_store.rb +30 -11
  70. data/lib/facter/framework/core/session_cache.rb +1 -4
  71. data/lib/facter/framework/formatters/legacy_fact_formatter.rb +8 -1
  72. data/lib/facter/framework/formatters/yaml_fact_formatter.rb +1 -1
  73. data/lib/facter/framework/logging/logger.rb +3 -11
  74. data/lib/facter/patches/sysfilesystem/sys/statvfs.rb +92 -0
  75. data/lib/facter/resolvers/aio_agent_version.rb +0 -1
  76. data/lib/facter/resolvers/aix/architecture_resolver.rb +0 -1
  77. data/lib/facter/resolvers/aix/disks.rb +2 -3
  78. data/lib/facter/resolvers/aix/filesystem_resolver.rb +0 -1
  79. data/lib/facter/resolvers/aix/hardware_resolver.rb +0 -1
  80. data/lib/facter/resolvers/aix/load_averages_resolver.rb +0 -1
  81. data/lib/facter/resolvers/aix/memory.rb +2 -3
  82. data/lib/facter/resolvers/aix/mountpoints.rb +0 -1
  83. data/lib/facter/resolvers/aix/networking_resolver.rb +0 -1
  84. data/lib/facter/resolvers/aix/nim.rb +0 -1
  85. data/lib/facter/resolvers/aix/os_level.rb +27 -0
  86. data/lib/facter/resolvers/aix/partitions.rb +2 -3
  87. data/lib/facter/resolvers/aix/processors.rb +0 -1
  88. data/lib/facter/resolvers/aix/serialnumber.rb +36 -0
  89. data/lib/facter/resolvers/augeas_resolver.rb +0 -1
  90. data/lib/facter/resolvers/base_resolver.rb +9 -4
  91. data/lib/facter/resolvers/bsd/processors.rb +0 -1
  92. data/lib/facter/resolvers/cloud.rb +39 -0
  93. data/lib/facter/resolvers/containers.rb +0 -1
  94. data/lib/facter/resolvers/debian_version.rb +0 -1
  95. data/lib/facter/resolvers/disk_resolver.rb +0 -1
  96. data/lib/facter/resolvers/dmi_decode.rb +0 -1
  97. data/lib/facter/resolvers/dmi_resolver.rb +4 -4
  98. data/lib/facter/resolvers/ec2.rb +4 -19
  99. data/lib/facter/resolvers/eos_release_resolver.rb +0 -1
  100. data/lib/facter/resolvers/facterversion_resolver.rb +0 -1
  101. data/lib/facter/resolvers/filesystems_resolver.rb +0 -1
  102. data/lib/facter/resolvers/fips_enabled_resolver.rb +0 -1
  103. data/lib/facter/resolvers/freebsd/dmi_resolver.rb +0 -1
  104. data/lib/facter/resolvers/freebsd/freebsd_version_resolver.rb +0 -1
  105. data/lib/facter/resolvers/freebsd/geom_resolver.rb +0 -1
  106. data/lib/facter/resolvers/freebsd/processors.rb +0 -1
  107. data/lib/facter/resolvers/freebsd/swap_memory_resolver.rb +0 -1
  108. data/lib/facter/resolvers/freebsd/system_memory_resolver.rb +0 -1
  109. data/lib/facter/resolvers/gce.rb +53 -0
  110. data/lib/facter/resolvers/hostname_resolver.rb +0 -1
  111. data/lib/facter/resolvers/identity_resolver.rb +0 -1
  112. data/lib/facter/resolvers/linux/docker_uptime.rb +0 -1
  113. data/lib/facter/resolvers/linux/load_averages.rb +0 -1
  114. data/lib/facter/resolvers/load_averages.rb +0 -1
  115. data/lib/facter/resolvers/lpar_resolver.rb +0 -1
  116. data/lib/facter/resolvers/lsb_release_resolver.rb +0 -1
  117. data/lib/facter/resolvers/lspci.rb +0 -1
  118. data/lib/facter/resolvers/macosx/dmi_resolver.rb +0 -1
  119. data/lib/facter/resolvers/macosx/filesystems_resolver.rb +1 -6
  120. data/lib/facter/resolvers/macosx/load_averages_resolver.rb +0 -1
  121. data/lib/facter/resolvers/macosx/mountpoints_resolver.rb +3 -3
  122. data/lib/facter/resolvers/macosx/processor_resolver.rb +0 -1
  123. data/lib/facter/resolvers/macosx/swap_memory_resolver.rb +0 -1
  124. data/lib/facter/resolvers/macosx/system_memory_resolver.rb +0 -1
  125. data/lib/facter/resolvers/macosx/system_profiler_resolver.rb +0 -1
  126. data/lib/facter/resolvers/memory_resolver.rb +13 -2
  127. data/lib/facter/resolvers/mountpoints_resolver.rb +0 -1
  128. data/lib/facter/resolvers/networking_linux_resolver.rb +0 -1
  129. data/lib/facter/resolvers/networking_resolver.rb +0 -1
  130. data/lib/facter/resolvers/open_vz.rb +0 -1
  131. data/lib/facter/resolvers/os_release_resolver.rb +0 -1
  132. data/lib/facter/resolvers/partitions.rb +37 -2
  133. data/lib/facter/resolvers/path_resolver.rb +0 -1
  134. data/lib/facter/resolvers/processors_resolver.rb +24 -3
  135. data/lib/facter/resolvers/puppet_version_resolver.rb +0 -1
  136. data/lib/facter/resolvers/redhat_release_resolver.rb +0 -1
  137. data/lib/facter/resolvers/ruby_resolver.rb +0 -1
  138. data/lib/facter/resolvers/selinux_resolver.rb +0 -1
  139. data/lib/facter/resolvers/solaris/disks.rb +0 -1
  140. data/lib/facter/resolvers/solaris/dmi.rb +0 -1
  141. data/lib/facter/resolvers/solaris/dmi_sparc.rb +0 -1
  142. data/lib/facter/resolvers/solaris/filesystems.rb +0 -1
  143. data/lib/facter/resolvers/solaris/ipaddress.rb +0 -1
  144. data/lib/facter/resolvers/solaris/ldom.rb +69 -0
  145. data/lib/facter/resolvers/solaris/memory.rb +0 -1
  146. data/lib/facter/resolvers/solaris/networking.rb +0 -1
  147. data/lib/facter/resolvers/solaris/os_release.rb +0 -1
  148. data/lib/facter/resolvers/solaris/processors.rb +0 -1
  149. data/lib/facter/resolvers/solaris/zone.rb +0 -1
  150. data/lib/facter/resolvers/solaris/zone_name.rb +0 -1
  151. data/lib/facter/resolvers/ssh_resolver.rb +0 -1
  152. data/lib/facter/resolvers/suse_release_resolver.rb +0 -1
  153. data/lib/facter/resolvers/sw_vers_resolver.rb +0 -1
  154. data/lib/facter/resolvers/timezone_resolver.rb +0 -1
  155. data/lib/facter/resolvers/uname_resolver.rb +0 -1
  156. data/lib/facter/resolvers/uptime_resolver.rb +0 -1
  157. data/lib/facter/resolvers/utils/filesystem_helper.rb +3 -1
  158. data/lib/facter/resolvers/utils/http.rb +68 -0
  159. data/lib/facter/resolvers/virt_what.rb +0 -1
  160. data/lib/facter/resolvers/vmware.rb +0 -1
  161. data/lib/facter/resolvers/windows/aio_agent_version.rb +0 -1
  162. data/lib/facter/resolvers/windows/dmi_bios_resolver.rb +0 -1
  163. data/lib/facter/resolvers/windows/dmi_computersystem_resolver.rb +0 -1
  164. data/lib/facter/resolvers/windows/fips_resolver.rb +0 -1
  165. data/lib/facter/resolvers/windows/hardware_architecture_resolver.rb +0 -1
  166. data/lib/facter/resolvers/windows/identity_resolver.rb +0 -1
  167. data/lib/facter/resolvers/windows/kernel_resolver.rb +0 -1
  168. data/lib/facter/resolvers/windows/memory_resolver.rb +0 -1
  169. data/lib/facter/resolvers/windows/netkvm_resolver.rb +0 -1
  170. data/lib/facter/resolvers/windows/networking_resolver.rb +0 -1
  171. data/lib/facter/resolvers/windows/processors_resolver.rb +0 -1
  172. data/lib/facter/resolvers/windows/product_release_resolver.rb +0 -1
  173. data/lib/facter/resolvers/windows/ssh.rb +0 -1
  174. data/lib/facter/resolvers/windows/system32_resolver.rb +0 -1
  175. data/lib/facter/resolvers/windows/uptime_resolver.rb +0 -1
  176. data/lib/facter/resolvers/windows/virtualization_resolver.rb +0 -1
  177. data/lib/facter/resolvers/windows/win_os_description_resolver.rb +0 -1
  178. data/lib/facter/resolvers/wpar_resolver.rb +0 -1
  179. data/lib/facter/resolvers/xen.rb +28 -1
  180. data/lib/facter/resolvers/zfs.rb +0 -1
  181. data/lib/facter/resolvers/zpool.rb +0 -1
  182. data/lib/facter/version.rb +1 -1
  183. metadata +31 -4
  184. data/lib/facter/resolvers/aix/os_level_resolver.rb +0 -26
  185. data/lib/facter/resolvers/os_level_resolver.rb +0 -29
@@ -7,7 +7,6 @@ module Facter
7
7
  # :version
8
8
  # :codename
9
9
 
10
- @semaphore = Mutex.new
11
10
  @fact_list ||= {}
12
11
 
13
12
  class << self
@@ -7,7 +7,6 @@ module Facter
7
7
  # :productversion
8
8
  # :buildversion
9
9
  #
10
- @semaphore = Mutex.new
11
10
  @fact_list ||= {}
12
11
 
13
12
  class << self
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Timezone < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Uname < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Uptime < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -7,7 +7,9 @@ module Facter
7
7
  size_bytes used used_bytes capacity].freeze
8
8
  class << self
9
9
  def read_mountpoints
10
- require 'sys/filesystem'
10
+ # TODO: this require must be replaced with "require 'sys/filesystem'" when a new release of
11
+ # djberg96/sys-filesystem gem is available
12
+ require_relative '../../patches/sysfilesystem/sys/statvfs.rb'
11
13
  force_utf(Sys::Filesystem.mounts)
12
14
  end
13
15
 
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Utils
6
+ module Http
7
+ @log = Facter::Log.new(self)
8
+
9
+ class << self
10
+ CONNECTION_TIMEOUT = 0.6
11
+ SESSION_TIMEOUT = 5
12
+
13
+ # Makes a GET http request and returns it's response.
14
+ #
15
+ # Params:
16
+ # url: String which contains the address to which the request will be made
17
+ # headers: Hash which contains the headers you need to add to your request.
18
+ # Default headers is an empty hash
19
+ # Example: { "Accept": 'application/json' }
20
+ # timeouts: Hash that includes the values for the session and connection timeouts.
21
+ # Example: { session: 2.4. connection: 5 }
22
+ #
23
+ # Return value:
24
+ # is a string with the response body if the response code is 200.
25
+ # If the response code is not 200, an empty string is returned.
26
+ def get_request(url, headers = {}, timeouts = {})
27
+ make_request(url, headers, timeouts, 'GET')
28
+ end
29
+
30
+ private
31
+
32
+ def make_request(url, headers, timeouts, request_type)
33
+ require 'net/http'
34
+
35
+ uri = URI.parse(url)
36
+ http = http_obj(uri, timeouts)
37
+ request = request_obj(headers, uri, request_type)
38
+
39
+ # Make the request
40
+ resp = http.request(request)
41
+ response_code_valid?(resp.code.to_i) ? resp.body : ''
42
+ rescue StandardError => e
43
+ @log.debug("Trying to connect to #{url} but got: #{e.message}")
44
+ ''
45
+ end
46
+
47
+ def http_obj(parsed_url, timeouts)
48
+ http = Net::HTTP.new(parsed_url.host)
49
+ http.read_timeout = timeouts[:session] || SESSION_TIMEOUT
50
+ http.open_timeout = timeouts[:connection] || CONNECTION_TIMEOUT
51
+ http
52
+ end
53
+
54
+ def request_obj(headers, parsed_url, request_type)
55
+ return Net::HTTP::Get.new(parsed_url.request_uri, headers) if request_type == 'GET'
56
+
57
+ raise StandardError("Unknown http request type: #{request_type}")
58
+ end
59
+
60
+ def response_code_valid?(http_code)
61
+ @log.debug("Request failed with error code #{http_code}") unless http_code.equal?(200)
62
+ http_code.equal?(200)
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class VirtWhat < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Vmware < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -5,7 +5,6 @@ module Facter
5
5
  module Windows
6
6
  class AioAgentVersion < BaseResolver
7
7
  REGISTRY_PATH = 'SOFTWARE\\Puppet Labs\\Puppet'
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
 
11
10
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class DMIBios < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class DMIComputerSystem < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -7,7 +7,6 @@ module Facter
7
7
  module Windows
8
8
  class Fips < BaseResolver
9
9
  # :fips_enabled
10
- @semaphore = Mutex.new
11
10
  @fact_list ||= {}
12
11
  class << self
13
12
  private
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class HardwareArchitecture < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
  class << self
9
8
  private
@@ -5,7 +5,6 @@ module Facter
5
5
  class Identity < BaseResolver
6
6
  NAME_SAM_COMPATIBLE = 2
7
7
  @log = Facter::Log.new(self)
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
 
11
10
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class Kernel < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class Memory < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -5,7 +5,6 @@ require 'win32/registry'
5
5
  module Facter
6
6
  module Resolvers
7
7
  class NetKVM < BaseResolver
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
11
10
  private
@@ -5,7 +5,6 @@ module Facter
5
5
  module Windows
6
6
  class Networking < BaseResolver
7
7
  @log = Facter::Log.new(self)
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
11
10
  private
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Processors < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list = {}
8
7
  class << self
9
8
  # Count
@@ -5,7 +5,6 @@ require 'win32/registry'
5
5
  module Facter
6
6
  module Resolvers
7
7
  class ProductRelease < BaseResolver
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  class << self
11
10
  private
@@ -5,7 +5,6 @@ module Facter
5
5
  module Windows
6
6
  class Ssh < BaseResolver
7
7
  @log = Facter::Log.new(self)
8
- @semaphore = Mutex.new
9
8
  @fact_list ||= {}
10
9
  FILE_NAMES = %w[ssh_host_rsa_key.pub ssh_host_dsa_key.pub
11
10
  ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub].freeze
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class System32 < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -7,7 +7,6 @@ module Facter
7
7
  module Windows
8
8
  class Uptime < BaseResolver
9
9
  @log = Facter::Log.new(self)
10
- @semaphore = Mutex.new
11
10
  @fact_list ||= {}
12
11
 
13
12
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class Virtualization < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
 
10
9
  class << self
@@ -4,7 +4,6 @@ module Facter
4
4
  module Resolvers
5
5
  class WinOsDescription < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
- @semaphore = Mutex.new
8
7
  @fact_list ||= {}
9
8
  class << self
10
9
  private
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Wpar < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  class << self
@@ -3,10 +3,11 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Xen < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
 
9
8
  XEN_PATH = '/proc/xen/capabilities'
9
+ XEN_TOOLSTACK = '/usr/lib/xen-common/bin/xen-toolstack'
10
+ XEN_COMMANDS = ['/usr/sbin/xl', '/usr/sbin/xm'].freeze
10
11
 
11
12
  class << self
12
13
  private
@@ -18,6 +19,7 @@ module Facter
18
19
  def detect_xen(fact_name)
19
20
  @fact_list[:vm] = detect_xen_type
20
21
  @fact_list[:privileged] = privileged?(@fact_list[:vm])
22
+ @fact_list[:domains] = detect_domains
21
23
 
22
24
  @fact_list[fact_name]
23
25
  end
@@ -33,6 +35,31 @@ module Facter
33
35
  content = Util::FileHelper.safe_read(XEN_PATH, nil)
34
36
  content&.strip == 'control_d' || xen_type == 'xen0'
35
37
  end
38
+
39
+ def detect_domains
40
+ domains = []
41
+ xen_command = find_command
42
+ return unless xen_command
43
+
44
+ output = Facter::Core::Execution.execute("#{xen_command} list", logger: log)
45
+ return if output.empty?
46
+
47
+ output.each_line do |line|
48
+ next if line =~ /Domain-0|Name/
49
+
50
+ domain = line.match(/^([^\s]*)\s/)
51
+ domain = domain&.captures&.first
52
+ domains << domain if domain
53
+ end
54
+
55
+ domains
56
+ end
57
+
58
+ def find_command
59
+ return XEN_TOOLSTACK if File.exist?(XEN_TOOLSTACK)
60
+
61
+ XEN_COMMANDS.each { |command| return command if File.exist?(command) }
62
+ end
36
63
  end
37
64
  end
38
65
  end
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class ZFS < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
  class << self
9
8
  private
@@ -3,7 +3,6 @@
3
3
  module Facter
4
4
  module Resolvers
5
5
  class Zpool < BaseResolver
6
- @semaphore = Mutex.new
7
6
  @fact_list ||= {}
8
7
  class << self
9
8
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Facter
4
- VERSION = '4.0.35' unless defined?(VERSION)
4
+ VERSION = '4.0.40' unless defined?(VERSION)
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facter
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.35
4
+ version: 4.0.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-19 00:00:00.000000000 Z
11
+ date: 2020-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -279,7 +279,10 @@ files:
279
279
  - lib/facter/facts/aix/ruby/sitedir.rb
280
280
  - lib/facter/facts/aix/ruby/version.rb
281
281
  - lib/facter/facts/aix/scope6_interfaces.rb
282
+ - lib/facter/facts/aix/serialnumber.rb
282
283
  - lib/facter/facts/aix/ssh.rb
284
+ - lib/facter/facts/aix/sshalgorithmkey.rb
285
+ - lib/facter/facts/aix/sshfp_algorithm.rb
283
286
  - lib/facter/facts/aix/system_uptime/days.rb
284
287
  - lib/facter/facts/aix/system_uptime/hours.rb
285
288
  - lib/facter/facts/aix/system_uptime/seconds.rb
@@ -368,6 +371,8 @@ files:
368
371
  - lib/facter/facts/freebsd/ruby/sitedir.rb
369
372
  - lib/facter/facts/freebsd/ruby/version.rb
370
373
  - lib/facter/facts/freebsd/ssh.rb
374
+ - lib/facter/facts/freebsd/sshalgorithmkey.rb
375
+ - lib/facter/facts/freebsd/sshfp_algorithm.rb
371
376
  - lib/facter/facts/freebsd/system_uptime/days.rb
372
377
  - lib/facter/facts/freebsd/system_uptime/hours.rb
373
378
  - lib/facter/facts/freebsd/system_uptime/seconds.rb
@@ -380,11 +385,13 @@ files:
380
385
  - lib/facter/facts/freebsd/zpool_version.rb
381
386
  - lib/facter/facts/linux/aio_agent_version.rb
382
387
  - lib/facter/facts/linux/augeas/version.rb
388
+ - lib/facter/facts/linux/cloud.rb
383
389
  - lib/facter/facts/linux/dhcp_servers.rb
384
390
  - lib/facter/facts/linux/disks.rb
385
391
  - lib/facter/facts/linux/dmi/bios/release_date.rb
386
392
  - lib/facter/facts/linux/dmi/bios/vendor.rb
387
393
  - lib/facter/facts/linux/dmi/bios/version.rb
394
+ - lib/facter/facts/linux/dmi/board/asset_tag.rb
388
395
  - lib/facter/facts/linux/dmi/board/manufacturer.rb
389
396
  - lib/facter/facts/linux/dmi/board/product.rb
390
397
  - lib/facter/facts/linux/dmi/board/serial_number.rb
@@ -399,6 +406,7 @@ files:
399
406
  - lib/facter/facts/linux/facterversion.rb
400
407
  - lib/facter/facts/linux/filesystems.rb
401
408
  - lib/facter/facts/linux/fips_enabled.rb
409
+ - lib/facter/facts/linux/gce.rb
402
410
  - lib/facter/facts/linux/hypervisors/docker.rb
403
411
  - lib/facter/facts/linux/hypervisors/hyper_v.rb
404
412
  - lib/facter/facts/linux/hypervisors/kvm.rb
@@ -482,6 +490,7 @@ files:
482
490
  - lib/facter/facts/linux/processors/isa.rb
483
491
  - lib/facter/facts/linux/processors/models.rb
484
492
  - lib/facter/facts/linux/processors/physicalcount.rb
493
+ - lib/facter/facts/linux/processors/speed.rb
485
494
  - lib/facter/facts/linux/puppet_version.rb
486
495
  - lib/facter/facts/linux/ruby/platform.rb
487
496
  - lib/facter/facts/linux/ruby/sitedir.rb
@@ -496,6 +505,7 @@ files:
496
505
  - lib/facter/facts/linux/system_uptime/uptime.rb
497
506
  - lib/facter/facts/linux/timezone.rb
498
507
  - lib/facter/facts/linux/virtual.rb
508
+ - lib/facter/facts/linux/xen.rb
499
509
  - lib/facter/facts/macosx/aio_agent_version.rb
500
510
  - lib/facter/facts/macosx/augeas/version.rb
501
511
  - lib/facter/facts/macosx/dhcp_servers.rb
@@ -631,6 +641,8 @@ files:
631
641
  - lib/facter/facts/solaris/dmi/product/uuid.rb
632
642
  - lib/facter/facts/solaris/facterversion.rb
633
643
  - lib/facter/facts/solaris/filesystems.rb
644
+ - lib/facter/facts/solaris/hypervisors/ldom.rb
645
+ - lib/facter/facts/solaris/hypervisors/zone.rb
634
646
  - lib/facter/facts/solaris/identity/gid.rb
635
647
  - lib/facter/facts/solaris/identity/group.rb
636
648
  - lib/facter/facts/solaris/identity/privileged.rb
@@ -639,10 +651,12 @@ files:
639
651
  - lib/facter/facts/solaris/interfaces.rb
640
652
  - lib/facter/facts/solaris/ipaddress6_interfaces.rb
641
653
  - lib/facter/facts/solaris/ipaddress_interfaces.rb
654
+ - lib/facter/facts/solaris/is_virtual.rb
642
655
  - lib/facter/facts/solaris/kernel.rb
643
656
  - lib/facter/facts/solaris/kernelmajversion.rb
644
657
  - lib/facter/facts/solaris/kernelrelease.rb
645
658
  - lib/facter/facts/solaris/kernelversion.rb
659
+ - lib/facter/facts/solaris/ldom.rb
646
660
  - lib/facter/facts/solaris/load_averages.rb
647
661
  - lib/facter/facts/solaris/macaddress_interfaces.rb
648
662
  - lib/facter/facts/solaris/memory/swap/available.rb
@@ -695,17 +709,21 @@ files:
695
709
  - lib/facter/facts/solaris/ruby/sitedir.rb
696
710
  - lib/facter/facts/solaris/ruby/version.rb
697
711
  - lib/facter/facts/solaris/ssh.rb
712
+ - lib/facter/facts/solaris/sshalgorithmkey.rb
713
+ - lib/facter/facts/solaris/sshfp_algorithm.rb
698
714
  - lib/facter/facts/solaris/system_uptime/days.rb
699
715
  - lib/facter/facts/solaris/system_uptime/hours.rb
700
716
  - lib/facter/facts/solaris/system_uptime/seconds.rb
701
717
  - lib/facter/facts/solaris/system_uptime/uptime.rb
702
718
  - lib/facter/facts/solaris/timezone.rb
719
+ - lib/facter/facts/solaris/virtual.rb
703
720
  - lib/facter/facts/solaris/zfs_featurenumbers.rb
704
721
  - lib/facter/facts/solaris/zfs_version.rb
705
722
  - lib/facter/facts/solaris/zones.rb
706
723
  - lib/facter/facts/solaris/zpool_featureflags.rb
707
724
  - lib/facter/facts/solaris/zpool_featurenumbers.rb
708
725
  - lib/facter/facts/solaris/zpool_version.rb
726
+ - lib/facter/facts/ubuntu/lsbdistrelease.rb
709
727
  - lib/facter/facts/ubuntu/os/distro/release.rb
710
728
  - lib/facter/facts/ubuntu/os/release.rb
711
729
  - lib/facter/facts/windows/aio_agent_version.rb
@@ -719,6 +737,7 @@ files:
719
737
  - lib/facter/facts/windows/ec2_userdata.rb
720
738
  - lib/facter/facts/windows/facterversion.rb
721
739
  - lib/facter/facts/windows/fips_enabled.rb
740
+ - lib/facter/facts/windows/gce.rb
722
741
  - lib/facter/facts/windows/hypervisors/hyperv.rb
723
742
  - lib/facter/facts/windows/hypervisors/kvm.rb
724
743
  - lib/facter/facts/windows/hypervisors/virtualbox.rb
@@ -783,6 +802,8 @@ files:
783
802
  - lib/facter/facts/windows/ruby/version.rb
784
803
  - lib/facter/facts/windows/scope6_interfaces.rb
785
804
  - lib/facter/facts/windows/ssh.rb
805
+ - lib/facter/facts/windows/sshalgorithmkey.rb
806
+ - lib/facter/facts/windows/sshfp_algorithm.rb
786
807
  - lib/facter/facts/windows/system_uptime/days.rb
787
808
  - lib/facter/facts/windows/system_uptime/hours.rb
788
809
  - lib/facter/facts/windows/system_uptime/seconds.rb
@@ -794,6 +815,7 @@ files:
794
815
  - lib/facter/facts_utils/unit_converter.rb
795
816
  - lib/facter/facts_utils/uptime_parser.rb
796
817
  - lib/facter/facts_utils/windows_release_finder.rb
818
+ - lib/facter/framework/benchmarking/timer.rb
797
819
  - lib/facter/framework/cli/cli.rb
798
820
  - lib/facter/framework/cli/cli_launcher.rb
799
821
  - lib/facter/framework/config/config_reader.rb
@@ -832,6 +854,7 @@ files:
832
854
  - lib/facter/models/resolved_fact.rb
833
855
  - lib/facter/models/searched_fact.rb
834
856
  - lib/facter/os_hierarchy.json
857
+ - lib/facter/patches/sysfilesystem/sys/statvfs.rb
835
858
  - lib/facter/resolvers/aio_agent_version.rb
836
859
  - lib/facter/resolvers/aix/architecture_resolver.rb
837
860
  - lib/facter/resolvers/aix/disks.rb
@@ -843,15 +866,17 @@ files:
843
866
  - lib/facter/resolvers/aix/mountpoints.rb
844
867
  - lib/facter/resolvers/aix/networking_resolver.rb
845
868
  - lib/facter/resolvers/aix/nim.rb
846
- - lib/facter/resolvers/aix/os_level_resolver.rb
869
+ - lib/facter/resolvers/aix/os_level.rb
847
870
  - lib/facter/resolvers/aix/partitions.rb
848
871
  - lib/facter/resolvers/aix/processors.rb
872
+ - lib/facter/resolvers/aix/serialnumber.rb
849
873
  - lib/facter/resolvers/aix/utils/info_extractor.rb
850
874
  - lib/facter/resolvers/aix/utils/odm_query.rb
851
875
  - lib/facter/resolvers/augeas_resolver.rb
852
876
  - lib/facter/resolvers/base_resolver.rb
853
877
  - lib/facter/resolvers/bsd/ffi/ffi_helper.rb
854
878
  - lib/facter/resolvers/bsd/processors.rb
879
+ - lib/facter/resolvers/cloud.rb
855
880
  - lib/facter/resolvers/containers.rb
856
881
  - lib/facter/resolvers/debian_version.rb
857
882
  - lib/facter/resolvers/disk_resolver.rb
@@ -869,6 +894,7 @@ files:
869
894
  - lib/facter/resolvers/freebsd/processors.rb
870
895
  - lib/facter/resolvers/freebsd/swap_memory_resolver.rb
871
896
  - lib/facter/resolvers/freebsd/system_memory_resolver.rb
897
+ - lib/facter/resolvers/gce.rb
872
898
  - lib/facter/resolvers/hostname_resolver.rb
873
899
  - lib/facter/resolvers/identity_resolver.rb
874
900
  - lib/facter/resolvers/linux/docker_uptime.rb
@@ -891,7 +917,6 @@ files:
891
917
  - lib/facter/resolvers/networking_linux_resolver.rb
892
918
  - lib/facter/resolvers/networking_resolver.rb
893
919
  - lib/facter/resolvers/open_vz.rb
894
- - lib/facter/resolvers/os_level_resolver.rb
895
920
  - lib/facter/resolvers/os_release_resolver.rb
896
921
  - lib/facter/resolvers/partitions.rb
897
922
  - lib/facter/resolvers/path_resolver.rb
@@ -908,6 +933,7 @@ files:
908
933
  - lib/facter/resolvers/solaris/ffi/structs.rb
909
934
  - lib/facter/resolvers/solaris/filesystems.rb
910
935
  - lib/facter/resolvers/solaris/ipaddress.rb
936
+ - lib/facter/resolvers/solaris/ldom.rb
911
937
  - lib/facter/resolvers/solaris/memory.rb
912
938
  - lib/facter/resolvers/solaris/networking.rb
913
939
  - lib/facter/resolvers/solaris/os_release.rb
@@ -923,6 +949,7 @@ files:
923
949
  - lib/facter/resolvers/utils/ffi/load_averages.rb
924
950
  - lib/facter/resolvers/utils/filesystem_helper.rb
925
951
  - lib/facter/resolvers/utils/fingerprint.rb
952
+ - lib/facter/resolvers/utils/http.rb
926
953
  - lib/facter/resolvers/utils/networking.rb
927
954
  - lib/facter/resolvers/utils/ssh.rb
928
955
  - lib/facter/resolvers/utils/ssh_helper.rb