Refactor openstack-nodes cmd let it use codec to output JSON string

Change-Id: I1851745c9e0eb8dcbe9747f0dd4238d0e7ab1419
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java
index 4d5d900..937ce3d 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/cli/OpenstackNodeListCommand.java
@@ -67,17 +67,7 @@
         ObjectMapper mapper = new ObjectMapper();
         ArrayNode result = mapper.createArrayNode();
         for (OpenstackNode osNode : osNodes) {
-            result.add(mapper.createObjectNode()
-                    .put("hostname", osNode.hostname())
-                    .put("type", osNode.type().name())
-                    .put("integrationBridge", osNode.intgBridge().toString())
-                    .put("managementIp", osNode.managementIp().toString())
-                    .put("dataIp", osNode.dataIp().toString())
-                    .put("vlanIntf", osNode.vlanIntf())
-                    .put("tunnelPortNum", osNode.tunnelPortNum().toString())
-                    .put("vlanPortNum", osNode.vlanPortNum().toString())
-                    .put("uplinkPort", osNode.uplinkPort())
-                    .put("state", osNode.state().name()));
+            result.add(jsonForEntity(osNode, OpenstackNode.class));
         }
         return result;
     }
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java
index 9341725..f488429 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java
@@ -44,6 +44,9 @@
 
     private static final String TYPE = "type";
     private static final String INTEGRATION_BRIDGE = "integrationBridge";
+    private static final String TUNNEL_PORT_NUM = "tunnelPortNum";
+    private static final String VLAN_PORT_NUM = "vlanPortNum";
+    private static final String STATE = "state";
 
     private static final String MISSING_MESSAGE = " is required in OpenstackNode";
 
@@ -55,7 +58,8 @@
                 .put(HOST_NAME, node.hostname())
                 .put(TYPE, node.type().name())
                 .put(MANAGEMENT_IP, node.managementIp().toString())
-                .put(INTEGRATION_BRIDGE, node.intgBridge().toString());
+                .put(INTEGRATION_BRIDGE, node.intgBridge().toString())
+                .put(STATE, node.state().name());
 
         OpenstackNode.NodeType type = node.type();
 
@@ -71,6 +75,14 @@
             result.put(DATA_IP, node.dataIp().toString());
         }
 
+        if (node.tunnelPortNum() != null) {
+            result.put(TUNNEL_PORT_NUM, node.tunnelPortNum().toString());
+        }
+
+        if (node.vlanPortNum() != null) {
+            result.put(VLAN_PORT_NUM, node.vlanPortNum().toString());
+        }
+
         return result;
     }