facter 4.0.35 → 4.0.40

Sign up to get free protection for your applications and to get access to all the features.
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