Supports dpdk-based vm creation in OpenstackNetworking service.

Change-Id: I39c30cde5b455952a4c7ed0147903324c6598880
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResource.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResource.java
index 94c30e7..d5b2e2d 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResource.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackPortWebResource.java
@@ -15,7 +15,11 @@
  */
 package org.onosproject.openstacknetworking.web;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.onosproject.openstacknetworking.api.OpenstackNetworkAdminService;
+import org.onosproject.openstacknode.api.OpenstackNode;
+import org.onosproject.openstacknode.api.OpenstackNodeService;
 import org.onosproject.rest.AbstractWebResource;
 import org.openstack4j.openstack.networking.domain.NeutronPort;
 import org.slf4j.Logger;
@@ -49,9 +53,12 @@
 
     private static final String MESSAGE = "Received ports %s request";
     private static final String PORTS = "ports";
+    private static final String VIF_TYPE = "vif_type";
+    private static final String VHOSTUSER = "vhostuser";
+    private static final String SOCKET_DIR = "socket_dir";
 
-    private final OpenstackNetworkAdminService adminService =
-                                        get(OpenstackNetworkAdminService.class);
+    private final OpenstackNetworkAdminService adminService = get(OpenstackNetworkAdminService.class);
+    private final OpenstackNodeService nodeService = get(OpenstackNodeService.class);
 
     @Context
     private UriInfo uriInfo;
@@ -101,8 +108,25 @@
                                  jsonToModelEntity(input, NeutronPort.class);
 
         adminService.updatePort(port);
+        ObjectMapper mapper = new ObjectMapper();
+        ObjectNode jsonNode = mapper.createObjectNode();
 
-        return status(Response.Status.OK).build();
+        OpenstackNode node = nodeService.node(port.getHostId());
+        if (node == null) {
+            return status(Response.Status.OK).build();
+        } else if (node.datapathType().equals(OpenstackNode.DatapathType.NETDEV)) {
+            log.debug("UpdatePort for port {} called in netdev device {} " +
+                            "so sends vif type as a payload of the response",
+                    port.getId(), node.hostname());
+            jsonNode.put(VIF_TYPE, VHOSTUSER);
+
+            if (node.socketDir() != null) {
+                jsonNode.put(SOCKET_DIR, node.socketDir());
+            }
+            return status(Response.Status.OK).entity(jsonNode.toString()).build();
+        } else {
+            return status(Response.Status.OK).build();
+        }
     }
 
     /**