Class: Facter::FactManager

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/facter/framework/core/fact_manager.rb

Overview

Since:

  • 2.0.0

Instance Method Summary collapse

Constructor Details

#initializeFactManager

Returns a new instance of FactManager.

Since:

  • 2.0.0



7
8
9
10
11
12
13
# File 'lib/facter/framework/core/fact_manager.rb', line 7

def initialize
  @internal_fact_mgr = InternalFactManager.new
  @external_fact_mgr = ExternalFactManager.new
  @fact_loader = FactLoader.instance
  @options = Options.get
  @log = Log.new(self)
end

Instance Method Details

#resolve_core(user_query = [], options = {}) ⇒ Object

Since:

  • 2.0.0



64
65
66
67
68
# File 'lib/facter/framework/core/fact_manager.rb', line 64

def resolve_core(user_query = [], options = {})
  log_resolving_method
  @cache_manager = CacheManager.new
  core_fact(user_query, options)
end

#resolve_fact(user_query) ⇒ Object

resolve a fact by name, in a similar way that facter 3 does. search is done in multiple steps, and the next step is executed only if the previous one was not able to resolve the fact

  • load the ‘fact_name.rb` from the configured custom directories

  • load all the core facts, external facts and env facts

  • load all custom facts

Since:

  • 2.0.0



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/facter/framework/core/fact_manager.rb', line 43

def resolve_fact(user_query)
  log_resolving_method
  @options[:user_query] = user_query
  @log.debug("resolving fact with user_query: #{user_query}")

  @cache_manager = Facter::CacheManager.new

  custom_facts = custom_fact_by_filename(user_query) || []
  core_and_external_facts = core_or_external_fact(user_query) || []
  resolved_facts = core_and_external_facts + custom_facts

  if resolved_facts.empty? || resolved_facts.none? { |rf| rf.resolves?(user_query) }
    resolved_facts.concat(all_custom_facts(user_query))
  end

  @cache_manager.cache_facts(resolved_facts)

  log_resolved_facts(resolved_facts)
  resolved_facts
end

#resolve_facts(user_query = []) ⇒ Object

Since:

  • 2.0.0



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/facter/framework/core/fact_manager.rb', line 15

def resolve_facts(user_query = [])
  log_resolving_method
  @options[:user_query] = user_query
  cache_manager = Facter::CacheManager.new

  searched_facts = QueryParser.parse(user_query, @fact_loader.load(user_query, @options))

  searched_facts, cached_facts = cache_manager.resolve_facts(searched_facts)
  internal_facts = @internal_fact_mgr.resolve_facts(searched_facts)
  external_facts = @external_fact_mgr.resolve_facts(searched_facts)

  resolved_facts = override_core_facts(internal_facts, external_facts)

  resolved_facts = resolved_facts.concat(cached_facts)
  cache_manager.cache_facts(resolved_facts)

  FactFilter.new.filter_facts!(resolved_facts, user_query)

  log_resolved_facts(resolved_facts)
  resolved_facts
end