facter 4.1.1 → 4.2.0
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.
- checksums.yaml +4 -4
- data/lib/facter.rb +1 -1
- data/lib/facter/config.rb +2 -0
- data/lib/facter/custom_facts/core/execution/posix.rb +2 -2
- data/lib/facter/custom_facts/core/execution/windows.rb +1 -1
- data/lib/facter/custom_facts/util/directory_loader.rb +1 -1
- data/lib/facter/custom_facts/util/windows_root.rb +2 -1
- data/lib/facter/facts/freebsd/is_virtual.rb +1 -5
- data/lib/facter/facts/freebsd/virtual.rb +1 -2
- data/lib/facter/facts/linux/az_metadata.rb +1 -5
- data/lib/facter/facts/linux/cloud/provider.rb +1 -5
- data/lib/facter/facts/linux/ec2_metadata.rb +1 -5
- data/lib/facter/facts/linux/ec2_userdata.rb +1 -5
- data/lib/facter/facts/linux/hypervisors/xen.rb +1 -2
- data/lib/facter/facts/linux/is_virtual.rb +1 -5
- data/lib/facter/facts/linux/virtual.rb +1 -2
- data/lib/facter/facts/macosx/os/macosx/version.rb +6 -3
- data/lib/facter/facts/windows/az_metadata.rb +1 -1
- data/lib/facter/facts/windows/cloud/provider.rb +1 -1
- data/lib/facter/facts/windows/ec2_metadata.rb +1 -1
- data/lib/facter/facts/windows/ec2_userdata.rb +1 -1
- data/lib/facter/facts/windows/gce.rb +1 -1
- data/lib/facter/facts/windows/hypervisors/hyperv.rb +1 -1
- data/lib/facter/facts/windows/hypervisors/kvm.rb +2 -1
- data/lib/facter/facts/windows/hypervisors/virtualbox.rb +2 -2
- data/lib/facter/facts/windows/hypervisors/vmware.rb +1 -1
- data/lib/facter/facts/windows/hypervisors/xen.rb +3 -1
- data/lib/facter/facts/windows/is_virtual.rb +15 -0
- data/lib/facter/facts/windows/virtual.rb +15 -0
- data/lib/facter/framework/core/cache_manager.rb +2 -2
- data/lib/facter/framework/core/fact/external/external_fact_manager.rb +0 -1
- data/lib/facter/framework/core/fact/internal/internal_fact_manager.rb +41 -39
- data/lib/facter/framework/core/fact_filter.rb +4 -14
- data/lib/facter/framework/core/file_loader.rb +1 -1
- data/lib/facter/framework/parsers/query_parser.rb +5 -12
- data/lib/facter/models/fact_collection.rb +20 -3
- data/lib/facter/models/resolved_fact.rb +2 -3
- data/lib/facter/models/searched_fact.rb +2 -3
- data/lib/facter/resolvers/linux/networking.rb +18 -0
- data/lib/facter/resolvers/mountpoints.rb +16 -8
- data/lib/facter/resolvers/partitions.rb +1 -1
- data/lib/facter/resolvers/ruby.rb +1 -1
- data/lib/facter/resolvers/windows/ffi/identity_ffi.rb +5 -0
- data/lib/facter/resolvers/windows/identity.rb +1 -6
- data/lib/facter/resolvers/windows/virtualization.rb +46 -44
- data/lib/facter/resolvers/xen.rb +6 -1
- data/lib/facter/util/facts/posix/virtual_detector.rb +74 -0
- data/lib/facter/util/linux/if_inet6.rb +73 -0
- data/lib/facter/version.rb +1 -1
- metadata +26 -9
- data/lib/facter/facts/windows/virtualization/is_virtual.rb +0 -17
- data/lib/facter/facts/windows/virtualization/virtual.rb +0 -17
- data/lib/facter/framework/core/fact_augmenter.rb +0 -54
- data/lib/facter/util/facts/virtual_detector.rb +0 -83
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9921e9c05d22c7fe9c84a9061a374dd9b31b2f7a28bfa292a62fd0e33ec7eb16
|
4
|
+
data.tar.gz: 44606e1ec31a336cb71971be5b6c21138f0d33b88d023bb71955526550a54fd2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c01cbeb07ac105bbcfcd41598a818962dae3634a72b24f5e850c9dd8b0410c31d52eef1553d9fcc2f3111166d24cba5cb8ae129c3470a1c67a9fc8be12a669cf
|
7
|
+
data.tar.gz: d53fe66fd09af1c5d73a3789160a38c236eacf45e43a5096357ab5eb719dcff38d251e8e29dab09a1763d0e2056909977758453e9fb0a272a229f30d70d85ba1
|
data/lib/facter.rb
CHANGED
data/lib/facter/config.rb
CHANGED
@@ -166,6 +166,7 @@ module Facter
|
|
166
166
|
macosx_productversion
|
167
167
|
macosx_productversion_major
|
168
168
|
macosx_productversion_minor
|
169
|
+
macosx_productversion_patch
|
169
170
|
windows_edition_id
|
170
171
|
windows_installation_type
|
171
172
|
windows_product_name
|
@@ -301,6 +302,7 @@ module Facter
|
|
301
302
|
'macosx_productversion',
|
302
303
|
'macosx_productversion_major',
|
303
304
|
'macosx_productversion_minor',
|
305
|
+
'macosx_productversion_patch',
|
304
306
|
'manufacturer',
|
305
307
|
'memoryfree',
|
306
308
|
'memoryfree_mb',
|
@@ -29,8 +29,8 @@ module Facter
|
|
29
29
|
!!(path =~ ABSOLUTE_PATH_REGEX)
|
30
30
|
end
|
31
31
|
|
32
|
-
DOUBLE_QUOTED_COMMAND =
|
33
|
-
SINGLE_QUOTED_COMMAND =
|
32
|
+
DOUBLE_QUOTED_COMMAND = /\A"(.+?)"(?:\s+(.*))?/.freeze
|
33
|
+
SINGLE_QUOTED_COMMAND = /\A'(.+?)'(?:\s+(.*))?/.freeze
|
34
34
|
|
35
35
|
def expand_command(command)
|
36
36
|
exe = nil
|
@@ -63,7 +63,7 @@ module LegacyFacter
|
|
63
63
|
Facter.log_exception(Exception.new("Caching is enabled for group \"#{basename}\" while "\
|
64
64
|
'there are at least two external facts files with the same filename'))
|
65
65
|
else
|
66
|
-
searched_fact = Facter::SearchedFact.new(basename, nil,
|
66
|
+
searched_fact = Facter::SearchedFact.new(basename, nil, nil, :file)
|
67
67
|
searched_fact.file = file
|
68
68
|
facts << searched_fact
|
69
69
|
end
|
@@ -5,12 +5,8 @@ module Facts
|
|
5
5
|
class IsVirtual
|
6
6
|
FACT_NAME = 'is_virtual'
|
7
7
|
|
8
|
-
def initialize
|
9
|
-
@virtual = Facter::Util::Facts::VirtualDetector.new
|
10
|
-
end
|
11
|
-
|
12
8
|
def call_the_resolver
|
13
|
-
fact_value =
|
9
|
+
fact_value = Facter::Util::Facts::Posix::VirtualDetector.platform
|
14
10
|
|
15
11
|
Facter::ResolvedFact.new(FACT_NAME, check_if_virtual(fact_value))
|
16
12
|
end
|
@@ -7,12 +7,11 @@ module Facts
|
|
7
7
|
|
8
8
|
def initialize
|
9
9
|
@log = Facter::Log.new(self)
|
10
|
-
@virtual = Facter::Util::Facts::VirtualDetector.new
|
11
10
|
end
|
12
11
|
|
13
12
|
def call_the_resolver
|
14
13
|
@log.debug('FreeBSD Virtual Resolver')
|
15
|
-
fact_value =
|
14
|
+
fact_value = Facter::Util::Facts::Posix::VirtualDetector.platform
|
16
15
|
@log.debug("Fact value is: #{fact_value}")
|
17
16
|
|
18
17
|
Facter::ResolvedFact.new(FACT_NAME, fact_value)
|
@@ -5,10 +5,6 @@ module Facts
|
|
5
5
|
class AzMetadata
|
6
6
|
FACT_NAME = 'az_metadata'
|
7
7
|
|
8
|
-
def initialize
|
9
|
-
@virtual = Facter::Util::Facts::VirtualDetector.new
|
10
|
-
end
|
11
|
-
|
12
8
|
def call_the_resolver
|
13
9
|
return Facter::ResolvedFact.new(FACT_NAME, nil) unless azure_hypervisor?
|
14
10
|
|
@@ -20,7 +16,7 @@ module Facts
|
|
20
16
|
private
|
21
17
|
|
22
18
|
def azure_hypervisor?
|
23
|
-
|
19
|
+
Facter::Util::Facts::Posix::VirtualDetector.platform == 'hyperv'
|
24
20
|
end
|
25
21
|
end
|
26
22
|
end
|
@@ -6,12 +6,8 @@ module Facts
|
|
6
6
|
class Provider
|
7
7
|
FACT_NAME = 'cloud.provider'
|
8
8
|
|
9
|
-
def initialize
|
10
|
-
@virtual = Facter::Util::Facts::VirtualDetector.new
|
11
|
-
end
|
12
|
-
|
13
9
|
def call_the_resolver
|
14
|
-
provider = case
|
10
|
+
provider = case Facter::Util::Facts::Posix::VirtualDetector.platform
|
15
11
|
when 'hyperv'
|
16
12
|
'azure' unless Facter::Resolvers::Az.resolve(:metadata).empty?
|
17
13
|
end
|
@@ -5,10 +5,6 @@ module Facts
|
|
5
5
|
class Ec2Metadata
|
6
6
|
FACT_NAME = 'ec2_metadata'
|
7
7
|
|
8
|
-
def initialize
|
9
|
-
@virtual = Facter::Util::Facts::VirtualDetector.new
|
10
|
-
end
|
11
|
-
|
12
8
|
def call_the_resolver
|
13
9
|
return Facter::ResolvedFact.new(FACT_NAME, nil) unless aws_hypervisors?
|
14
10
|
|
@@ -20,7 +16,7 @@ module Facts
|
|
20
16
|
private
|
21
17
|
|
22
18
|
def aws_hypervisors?
|
23
|
-
|
19
|
+
Facter::Util::Facts::Posix::VirtualDetector.platform =~ /kvm|xen|aws/
|
24
20
|
end
|
25
21
|
end
|
26
22
|
end
|
@@ -5,10 +5,6 @@ module Facts
|
|
5
5
|
class Ec2Userdata
|
6
6
|
FACT_NAME = 'ec2_userdata'
|
7
7
|
|
8
|
-
def initialize
|
9
|
-
@virtual = Facter::Util::Facts::VirtualDetector.new
|
10
|
-
end
|
11
|
-
|
12
8
|
def call_the_resolver
|
13
9
|
return Facter::ResolvedFact.new(FACT_NAME, nil) unless aws_hypervisors?
|
14
10
|
|
@@ -20,7 +16,7 @@ module Facts
|
|
20
16
|
private
|
21
17
|
|
22
18
|
def aws_hypervisors?
|
23
|
-
|
19
|
+
Facter::Util::Facts::Posix::VirtualDetector.platform =~ /kvm|xen|aws/
|
24
20
|
end
|
25
21
|
end
|
26
22
|
end
|
@@ -8,7 +8,6 @@ module Facts
|
|
8
8
|
|
9
9
|
def initialize
|
10
10
|
@log = Facter::Log.new(self)
|
11
|
-
@virtual = Facter::Util::Facts::VirtualDetector.new
|
12
11
|
end
|
13
12
|
|
14
13
|
def call_the_resolver
|
@@ -29,7 +28,7 @@ module Facts
|
|
29
28
|
private
|
30
29
|
|
31
30
|
def xen?
|
32
|
-
|
31
|
+
Facter::Util::Facts::Posix::VirtualDetector.platform =~ /xen/
|
33
32
|
end
|
34
33
|
|
35
34
|
def hvm?
|
@@ -5,12 +5,8 @@ module Facts
|
|
5
5
|
class IsVirtual
|
6
6
|
FACT_NAME = 'is_virtual'
|
7
7
|
|
8
|
-
def initialize
|
9
|
-
@virtual = Facter::Util::Facts::VirtualDetector.new
|
10
|
-
end
|
11
|
-
|
12
8
|
def call_the_resolver
|
13
|
-
fact_value =
|
9
|
+
fact_value = Facter::Util::Facts::Posix::VirtualDetector.platform
|
14
10
|
|
15
11
|
Facter::ResolvedFact.new(FACT_NAME, check_if_virtual(fact_value))
|
16
12
|
end
|
@@ -7,12 +7,11 @@ module Facts
|
|
7
7
|
|
8
8
|
def initialize
|
9
9
|
@log = Facter::Log.new(self)
|
10
|
-
@virtual = Facter::Util::Facts::VirtualDetector.new
|
11
10
|
end
|
12
11
|
|
13
12
|
def call_the_resolver
|
14
13
|
@log.debug('Linux Virtual Resolver')
|
15
|
-
fact_value =
|
14
|
+
fact_value = Facter::Util::Facts::Posix::VirtualDetector.platform
|
16
15
|
@log.debug("Fact value is: #{fact_value}")
|
17
16
|
|
18
17
|
Facter::ResolvedFact.new(FACT_NAME, fact_value)
|
@@ -6,7 +6,8 @@ module Facts
|
|
6
6
|
module Macosx
|
7
7
|
class Version
|
8
8
|
FACT_NAME = 'os.macosx.version'
|
9
|
-
ALIASES = %w[macosx_productversion macosx_productversion_major macosx_productversion_minor
|
9
|
+
ALIASES = %w[macosx_productversion macosx_productversion_major macosx_productversion_minor
|
10
|
+
macosx_productversion_patch].freeze
|
10
11
|
|
11
12
|
def call_the_resolver
|
12
13
|
fact_value = Facter::Resolvers::SwVers.resolve(:productversion)
|
@@ -15,7 +16,8 @@ module Facts
|
|
15
16
|
[Facter::ResolvedFact.new(FACT_NAME, ver),
|
16
17
|
Facter::ResolvedFact.new(ALIASES[0], fact_value, :legacy),
|
17
18
|
Facter::ResolvedFact.new(ALIASES[1], ver['major'], :legacy),
|
18
|
-
Facter::ResolvedFact.new(ALIASES[2], ver['minor'], :legacy)
|
19
|
+
Facter::ResolvedFact.new(ALIASES[2], ver['minor'], :legacy),
|
20
|
+
Facter::ResolvedFact.new(ALIASES[3], ver['patch'], :legacy)]
|
19
21
|
end
|
20
22
|
|
21
23
|
def version_hash(fact_value)
|
@@ -23,7 +25,8 @@ module Facts
|
|
23
25
|
if versions[0] == '10'
|
24
26
|
{ 'full' => fact_value, 'major' => "#{versions[0]}.#{versions[1]}", 'minor' => versions[-1] }
|
25
27
|
else
|
26
|
-
{ 'full' => fact_value, 'major' => versions[0], 'minor' =>
|
28
|
+
{ 'full' => fact_value, 'major' => versions[0], 'minor' => versions.fetch(1, '0'),
|
29
|
+
'patch' => versions.fetch(2, '0') }
|
27
30
|
end
|
28
31
|
end
|
29
32
|
end
|
@@ -7,7 +7,7 @@ module Facts
|
|
7
7
|
FACT_NAME = 'cloud.provider'
|
8
8
|
|
9
9
|
def call_the_resolver
|
10
|
-
virtual = Facter::Resolvers::Virtualization.resolve(:virtual)
|
10
|
+
virtual = Facter::Resolvers::Windows::Virtualization.resolve(:virtual)
|
11
11
|
provider = case virtual
|
12
12
|
when 'hyperv'
|
13
13
|
'azure' unless Facter::Resolvers::Az.resolve(:metadata).empty?
|
@@ -6,7 +6,7 @@ module Facts
|
|
6
6
|
FACT_NAME = 'gce'
|
7
7
|
|
8
8
|
def call_the_resolver
|
9
|
-
virtualization = Facter::Resolvers::Virtualization.resolve(:virtual)
|
9
|
+
virtualization = Facter::Resolvers::Windows::Virtualization.resolve(:virtual)
|
10
10
|
|
11
11
|
fact_value = virtualization&.include?('gce') ? Facter::Resolvers::Gce.resolve(:metadata) : nil
|
12
12
|
Facter::ResolvedFact.new(FACT_NAME, fact_value)
|
@@ -15,7 +15,7 @@ module Facts
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def hyperv?
|
18
|
-
Facter::Resolvers::Virtualization.resolve(:virtual) == 'hyperv' ||
|
18
|
+
Facter::Resolvers::Windows::Virtualization.resolve(:virtual) == 'hyperv' ||
|
19
19
|
Facter::Resolvers::DMIBios.resolve(:manufacturer).include?('Microsoft')
|
20
20
|
end
|
21
21
|
end
|
@@ -17,7 +17,8 @@ module Facts
|
|
17
17
|
def kvm?
|
18
18
|
product_name = Facter::Resolvers::DMIComputerSystem.resolve(:name)
|
19
19
|
|
20
|
-
(Facter::Resolvers::Virtualization.resolve(:virtual) == 'kvm' ||
|
20
|
+
(Facter::Resolvers::Windows::Virtualization.resolve(:virtual) == 'kvm' ||
|
21
|
+
Facter::Resolvers::NetKVM.resolve(:kvm)) &&
|
21
22
|
product_name != 'VirtualBox' && !product_name.match(/^Parallels/)
|
22
23
|
end
|
23
24
|
|
@@ -15,12 +15,12 @@ module Facts
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def virtualbox?
|
18
|
-
Facter::Resolvers::Virtualization.resolve(:virtual) == 'virtualbox' ||
|
18
|
+
Facter::Resolvers::Windows::Virtualization.resolve(:virtual) == 'virtualbox' ||
|
19
19
|
Facter::Resolvers::DMIComputerSystem.resolve(:name) == 'VirtualBox'
|
20
20
|
end
|
21
21
|
|
22
22
|
def populate_version_and_revision
|
23
|
-
oem_strings = Facter::Resolvers::Virtualization.resolve(:oem_strings)
|
23
|
+
oem_strings = Facter::Resolvers::Windows::Virtualization.resolve(:oem_strings)
|
24
24
|
return unless oem_strings
|
25
25
|
|
26
26
|
version = revision = ''
|
@@ -15,7 +15,7 @@ module Facts
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def vmware?
|
18
|
-
Facter::Resolvers::Virtualization.resolve(:virtual) == 'vmware' ||
|
18
|
+
Facter::Resolvers::Windows::Virtualization.resolve(:virtual) == 'vmware' ||
|
19
19
|
Facter::Resolvers::DMIBios.resolve(:manufacturer) == 'VMware, Inc.'
|
20
20
|
end
|
21
21
|
end
|
@@ -7,7 +7,9 @@ module Facts
|
|
7
7
|
FACT_NAME = 'hypervisors.xen'
|
8
8
|
|
9
9
|
def call_the_resolver
|
10
|
-
|
10
|
+
if Facter::Resolvers::Windows::Virtualization.resolve(:virtual) == 'xen'
|
11
|
+
fact_value = { context: hvm? ? 'hvm' : 'pv' }
|
12
|
+
end
|
11
13
|
|
12
14
|
Facter::ResolvedFact.new(FACT_NAME, fact_value)
|
13
15
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Facts
|
4
|
+
module Windows
|
5
|
+
class IsVirtual
|
6
|
+
FACT_NAME = 'is_virtual'
|
7
|
+
|
8
|
+
def call_the_resolver
|
9
|
+
fact_value = Facter::Resolvers::Windows::Virtualization.resolve(:is_virtual)
|
10
|
+
|
11
|
+
Facter::ResolvedFact.new(FACT_NAME, fact_value)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Facts
|
4
|
+
module Windows
|
5
|
+
class Virtual
|
6
|
+
FACT_NAME = 'virtual'
|
7
|
+
|
8
|
+
def call_the_resolver
|
9
|
+
fact_value = Facter::Resolvers::Windows::Virtualization.resolve(:virtual)
|
10
|
+
|
11
|
+
Facter::ResolvedFact.new(FACT_NAME, fact_value)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -123,7 +123,7 @@ cache_format_version is incorrect!")
|
|
123
123
|
return unless data[searched_fact.name]
|
124
124
|
|
125
125
|
[Facter::ResolvedFact.new(searched_fact.name, data[searched_fact.name], searched_fact.type,
|
126
|
-
searched_fact.user_query
|
126
|
+
searched_fact.user_query)]
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
@@ -133,7 +133,7 @@ cache_format_version is incorrect!")
|
|
133
133
|
next if fact_name == 'cache_format_version'
|
134
134
|
|
135
135
|
fact = Facter::ResolvedFact.new(fact_name, fact_value, searched_fact.type,
|
136
|
-
searched_fact.user_query
|
136
|
+
searched_fact.user_query)
|
137
137
|
fact.file = searched_fact.file
|
138
138
|
facts << fact
|
139
139
|
end
|
@@ -19,7 +19,6 @@ module Facter
|
|
19
19
|
custom_facts.each do |custom_fact|
|
20
20
|
fact = LegacyFacter[custom_fact.name]
|
21
21
|
resolved_fact = ResolvedFact.new(custom_fact.name, fact.value, :custom)
|
22
|
-
resolved_fact.filter_tokens = []
|
23
22
|
resolved_fact.user_query = custom_fact.user_query
|
24
23
|
resolved_fact.file = fact.options[:file]
|
25
24
|
|
@@ -2,20 +2,25 @@
|
|
2
2
|
|
3
3
|
module Facter
|
4
4
|
class InternalFactManager
|
5
|
-
|
6
|
-
|
5
|
+
# resolves each SearchFact and filter out facts that do not match the given user query
|
6
|
+
# @param searched_facts [Array<Facter::SearchedFact>] array of searched facts
|
7
|
+
#
|
8
|
+
# @return [Array<Facter::ResolvedFact>]
|
9
|
+
#
|
10
|
+
# @api private
|
7
11
|
def resolve_facts(searched_facts)
|
8
12
|
internal_searched_facts = filter_internal_facts(searched_facts)
|
9
|
-
|
10
13
|
resolved_facts = if Options[:sequential]
|
11
|
-
|
14
|
+
log.debug('Resolving facts sequentially')
|
12
15
|
resolve_sequentially(internal_searched_facts)
|
13
16
|
else
|
14
|
-
|
15
|
-
|
16
|
-
join_threads(threads, internal_searched_facts)
|
17
|
+
log.debug('Resolving fact in parallel')
|
18
|
+
resolve_in_parallel(internal_searched_facts)
|
17
19
|
end
|
18
20
|
|
21
|
+
resolved_facts.flatten!
|
22
|
+
resolved_facts.compact!
|
23
|
+
|
19
24
|
nil_resolved_facts = resolve_nil_facts(searched_facts)
|
20
25
|
|
21
26
|
resolved_facts.concat(nil_resolved_facts)
|
@@ -27,6 +32,17 @@ module Facter
|
|
27
32
|
searched_facts.select { |searched_fact| %i[core legacy].include? searched_fact.type }
|
28
33
|
end
|
29
34
|
|
35
|
+
def valid_fact?(searched_fact, resolved_fact)
|
36
|
+
return if resolved_fact.value.nil?
|
37
|
+
|
38
|
+
searched_fact_name = searched_fact.name
|
39
|
+
if searched_fact_name.include?('.*')
|
40
|
+
resolved_fact.name.match(searched_fact_name)
|
41
|
+
else
|
42
|
+
resolved_fact.name == searched_fact_name
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
30
46
|
def resolve_nil_facts(searched_facts)
|
31
47
|
resolved_facts = []
|
32
48
|
searched_facts.select { |fact| fact.type == :nil }.each do |fact|
|
@@ -37,49 +53,35 @@ module Facter
|
|
37
53
|
end
|
38
54
|
|
39
55
|
def resolve_sequentially(searched_facts)
|
40
|
-
|
41
|
-
|
42
|
-
searched_facts
|
43
|
-
.uniq { |searched_fact| searched_fact.fact_class.name }
|
44
|
-
.each do |searched_fact|
|
45
|
-
begin
|
46
|
-
fact = CoreFact.new(searched_fact)
|
47
|
-
fact_value = fact.create
|
48
|
-
resolved_facts << fact_value unless fact_value.nil?
|
49
|
-
rescue StandardError => e
|
50
|
-
@@log.log_exception(e)
|
51
|
-
end
|
52
|
-
end
|
56
|
+
searched_facts.map! { |searched_fact| resolve_fact(searched_fact) }
|
57
|
+
end
|
53
58
|
|
54
|
-
|
55
|
-
|
59
|
+
def resolve_in_parallel(searched_facts)
|
60
|
+
searched_facts.map! do |searched_fact|
|
61
|
+
Thread.new { resolve_fact(searched_fact) }
|
62
|
+
end.map!(&:value)
|
56
63
|
end
|
57
64
|
|
58
|
-
def
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
resolve_fact(searched_fact)
|
65
|
+
def resolve_fact(searched_fact)
|
66
|
+
fact_value = core_fact(searched_fact)
|
67
|
+
Array(fact_value).map! do |resolved_fact|
|
68
|
+
if valid_fact?(searched_fact, resolved_fact)
|
69
|
+
resolved_fact.user_query = searched_fact.user_query
|
70
|
+
resolved_fact
|
65
71
|
end
|
66
72
|
end
|
67
73
|
end
|
68
74
|
|
69
|
-
def
|
70
|
-
resolved_facts = threads.map(&:value)
|
71
|
-
resolved_facts.compact!
|
72
|
-
resolved_facts.flatten!
|
73
|
-
|
74
|
-
FactAugmenter.augment_resolved_facts(searched_facts, resolved_facts)
|
75
|
-
end
|
76
|
-
|
77
|
-
def resolve_fact(searched_fact)
|
75
|
+
def core_fact(searched_fact)
|
78
76
|
fact = CoreFact.new(searched_fact)
|
79
77
|
fact.create
|
80
78
|
rescue StandardError => e
|
81
|
-
|
79
|
+
log.log_exception(e)
|
82
80
|
nil
|
83
81
|
end
|
82
|
+
|
83
|
+
def log
|
84
|
+
@log ||= Facter::Log.new(self)
|
85
|
+
end
|
84
86
|
end
|
85
87
|
end
|