/** Initialize the EIGRP topology as a directed graph. */ public static Network<EigrpInterface, EigrpEdge> initEigrpTopology( Map<String, Configuration> configurations, Topology topology) { Set<EigrpEdge> edges = topology.getEdges().stream() .map(edge -> EigrpEdge.edgeIfAdjacent(edge, configurations)) .filter(Optional::isPresent) .map(Optional::get) .collect(ImmutableSet.toImmutableSet()); MutableNetwork<EigrpInterface, EigrpEdge> graph = NetworkBuilder.directed().allowsParallelEdges(false).allowsSelfLoops(false).build(); ImmutableSet.Builder<EigrpInterface> nodes = ImmutableSet.builder(); edges.forEach( edge -> { nodes.add(edge.getNode1()); nodes.add(edge.getNode2()); }); nodes.build().forEach(graph::addNode); edges.forEach(edge -> graph.addEdge(edge.getNode1(), edge.getNode2(), edge)); return ImmutableNetwork.copyOf(graph); } }