Support STT tunneling protocol at kubevirt networking app
Change-Id: Icbef76dbfb842ce1cf6893bf18ee80c4b1b26006
diff --git a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtCheckNodeCommand.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtCheckNodeCommand.java
index 06297c2..3df42bb 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtCheckNodeCommand.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtCheckNodeCommand.java
@@ -30,6 +30,7 @@
import static org.onosproject.kubevirtnode.api.Constants.GENEVE;
import static org.onosproject.kubevirtnode.api.Constants.GRE;
import static org.onosproject.kubevirtnode.api.Constants.INTEGRATION_BRIDGE;
+import static org.onosproject.kubevirtnode.api.Constants.STT;
import static org.onosproject.kubevirtnode.api.Constants.TUNNEL_BRIDGE;
import static org.onosproject.kubevirtnode.api.Constants.VXLAN;
import static org.onosproject.net.AnnotationKeys.PORT_NAME;
@@ -87,6 +88,7 @@
printPortState(deviceService, node.tunBridge(), VXLAN);
printPortState(deviceService, node.tunBridge(), GRE);
printPortState(deviceService, node.tunBridge(), GENEVE);
+ printPortState(deviceService, node.tunBridge(), STT);
}
}
}
diff --git a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/impl/DefaultKubevirtNodeHandler.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/impl/DefaultKubevirtNodeHandler.java
index 3408ed1..00aa0bf 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/impl/DefaultKubevirtNodeHandler.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/impl/DefaultKubevirtNodeHandler.java
@@ -82,6 +82,7 @@
import static org.onosproject.kubevirtnode.api.Constants.INTEGRATION_TO_PHYSICAL_PREFIX;
import static org.onosproject.kubevirtnode.api.Constants.INTEGRATION_TO_TUNNEL;
import static org.onosproject.kubevirtnode.api.Constants.PHYSICAL_TO_INTEGRATION_SUFFIX;
+import static org.onosproject.kubevirtnode.api.Constants.STT;
import static org.onosproject.kubevirtnode.api.Constants.TENANT_BRIDGE_PREFIX;
import static org.onosproject.kubevirtnode.api.Constants.TUNNEL_BRIDGE;
import static org.onosproject.kubevirtnode.api.Constants.TUNNEL_TO_INTEGRATION;
@@ -244,6 +245,10 @@
if (node.dataIp() != null && !isIntfEnabled(node, GENEVE)) {
createGeneveTunnelInterface(node);
}
+
+ if (node.dataIp() != null && !isIntfEnabled(node, STT)) {
+ createSttTunnelInterface(node);
+ }
} catch (Exception e) {
log.error("Exception occurred because of {}", e);
}
@@ -362,6 +367,10 @@
createTunnelInterface(node, GENEVE, GENEVE);
}
+ private void createSttTunnelInterface(KubevirtNode node) {
+ createTunnelInterface(node, STT, STT);
+ }
+
/**
* Creates a tunnel interface in a given kubernetes node.
*
@@ -396,7 +405,7 @@
*/
private TunnelDescription buildTunnelDesc(String type, String intfName) {
TunnelKey<String> key = new TunnelKey<>(FLOW_KEY);
- if (VXLAN.equals(type) || GRE.equals(type) || GENEVE.equals(type)) {
+ if (VXLAN.equals(type) || GRE.equals(type) || GENEVE.equals(type) || STT.equals(type)) {
TunnelDescription.Builder tdBuilder =
DefaultTunnelDescription.builder()
.deviceId(TUNNEL_BRIDGE)
@@ -414,6 +423,9 @@
case GENEVE:
tdBuilder.type(TunnelDescription.Type.GENEVE);
break;
+ case STT:
+ tdBuilder.type(TunnelDescription.Type.STT);
+ break;
default:
return null;
}
@@ -557,6 +569,8 @@
return false;
}
+ // we make the STT tunnel port check optional
+
for (KubevirtPhyInterface phyIntf : node.phyIntfs()) {
if (phyIntf == null) {
log.warn("Physnet interface is invalid");
@@ -963,7 +977,8 @@
if (node.state() == DEVICE_CREATED && (
Objects.equals(portName, VXLAN) ||
Objects.equals(portName, GRE) ||
- Objects.equals(portName, GENEVE))) {
+ Objects.equals(portName, GENEVE) ||
+ Objects.equals(portName, STT))) {
log.info("Interface {} added or updated to {}",
portName, device.id());
bootstrapNode(node);
@@ -985,7 +1000,8 @@
if (node.state() == COMPLETE && (
Objects.equals(portName, VXLAN) ||
Objects.equals(portName, GRE) ||
- Objects.equals(portName, GENEVE))) {
+ Objects.equals(portName, GENEVE) ||
+ Objects.equals(portName, STT))) {
log.warn("Interface {} removed from {}", portName, device.id());
setState(node, INCOMPLETE);
}