class Facter::Resolvers::BaseResolver

Attributes

log[R]

Public Class Methods

cache_nil_for_unresolved_facts(fact_name) click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 36
def self.cache_nil_for_unresolved_facts(fact_name)
  @fact_list.fetch(fact_name) { @fact_list[fact_name] = nil }
  @fact_list[fact_name]
end
init_resolver() click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 14
def self.init_resolver
  @fact_list = {}
  @semaphore = Mutex.new
  @log = Log.new(self)
end
invalidate_cache() click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 10
def self.invalidate_cache
  @fact_list = {}
end
post_resolve(_fact_name, _options) click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 41
def self.post_resolve(_fact_name, _options)
  raise NotImplementedError, "You must implement post_resolve(fact_name, options) method in #{name}"
end
resolve(fact_name, options = {}) click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 24
def self.resolve(fact_name, options = {})
  @semaphore.synchronize do
    subscribe_to_manager
    post_resolve(fact_name, options)

    cache_nil_for_unresolved_facts(fact_name)
  end
rescue LoadError, NameError => e
  log.error("Resolving fact #{fact_name}, but got #{e} at #{e.backtrace[0]}")
  @fact_list[fact_name] = nil
end
subscribe_to_manager() click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 20
def self.subscribe_to_manager
  Facter::SessionCache.subscribe(self)
end