Sha256: 650ae069f809c15d059ee69fbea7a6d4d6ae5d7085b1c6a52a06064c3236bad4
Contents?: true
Size: 1.18 KB
Versions: 3
Compression:
Stored size: 1.18 KB
Contents
# frozen_string_literal: true module Facter module Resolvers class BaseResolver def self.log @log ||= Log.new(self) end def self.invalidate_cache @fact_list = {} end def self.init_resolver @fact_list = {} @semaphore = Mutex.new end def self.subscribe_to_manager Facter::SessionCache.subscribe(self) end def self.resolve(fact_name) @semaphore.synchronize do subscribe_to_manager post_resolve(fact_name) cache_nil_for_unresolved_facts(fact_name) end rescue NoMethodError => e log.debug("Could not resolve #{fact_name}, got #{e}") @fact_list[fact_name] = nil rescue LoadError, NameError => e log.debug("resolving fact #{fact_name}, but #{e}") @fact_list[fact_name] = nil end def self.cache_nil_for_unresolved_facts(fact_name) @fact_list.fetch(fact_name) { @fact_list[fact_name] = nil } @fact_list[fact_name] end def self.post_resolve(_fact_name) raise NotImplementedError, "You must implement post_resolve(fact_name) method in #{name}" end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
facter-4.0.49 | lib/facter/resolvers/base_resolver.rb |
facter-4.0.48 | lib/facter/resolvers/base_resolver.rb |
facter-4.0.47 | lib/facter/resolvers/base_resolver.rb |