# File lib/puppet/indirector/indirection.rb, line 179
179:   def find(key, *args)
180:     request = request(:find, key, *args)
181:     terminus = prepare(request)
182: 
183:     if result = find_in_cache(request)
184:       return result
185:     end
186: 
187:     # Otherwise, return the result from the terminus, caching if appropriate.
188:     if ! request.ignore_terminus? and result = terminus.find(request)
189:       result.expiration ||= self.expiration if result.respond_to?(:expiration)
190:       if cache? and request.use_cache?
191:         Puppet.info "Caching #{self.name} for #{request.key}"
192:         cache.save request(:save, result, *args)
193:       end
194: 
195:       return terminus.respond_to?(:filter) ? terminus.filter(result) : result
196:     end
197: 
198:     nil
199:   end