243: def prefetch
244: prefetchers = {}
245: @catalog.vertices.each do |resource|
246: if provider = resource.provider and provider.class.respond_to?(:prefetch)
247: prefetchers[provider.class] ||= {}
248: prefetchers[provider.class][resource.name] = resource
249: end
250: end
251:
252:
253: prefetchers.each do |provider, resources|
254: Puppet.debug "Prefetching #{provider.name} resources for #{provider.resource_type.name}"
255: begin
256: provider.prefetch(resources)
257: rescue => detail
258: puts detail.backtrace if Puppet[:trace]
259: Puppet.err "Could not prefetch #{provider.resource_type.name} provider '#{provider.name}': #{detail}"
260: end
261: end
262: end