Class: Facter::Resolvers::BaseResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/facter/resolvers/base_resolver.rb

Direct Known Subclasses

AioAgentVersion, Aix::Disks, Aix::Filesystem, Aix::LoadAverages, Aix::Memory, Aix::Mountpoints, Aix::Networking, Aix::Nim, Aix::Partitions, Aix::Processors, Aix::Serialnumber, Architecture, Augeas, Facter::Resolvers::Bsd::Processors, Containers, DMIBios, DMIComputerSystem, DebianVersion, DmiDecode, Ec2, EosRelease, Facterversion, Freebsd::DmiBios, Freebsd::FreebsdVersion, Freebsd::Geom, Freebsd::Processors, Freebsd::SwapMemory, Freebsd::SystemMemory, Gce, Hardware, HardwareArchitecture, Hostname, Identity, Kernel, Linux::Disk, Linux::DmiBios, Linux::DockerUptime, Linux::Filesystems, Linux::FipsEnabled, Linux::LoadAverages, Linux::Memory, Linux::Processors, LoadAverages, Lpar, LsbRelease, Lspci, Macosx::DmiBios, Macosx::Filesystems, Macosx::LoadAverages, Macosx::Mountpoints, Macosx::Processors, Macosx::SwapMemory, Macosx::SystemMemory, Macosx::SystemProfiler, Memory, Mountpoints, NetKVM, Networking, NetworkingLinux, OpenVz, OsLevel, OsRelease, Partitions, Path, PosxIdentity, Processors, ProductRelease, PuppetVersionResolver, RedHatRelease, Ruby, SELinux, Solaris::Disks, Solaris::Dmi, Solaris::DmiSparc, Solaris::Filesystem, Solaris::Ipaddress, Solaris::Ldom, Solaris::Memory, Solaris::Networking, Solaris::OsRelease, Solaris::Processors, Solaris::Zone, Solaris::ZoneName, SshResolver, SuseRelease, SwVers, System32, Timezone, Uname, Uptime, VirtWhat, Virtualization, Vmware, WinOsDescription, Windows::AioAgentVersion, Windows::Fips, Windows::Networking, Windows::Ssh, Windows::Uptime, Wpar, Xen, ZFS, Zpool

Class Method Summary collapse

Class Method Details

.invalidate_cacheObject



10
11
12
# File 'lib/facter/resolvers/base_resolver.rb', line 10

def self.invalidate_cache
  @fact_list = {}
end

.logObject



6
7
8
# File 'lib/facter/resolvers/base_resolver.rb', line 6

def self.log
  @log ||= Log.new(self)
end

.post_resolve(_fact_name) ⇒ Object

Raises:

  • (NotImplementedError)


33
34
35
# File 'lib/facter/resolvers/base_resolver.rb', line 33

def self.post_resolve(_fact_name)
  raise NotImplementedError, "You must implement post_resolve(fact_name) method in #{name}"
end

.resolve(fact_name) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/facter/resolvers/base_resolver.rb', line 18

def self.resolve(fact_name)
  subscribe_to_manager
  post_resolve(fact_name)

  validate_resolution(fact_name)
rescue LoadError, NameError => e
  log.debug("resolving fact #{fact_name}, but #{e}")
  @fact_list[fact_name] = nil
end

.subscribe_to_managerObject



14
15
16
# File 'lib/facter/resolvers/base_resolver.rb', line 14

def self.subscribe_to_manager
  Facter::SessionCache.subscribe(self)
end

.validate_resolution(fact_name) ⇒ Object



28
29
30
31
# File 'lib/facter/resolvers/base_resolver.rb', line 28

def self.validate_resolution(fact_name)
  @fact_list.fetch(fact_name) { @fact_list[fact_name] = nil }
  @fact_list[fact_name]
end