mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-11-02 17:21:05 +01:00
ONOS-197: Ignore Link with missing Device
- Catch, log, and skip Link edge creation failure. - log topology error details Change-Id: I3cd44a86ed6641c49923f6ed4d2dbaf1f97511d0
This commit is contained in:
parent
adac04a72d
commit
2210282957
@ -15,14 +15,18 @@
|
||||
*/
|
||||
package org.onlab.onos.net.topology;
|
||||
|
||||
import static org.slf4j.LoggerFactory.getLogger;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import org.onlab.onos.net.AbstractDescription;
|
||||
import org.onlab.onos.net.ConnectPoint;
|
||||
import org.onlab.onos.net.Device;
|
||||
import org.onlab.onos.net.DeviceId;
|
||||
import org.onlab.onos.net.Link;
|
||||
import org.onlab.onos.net.SparseAnnotations;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@ -32,6 +36,8 @@ import java.util.Map;
|
||||
public class DefaultGraphDescription extends AbstractDescription
|
||||
implements GraphDescription {
|
||||
|
||||
private static final Logger log = getLogger(DefaultGraphDescription.class);
|
||||
|
||||
private final long nanos;
|
||||
private final ImmutableSet<TopologyVertex> vertexes;
|
||||
private final ImmutableSet<TopologyEdge> edges;
|
||||
@ -87,8 +93,12 @@ public class DefaultGraphDescription extends AbstractDescription
|
||||
private ImmutableSet<TopologyEdge> buildEdges(Iterable<Link> links) {
|
||||
ImmutableSet.Builder<TopologyEdge> edges = ImmutableSet.builder();
|
||||
for (Link link : links) {
|
||||
edges.add(new DefaultTopologyEdge(vertexOf(link.src()),
|
||||
vertexOf(link.dst()), link));
|
||||
try {
|
||||
edges.add(new DefaultTopologyEdge(vertexOf(link.src()),
|
||||
vertexOf(link.dst()), link));
|
||||
} catch (IllegalArgumentException e) {
|
||||
log.debug("Ignoring {}, missing vertex", link, e);
|
||||
}
|
||||
}
|
||||
return edges.build();
|
||||
}
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
package org.onlab.onos.net.topology;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.onlab.onos.net.DefaultDevice;
|
||||
import org.onlab.onos.net.Device;
|
||||
@ -47,9 +48,13 @@ public class DefaultGraphDescriptionTest {
|
||||
assertEquals("incorrect edge count", 2, desc.edges().size());
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
@Test
|
||||
public void missingVertex() {
|
||||
new DefaultGraphDescription(4321L, ImmutableSet.of(DEV1, DEV3),
|
||||
ImmutableSet.of(L1, L2));
|
||||
GraphDescription desc = new DefaultGraphDescription(4321L,
|
||||
ImmutableSet.of(DEV1, DEV3),
|
||||
ImmutableSet.of(L1, L2));
|
||||
assertEquals("incorrect time", 4321L, desc.timestamp());
|
||||
assertEquals("incorrect vertex count", 2, desc.vertexes().size());
|
||||
assertEquals("incorrect edge count", 0, desc.edges().size());
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,7 +48,9 @@ public class DefaultTopologyEdgeTest {
|
||||
|
||||
static final ProviderId PID = new ProviderId("foo", "bar");
|
||||
|
||||
/** D1:P1 -> D2:P1. */
|
||||
static final Link L1 = new DefaultLink(PID, CP1, CP2, Link.Type.INDIRECT);
|
||||
/** D2:P1 -> D1:P2. */
|
||||
static final Link L2 = new DefaultLink(PID, CP3, CP4, Link.Type.INDIRECT);
|
||||
|
||||
@Test
|
||||
|
||||
@ -203,6 +203,7 @@ public class DefaultTopologyProvider extends AbstractProvider
|
||||
buildTopology(reasons);
|
||||
} catch (Exception e) {
|
||||
log.warn("Unable to compute topology due to: {}", e.getMessage());
|
||||
log.debug("Unable to compute topology", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user