Support STT tunneling protocol at kubevirt networking app
Change-Id: Icbef76dbfb842ce1cf6893bf18ee80c4b1b26006
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java
index 2745e46..b133073 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtNetwork.java
@@ -35,6 +35,7 @@
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.FLAT;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GENEVE;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GRE;
+import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.STT;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
import static org.onosproject.net.AnnotationKeys.PORT_NAME;
@@ -157,7 +158,7 @@
@Override
public String tenantBridgeName() {
- if (type == VXLAN || type == GRE || type == GENEVE) {
+ if (type == VXLAN || type == GRE || type == GENEVE || type == STT) {
return TENANT_BRIDGE_PREFIX + segmentIdHex(segmentId);
}
return null;
@@ -165,7 +166,7 @@
@Override
public DeviceId tenantDeviceId(String hostname) {
- if (type == VXLAN || type == GRE || type == GENEVE) {
+ if (type == VXLAN || type == GRE || type == GENEVE || type == STT) {
String dpid = genDpidFromName(tenantBridgeName() + "-" + hostname);
return DeviceId.deviceId(dpid);
}
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java
index 493d80a..104ffc8 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/DefaultKubevirtPort.java
@@ -118,7 +118,8 @@
} else {
return network.type() == KubevirtNetwork.Type.VXLAN ||
network.type() == KubevirtNetwork.Type.GRE ||
- network.type() == KubevirtNetwork.Type.GENEVE;
+ network.type() == KubevirtNetwork.Type.GENEVE ||
+ network.type() == KubevirtNetwork.Type.STT;
}
}
diff --git a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetwork.java b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetwork.java
index 2db552e..852e669 100644
--- a/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetwork.java
+++ b/apps/kubevirt-networking/api/src/main/java/org/onosproject/kubevirtnetworking/api/KubevirtNetwork.java
@@ -47,6 +47,11 @@
GENEVE,
/**
+ * STT typed virtual network.
+ */
+ STT,
+
+ /**
* FLAT typed provider network.
*/
FLAT,
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFloatingIpHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFloatingIpHandler.java
index e9ab1fe..2d5b87d 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFloatingIpHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtFloatingIpHandler.java
@@ -72,6 +72,7 @@
import static org.onosproject.kubevirtnetworking.api.Constants.TUNNEL_DEFAULT_TABLE;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GENEVE;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GRE;
+import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.STT;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.buildGarpPacket;
import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.externalPatchPortNum;
@@ -164,7 +165,8 @@
}
KubevirtNetwork kubevirtNetwork = kubevirtNetworkService.network(kubevirtPort.networkId());
- if (kubevirtNetwork.type() == VXLAN || kubevirtNetwork.type() == GENEVE || kubevirtNetwork.type() == GRE) {
+ if (kubevirtNetwork.type() == VXLAN || kubevirtNetwork.type() == GENEVE ||
+ kubevirtNetwork.type() == GRE || kubevirtNetwork.type() == STT) {
setFloatingIpDownstreamRulesToGatewayTunBridge(floatingIp,
electedGw, kubevirtNetwork, kubevirtPort, install);
}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java
index ba352eb..55b84f1 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtLbHandler.java
@@ -83,6 +83,7 @@
import static org.onosproject.kubevirtnetworking.api.Constants.TUNNEL_DEFAULT_TABLE;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GENEVE;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GRE;
+import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.STT;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.buildGarpPacket;
import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.externalPatchPortNum;
@@ -237,7 +238,7 @@
setLbDownstreamRules(loadBalancer, router, gateway, true);
setLbUpstreamRules(loadBalancer, router, gateway, true);
- if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+ if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE || network.type() == STT) {
setLbDownStreamRulesForTunBridge(loadBalancer, gateway, true);
}
}
@@ -274,7 +275,8 @@
setLbDownstreamRules(old, oldRouter, oldGateway, false);
setLbUpstreamRules(old, oldRouter, oldGateway, false);
- if (oldNetwork.type() == VXLAN || oldNetwork.type() == GENEVE || oldNetwork.type() == GRE) {
+ if (oldNetwork.type() == VXLAN || oldNetwork.type() == GENEVE ||
+ oldNetwork.type() == GRE || oldNetwork.type() == STT) {
setLbDownStreamRulesForTunBridge(loadBalancer, oldGateway, false);
}
setBucketsToGroup(old, oldGateway, false);
@@ -310,7 +312,8 @@
setBucketsToGroup(loadBalancer, gateway, true);
setLbDownstreamRules(loadBalancer, router, gateway, true);
setLbUpstreamRules(loadBalancer, router, gateway, true);
- if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+ if (network.type() == VXLAN || network.type() == GENEVE ||
+ network.type() == GRE || network.type() == STT) {
setLbDownStreamRulesForTunBridge(loadBalancer, gateway, true);
}
}
@@ -350,7 +353,7 @@
setBucketsToGroup(loadBalancer, gateway, false);
setLbGroup(loadBalancer, gateway, false);
- if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+ if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE || network.type() == STT) {
setLbDownStreamRulesForTunBridge(loadBalancer, gateway, false);
}
}
@@ -747,7 +750,8 @@
setLbUpstreamRules(loadBalancer, router, gatewayNode, true);
KubevirtNetwork network = networkService.network(loadBalancer.networkId());
- if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+ if (network.type() == VXLAN || network.type() == GENEVE ||
+ network.type() == GRE || network.type() == STT) {
setLbDownStreamRulesForTunBridge(loadBalancer, gatewayNode, true);
}
@@ -781,7 +785,8 @@
setLbGroup(loadBalancer, gatewayNode, false);
KubevirtNetwork network = networkService.network(loadBalancer.networkId());
- if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+ if (network.type() == VXLAN || network.type() == GENEVE ||
+ network.type() == GRE || network.type() == STT) {
setLbDownStreamRulesForTunBridge(loadBalancer, gatewayNode, false);
}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
index 482676f..1ea11e5 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkHandler.java
@@ -469,6 +469,7 @@
case VXLAN:
case GRE:
case GENEVE:
+ case STT:
setDefaultEgressRuleToGatewayNode(router, network,
electedGateway.intgBridge(), install);
kubevirtNodeService.completeNodes(WORKER).forEach(node -> {
@@ -1208,6 +1209,7 @@
case VXLAN:
case GRE:
case GENEVE:
+ case STT:
initIntegrationTunnelBridge(network);
break;
case FLAT:
@@ -1228,6 +1230,7 @@
case VXLAN:
case GRE:
case GENEVE:
+ case STT:
purgeIntegrationTunnelBridge(network);
break;
case FLAT:
@@ -1301,6 +1304,7 @@
case VXLAN:
case GRE:
case GENEVE:
+ case STT:
if (network.segmentId() == null) {
continue;
}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManager.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManager.java
index 74d317d..3c29e30 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManager.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtNetworkManager.java
@@ -48,6 +48,7 @@
import static org.onosproject.kubevirtnetworking.api.Constants.KUBEVIRT_NETWORKING_APP_ID;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GENEVE;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GRE;
+import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.STT;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
import static org.slf4j.LoggerFactory.getLogger;
@@ -224,7 +225,8 @@
return ImmutableSet.copyOf(networkStore.networks().stream()
.filter(n -> n.type() == VXLAN ||
n.type() == GRE ||
- n.type() == GENEVE)
+ n.type() == GENEVE ||
+ n.type() == STT)
.collect(Collectors.toSet()));
}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java
index 7c21b3f..8cdf435 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRoutingSnatHandler.java
@@ -79,6 +79,7 @@
import static org.onosproject.kubevirtnetworking.api.Constants.TUNNEL_DEFAULT_TABLE;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GENEVE;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.GRE;
+import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.STT;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VLAN;
import static org.onosproject.kubevirtnetworking.api.KubevirtNetwork.Type.VXLAN;
import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.buildGarpPacket;
@@ -318,7 +319,7 @@
GW_DROP_TABLE,
install);
- if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
+ if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE || network.type() == STT) {
setDownStreamRulesToGatewayTunBridge(network, gatewayNode, kubevirtPort, install);
}
}
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
index 21353b9..82d3964 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/util/KubevirtNetworkingUtil.java
@@ -320,6 +320,8 @@
return node.grePort();
case GENEVE:
return node.genevePort();
+ case STT:
+ return node.sttPort();
default:
break;
}
@@ -446,6 +448,8 @@
return node.grePort();
case GENEVE:
return node.genevePort();
+ case STT:
+ return node.sttPort();
case FLAT:
case VLAN:
default: