in recipes/beyla-service-graph/graphgen/internal/graph.go [49:89]
func (g Graph) Render(writer io.Writer) error {
gv := graphviz.New()
graph, err := gv.Graph()
if err != nil {
return err
}
defer func() {
if err := graph.Close(); err != nil {
slog.Error("error closing graph", "err", err)
}
gv.Close()
}()
nodes := map[*Node]*cgraph.Node{}
// add nodes and edges
for clientIp, servers := range g.adjacencies {
clientNode, err := getCNode(g.nodes[clientIp], graph, nodes)
if err != nil {
return err
}
for _, serverIp := range servers {
serverNode, err := getCNode(g.nodes[serverIp], graph, nodes)
if err != nil {
return err
}
_, err = graph.CreateEdge("", clientNode, serverNode)
// TODO: set weight in label
// e.SetLabel("e")
if err != nil {
return err
}
}
}
if err := gv.Render(graph, graphviz.SVG, writer); err != nil {
return err
}
return nil
}