Bugfix: resolve a NPE caused by quering a non-existing router MAC
Change-Id: Ie059690efd697341b7c9de4a61a1ce8b20e9734f
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
index 205602d..94669ed 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
@@ -442,12 +442,12 @@
try {
externalPeerRouterMap.computeIfPresent(ipAddress.toString(), (id, existing) ->
new DefaultExternalPeerRouter(ipAddress, macAddress, existing.externalPeerRouterVlanId()));
+
+ log.info("Updated external peer router map {}",
+ externalPeerRouterMap.get(ipAddress.toString()).value().toString());
} catch (Exception e) {
log.error("Exception occurred because of {}", e.toString());
}
-
- log.info("Updated external peer router map {}",
- externalPeerRouterMap.get(ipAddress.toString()).value().toString());
}
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingArpHandler.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingArpHandler.java
index 5736e88..2919072 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingArpHandler.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingArpHandler.java
@@ -278,11 +278,11 @@
try {
- Set<String> fipSet = osRouterService.floatingIps().stream()
- .map(NetFloatingIP::getFloatingIpAddress).collect(Collectors.toSet());
+ Set<String> extRouterIps = osNetworkService.externalPeerRouters().
+ stream().map(r -> r.externalPeerRouterIp().toString()).collect(Collectors.toSet());
- // if the SPA is floating IP, we simply ignores it
- if (fipSet.contains(spa.toString())) {
+ // if SPA is NOT contained in existing external router IP set, we ignore it
+ if (!extRouterIps.contains(spa.toString())) {
return;
}