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());