464: def prefetch
465: prefetchers = {}
466: @catalog.vertices.each do |resource|
467: if provider = resource.provider and provider.class.respond_to?(:prefetch)
468: prefetchers[provider.class] ||= {}
469: prefetchers[provider.class][resource.name] = resource
470: end
471: end
472:
473:
474: prefetchers.each do |provider, resources|
475: Puppet.debug "Prefetching %s resources for %s" % [provider.name, provider.resource_type.name]
476: begin
477: provider.prefetch(resources)
478: rescue => detail
479: if Puppet[:trace]
480: puts detail.backtrace
481: end
482: Puppet.err "Could not prefetch %s provider '%s': %s" % [provider.resource_type.name, provider.name, detail]
483: end
484: end
485: end