CORD-471 Added physical port and data plane IP as node attribtes

Change-Id: I4c28053151e61feb4b9b0ca60e98f7e0e4af0207
diff --git a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java
index 1b7d986..5448ef1 100644
--- a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java
+++ b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java
@@ -48,6 +48,16 @@
             required = true, multiValued = false)
     private String bridgeId = null;
 
+    @Argument(index = 3, name = "phyPortName",
+            description = "Physical port name",
+            required = true, multiValued = false)
+    private String phyPortName = null;
+
+    @Argument(index = 4, name = "localIp",
+            description = "Local data plane IP address",
+            required = true, multiValued = false)
+    private String localIp = null;
+
     @Override
     protected void execute() {
         checkArgument(ovsdb.contains(":"), "OVSDB address should be ip:port format");
@@ -58,7 +68,9 @@
         CordVtnNode node = new CordVtnNode(hostname,
                                            IpAddress.valueOf(ipPort[0]),
                                            TpPort.tpPort(Integer.parseInt(ipPort[1])),
-                                           DeviceId.deviceId(bridgeId));
+                                           DeviceId.deviceId(bridgeId),
+                                           phyPortName,
+                                           IpAddress.valueOf(localIp));
         service.addNode(node);
     }
 }
diff --git a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeCheckCommand.java b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeCheckCommand.java
new file mode 100644
index 0000000..185acd7
--- /dev/null
+++ b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeCheckCommand.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.cordvtn.cli;
+
+import org.apache.karaf.shell.commands.Argument;
+import org.apache.karaf.shell.commands.Command;
+import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.cordvtn.CordVtnNode;
+import org.onosproject.cordvtn.CordVtnService;
+
+/**
+ * Checks detailed node init state.
+ */
+@Command(scope = "onos", name = "cordvtn-node-check",
+        description = "Shows detailed node init state")
+public class CordVtnNodeCheckCommand extends AbstractShellCommand {
+
+    @Argument(index = 0, name = "hostname", description = "Hostname",
+            required = true, multiValued = false)
+    private String hostname = null;
+
+    @Override
+    protected void execute() {
+        CordVtnService service = AbstractShellCommand.get(CordVtnService.class);
+        CordVtnNode node = service.getNodes()
+                .stream()
+                .filter(n -> n.hostname().equals(hostname))
+                .findFirst()
+                .orElse(null);
+
+        if (node == null) {
+            print("Cannot find %s from registered nodes", hostname);
+            return;
+        }
+
+        print(service.checkNodeInitState(node));
+    }
+}
diff --git a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java
index 83e5859..51641c4 100644
--- a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java
+++ b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java
@@ -44,10 +44,12 @@
             print("%s", json(service, nodes));
         } else {
             for (CordVtnNode node : nodes) {
-                print("hostname=%s, ovsdb=%s, br-int=%s, init=%s",
+                print("hostname=%s, ovsdb=%s, br-int=%s, phyPort=%s, localIp=%s, init=%s",
                       node.hostname(),
                       node.ovsdbIp().toString() + ":" + node.ovsdbPort().toString(),
                       node.intBrId().toString(),
+                      node.phyPortName(),
+                      node.localIp().toString(),
                       getState(service, node));
             }
             print("Total %s nodes", service.getNodeCount());
@@ -63,6 +65,8 @@
                                .put("hostname", node.hostname())
                                .put("ovsdb", ipPort)
                                .put("brInt", node.intBrId().toString())
+                               .put("phyPort", node.phyPortName())
+                               .put("localIp", node.localIp().toString())
                                .put("init", getState(service, node)));
         }
         return result;