320: def relationship_graph
321: unless defined? @relationship_graph and @relationship_graph
322:
323:
324:
325:
326:
327: @relationship_graph = Puppet::SimpleGraph.new
328:
329:
330: self.vertices.each do |vertex|
331: @relationship_graph.add_vertex vertex
332: vertex.builddepends.each do |edge|
333: @relationship_graph.add_edge(edge)
334: end
335: end
336:
337:
338: @relationship_graph.vertices.each do |vertex|
339: vertex.autorequire(self).each do |edge|
340: unless @relationship_graph.edge?(edge.source, edge.target)
341: unless @relationship_graph.edge?(edge.target, edge.source)
342: vertex.debug "Autorequiring %s" % [edge.source]
343: @relationship_graph.add_edge(edge)
344: else
345: vertex.debug "Skipping automatic relationship with %s" % (edge.source == vertex ? edge.target : edge.source)
346: end
347: end
348: end
349: end
350: @relationship_graph.write_graph(:relationships) if host_config?
351:
352:
353: @relationship_graph.splice!(self, Puppet::Type::Component)
354:
355: @relationship_graph.write_graph(:expanded_relationships) if host_config?
356: end
357: @relationship_graph
358: end