@@ -40,31 +40,42 @@ def cache_facts(resolved_facts)
4040 end
4141 end
4242
43- def group_cached? ( group_name )
44- cached = @fact_groups . get_group_ttls ( group_name ) ? true : false
45- delete_cache ( group_name ) unless cached
43+ def fact_cache_enabled? ( fact_name )
44+ fact = @fact_groups . get_fact ( fact_name )
45+ cached = if fact
46+ !fact [ :ttls ] . nil?
47+ else
48+ false
49+ end
50+
51+ fact_group = @fact_groups . get_fact_group ( fact_name )
52+ delete_cache ( fact_group ) if fact_group && !cached
4653 cached
4754 end
4855
4956 private
5057
5158 def resolve_fact ( searched_fact )
52- group_name = if searched_fact . file
53- searched_fact . name
54- else
55- @fact_groups . get_fact_group ( searched_fact . name )
56- end
59+ return unless fact_cache_enabled? ( searched_fact . name )
5760
58- return unless group_name
61+ fact = if searched_fact . file
62+ @fact_groups . get_fact ( File . basename ( searched_fact . file ) )
63+ else
64+ @fact_groups . get_fact ( searched_fact . name )
65+ end
5966
60- return unless group_cached? ( group_name )
67+ return unless fact
6168
62- return unless check_ttls? ( group_name )
69+ return unless check_ttls? ( fact [ :group ] , fact [ :ttls ] )
6370
64- data = read_group_json ( group_name )
71+ read_fact ( searched_fact , fact [ :group ] )
72+ end
73+
74+ def read_fact ( searched_fact , fact_group )
75+ data = read_group_json ( fact_group )
6576 return unless data
6677
67- @log . debug ( "loading cached values for #{ group_name } facts" )
78+ @log . debug ( "loading cached values for #{ searched_fact . name } facts" )
6879
6980 create_facts ( searched_fact , data )
7081 end
@@ -93,7 +104,7 @@ def cache_fact(fact)
93104 end
94105 return if !group_name || fact . value . nil?
95106
96- return unless group_cached? ( group_name )
107+ return unless fact_cache_enabled? ( fact . name )
97108
98109 @groups [ group_name ] ||= { }
99110 @groups [ group_name ] [ fact . name ] = fact . value
@@ -106,10 +117,12 @@ def write_cache
106117 end
107118
108119 @groups . each do |group_name , data |
109- next unless check_ttls? ( group_name )
120+ next unless check_ttls? ( group_name , @fact_groups . get_group_ttls ( group_name ) )
110121
111- @log . debug ( "caching values for #{ group_name } facts" )
112122 cache_file_name = File . join ( @cache_dir , group_name )
123+ next if File . readable? ( cache_file_name )
124+
125+ @log . debug ( "caching values for #{ group_name } facts" )
113126 File . write ( cache_file_name , JSON . pretty_generate ( data ) )
114127 end
115128 end
@@ -128,8 +141,7 @@ def read_group_json(group_name)
128141 @groups [ group_name ] = data
129142 end
130143
131- def check_ttls? ( group_name )
132- ttls = @fact_groups . get_group_ttls ( group_name )
144+ def check_ttls? ( group_name , ttls )
133145 return false unless ttls
134146
135147 cache_file_name = File . join ( @cache_dir , group_name )
0 commit comments