Fixed a small issue with disjoint path visualization.

Change-Id: I135caecd4231192ca383d6a4a7e6764abc6e3d11
This commit is contained in:
Thomas Vachuska 2015-12-02 17:08:59 -08:00 committed by Gerrit Code Review
parent e6ff7f0756
commit 08bef153bc

View File

@ -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()) {