# File lib/puppet/transportable.rb, line 180
180:     def to_catalog(clear_on_failure = true)
181:       catalog = Puppet::Resource::Catalog.new(Facter.value("hostname"))
182: 
183:       # This should really use the 'delve' method, but this
184:       # whole class is going away relatively soon, hopefully,
185:       # so it's not worth it.
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:         # This is important until we lose the global resource references.
209:         catalog.clear if (clear_on_failure)
210:         raise
211:       end
212: 
213:       catalog
214:     end