From 0f43b1f726e8db09b0a04da674dd04903b38684b Mon Sep 17 00:00:00 2001 From: Mike Hansen Date: Fri, 24 Apr 2020 14:45:35 -0400 Subject: [PATCH] Opensync AP State Tables row parsing delete handling fix. --- .../opensync/ovsdb/ConnectusOvsdbClient.java | 72 ++++++++++--------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/ConnectusOvsdbClient.java b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/ConnectusOvsdbClient.java index d1fb5ed..b174f0b 100644 --- a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/ConnectusOvsdbClient.java +++ b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/ConnectusOvsdbClient.java @@ -281,45 +281,49 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface { extIntegrationInterface .wifiInetStateDbTableUpdate(ovsdbDao.getOpensyncAPInetState(isCf.join(), key, ovsdbClient), key); - CompletableFuture vsCf = ovsdbClient - .monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiVifStateDbTable + "_" + key, - new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiVifStateDbTable, - new MonitorRequest(new MonitorSelect(true, true, true, true)))), - new MonitorCallback() { - @Override - public void update(TableUpdates tableUpdates) { - // extIntegrationInterface.wifiVIFStateDbTableUpdate( - // ovsdbDao.getOpensyncAPVIFState(tableUpdates, - // key, ovsdbClient), key); - List vifsToDelete = new ArrayList(); - for (Entry tableUpdate : tableUpdates.getTableUpdates() - .entrySet()) { + CompletableFuture vsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, + OvsdbDao.wifiVifStateDbTable + "_" + key, + new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiVifStateDbTable, + new MonitorRequest(new MonitorSelect(true, true, true, true)))), + new MonitorCallback() { + @Override + public void update(TableUpdates tableUpdates) { + // extIntegrationInterface.wifiVIFStateDbTableUpdate( + // ovsdbDao.getOpensyncAPVIFState(tableUpdates, + // key, ovsdbClient), key); + List vifsToDelete = new ArrayList(); + for (Entry tableUpdate : tableUpdates.getTableUpdates().entrySet()) { - for (Entry rowUpdate : tableUpdate.getValue().getRowUpdates() - .entrySet()) { - if (rowUpdate.getValue().getOld() != null - && rowUpdate.getValue().getNew() == null) { - Row row = rowUpdate.getValue().getOld(); - String ifName = row.getStringColumn("if_name"); - String ssid = row.getStringColumn("ssid"); - OpensyncAPVIFState toBeDeleted = new OpensyncAPVIFState(); - toBeDeleted.setSsid(ssid); - toBeDeleted.setIfName(ifName); - vifsToDelete.add(toBeDeleted); - tableUpdate.getValue().getRowUpdates().entrySet().remove(rowUpdate); - } - } + for (Entry rowUpdate : tableUpdate.getValue().getRowUpdates().entrySet()) { + if (rowUpdate.getValue().getOld() != null && rowUpdate.getValue().getNew() == null) { + Row row = rowUpdate.getValue().getOld(); + String ifName = row.getStringColumn("if_name"); + String ssid = row.getStringColumn("ssid"); + OpensyncAPVIFState toBeDeleted = new OpensyncAPVIFState(); + toBeDeleted.setSsid(ssid); + toBeDeleted.setIfName(ifName); + vifsToDelete.add(toBeDeleted); + tableUpdate.getValue().getRowUpdates().remove(rowUpdate.getKey()); } - if (!vifsToDelete.isEmpty()) { - extIntegrationInterface.wifiVIFStateDbTableDelete(vifsToDelete, key); - } - extIntegrationInterface.wifiVIFStateDbTableUpdate( - ovsdbDao.getOpensyncAPVIFState(tableUpdates, key, ovsdbClient), key); - } - }); + if (tableUpdate.getValue().getRowUpdates().values().isEmpty()) { + tableUpdates.getTableUpdates().remove(tableUpdate.getKey()); + } + + } + + if (!vifsToDelete.isEmpty()) { + extIntegrationInterface.wifiVIFStateDbTableDelete(vifsToDelete, key); + } + if (tableUpdates.getTableUpdates().entrySet().isEmpty()) + extIntegrationInterface.wifiVIFStateDbTableUpdate( + ovsdbDao.getOpensyncAPVIFState(tableUpdates, key, ovsdbClient), key); + + } + + }); extIntegrationInterface.wifiVIFStateDbTableUpdate(ovsdbDao.getOpensyncAPVIFState(vsCf.join(), key, ovsdbClient), key);