faasd/pkg/depends_on.go
Alex Ellis (OpenFaaS Ltd) 88f1aa0433 Update docs for Graph and Node
Updates godoc and adds Add() method instead of using
append on the private slice.

Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
2020-06-17 13:40:09 +01:00

38 lines
703 B
Go

package pkg
import (
"log"
)
func buildInstallOrder(svcs []Service) []string {
graph := Graph{nodes: []*Node{}}
nodeMap := map[string]*Node{}
for _, s := range svcs {
n := &Node{Name: s.Name}
nodeMap[s.Name] = n
graph.nodes = append(graph.nodes, n)
}
for _, s := range svcs {
for _, d := range s.DependsOn {
nodeMap[s.Name].Edges = append(nodeMap[s.Name].Edges, nodeMap[d])
}
}
resolved := &Graph{}
unresolved := &Graph{}
for _, g := range graph.nodes {
resolve(g, resolved, unresolved)
}
log.Printf("Start-up order:\n")
order := []string{}
for _, node := range resolved.nodes {
log.Printf("- %s\n", node.Name)
order = append(order, node.Name)
}
return order
}