From e6472cf80bab93a0590cd353e401cd48bd6660fc Mon Sep 17 00:00:00 2001 From: Mike Hansen Date: Wed, 19 May 2021 18:00:58 -0400 Subject: [PATCH] WIFI-2397: Add ApcElectionEvent values to EquipmentProtocolStatusData Signed-off-by: Mike Hansen --- .../OpensyncExternalIntegrationCloud.java | 7 +- .../opensync/ovsdb/TipWlanOvsdbClient.java | 200 +++++++----------- 2 files changed, 79 insertions(+), 128 deletions(-) diff --git a/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationCloud.java b/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationCloud.java index 73de782..fa76650 100644 --- a/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationCloud.java +++ b/opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationCloud.java @@ -112,6 +112,7 @@ import com.telecominfraproject.wlan.status.models.StatusDataType; import com.telecominfraproject.wlan.status.network.models.NetworkAdminStatusData; import com.telecominfraproject.wlan.systemevent.equipment.realtime.ApcElectionEvent; import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeEventType; +import com.telecominfraproject.wlan.systemevent.equipment.realtime.ApcElectionEvent.ApcMode; import sts.OpensyncStats.Report; import traffic.NetworkMetadata.FlowReport; @@ -2437,6 +2438,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra LOG.error("UnknownHost for designatedRouterIp", e); } Status protocolStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL); + String mode = apcStateAttributes.get("mode"); InetAddress localIpV4Addr = null; if (protocolStatus != null) { @@ -2445,10 +2447,13 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra ((EquipmentProtocolStatusData) protocolStatus.getDetails()).setLastApcUpdate(System.currentTimeMillis()); ((EquipmentProtocolStatusData) protocolStatus.getDetails()).setReportedApcAddress(drIpAddr); ((EquipmentProtocolStatusData) protocolStatus.getDetails()).setRadiusProxyAddress(drIpAddr); + ((EquipmentProtocolStatusData) protocolStatus.getDetails()).setApcMode(ApcMode.valueOf(mode)); + ((EquipmentProtocolStatusData) protocolStatus.getDetails()).setApcBackupDesignatedRouterIpAddress(bdrIpAddr); + ((EquipmentProtocolStatusData) protocolStatus.getDetails()).setApcDesignatedRouterIpAddress(drIpAddr); + protocolStatus = statusServiceInterface.update(protocolStatus); LOG.info("Protocol Status updated for APC_State table monitor change {}", protocolStatus); } - String mode = apcStateAttributes.get("mode"); ApcElectionEvent electionEvent = new ApcElectionEvent(drIpAddr, bdrIpAddr, localIpV4Addr, drIpAddr, mode, Boolean.valueOf(apcStateAttributes.get("enabled")), RealTimeEventType.APC_Election_event, customerId, ce.getLocationId(), equipmentId, System.currentTimeMillis()); diff --git a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/TipWlanOvsdbClient.java b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/TipWlanOvsdbClient.java index 6b6eaa6..b2d8115 100644 --- a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/TipWlanOvsdbClient.java +++ b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/TipWlanOvsdbClient.java @@ -1,3 +1,4 @@ + package com.telecominfraproject.wlan.opensync.ovsdb; import com.google.common.collect.ImmutableMap; @@ -50,17 +51,13 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { private final TagList tags = CloudMetricsTags.commonTags; - private final Counter connectionsAttempted = new BasicCounter( - MonitorConfig.builder("osgw-connectionsAttempted").withTags(tags).build()); + private final Counter connectionsAttempted = new BasicCounter(MonitorConfig.builder("osgw-connectionsAttempted").withTags(tags).build()); - private final Counter connectionsFailed = new BasicCounter( - MonitorConfig.builder("osgw-connectionsFailed").withTags(tags).build()); + private final Counter connectionsFailed = new BasicCounter(MonitorConfig.builder("osgw-connectionsFailed").withTags(tags).build()); - private final Counter connectionsCreated = new BasicCounter( - MonitorConfig.builder("osgw-connectionsCreated").withTags(tags).build()); + private final Counter connectionsCreated = new BasicCounter(MonitorConfig.builder("osgw-connectionsCreated").withTags(tags).build()); - private final Counter connectionsDropped = new BasicCounter( - MonitorConfig.builder("osgw-connectionsDropped").withTags(tags).build()); + private final Counter connectionsDropped = new BasicCounter(MonitorConfig.builder("osgw-connectionsDropped").withTags(tags).build()); @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listenPort:6640}") private int ovsdbListenPort; @@ -127,8 +124,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { int localPort = ovsdbClient.getConnectionInfo().getLocalPort(); String subjectDn; try { - subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()) - .getSubjectDN().getName(); + subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()).getSubjectDN().getName(); String clientCn = SslUtil.extractCN(subjectDn); LOG.info("ovsdbClient connecting from {} on port {} clientCn {}", remoteHost, localPort, clientCn); @@ -189,8 +185,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { localPort = ovsdbClient.getConnectionInfo().getLocalPort(); String subjectDn = null; try { - subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()) - .getSubjectDN().getName(); + subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()).getSubjectDN().getName(); } catch (Exception e) { // do nothing } @@ -204,8 +199,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { LOG.debug("Unable to process ap disconnect. {}", e.getMessage()); } } - LOG.info("ovsdbClient disconnected from {} on port {} clientCn {} AP {} ", remoteHost, localPort, - clientCn, key); + LOG.info("ovsdbClient disconnected from {} on port {} clientCn {} AP {} ", remoteHost, localPort, clientCn, key); LOG.info("ovsdbClient connectedClients = {}", ovsdbSessionMapInterface.getNumSessions()); } finally { try { @@ -228,8 +222,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { private void processConnectRequest(OvsdbClient ovsdbClient, String clientCn, ConnectNodeInfo connectNodeInfo) { LOG.debug("Starting Client connect"); - connectNodeInfo = ovsdbDao.updateConnectNodeInfoOnConnect(ovsdbClient, clientCn, connectNodeInfo, - preventClientCnAlteration); + connectNodeInfo = ovsdbDao.updateConnectNodeInfoOnConnect(ovsdbClient, clientCn, connectNodeInfo, preventClientCnAlteration); // successfully connected - register it in our // connectedClients table @@ -319,7 +312,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { ovsdbDao.removeRadsecRadiusAndRealmConfigs(ovsdbClient); extIntegrationInterface.clearEquipmentStatus(apId); - + ovsdbDao.configureNode(ovsdbClient, opensyncAPConfig); ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig); ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig); @@ -413,27 +406,24 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { } catch (OvsdbClientException e) { LOG.debug("Could not enable monitor for Node_State table. {}", e.getMessage()); } - + try { if (ovsdbClient.getSchema(OvsdbDao.ovsdbName).get().getTables().containsKey("APC_State")) { monitorAPCStateTable(ovsdbClient, key); } } catch (InterruptedException | ExecutionException | OvsdbClientException e) { - LOG.debug("Could not enable monitor for APC_State table. {}", e); + LOG.debug("Could not enable monitor for APC_State table. {}", e); } LOG.debug("Finished (re)setting monitors for AP {}", key); } private void monitorDhcpLeasedIpDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { - CompletableFuture awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, - OvsdbDao.dhcpLeasedIpDbTable + "_" + key, - new MonitorRequests(ImmutableMap.of(OvsdbDao.dhcpLeasedIpDbTable, - new MonitorRequest(new MonitorSelect(true, true, true, true)))), + CompletableFuture awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.dhcpLeasedIpDbTable + "_" + key, + new MonitorRequests(ImmutableMap.of(OvsdbDao.dhcpLeasedIpDbTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))), tableUpdates -> { try { - LOG.info(OvsdbDao.dhcpLeasedIpDbTable + "_" + key + " monitor callback received {}", - tableUpdates); + LOG.info(OvsdbDao.dhcpLeasedIpDbTable + "_" + key + " monitor callback received {}", tableUpdates); List> insert = new ArrayList<>(); List> delete = new ArrayList<>(); @@ -445,8 +435,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { if (rowUpdate.getNew() == null) { Map rowMap = new HashMap<>(); - rowUpdate.getOld().getColumns().entrySet() - .forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap)); + rowUpdate.getOld().getColumns().entrySet().forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap)); delete.add(rowMap); // delete @@ -454,8 +443,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { // insert Map rowMap = new HashMap<>(); - rowUpdate.getNew().getColumns().entrySet() - .forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap)); + rowUpdate.getNew().getColumns().entrySet().forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap)); insert.add(rowMap); } else { @@ -464,8 +452,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { Map rowMap = new HashMap<>(); rowUpdate.getOld().getColumns().putAll(rowUpdate.getNew().getColumns()); - rowUpdate.getOld().getColumns().entrySet() - .forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap)); + rowUpdate.getOld().getColumns().entrySet().forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap)); update.add(rowMap); @@ -498,13 +485,10 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { private void monitorCommandStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { - CompletableFuture csCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, - OvsdbDao.commandStateDbTable + "_" + key, - new MonitorRequests(ImmutableMap.of(OvsdbDao.commandStateDbTable, new MonitorRequest())), - tableUpdates -> { + CompletableFuture csCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.commandStateDbTable + "_" + key, + new MonitorRequests(ImmutableMap.of(OvsdbDao.commandStateDbTable, new MonitorRequest())), tableUpdates -> { try { - LOG.info(OvsdbDao.commandStateDbTable + "_" + key + " monitor callback received {}", - tableUpdates); + LOG.info(OvsdbDao.commandStateDbTable + "_" + key + " monitor callback received {}", tableUpdates); List> insert = new ArrayList<>(); List> delete = new ArrayList<>(); @@ -516,8 +500,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { if (rowUpdate.getNew() == null) { Map rowMap = new HashMap<>(); - rowUpdate.getOld().getColumns() - .forEach((key1, value) -> rowMap.put(key1, value.toString())); + rowUpdate.getOld().getColumns().forEach((key1, value) -> rowMap.put(key1, value.toString())); delete.add(rowMap); // delete @@ -525,8 +508,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { // insert Map rowMap = new HashMap<>(); - rowUpdate.getNew().getColumns() - .forEach((key1, value) -> rowMap.put(key1, value.toString())); + rowUpdate.getNew().getColumns().forEach((key1, value) -> rowMap.put(key1, value.toString())); insert.add(rowMap); } else { @@ -535,8 +517,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { Map rowMap = new HashMap<>(); rowUpdate.getOld().getColumns().putAll(rowUpdate.getNew().getColumns()); - rowUpdate.getOld().getColumns() - .forEach((key1, value) -> rowMap.put(key1, value.toString())); + rowUpdate.getOld().getColumns().forEach((key1, value) -> rowMap.put(key1, value.toString())); update.add(rowMap); @@ -568,33 +549,27 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { } private void monitorAwlanNodeDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { - CompletableFuture awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, - OvsdbDao.awlanNodeDbTable + "_" + key, new MonitorRequests(ImmutableMap.of(OvsdbDao.awlanNodeDbTable, - new MonitorRequest(new MonitorSelect(true, false, false, true)))), + CompletableFuture awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.awlanNodeDbTable + "_" + key, + new MonitorRequests(ImmutableMap.of(OvsdbDao.awlanNodeDbTable, new MonitorRequest(new MonitorSelect(true, false, false, true)))), tableUpdates -> { try { LOG.info(OvsdbDao.awlanNodeDbTable + "_" + key + " monitor callback received {}", tableUpdates); - extIntegrationInterface.awlanNodeDbTableUpdate( - ovsdbDao.getOpensyncAWLANNode(tableUpdates, key, ovsdbClient), key); + extIntegrationInterface.awlanNodeDbTableUpdate(ovsdbDao.getOpensyncAWLANNode(tableUpdates, key, ovsdbClient), key); } catch (Exception e) { LOG.error("awlanNodeDbTableUpdate failed", e); } }); - extIntegrationInterface.awlanNodeDbTableUpdate(ovsdbDao.getOpensyncAWLANNode(awCf.join(), key, ovsdbClient), - key); + extIntegrationInterface.awlanNodeDbTableUpdate(ovsdbDao.getOpensyncAWLANNode(awCf.join(), key, ovsdbClient), key); } private void monitorWifiAssociatedClientsDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { - CompletableFuture acCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, - OvsdbDao.wifiAssociatedClientsDbTable + "_" + key, - new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiAssociatedClientsDbTable, new MonitorRequest())), - tableUpdates -> { + CompletableFuture acCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiAssociatedClientsDbTable + "_" + key, + new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiAssociatedClientsDbTable, new MonitorRequest())), tableUpdates -> { try { - LOG.info(OvsdbDao.wifiAssociatedClientsDbTable + "_" + key + " monitor callback received {}", - tableUpdates); + LOG.info(OvsdbDao.wifiAssociatedClientsDbTable + "_" + key + " monitor callback received {}", tableUpdates); List associatedClients = new ArrayList<>(); @@ -611,8 +586,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { // adding anyway. extIntegrationInterface.wifiAssociatedClientsDbTableDelete(deletedClientMac, key); } else { - associatedClients.addAll( - ovsdbDao.getOpensyncWifiAssociatedClients(rowUpdate, key, ovsdbClient)); + associatedClients.addAll(ovsdbDao.getOpensyncWifiAssociatedClients(rowUpdate, key, ovsdbClient)); } } @@ -626,20 +600,16 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { }); - extIntegrationInterface.wifiAssociatedClientsDbTableUpdate( - ovsdbDao.getInitialOpensyncWifiAssociatedClients(acCf.join(), key, ovsdbClient), key); + extIntegrationInterface.wifiAssociatedClientsDbTableUpdate(ovsdbDao.getInitialOpensyncWifiAssociatedClients(acCf.join(), key, ovsdbClient), key); } private void monitorWifiInetStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { - CompletableFuture isCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, - OvsdbDao.wifiInetStateDbTable + "_" + key, - new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiInetStateDbTable, - new MonitorRequest(new MonitorSelect(true, true, true, true)))), + CompletableFuture isCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiInetStateDbTable + "_" + key, + new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiInetStateDbTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))), tableUpdates -> { try { - LOG.info(OvsdbDao.wifiInetStateDbTable + "_" + key + " monitor callback received {}", - tableUpdates); + LOG.info(OvsdbDao.wifiInetStateDbTable + "_" + key + " monitor callback received {}", tableUpdates); List inetStateInsertOrUpdate = new ArrayList<>(); List inetStateDelete = new ArrayList<>(); @@ -649,11 +619,9 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) { if (rowUpdate.getNew() == null) { - inetStateDelete.addAll( - ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient)); + inetStateDelete.addAll(ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient)); } else { - inetStateInsertOrUpdate.addAll( - ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient)); + inetStateInsertOrUpdate.addAll(ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient)); } } @@ -670,42 +638,33 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { }); - extIntegrationInterface.wifiInetStateDbTableUpdate( - ovsdbDao.getInitialOpensyncApInetStateForRowUpdate(isCf.join(), key, ovsdbClient), key); + extIntegrationInterface.wifiInetStateDbTableUpdate(ovsdbDao.getInitialOpensyncApInetStateForRowUpdate(isCf.join(), key, ovsdbClient), key); } private void monitorWifiRadioStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { - CompletableFuture rsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, - OvsdbDao.wifiRadioStateDbTable + "_" + key, - new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiRadioStateDbTable, - new MonitorRequest(new MonitorSelect(true, false, false, true)))), + CompletableFuture rsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiRadioStateDbTable + "_" + key, + new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiRadioStateDbTable, new MonitorRequest(new MonitorSelect(true, false, false, true)))), tableUpdates -> { try { - LOG.info(OvsdbDao.wifiRadioStateDbTable + "_" + key + " monitor callback received {}", - tableUpdates); + LOG.info(OvsdbDao.wifiRadioStateDbTable + "_" + key + " monitor callback received {}", tableUpdates); - extIntegrationInterface.wifiRadioStatusDbTableUpdate( - ovsdbDao.getOpensyncAPRadioState(tableUpdates, key, ovsdbClient), key); + extIntegrationInterface.wifiRadioStatusDbTableUpdate(ovsdbDao.getOpensyncAPRadioState(tableUpdates, key, ovsdbClient), key); } catch (Exception e) { LOG.error("wifiRadioStatusDbTableUpdate failed", e); } }); - extIntegrationInterface - .wifiRadioStatusDbTableUpdate(ovsdbDao.getOpensyncAPRadioState(rsCf.join(), key, ovsdbClient), key); + extIntegrationInterface.wifiRadioStatusDbTableUpdate(ovsdbDao.getOpensyncAPRadioState(rsCf.join(), key, ovsdbClient), key); } private void monitorWifiVifStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { - CompletableFuture vsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, - OvsdbDao.wifiVifStateDbTable + "_" + key, - new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiVifStateDbTable, - new MonitorRequest(new MonitorSelect(false, true, true, true)))), + CompletableFuture vsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiVifStateDbTable + "_" + key, + new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiVifStateDbTable, new MonitorRequest(new MonitorSelect(false, true, true, true)))), tableUpdates -> { try { - LOG.info(OvsdbDao.wifiVifStateDbTable + "_" + key + " monitor callback received {}", - tableUpdates); + LOG.info(OvsdbDao.wifiVifStateDbTable + "_" + key + " monitor callback received {}", tableUpdates); List vifsToDelete = new ArrayList<>(); List vifsToInsertOrUpdate = new ArrayList<>(); @@ -715,14 +674,12 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { if (rowUpdate.getNew() == null) { // this is a deletion - vifsToDelete.addAll( - ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient)); + vifsToDelete.addAll(ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient)); } else { // either an insert or // mutuate/update - vifsToInsertOrUpdate.addAll( - ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient)); + vifsToInsertOrUpdate.addAll(ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient)); } @@ -747,10 +704,8 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { } private void monitorNodeStateTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { - CompletableFuture nsCf = ovsdbClient.monitor( - OvsdbDao.ovsdbName, OvsdbDao.nodeStateTable + "_" + key, new MonitorRequests(ImmutableMap - .of(OvsdbDao.nodeStateTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))), - tableUpdates -> { + CompletableFuture nsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.nodeStateTable + "_" + key, + new MonitorRequests(ImmutableMap.of(OvsdbDao.nodeStateTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))), tableUpdates -> { LOG.info(OvsdbDao.nodeStateTable + "_" + key + " monitor callback received {}"); tableUpdates.getTableUpdates().forEach((key1, value) -> { LOG.info("TableUpdate for {}", key1); @@ -769,10 +724,8 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { } private void monitorAPCStateTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { - CompletableFuture nsCf = ovsdbClient.monitor( - OvsdbDao.ovsdbName, OvsdbDao.apcStateDbTable + "_" + key, new MonitorRequests(ImmutableMap - .of(OvsdbDao.apcStateDbTable, new MonitorRequest(new MonitorSelect(true, false, false, true)))), - tableUpdates -> { + CompletableFuture nsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.apcStateDbTable + "_" + key, + new MonitorRequests(ImmutableMap.of(OvsdbDao.apcStateDbTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))), tableUpdates -> { LOG.info(OvsdbDao.apcStateDbTable + "_" + key + " monitor callback received {}"); tableUpdates.getTableUpdates().forEach((key1, value) -> { LOG.info("TableUpdate for {}", key1); @@ -780,14 +733,19 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { Map apcStateAttributes = ovsdbDao.getAPCState(r, key); - extIntegrationInterface.apcStateDbTableUpdate(apcStateAttributes, key, - RowUpdateOperation.MODIFY); + extIntegrationInterface.apcStateDbTableUpdate(apcStateAttributes, key, RowUpdateOperation.MODIFY); }); }); }); - nsCf.join(); + try { + extIntegrationInterface.apcStateDbTableUpdate( + ovsdbDao.getAPCState(nsCf.join().getTableUpdates().entrySet().iterator().next().getValue().getRowUpdates().values().iterator().next(), key), + key, RowUpdateOperation.INIT); + } catch (Exception e) { + LOG.error("Could not get INIT state for {}", OvsdbDao.apcStateDbTable, e); + } } @Override @@ -837,8 +795,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { @Override public String startDebugEngine(String apId, String gatewayHostname, Integer gatewayPort) { - LOG.debug("TipWlanOvsdbClient::startDebugEngine apId {} gatewayHostname {} gatewayPort {}", apId, - gatewayHostname, gatewayPort); + LOG.debug("TipWlanOvsdbClient::startDebugEngine apId {} gatewayHostname {} gatewayPort {}", apId, gatewayHostname, gatewayPort); try { OvsdbSession session = ovsdbSessionMapInterface.getSession(apId); @@ -846,17 +803,14 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { Map payload = new HashMap<>(); payload.put("gateway_hostname", gatewayHostname); payload.put("gateway_port", gatewayPort.toString()); - ovsdbDao.configureCommands(ovsdbClient, OvsdbDao.StartDebugEngineApCommand, payload, 0L, - defaultCommandDurationSec); + ovsdbDao.configureCommands(ovsdbClient, OvsdbDao.StartDebugEngineApCommand, payload, 0L, defaultCommandDurationSec); LOG.debug("Started debug engine on AP {} with gateway {} port {}", apId, gatewayHostname, gatewayPort); return "Started debug engine on AP " + apId + " with gateway " + gatewayHostname + " port " + gatewayPort; } catch (Exception e) { - LOG.error( - "TipWlanOvsdbClient::startDebugEngine Failed to start debug engine on AP {} with gateway {} port {}", - apId, gatewayHostname, gatewayPort, e); - return "Failed to start debug engine on AP " + apId + " with gateway " + gatewayHostname + " port " - + gatewayPort; + LOG.error("TipWlanOvsdbClient::startDebugEngine Failed to start debug engine on AP {} with gateway {} port {}", apId, gatewayHostname, gatewayPort, + e); + return "Failed to start debug engine on AP " + apId + " with gateway " + gatewayHostname + " port " + gatewayPort; } } @@ -901,8 +855,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { } } catch (Exception e) { if (switchBanks) { - LOG.debug("TipWlanOvsdbClient::processRebootRequest failed to trigger switch software bank on AP {}", - apId, e); + LOG.debug("TipWlanOvsdbClient::processRebootRequest failed to trigger switch software bank on AP {}", apId, e); return "failed to trigger switch software bank on AP " + apId; } else { LOG.error("TipWlanOvsdbClient::processRebootRequest failed to trigger reboot of AP {}", apId, e); @@ -948,25 +901,21 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { return key; } - public String processNewChannelsRequest(String apId, Map backupChannelMap, - Map primaryChannelMap) { + public String processNewChannelsRequest(String apId, Map backupChannelMap, Map primaryChannelMap) { LOG.info("TipWlanOvsdbClient::processNewChannelsRequest for AP {}", apId); try { OvsdbSession session = ovsdbSessionMapInterface.getSession(apId); OvsdbClient ovsdbClient = session.getOvsdbClient(); ovsdbDao.processNewChannelsRequest(ovsdbClient, backupChannelMap, primaryChannelMap); - LOG.info("TipWlanOvsdbClient::processNewChannelsRequest change backup and/or primary channels for AP {}", - apId); + LOG.info("TipWlanOvsdbClient::processNewChannelsRequest change backup and/or primary channels for AP {}", apId); return " change backup and/or primary channels for AP " + apId; } catch (Exception e) { - LOG.error( - "TipWlanOvsdbClient::processNewChannelsRequest failed to change backup and/or primary channels for AP {}", - apId, e); + LOG.error("TipWlanOvsdbClient::processNewChannelsRequest failed to change backup and/or primary channels for AP {}", apId, e); return "failed to change backup and/or primary channels for AP " + apId; } } - + public String processCellSizeAttributesRequest(String apId, Map cellSizeAttributeMap) { LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest for AP {}", apId); @@ -974,13 +923,10 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { OvsdbSession session = ovsdbSessionMapInterface.getSession(apId); OvsdbClient ovsdbClient = session.getOvsdbClient(); ovsdbDao.processCellSizeAttributesRequest(ovsdbClient, cellSizeAttributeMap); - LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest change cellSizeAttributes for AP {}", - apId); + LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest change cellSizeAttributes for AP {}", apId); return " change cell size attributes for AP " + apId; } catch (Exception e) { - LOG.error( - "TipWlanOvsdbClient::processCellSizeAttributesRequest failed to change cell size attributes for AP {}", - apId, e); + LOG.error("TipWlanOvsdbClient::processCellSizeAttributesRequest failed to change cell size attributes for AP {}", apId, e); return "failed to change cell size attributes for AP " + apId; } }