class Facter::InternalFactManager
Public Instance Methods
resolve_facts(searched_facts)
click to toggle source
resolves each SearchFact and filter out facts that do not match the given user query @param searched_facts [Array<Facter::SearchedFact>] array of searched facts
@return [Array<Facter::ResolvedFact>]
@api private
# File lib/facter/framework/core/fact/internal/internal_fact_manager.rb, line 11 def resolve_facts(searched_facts) internal_searched_facts = filter_internal_facts(searched_facts) resolved_facts = if Options[:sequential] resolve_sequentially(internal_searched_facts) else resolve_in_parallel(internal_searched_facts) end resolved_facts.flatten! resolved_facts.compact! nil_resolved_facts = resolve_nil_facts(searched_facts) resolved_facts.concat(nil_resolved_facts) end
Private Instance Methods
core_fact(searched_fact)
click to toggle source
# File lib/facter/framework/core/fact/internal/internal_fact_manager.rb, line 73 def core_fact(searched_fact) fact = CoreFact.new(searched_fact) fact.create rescue StandardError => e log.log_exception(e) nil end
filter_internal_facts(searched_facts)
click to toggle source
# File lib/facter/framework/core/fact/internal/internal_fact_manager.rb, line 29 def filter_internal_facts(searched_facts) searched_facts.select { |searched_fact| %i[core legacy].include? searched_fact.type } end
log()
click to toggle source
# File lib/facter/framework/core/fact/internal/internal_fact_manager.rb, line 81 def log @log ||= Facter::Log.new(self) end
resolve_fact(searched_fact)
click to toggle source
# File lib/facter/framework/core/fact/internal/internal_fact_manager.rb, line 63 def resolve_fact(searched_fact) fact_value = core_fact(searched_fact) Array(fact_value).map! do |resolved_fact| if valid_fact?(searched_fact, resolved_fact) resolved_fact.user_query = searched_fact.user_query resolved_fact end end end
resolve_in_parallel(searched_facts)
click to toggle source
# File lib/facter/framework/core/fact/internal/internal_fact_manager.rb, line 57 def resolve_in_parallel(searched_facts) searched_facts.map! do |searched_fact| Thread.new { resolve_fact(searched_fact) } end.map!(&:value) end
resolve_nil_facts(searched_facts)
click to toggle source
# File lib/facter/framework/core/fact/internal/internal_fact_manager.rb, line 44 def resolve_nil_facts(searched_facts) resolved_facts = [] searched_facts.select { |fact| fact.type == :nil }.each do |fact| resolved_facts << ResolvedFact.new(fact.name, nil, :nil, fact.name) end resolved_facts end
resolve_sequentially(searched_facts)
click to toggle source
# File lib/facter/framework/core/fact/internal/internal_fact_manager.rb, line 53 def resolve_sequentially(searched_facts) searched_facts.map! { |searched_fact| resolve_fact(searched_fact) } end
valid_fact?(searched_fact, resolved_fact)
click to toggle source
# File lib/facter/framework/core/fact/internal/internal_fact_manager.rb, line 33 def valid_fact?(searched_fact, resolved_fact) return if resolved_fact.value.nil? searched_fact_name = searched_fact.name if searched_fact_name.include?('.*') resolved_fact.name.match(searched_fact_name) else resolved_fact.name == searched_fact_name end end