1- # A Facter plugin that loads facts from /etc/facter/facts.d
2- # and /etc/puppetlabs/facter/facts.d.
1+ # @summary
2+ # A Facter plugin that loads facts from /etc/facter/facts.d
3+ # and /etc/puppetlabs/facter/facts.d.
34#
45# Facts can be in the form of JSON, YAML or Text files
56# and any executable that returns key=value pairs.
1314# fact scripts more often than is needed
1415class Facter ::Util ::DotD
1516 require 'yaml'
16-
17+ # These will be nil if Puppet is not available.
1718 def initialize ( dir = '/etc/facts.d' , cache_file = File . join ( Puppet [ :libdir ] , 'facts_dot_d.cache' ) )
1819 @dir = dir
1920 @cache_file = cache_file
2021 @cache = nil
2122 @types = { '.txt' => :txt , '.json' => :json , '.yaml' => :yaml }
2223 end
2324
25+ # entries
2426 def entries
2527 Dir . entries ( @dir ) . reject { |f | f =~ %r{^\. |\. ttl$} } . sort . map { |f | File . join ( @dir , f ) }
2628 rescue
2729 [ ]
2830 end
2931
32+ # fact_type
33+ # @param file
3034 def fact_type ( file )
3135 extension = File . extname ( file )
3236
@@ -37,6 +41,8 @@ def fact_type(file)
3741 type
3842 end
3943
44+ # txt_parser
45+ # @param file
4046 def txt_parser ( file )
4147 File . readlines ( file ) . each do |line |
4248 next unless line =~ %r{^([^=]+)=(.+)$}
@@ -51,6 +57,8 @@ def txt_parser(file)
5157 Facter . warn ( "Failed to handle #{ file } as text facts: #{ e . class } : #{ e } " )
5258 end
5359
60+ # json_parser
61+ # @param file
5462 def json_parser ( file )
5563 begin
5664 require 'json'
@@ -68,6 +76,8 @@ def json_parser(file)
6876 Facter . warn ( "Failed to handle #{ file } as json facts: #{ e . class } : #{ e } " )
6977 end
7078
79+ # yaml_parser
80+ # @param file
7181 def yaml_parser ( file )
7282 require 'yaml'
7383
@@ -80,6 +90,8 @@ def yaml_parser(file)
8090 Facter . warn ( "Failed to handle #{ file } as yaml facts: #{ e . class } : #{ e } " )
8191 end
8292
93+ # script_parser
94+ # @param file
8395 def script_parser ( file )
8496 result = cache_lookup ( file )
8597 ttl = cache_time ( file )
@@ -110,19 +122,24 @@ def script_parser(file)
110122 Facter . debug ( e . backtrace . join ( "\n \t " ) )
111123 end
112124
125+ # cache_save
113126 def cache_save!
114127 cache = load_cache
115128 File . open ( @cache_file , 'w' , 0o600 ) { |f | f . write ( YAML . dump ( cache ) ) }
116129 rescue # rubocop:disable Lint/HandleExceptions
117130 end
118131
132+ # cache_store
133+ # @param file
119134 def cache_store ( file , data )
120135 load_cache
121136
122137 @cache [ file ] = { :data => data , :stored => Time . now . to_i }
123138 rescue # rubocop:disable Lint/HandleExceptions
124139 end
125140
141+ # cache_lookup
142+ # @param file
126143 def cache_lookup ( file )
127144 cache = load_cache
128145
@@ -140,6 +157,8 @@ def cache_lookup(file)
140157 return nil
141158 end
142159
160+ # cache_time
161+ # @param file
143162 def cache_time ( file )
144163 meta = file + '.ttl'
145164
@@ -148,6 +167,7 @@ def cache_time(file)
148167 return 0
149168 end
150169
170+ # load_cache
151171 def load_cache
152172 @cache ||= if File . exist? ( @cache_file )
153173 YAML . load_file ( @cache_file )
@@ -161,6 +181,7 @@ def load_cache
161181 return @cache
162182 end
163183
184+ # create
164185 def create
165186 entries . each do |fact |
166187 type = fact_type ( fact )
0 commit comments