private Graph<String, Link> calcMinimumSpanningTree(List<String> fabrics)
{
Topology topo = this.getFabricTopology();
if (topo == null) {
LOG.error("Failed to read Fabric Topology!");
return null;
}
UndirectedSparseGraph<String, Link> graph = new UndirectedSparseGraph<>();
for (Node node : topo.getNode()) {
graph.addVertex(node.getNodeId().getValue());
}
if (topo.getLink() != null)
for (Link link : topo.getLink())
{
graph.addEdge(link, link.getSource().getSourceNode().getValue(), link.getDestination().getDestNode().getValue());
}
PrimMinimumSpanningTree<String, Link> alg =
new PrimMinimumSpanningTree<>(UndirectedSparseGraph.<String, Link>getFactory());
Graph<String, Link> miniTree = alg.transform(graph);
return pruneTree(miniTree, fabrics);
}