Class: Puppet::Node::Facts::Facter

Inherits:
Indirector::Code show all
Defined in:
lib/puppet/indirector/facts/facter.rb

Constant Summary

Constants included from Util

Util::AbsolutePathPosix, Util::AbsolutePathWindows, Util::DEFAULT_POSIX_MODE, Util::DEFAULT_WINDOWS_MODE

Constants included from Util::POSIX

Util::POSIX::LOCALE_ENV_VARS, Util::POSIX::USER_ENV_VARS

Constants included from Util::SymbolicFileMode

Util::SymbolicFileMode::SetGIDBit, Util::SymbolicFileMode::SetUIDBit, Util::SymbolicFileMode::StickyBit, Util::SymbolicFileMode::SymbolicMode, Util::SymbolicFileMode::SymbolicSpecialToBit

Constants included from Util::Docs

Util::Docs::HEADER_LEVELS

Instance Attribute Summary

Attributes included from Util::Docs

#doc, #nodoc

Instance Method Summary collapse

Methods inherited from Indirector::Terminus

abstract_terminus?, const2name, #indirection, indirection_name, inherited, #initialize, mark_as_abstract_terminus, #model, model, #name, name2const, register_terminus_class, terminus_class, terminus_classes, #terminus_type, #validate, #validate_key, #validate_model

Methods included from Util::InstanceLoader

#instance_docs, #instance_hash, #instance_load, #instance_loader, #instance_loading?, #loaded_instance, #loaded_instances

Methods included from Util

absolute_path?, benchmark, chuser, deterministic_rand, deterministic_rand_int, exit_on_fail, logmethods, path_to_uri, pretty_backtrace, replace_file, safe_posix_fork, symbolizehash, thinmark, uri_to_path, which, withenv, withumask

Methods included from Util::POSIX

#get_posix_field, #gid, #idfield, #methodbyid, #methodbyname, #search_posix_field, #uid

Methods included from Util::SymbolicFileMode

#normalize_symbolic_mode, #symbolic_mode_to_int, #valid_symbolic_mode?

Methods included from Util::Docs

#desc, #dochook, #doctable, #markdown_definitionlist, #markdown_header, #nodoc?, #pad, scrub

Constructor Details

This class inherits a constructor from Puppet::Indirector::Terminus

Instance Method Details

#allow_remote_requests?Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/puppet/indirector/facts/facter.rb', line 9

def allow_remote_requests?
  false
end

#destroy(facts) ⇒ Object

Raises:



13
14
15
# File 'lib/puppet/indirector/facts/facter.rb', line 13

def destroy(facts)
  raise Puppet::DevError, 'You cannot destroy facts in the code store; it is only used for getting facts from Facter'
end

#find(request) ⇒ Object

Lookup a host’s facts up in Facter.



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/puppet/indirector/facts/facter.rb', line 22

def find(request)
  Facter.reset

  # Note: we need to setup puppet's external search paths before adding the puppetversion
  # fact. This is because in Facter 2.x, the first `Facter.add` causes Facter to create
  # its directory loaders which cannot be changed, meaning other external facts won't
  # be resolved. (PUP-4607)
  self.class.setup_external_search_paths(request) if Puppet.features.external_facts?
  self.class.setup_search_paths(request)

  # Add the puppetversion fact; this is done before generating the hash so it is
  # accessible to custom facts.
  Facter.add(:puppetversion) do
    setcode { Puppet.version.to_s }
  end

  Facter.add(:agent_specified_environment) do
    setcode do
      if Puppet.settings.set_by_config?(:environment)
        Puppet[:environment]
      end
    end
  end

  result = Puppet::Node::Facts.new(request.key, Facter.to_hash)
  result.add_local_facts
  result.sanitize
  result
end

#save(facts) ⇒ Object

Raises:



17
18
19
# File 'lib/puppet/indirector/facts/facter.rb', line 17

def save(facts)
  raise Puppet::DevError, 'You cannot save facts to the code store; it is only used for getting facts from Facter'
end