344: def generate_additional_resources(resource, method)
345: return [] unless resource.respond_to?(method)
346: begin
347: made = resource.send(method)
348: rescue => detail
349: puts detail.backtrace if Puppet[:trace]
350: resource.err "Failed to generate additional resources using '%s': %s" % [method, detail]
351: end
352: return [] unless made
353: made = [made] unless made.is_a?(Array)
354: made.uniq.find_all do |res|
355: begin
356: @catalog.add_resource(res) do |r|
357: r.finish
358: make_parent_child_relationship(resource, [r])
359: end
360: true
361: rescue Puppet::Resource::Catalog::DuplicateResourceError
362: res.info "Duplicate generated resource; skipping"
363: false
364: end
365: end
366: end