diff --git a/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java index 59d2be73a6..1c3287eec2 100644 --- a/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java +++ b/cli/src/main/java/org/onlab/onos/cli/net/LinksListCommand.java @@ -66,7 +66,7 @@ public class LinksListCommand extends AbstractShellCommand { public static ObjectNode json(ObjectMapper mapper, Link link) { ObjectNode result = mapper.createObjectNode(); result.set("src", json(mapper, link.src())); - result.set("dst", json(mapper, link.src())); + result.set("dst", json(mapper, link.dst())); return result; } diff --git a/cli/src/main/java/org/onlab/onos/cli/net/PathListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/PathListCommand.java index 8bb808aeab..67776259bd 100644 --- a/cli/src/main/java/org/onlab/onos/cli/net/PathListCommand.java +++ b/cli/src/main/java/org/onlab/onos/cli/net/PathListCommand.java @@ -1,5 +1,8 @@ package org.onlab.onos.cli.net; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; import org.apache.karaf.shell.commands.Argument; import org.apache.karaf.shell.commands.Command; import org.onlab.onos.net.Link; @@ -32,11 +35,32 @@ public class PathListCommand extends TopologyCommand { protected void execute() { init(); Set paths = service.getPaths(topology, deviceId(src), deviceId(dst)); - for (Path path : paths) { - print(pathString(path)); + if (outputJson()) { + print("%s", json(paths)); + } else { + for (Path path : paths) { + print(pathString(path)); + } } } + /** + * Produces a JSON array containing the specified paths. + * + * @param paths collection of paths + * @return JSON array + */ + public static JsonNode json(Iterable paths) { + ObjectMapper mapper = new ObjectMapper(); + ArrayNode result = mapper.createArrayNode(); + for (Path path : paths) { + result.add(LinksListCommand.json(mapper, path) + .put("cost", path.cost()) + .set("links", LinksListCommand.json(path.links()))); + } + return result; + } + /** * Produces a formatted string representing the specified path. *