Supports netdev data path type in OpenstackNode.

Change-Id: I716276a98bd141e87bf20dd5314e52128cf7e495
diff --git a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeCodecTest.java b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeCodecTest.java
index 77759c3..3d45238 100644
--- a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeCodecTest.java
+++ b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeCodecTest.java
@@ -149,6 +149,7 @@
         assertThat(node.controllers().size(), is(2));
         assertThat(node.sshAuthInfo().id(), is("sdn"));
         assertThat(node.sshAuthInfo().password(), is("sdn"));
+        assertThat(node.datapathType(), is(OpenstackNode.DatapathType.NORMAL));
 
         node.phyIntfs().forEach(intf -> {
             if (intf.network().equals("mgmtnetwork")) {
@@ -167,6 +168,10 @@
                 assertThat(ctrl.port(), is(6663));
             }
         });
+
+        OpenstackNode dpdkNode = getOpenstackNode("OpenstackDpdkComputeNode.json");
+
+        assertThat(dpdkNode.datapathType(), is(OpenstackNode.DatapathType.NETDEV));
     }
 
     /**
diff --git a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeJsonMatcher.java b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeJsonMatcher.java
index e8b6d07..3614f5f 100644
--- a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeJsonMatcher.java
+++ b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeJsonMatcher.java
@@ -42,6 +42,7 @@
     private static final String AUTHENTICATION = "authentication";
     private static final String END_POINT = "endPoint";
     private static final String SSH_AUTH = "sshAuth";
+    private static final String DATA_PATH_TYPE = "datapathType";
 
     private OpenstackNodeJsonMatcher(OpenstackNode node) {
         this.node = node;
@@ -143,6 +144,16 @@
             }
         }
 
+        // check datapath type
+        JsonNode jsonDatapathType = jsonNode.get(DATA_PATH_TYPE);
+        if (jsonDatapathType != null) {
+            OpenstackNode.DatapathType datapathType = node.datapathType();
+            if (!OpenstackNode.DatapathType.valueOf(jsonDatapathType.asText()).equals(datapathType)) {
+                description.appendText("datapathType was " + jsonDatapathType);
+                return false;
+            }
+        }
+
         // check physical interfaces
         JsonNode jsonPhyIntfs = jsonNode.get(PHYSICAL_INTERFACES);
         if (jsonPhyIntfs != null) {
diff --git a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java
index ee5e478..e24b4e4 100644
--- a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java
+++ b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java
@@ -423,7 +423,8 @@
                 intgBridge.id(),
                 ipAddr,
                 ipAddr,
-                null, null, state, phyIntfs, controllers, null, null, null);
+                null, null, state, phyIntfs, controllers,
+                null, null, null, OpenstackNode.DatapathType.NORMAL);
     }
 
     private static OpenstackNode createGatewayNode(String hostname,
@@ -438,8 +439,8 @@
                 intgBridge.id(),
                 ipAddr,
                 ipAddr,
-                null, uplinkPort, state,
-                null, null, null, null, null);
+                null, uplinkPort, state, null, null, null, null, null,
+                OpenstackNode.DatapathType.NORMAL);
     }
 
     private static final class TestDevice extends DefaultDevice {
@@ -501,7 +502,8 @@
                                   Set<ControllerInfo> controllers,
                                   OpenstackAuth auth,
                                   String endPoint,
-                                  OpenstackSshAuth sshAuth) {
+                                  OpenstackSshAuth sshAuth,
+                                  DatapathType datapathType) {
             super(hostname,
                     type,
                     intgBridge,
@@ -514,7 +516,8 @@
                     controllers,
                     auth,
                     endPoint,
-                    sshAuth);
+                    sshAuth,
+                    datapathType);
         }
 
         @Override
diff --git a/apps/openstacknode/app/src/test/resources/org/onosproject/openstacknode/codec/OpenstackDpdkComputeNode.json b/apps/openstacknode/app/src/test/resources/org/onosproject/openstacknode/codec/OpenstackDpdkComputeNode.json
new file mode 100644
index 0000000..2313047
--- /dev/null
+++ b/apps/openstacknode/app/src/test/resources/org/onosproject/openstacknode/codec/OpenstackDpdkComputeNode.json
@@ -0,0 +1,33 @@
+{
+  "hostname": "compute-01",
+  "type": "COMPUTE",
+  "managementIp": "172.16.130.4",
+  "dataIp": "172.16.130.4",
+  "vlanPort": "eth2",
+  "integrationBridge": "of:00000000000000a1",
+  "datapathType" : "netdev",
+  "phyIntfs": [
+    {
+      "network": "mgmtnetwork",
+      "intf": "eth3"
+    },
+    {
+      "network": "oamnetwork",
+      "intf": "eth4"
+    }
+  ],
+  "sshAuth": {
+    "id": "sdn",
+    "password": "sdn"
+  },
+  "controllers": [
+    {
+      "ip": "10.10.10.2",
+      "port": 6653
+    },
+    {
+      "ip": "10.10.10.3",
+      "port": 6663
+    }
+  ]
+}
\ No newline at end of file