Add JSON to CLI commands
- Drivers
- Groups
Change-Id: Ib47dc75d9db839329e6cf8fc4439150848f604f5
diff --git a/cli/src/main/java/org/onosproject/cli/net/DriversListCommand.java b/cli/src/main/java/org/onosproject/cli/net/DriversListCommand.java
index 2450390..05d9e95 100644
--- a/cli/src/main/java/org/onosproject/cli/net/DriversListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/DriversListCommand.java
@@ -15,12 +15,16 @@
*/
package org.onosproject.cli.net;
+import java.util.Set;
+
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.onosproject.cli.AbstractShellCommand;
import org.onosproject.net.driver.Driver;
import org.onosproject.net.driver.DriverAdminService;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+
/**
* Lists device drivers.
*/
@@ -43,17 +47,35 @@
if (driverName != null) {
printDriver(service.getDriver(driverName));
} else {
- service.getDrivers().forEach(this::printDriver);
+ if (outputJson()) {
+ json(service.getDrivers());
+ } else {
+ service.getDrivers().forEach(this::printDriver);
+ }
}
}
+ private void json(Driver driver) {
+ print("%s", jsonForEntity(driver, Driver.class));
+ }
+
+ private void json(Set<Driver> drivers) {
+ ArrayNode result = mapper().createArrayNode();
+ drivers.forEach(driver -> result.add(jsonForEntity(driver, Driver.class)));
+ print("%s", result.toString());
+ }
+
private void printDriver(Driver driver) {
- Driver parent = driver.parent();
- print(FMT, driver.name(), parent != null ? parent.name() : "none",
- driver.manufacturer(), driver.hwVersion(), driver.swVersion());
- driver.behaviours().forEach(b -> print(FMT_B, b.getCanonicalName(),
- driver.implementation(b).getCanonicalName()));
- driver.properties().forEach((k, v) -> print(FMT_P, k, v));
+ if (outputJson()) {
+ json(driver);
+ } else {
+ Driver parent = driver.parent();
+ print(FMT, driver.name(), parent != null ? parent.name() : "none",
+ driver.manufacturer(), driver.hwVersion(), driver.swVersion());
+ driver.behaviours().forEach(b -> print(FMT_B, b.getCanonicalName(),
+ driver.implementation(b).getCanonicalName()));
+ driver.properties().forEach((k, v) -> print(FMT_P, k, v));
+ }
}
}