Fix to preserve the old peer router MAC when a router is updated.
Change-Id: I690c80813254b52e46f242b21afe3d6e005ee56d
(cherry picked from commit 22591604f64ba868bec2ff305c534f667d9058e2)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRouterWatcher.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRouterWatcher.java
index c346c58..58ca9f8 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRouterWatcher.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtRouterWatcher.java
@@ -28,6 +28,7 @@
import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
import org.onosproject.kubevirtnetworking.api.AbstractWatcher;
+import org.onosproject.kubevirtnetworking.api.KubevirtPeerRouter;
import org.onosproject.kubevirtnetworking.api.KubevirtRouter;
import org.onosproject.kubevirtnetworking.api.KubevirtRouterAdminService;
import org.onosproject.kubevirtnetworking.api.KubevirtRouterService;
@@ -244,6 +245,16 @@
name);
KubevirtRouter router = parseKubevirtRouter(resource);
+
+ KubevirtPeerRouter oldPeerRouter = adminService.router(router.name()).peerRouter();
+ if (oldPeerRouter != null
+ && Objects.equals(oldPeerRouter.ipAddress(), router.peerRouter().ipAddress())
+ && oldPeerRouter.macAddress() != null
+ && router.peerRouter().macAddress() == null) {
+
+ router = router.updatePeerRouter(oldPeerRouter);
+ }
+
if (router != null) {
adminService.updateRouter(router);
}