Supports dpdk-based vm creation in OpenstackNetworking service.

Change-Id: I39c30cde5b455952a4c7ed0147903324c6598880
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
index 2418745..92257fd 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
@@ -75,8 +75,8 @@
 import static org.onosproject.net.AnnotationKeys.PORT_NAME;
 import static org.onosproject.openstacknetworking.api.Constants.DIRECT;
 import static org.onosproject.openstacknetworking.api.Constants.PCISLOT;
-import static org.onosproject.openstacknetworking.api.Constants.portNamePrefixMap;
 import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.getIntfNameFromPciAddress;
+import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.vnicType;
 import static org.slf4j.LoggerFactory.getLogger;
 
 /**
@@ -113,7 +113,6 @@
     private static final String ERR_NOT_FOUND = " does not exist";
     private static final String ERR_IN_USE = " still in use";
     private static final String ERR_DUPLICATE = " already exists";
-    private static final String PORT_NAME_PREFIX_VM = "tap";
 
     private static final int PREFIX_LENGTH = 32;
 
@@ -325,29 +324,34 @@
             return null;
         }
 
-        if (port.annotations().value(PORT_NAME).startsWith(PORT_NAME_PREFIX_VM)) {
-            Optional<Port> osPort = osNetworkStore.ports()
-                    .stream()
-                    .filter(p -> p.getId().contains(portName.substring(3)))
-                    .findFirst();
-            return osPort.orElse(null);
-        } else if (isDirectPort(portName)) {
-            //Additional prefixes will be added
-            Optional<Port> osPort = osNetworkStore.ports()
-                    .stream()
-                    .filter(p -> p.getvNicType().equals(DIRECT) && p.getProfile().get(PCISLOT) != null)
-                    .filter(p -> getIntfNameFromPciAddress(p).equals(portName))
-                    .findFirst();
-            return osPort.orElse(null);
-        } else {
+        try {
+            Optional<Port> osPort;
+            switch (vnicType(portName)) {
+                case NORMAL:
+                    osPort = osNetworkStore.ports()
+                            .stream()
+                            .filter(p -> p.getId().contains(portName.substring(3)))
+                            .findFirst();
+                    return osPort.orElse(null);
+
+                case DIRECT:
+                    //Additional prefixes will be added
+                    osPort = osNetworkStore.ports()
+                            .stream()
+                            .filter(p -> p.getvNicType().equals(DIRECT) && p.getProfile().get(PCISLOT) != null)
+                            .filter(p -> getIntfNameFromPciAddress(p).equals(portName))
+                            .findFirst();
+                    return osPort.orElse(null);
+
+                default:
+                    return null;
+            }
+        } catch (IllegalArgumentException e) {
+            log.error("IllegalArgumentException occurred because of {}", e);
             return null;
         }
     }
 
-    private boolean isDirectPort(String portName) {
-        return portNamePrefixMap().values().stream().filter(p -> portName.startsWith(p)).findAny().isPresent();
-    }
-
     @Override
     public Set<Port> ports() {
         return ImmutableSet.copyOf(osNetworkStore.ports());