Implement json cli in PacketProcessors and PacketRequests
Change-Id: Iea833fa2b5ecc9abf65d56f869c8c5f33c4bbb4b
diff --git a/cli/src/main/java/org/onosproject/cli/net/PacketProcessorsListCommand.java b/cli/src/main/java/org/onosproject/cli/net/PacketProcessorsListCommand.java
index ced2f5c..2844b5e 100644
--- a/cli/src/main/java/org/onosproject/cli/net/PacketProcessorsListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/PacketProcessorsListCommand.java
@@ -15,11 +15,16 @@
*/
package org.onosproject.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.Command;
import org.onosproject.cli.AbstractShellCommand;
import org.onosproject.net.packet.PacketProcessorEntry;
import org.onosproject.net.packet.PacketService;
+import java.util.List;
+
import static org.onosproject.net.packet.PacketProcessor.ADVISOR_MAX;
import static org.onosproject.net.packet.PacketProcessor.DIRECTOR_MAX;
@@ -36,13 +41,27 @@
protected void execute() {
PacketService service = get(PacketService.class);
if (outputJson()) {
- // TODO: implement this
- print("Not implemented.");
+ print("%s", json(service.getProcessors()));
} else {
service.getProcessors().forEach(this::print);
}
}
+ private JsonNode json(List<PacketProcessorEntry> processors) {
+ ObjectMapper mapper = new ObjectMapper();
+ ArrayNode result = mapper.createArrayNode();
+
+ for (PacketProcessorEntry p : processors) {
+ result.add(mapper.createObjectNode()
+ .put("priority", priorityFormat(p.priority()))
+ .put("class", p.processor().getClass().getName())
+ .put("packets", p.invocations())
+ .put("avgNanos", p.averageNanos()));
+ }
+
+ return result;
+ }
+
private void print(PacketProcessorEntry entry) {
print(FMT, priorityFormat(entry.priority()),
entry.processor().getClass().getName(),