Enhance the RM logic for Kubevirt Networking App in case of virtual network.
Change-Id: I9b38ea0d76ce269cb03bc8a0f7d1883ddb92f51c
(cherry picked from commit d77b4ccb6cd06da7019980add8188b9021f6fcc5)
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 419672f..cf8a877 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
@@ -67,15 +67,14 @@
import static org.onosproject.kubevirtnetworking.api.Constants.GW_ENTRY_TABLE;
import static org.onosproject.kubevirtnetworking.api.Constants.KUBEVIRT_NETWORKING_APP_ID;
import static org.onosproject.kubevirtnetworking.api.Constants.PRIORITY_ARP_GATEWAY_RULE;
+import static org.onosproject.kubevirtnetworking.api.Constants.PRIORITY_FLOATING_GATEWAY_TUN_BRIDGE_RULE;
import static org.onosproject.kubevirtnetworking.api.Constants.PRIORITY_FLOATING_IP_RULE;
-import static org.onosproject.kubevirtnetworking.api.Constants.PRIORITY_FORWARDING_RULE;
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.VXLAN;
import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.buildGarpPacket;
import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.externalPatchPortNum;
-import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.gatewayNodeForSpecifiedRouter;
import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.getRouterMacAddress;
import static org.onosproject.kubevirtnetworking.util.KubevirtNetworkingUtil.tunnelPort;
import static org.onosproject.kubevirtnetworking.util.RulePopulatorUtil.buildExtension;
@@ -166,7 +165,8 @@
KubevirtNetwork kubevirtNetwork = kubevirtNetworkService.network(kubevirtPort.networkId());
if (kubevirtNetwork.type() == VXLAN || kubevirtNetwork.type() == GENEVE || kubevirtNetwork.type() == GRE) {
- setFloatingIpDownstreamRulesToGatewayTunBridge(router, floatingIp, kubevirtNetwork, kubevirtPort, install);
+ setFloatingIpDownstreamRulesToGatewayTunBridge(floatingIp,
+ electedGw, kubevirtNetwork, kubevirtPort, install);
}
setFloatingIpArpResponseRules(router, floatingIp, kubevirtPort, electedGw, install);
@@ -288,19 +288,11 @@
install);
}
- private void setFloatingIpDownstreamRulesToGatewayTunBridge(KubevirtRouter router,
- KubevirtFloatingIp floatingIp,
+ private void setFloatingIpDownstreamRulesToGatewayTunBridge(KubevirtFloatingIp floatingIp,
+ KubevirtNode electedGw,
KubevirtNetwork network,
KubevirtPort port,
boolean install) {
- KubevirtNode electedGw = gatewayNodeForSpecifiedRouter(kubevirtNodeService, router);
-
- if (electedGw == null) {
- log.warn("Failed to install floating Ip rules for floating ip {} " +
- "because there's no gateway assigned to it", floatingIp.floatingIp());
- return;
- }
-
KubevirtNode workerNode = kubevirtNodeService.node(port.deviceId());
if (workerNode == null) {
log.warn("Failed to install floating Ip rules for floating ip {} " +
@@ -333,7 +325,7 @@
electedGw.tunBridge(),
sBuilder.build(),
tBuilder.build(),
- PRIORITY_FORWARDING_RULE,
+ PRIORITY_FLOATING_GATEWAY_TUN_BRIDGE_RULE,
TUNNEL_DEFAULT_TABLE,
install);
}
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 5e0aa64..6e46179 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
@@ -319,19 +319,13 @@
install);
if (network.type() == VXLAN || network.type() == GENEVE || network.type() == GRE) {
- setDownStreamRulesToGatewayTunBridge(router, network, kubevirtPort, install);
+ setDownStreamRulesToGatewayTunBridge(network, gatewayNode, kubevirtPort, install);
}
}
- private void setDownStreamRulesToGatewayTunBridge(KubevirtRouter router,
- KubevirtNetwork network,
+ private void setDownStreamRulesToGatewayTunBridge(KubevirtNetwork network,
+ KubevirtNode electedGw,
KubevirtPort port, boolean install) {
- KubevirtNode electedGw = gatewayNodeForSpecifiedRouter(kubevirtNodeService, router);
-
- if (electedGw == null) {
- return;
- }
-
KubevirtNode workerNode = kubevirtNodeService.node(port.deviceId());
if (workerNode == null) {
return;