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