305: def relationship_graph
306: unless @relationship_graph
307:
308:
309:
310:
311:
312: @relationship_graph = Puppet::SimpleGraph.new
313:
314:
315: self.vertices.each do |vertex|
316: @relationship_graph.add_vertex vertex
317: vertex.builddepends.each do |edge|
318: @relationship_graph.add_edge(edge)
319: end
320: end
321:
322:
323: @relationship_graph.vertices.each do |vertex|
324: vertex.autorequire(self).each do |edge|
325: unless @relationship_graph.edge?(edge.source, edge.target)
326: unless @relationship_graph.edge?(edge.target, edge.source)
327: vertex.debug "Autorequiring #{edge.source}"
328: @relationship_graph.add_edge(edge)
329: else
330: vertex.debug "Skipping automatic relationship with #{(edge.source == vertex ? edge.target : edge.source)}"
331: end
332: end
333: end
334: end
335: @relationship_graph.write_graph(:relationships) if host_config?
336:
337:
338: @relationship_graph.splice!(self, Puppet::Type::Component)
339:
340: @relationship_graph.write_graph(:expanded_relationships) if host_config?
341: end
342: @relationship_graph
343: end