mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-15 09:21:06 +02:00
Fixed a small issue with disjoint path visualization.
Change-Id: I135caecd4231192ca383d6a4a7e6764abc6e3d11
This commit is contained in:
parent
e6ff7f0756
commit
08bef153bc
@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableSet;
|
|||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import org.onlab.osgi.ServiceDirectory;
|
import org.onlab.osgi.ServiceDirectory;
|
||||||
import org.onosproject.net.DeviceId;
|
import org.onosproject.net.DeviceId;
|
||||||
|
import org.onosproject.net.DisjointPath;
|
||||||
import org.onosproject.net.ElementId;
|
import org.onosproject.net.ElementId;
|
||||||
import org.onosproject.net.HostId;
|
import org.onosproject.net.HostId;
|
||||||
import org.onosproject.net.Link;
|
import org.onosproject.net.Link;
|
||||||
@ -34,7 +35,6 @@ import org.onosproject.ui.topo.TopoJson;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -56,7 +56,6 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler {
|
|||||||
private static final String MODE = "mode";
|
private static final String MODE = "mode";
|
||||||
|
|
||||||
private Set<Link> allPathLinks;
|
private Set<Link> allPathLinks;
|
||||||
private Set<Link> selectedPathLinks;
|
|
||||||
|
|
||||||
private enum Mode {
|
private enum Mode {
|
||||||
SHORTEST, DISJOINT, SRLG
|
SHORTEST, DISJOINT, SRLG
|
||||||
@ -215,16 +214,15 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler {
|
|||||||
log.info("src={}; dst={}; mode={}", src, dst, currentMode);
|
log.info("src={}; dst={}; mode={}", src, dst, currentMode);
|
||||||
if (src != null && dst != null) {
|
if (src != null && dst != null) {
|
||||||
log.info("test" + src + dst);
|
log.info("test" + src + dst);
|
||||||
paths = null;
|
paths = ImmutableList.copyOf(pathService.getDisjointPaths(src, dst));
|
||||||
paths = new ArrayList<>();
|
|
||||||
pathService.getDisjointPaths(src, dst).forEach(djp -> {
|
|
||||||
paths.add(djp.primary());
|
|
||||||
paths.add(djp.backup());
|
|
||||||
});
|
|
||||||
pathIndex = 0;
|
pathIndex = 0;
|
||||||
|
|
||||||
ImmutableSet.Builder<Link> builder = ImmutableSet.builder();
|
ImmutableSet.Builder<Link> builder = ImmutableSet.builder();
|
||||||
paths.forEach(path -> path.links().forEach(builder::add));
|
paths.forEach(path -> {
|
||||||
|
DisjointPath dp = (DisjointPath) path;
|
||||||
|
builder.addAll(dp.primary().links());
|
||||||
|
builder.addAll(dp.backup().links());
|
||||||
|
});
|
||||||
allPathLinks = builder.build();
|
allPathLinks = builder.build();
|
||||||
} else {
|
} else {
|
||||||
paths = ImmutableList.of();
|
paths = ImmutableList.of();
|
||||||
@ -237,16 +235,18 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler {
|
|||||||
PathLinkMap linkMap = new PathLinkMap();
|
PathLinkMap linkMap = new PathLinkMap();
|
||||||
allPathLinks.forEach(linkMap::add);
|
allPathLinks.forEach(linkMap::add);
|
||||||
|
|
||||||
|
Set<Link> selectedPathLinks;
|
||||||
|
|
||||||
// Prepare two working sets; one containing selected path links and
|
// Prepare two working sets; one containing selected path links and
|
||||||
// the other containing all paths links.
|
// the other containing all paths links.
|
||||||
if (currentMode.equals(Mode.DISJOINT)) {
|
if (currentMode.equals(Mode.DISJOINT)) {
|
||||||
//FIXME: find a way to skip 2 paths for disjoint
|
DisjointPath dp = (DisjointPath) paths.get(pathIndex);
|
||||||
selectedPathLinks = paths.isEmpty() ?
|
selectedPathLinks = paths.isEmpty() ?
|
||||||
ImmutableSet.of() : Sets.newHashSet(paths.get(pathIndex * 2).links());
|
ImmutableSet.of() : Sets.newHashSet(dp.primary().links());
|
||||||
selectedPathLinks.addAll(Sets.newHashSet(paths.get(pathIndex * 2 + 1).links()));
|
selectedPathLinks.addAll(dp.backup().links());
|
||||||
} else {
|
} else {
|
||||||
selectedPathLinks = paths.isEmpty() ?
|
selectedPathLinks = paths.isEmpty() ?
|
||||||
ImmutableSet.of() : Sets.newHashSet(paths.get(pathIndex).links());
|
ImmutableSet.of() : ImmutableSet.copyOf(paths.get(pathIndex).links());
|
||||||
}
|
}
|
||||||
Highlights highlights = new Highlights();
|
Highlights highlights = new Highlights();
|
||||||
for (PathLink plink : linkMap.biLinks()) {
|
for (PathLink plink : linkMap.biLinks()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user