Supports dpdk-based vm creation in OpenstackNetworking service.
Change-Id: I39c30cde5b455952a4c7ed0147903324c6598880
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java
index 01e1099..40413d7 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java
@@ -46,6 +46,7 @@
import org.onosproject.net.host.HostService;
import org.onosproject.net.provider.AbstractProvider;
import org.onosproject.net.provider.ProviderId;
+import org.onosproject.openstacknetworking.api.Constants;
import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
import org.onosproject.openstacknode.api.OpenstackNode;
import org.onosproject.openstacknode.api.OpenstackNodeEvent;
@@ -69,7 +70,10 @@
import static org.onosproject.openstacknetworking.api.Constants.ANNOTATION_PORT_ID;
import static org.onosproject.openstacknetworking.api.Constants.ANNOTATION_SEGMENT_ID;
import static org.onosproject.openstacknetworking.api.Constants.OPENSTACK_NETWORKING_APP_ID;
+import static org.onosproject.openstacknetworking.api.Constants.PORT_NAME_PREFIX_VM;
+import static org.onosproject.openstacknetworking.api.Constants.PORT_NAME_VHOST_USER_PREFIX_VM;
import static org.onosproject.openstacknetworking.api.Constants.portNamePrefixMap;
+import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.vnicType;
import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.CONTROLLER;
@Service
@@ -79,7 +83,6 @@
private final Logger log = LoggerFactory.getLogger(getClass());
- private static final String PORT_NAME_PREFIX_VM = "tap";
private static final String ERR_ADD_HOST = "Failed to add host: ";
private static final String SONA_HOST_SCHEME = "sona";
@@ -315,7 +318,9 @@
String portName = port.annotations().value(PORT_NAME);
return !Strings.isNullOrEmpty(portName) &&
- (portName.startsWith(PORT_NAME_PREFIX_VM) || isDirectPort(portName));
+ (portName.startsWith(PORT_NAME_PREFIX_VM) ||
+ isDirectPort(portName) ||
+ portName.startsWith(PORT_NAME_VHOST_USER_PREFIX_VM));
}
private boolean isDirectPort(String portName) {
@@ -385,9 +390,9 @@
private void processCompleteNode(OpenstackNode osNode) {
deviceService.getPorts(osNode.intgBridge()).stream()
- .filter(port -> port.annotations().value(PORT_NAME)
- .startsWith(PORT_NAME_PREFIX_VM) &&
- port.isEnabled())
+ .filter(port -> vnicType(port.annotations().value(PORT_NAME)).equals(Constants.VnicType.NORMAL) ||
+ vnicType(port.annotations().value(PORT_NAME)).equals(Constants.VnicType.DIRECT))
+ .filter(Port::isEnabled)
.forEach(port -> {
log.debug("Instance port {} is detected from {}",
port.annotations().value(PORT_NAME),
@@ -395,18 +400,6 @@
processPortAdded(port);
});
- portNamePrefixMap().values().forEach(portNamePrefix ->
- deviceService.getPorts(osNode.intgBridge()).stream()
- .filter(port -> port.annotations().value(PORT_NAME)
- .startsWith(portNamePrefix) &&
- port.isEnabled())
- .forEach(port -> {
- log.debug("Instance port {} is detected from {}",
- port.annotations().value(portNamePrefix),
- osNode.hostname());
- processPortAdded(port);
- }));
-
Tools.stream(hostService.getHosts())
.filter(host -> deviceService.getPort(
host.location().deviceId(),