@JsonCreator private static @Nonnull IsisNode create( @JsonProperty(PROP_NODE) String node, @JsonProperty(PROP_INTERFACE) String interfaceName) { return new IsisNode(node, interfaceName); }
public @Nullable IsisProcess getIsisProcess(@Nonnull NetworkConfigurations nc) { Interface i = getInterface(nc); if (i == null) { return null; } return i.getVrf().getIsisProcess(); }
@VisibleForTesting static Multiset<Row> getIsisEdges( Set<String> includeNodes, Set<String> includeRemoteNodes, Network<IsisNode, IsisEdge> isisTopology) { return isisTopology.edges().stream() .filter(Objects::nonNull) .filter( isisEdge -> includeNodes.contains(isisEdge.getNode1().getNode()) && includeRemoteNodes.contains(isisEdge.getNode2().getNode())) .map(EdgesAnswerer::isisEdgeToRow) .collect(Collectors.toCollection(HashMultiset::create)); }
Interface iface = edge.getNode2().getInterface(nc); IsisInterfaceLevelSettings level1Settings = iface.getIsis().getLevel1(); IsisInterfaceLevelSettings level2Settings = iface.getIsis().getLevel2(); .get(edge.getNode1().getNode()) .getVirtualRouters() .get(edge.getNode1().getInterface(nc).getVrfName()); Queue<RouteAdvertisement<IsisRoute>> queue = remoteVr._isisIncomingRoutes.get(edge.reverse()); IsisLevel circuitType = edge.getCircuitType();
static Row isisEdgeToRow(IsisEdge isisEdge) { RowBuilder row = Row.builder(); row.put( COL_INTERFACE, new NodeInterfacePair( isisEdge.getNode1().getNode(), isisEdge.getNode1().getInterfaceName())) .put( COL_REMOTE_INTERFACE, new NodeInterfacePair( isisEdge.getNode2().getNode(), isisEdge.getNode2().getInterfaceName())); return row.build(); }
private void initIsisQueues(Network<IsisNode, IsisEdge> isisTopology) { // Initialize message queues for each IS-IS circuit if (_vrf.getIsisProcess() == null) { _isisIncomingRoutes = ImmutableSortedMap.of(); } else { _isisIncomingRoutes = _vrf.getInterfaceNames().stream() .map(ifaceName -> new IsisNode(_c.getHostname(), ifaceName)) .filter(isisTopology.nodes()::contains) .flatMap(n -> isisTopology.inEdges(n).stream()) .collect( toImmutableSortedMap(Function.identity(), e -> new ConcurrentLinkedQueue<>())); } }
_isisIncomingRoutes.forEach( (edge, queue) -> { Ip nextHopIp = edge.getNode1().getInterface(nc).getAddress().getIp(); Interface iface = edge.getNode2().getInterface(nc); while (queue.peek() != null) { RouteAdvertisement<IsisRoute> routeAdvert = queue.remove();
@Test public void testIsisToRow() { IsisEdge testEdge = new IsisEdge( IsisLevel.LEVEL_1, new IsisNode("host1", "int1"), new IsisNode("host2", "int2")); Row row = isisEdgeToRow(testEdge); assertThat( row, allOf( hasColumn( COL_INTERFACE, equalTo(new NodeInterfacePair("host1", "int1")), Schema.INTERFACE), hasColumn( COL_REMOTE_INTERFACE, equalTo(new NodeInterfacePair("host2", "int2")), Schema.INTERFACE))); }
@Test public void testGetIsisEdges() { IsisNode node1 = new IsisNode("host1", "int1"); IsisNode node2 = new IsisNode("host2", "int2"); IsisEdge edge = new IsisEdge(IsisLevel.LEVEL_1, node1, node2); MutableNetwork<IsisNode, IsisEdge> isisTopology = NetworkBuilder.directed().allowsParallelEdges(false).allowsSelfLoops(false).build(); isisTopology.addEdge(node1, node2, edge); Multiset<Row> rows = getIsisEdges(_includeNodes, _includeRemoteNodes, isisTopology); assertThat( rows, contains( allOf( hasColumn( COL_INTERFACE, equalTo(new NodeInterfacePair("host1", "int1")), Schema.INTERFACE), hasColumn( COL_REMOTE_INTERFACE, equalTo(new NodeInterfacePair("host2", "int2")), Schema.INTERFACE)))); }