Support pretty JSON output for openstack node and networking apps
Change-Id: Id837ce5730a4073d207c1ec68913f953deb6a190
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRouterListCommand.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRouterListCommand.java
index 3a69a3b..a1aca70 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRouterListCommand.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackRouterListCommand.java
@@ -15,8 +15,7 @@
*/
package org.onosproject.openstacknetworking.cli;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.google.common.collect.Lists;
import org.apache.karaf.shell.commands.Command;
@@ -34,8 +33,8 @@
import java.util.Objects;
import java.util.stream.Collectors;
-import static com.fasterxml.jackson.databind.SerializationFeature.INDENT_OUTPUT;
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.modelEntityToJson;
+import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.prettyJson;
/**
* Lists OpenStack routers.
@@ -57,34 +56,30 @@
routers.sort(Comparator.comparing(Router::getName));
if (outputJson()) {
- try {
- print("%s", mapper().writeValueAsString(json(routers)));
- } catch (JsonProcessingException e) {
- print("Failed to list routers in JSON format");
- }
- return;
- }
- print(FORMAT, "ID", "Name", "External", "Internal");
- for (Router router: routers) {
- String exNetId = router.getExternalGatewayInfo() != null ?
- router.getExternalGatewayInfo().getNetworkId() : null;
+ print("%s", json(routers));
+ } else {
+ print(FORMAT, "ID", "Name", "External", "Internal");
+ for (Router router: routers) {
+ String exNetId = router.getExternalGatewayInfo() != null ?
+ router.getExternalGatewayInfo().getNetworkId() : null;
- List<String> externals = Lists.newArrayList();
- if (exNetId != null) {
- // FIXME fix openstack4j to provide external gateway ip info
- externals = netService.ports(exNetId).stream()
- .filter(port -> Objects.equals(port.getDeviceId(),
- router.getId()))
- .flatMap(port -> port.getFixedIps().stream())
- .map(IP::getIpAddress)
- .collect(Collectors.toList());
- }
+ List<String> externals = Lists.newArrayList();
+ if (exNetId != null) {
+ // FIXME fix openstack4j to provide external gateway ip info
+ externals = netService.ports(exNetId).stream()
+ .filter(port -> Objects.equals(port.getDeviceId(),
+ router.getId()))
+ .flatMap(port -> port.getFixedIps().stream())
+ .map(IP::getIpAddress)
+ .collect(Collectors.toList());
+ }
- List<String> internals = Lists.newArrayList();
- routerService.routerInterfaces(router.getId()).forEach(iface -> {
+ List<String> internals = Lists.newArrayList();
+ routerService.routerInterfaces(router.getId()).forEach(iface -> {
internals.add(getRouterIfaceIp(iface));
- });
- print(FORMAT, router.getId(), router.getName(), externals, internals);
+ });
+ print(FORMAT, router.getId(), router.getName(), externals, internals);
+ }
}
}
@@ -96,11 +91,12 @@
return ipAddr == null ? "" : ipAddr.getIpAddress();
}
- private JsonNode json(List<Router> routers) {
- ArrayNode result = mapper().enable(INDENT_OUTPUT).createArrayNode();
+ private String json(List<Router> routers) {
+ ObjectMapper mapper = new ObjectMapper();
+ ArrayNode result = mapper.createArrayNode();
for (Router router: routers) {
result.add(modelEntityToJson(router, NeutronRouter.class));
}
- return result;
+ return prettyJson(mapper, result.toString());
}
}