Fix: support to enable SNAT from disabled status at kubevirt net
Change-Id: I82742975e0525f259d01f6279b32ebf34f8ea26f
(cherry picked from commit c2a2c07c3171b8413fa8dc3915f42efbd3c467a9)
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 f5fcd43..517c1ce 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
@@ -697,6 +697,24 @@
}
if (router.enableSnat() && !router.external().isEmpty() && router.peerRouter() != null) {
initGatewayNodeSnatForRouter(router, router.electedGateway(), true);
+
+ KubevirtNode gatewayNode = kubevirtNodeService.node(router.electedGateway());
+
+ router.internal()
+ .stream()
+ .filter(networkId -> kubevirtNetworkService.network(networkId) != null)
+ .map(kubevirtNetworkService::network)
+ .forEach(network -> {
+ String routerSnatIp = router.external().keySet().stream().findAny().orElse(null);
+ if (routerSnatIp == null) {
+ return;
+ }
+
+ kubevirtPortService.ports(network.networkId()).forEach(kubevirtPort -> {
+ setStatefulSnatDownStreamRuleForKubevirtPort(router,
+ gatewayNode, kubevirtPort, true);
+ });
+ });
}
}