187: def to_catalog(clear_on_failure = true)
188: catalog = Puppet::Resource::Catalog.new(Facter.value("hostname"))
189:
190:
191:
192:
193: delver = proc do |obj|
194: obj.catalog = catalog
195: unless container = catalog.resource(obj.to_ref)
196: container = obj.to_ral
197: catalog.add_resource container
198: end
199: obj.each do |child|
200: child.catalog = catalog
201: unless resource = catalog.resource(child.to_ref)
202: resource = child.to_ral
203: catalog.add_resource resource
204: end
205:
206: catalog.add_edge(container, resource)
207: if child.is_a?(self.class)
208: delver.call(child)
209: end
210: end
211: end
212:
213: begin
214: delver.call(self)
215: catalog.finalize
216: rescue => detail
217:
218: catalog.clear if (clear_on_failure)
219: raise
220: end
221:
222: return catalog
223: end