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