Purge internal map variables by leveraging persistent store
Change-Id: If347de18803a6f84a220e1ffdee26b9e1c28634b
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingFloatingIpHandler.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingFloatingIpHandler.java
index 5be8b87..2c20f6a 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingFloatingIpHandler.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackRoutingFloatingIpHandler.java
@@ -140,7 +140,6 @@
private final InstancePortListener instPortListener = new InternalInstancePortListener();
private Map<String, Port> terminatedOsPorts = Maps.newConcurrentMap();
- private Map<String, NetFloatingIP> pendingInstPortIds = Maps.newConcurrentMap();
private ApplicationId appId;
private NodeId localNodeId;
@@ -606,9 +605,6 @@
if (!Strings.isNullOrEmpty(osPort.getDeviceId())) {
if (instancePortService.instancePort(osPort.getId()) == null) {
- log.info("Try to associate the fip {} with a terminated VM",
- osFip.getFloatingIpAddress());
- pendingInstPortIds.put(osPort.getId(), osFip);
return;
}
@@ -634,15 +630,7 @@
if (!Strings.isNullOrEmpty(osPort.getDeviceId())) {
if (instancePortService.instancePort(osPort.getId()) == null) {
-
- // in case there is pending instance port, we simply remove that
- // port, otherwise, we directly go with rule removal
- if (pendingInstPortIds.containsKey(osPort.getId())) {
- log.info("Try to disassociate the fip {} with a terminated VM",
- osFip.getFloatingIpAddress());
- pendingInstPortIds.remove(osPort.getId());
- return;
- }
+ return;
}
setFloatingIpRules(osFip, osPort, null, false);
@@ -742,12 +730,7 @@
continue;
}
- // Note that, at OPENSTACK_INSTANCE_PORT_DETECTED phase,
- // we will install floating IP related rules by
- // referring to the key and value stored in pending map
- if (!Strings.isNullOrEmpty(osPort.getDeviceId()) &&
- instancePortService.instancePort(fip.getPortId()) == null) {
- pendingInstPortIds.put(fip.getPortId(), fip);
+ if (instancePortService.instancePort(fip.getPortId()) == null) {
continue;
}
@@ -848,11 +831,10 @@
Port port = osNetworkService.port(portId);
- if (pendingInstPortIds.containsKey(portId) && port != null) {
- setFloatingIpRules(pendingInstPortIds.get(portId),
- port, null, true);
- pendingInstPortIds.remove(portId);
- }
+ osRouterAdminService.floatingIps().stream()
+ .filter(f -> f.getPortId() != null)
+ .filter(f -> f.getPortId().equals(instPort.portId()))
+ .forEach(f -> setFloatingIpRules(f, port, null, true));
}
break;