diff --git a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/ConnectusMonitorCallback.java b/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/ConnectusMonitorCallback.java deleted file mode 100644 index 1df0f92..0000000 --- a/opensync-gateway/src/main/java/com/telecominfraproject/wlan/opensync/ovsdb/ConnectusMonitorCallback.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.telecominfraproject.wlan.opensync.ovsdb; - -import java.util.Map; -import java.util.Set; -import java.util.UUID; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbDao; -import com.vmware.ovsdb.callback.MonitorCallback; -import com.vmware.ovsdb.protocol.methods.RowUpdate; -import com.vmware.ovsdb.protocol.methods.TableUpdates; -import com.vmware.ovsdb.protocol.operation.notation.Row; -import com.vmware.ovsdb.service.OvsdbClient; - -public class ConnectusMonitorCallback implements MonitorCallback { - - private OvsdbClient ovsdbClient; - private String connectedClientId; - - private static final Logger LOG = LoggerFactory.getLogger(ConnectusMonitorCallback.class); - - public ConnectusMonitorCallback(OvsdbClient ovsdbClient, String clientId) { - this.ovsdbClient = ovsdbClient; - this.connectedClientId = clientId; - } - - @Override - public void update(TableUpdates tableUpdates) { - for (String key : tableUpdates.getTableUpdates().keySet()) { - - LOG.debug("Received update to table {} on AP {}", key, - connectedClientId); - - if (key.equalsIgnoreCase(OvsdbDao.wifiInetStateDbTable)) { - Map rowUpdates = tableUpdates.getTableUpdates().get(OvsdbDao.wifiInetStateDbTable) - .getRowUpdates(); - - for (UUID rowId : rowUpdates.keySet()) { - - logRow(rowUpdates, rowId); - - } - - } else if (key.equalsIgnoreCase(OvsdbDao.wifiRadioStateDbTable)) { - Map rowUpdates = tableUpdates.getTableUpdates().get(OvsdbDao.wifiRadioStateDbTable) - .getRowUpdates(); - - for (UUID rowId : rowUpdates.keySet()) { - - logRow(rowUpdates, rowId); - - } - - } else if (key.equals(OvsdbDao.wifiVifStateDbTable)) { - Map rowUpdates = tableUpdates.getTableUpdates().get(OvsdbDao.wifiVifStateDbTable) - .getRowUpdates(); - - for (UUID rowId : rowUpdates.keySet()) { - - logRow(rowUpdates, rowId); - - } - - } - } - } - - private void logRow(Map rowUpdates, UUID rowId) { - RowUpdate rowUpdate = rowUpdates.get(rowId); - Row oldRow = rowUpdate.getOld(); - oldRow.getColumns().entrySet().stream() - .forEach(e -> LOG.trace("Key {} Value {}", e.getKey(), e.getValue().toString())); - Row newRow = rowUpdate.getNew(); - newRow.getColumns().entrySet().stream() - .forEach(e -> LOG.trace("Key {} Value {}", e.getKey(), e.getValue().toString())); - } - -} \ No newline at end of file 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 308f77f..bfa5a38 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 @@ -1,7 +1,9 @@ package com.telecominfraproject.wlan.opensync.ovsdb; import java.security.cert.X509Certificate; +import java.util.Map; import java.util.Set; +import java.util.UUID; import javax.annotation.PostConstruct; @@ -20,6 +22,10 @@ import com.telecominfraproject.wlan.opensync.external.integration.models.Opensyn import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbDao; import com.telecominfraproject.wlan.opensync.util.SslUtil; import com.vmware.ovsdb.callback.ConnectionCallback; +import com.vmware.ovsdb.callback.MonitorCallback; +import com.vmware.ovsdb.protocol.methods.RowUpdate; +import com.vmware.ovsdb.protocol.methods.TableUpdates; +import com.vmware.ovsdb.protocol.operation.notation.Row; import com.vmware.ovsdb.service.OvsdbClient; import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener; @@ -59,6 +65,39 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface { public void listenForConnections() { + class ConnectusMonitorCallback implements MonitorCallback { + + private String connectedClientId; + + public ConnectusMonitorCallback(String clientId) { + this.connectedClientId = clientId; + } + + @Override + public void update(TableUpdates tableUpdates) { + + // get session information for this client + OvsdbSession ovsdbSession = ovsdbSessionMapInterface.getSession(connectedClientId); + if (ovsdbSession == null) { + throw new IllegalStateException("AP with id " + connectedClientId + " is not connected"); + } + + OvsdbClient ovsdbClient = ovsdbSession.getOvsdbClient(); + OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(connectedClientId); + + // TODO: + // wifiVifStateDbTable get MAC ADDRESS via ovsdbClient from + // Wifi_Associated_Clients given the associated UUID for the client + + // TODO: + // Changes from other Status (Wifi, Inet, etc.) tables? + // Updates to session etc. + // Needs to be reflected in the Cloud + + } + + } + ConnectionCallback connectionCallback = new ConnectionCallback() { public void connected(OvsdbClient ovsdbClient) { String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress(); @@ -87,15 +126,15 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface { ConnectusOvsdbClient.this.ovsdbSessionMapInterface.getNumSessions()); // monitor radio config state - ovsdbDao.monitorRadioConfigState(ovsdbClient, new ConnectusMonitorCallback(ovsdbClient, key)); + ovsdbDao.monitorRadioConfigState(ovsdbClient, new ConnectusMonitorCallback(key)); // monitor inet state - ovsdbDao.monitorInetState(ovsdbClient, new ConnectusMonitorCallback(ovsdbClient, key)); + ovsdbDao.monitorInetState(ovsdbClient, new ConnectusMonitorCallback(key)); // monitor vif state - ovsdbDao.monitorVIFState(ovsdbClient, new ConnectusMonitorCallback(ovsdbClient, key)); + ovsdbDao.monitorVIFState(ovsdbClient, new ConnectusMonitorCallback(key)); // monitor Route state - ovsdbDao.monitorRouteState(ovsdbClient, new ConnectusMonitorCallback(ovsdbClient, key)); + ovsdbDao.monitorRouteState(ovsdbClient, new ConnectusMonitorCallback(key)); // monitor Master State - ovsdbDao.monitorMasterState(ovsdbClient, new ConnectusMonitorCallback(ovsdbClient, key)); + ovsdbDao.monitorMasterState(ovsdbClient, new ConnectusMonitorCallback(key)); } catch (Exception e) { LOG.error("ovsdbClient error", e); // something is wrong with the SSL