mirror of
https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
synced 2025-11-22 21:04:50 +00:00
TW-208: Notified Table Status changes to ExternalInterfaceKDC
This commit is contained in:
@@ -2,6 +2,7 @@ package com.telecominfraproject.wlan.opensync.ovsdb;
|
||||
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -26,7 +27,6 @@ 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.protocol.operation.notation.Value;
|
||||
import com.vmware.ovsdb.service.OvsdbClient;
|
||||
import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener;
|
||||
|
||||
@@ -66,15 +66,6 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface {
|
||||
|
||||
public void listenForConnections() {
|
||||
|
||||
// This class is only used here, therefore changed it back to an inner
|
||||
// class,
|
||||
// removed the package level class.
|
||||
// All calling classes related to OVSDB are calling the MonitorCallback
|
||||
// interface, so the implementation can remain
|
||||
// hidden. This also gives handy access to the Autowired instances in
|
||||
// the
|
||||
// container class.
|
||||
|
||||
class ConnectusMonitorCallback implements MonitorCallback {
|
||||
|
||||
private String connectedClientId;
|
||||
@@ -88,59 +79,56 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface {
|
||||
Set<String> tableNames = tableUpdates.getTableUpdates().keySet();
|
||||
|
||||
for (String name : tableNames) {
|
||||
LOG.trace("Receive update for table {}", name);
|
||||
if (name.equals(OvsdbDao.wifiAssociatedClientsDbTable)) {
|
||||
Map<UUID, RowUpdate> updates = tableUpdates.getTableUpdates().get(name).getRowUpdates();
|
||||
for (UUID id : updates.keySet()) {
|
||||
|
||||
Map<UUID, RowUpdate> updates = tableUpdates.getTableUpdates().get(name).getRowUpdates();
|
||||
Row row = updates.get(id).getNew();
|
||||
|
||||
for (UUID id : updates.keySet()) {
|
||||
|
||||
LOG.trace("Receive row update for uuid {}", id);
|
||||
|
||||
RowUpdate rowUpdate = updates.get(id);
|
||||
|
||||
Row newRow = rowUpdate.getNew();
|
||||
if (newRow != null) {
|
||||
Set<String> newRowColumns = newRow.getColumns().keySet();
|
||||
Row oldRow = rowUpdate.getOld();
|
||||
|
||||
for (String column : newRowColumns) {
|
||||
|
||||
Value oldVal = null;
|
||||
if (oldRow != null && oldRow.getColumns().containsKey(column))
|
||||
oldVal = oldRow.getColumns().get(column);
|
||||
|
||||
Value newVal = newRow.getColumns().get(column);
|
||||
|
||||
}
|
||||
if (row != null)
|
||||
extIntegrationInterface.handleClientsChanged(row.getColumns(), connectedClientId);
|
||||
}
|
||||
|
||||
} else if (name.equals(OvsdbDao.awlanNodeDbTable)) {
|
||||
Map<UUID, RowUpdate> updates = tableUpdates.getTableUpdates().get(name).getRowUpdates();
|
||||
for (UUID id : updates.keySet()) {
|
||||
|
||||
Row row = updates.get(id).getNew();
|
||||
|
||||
if (row != null)
|
||||
extIntegrationInterface.awlanChanged(row.getColumns(), connectedClientId);
|
||||
}
|
||||
} else if (name.equals(OvsdbDao.wifiVifStateDbTable)) {
|
||||
Map<UUID, RowUpdate> updates = tableUpdates.getTableUpdates().get(name).getRowUpdates();
|
||||
for (UUID id : updates.keySet()) {
|
||||
|
||||
Row row = updates.get(id).getNew();
|
||||
|
||||
if (row != null)
|
||||
extIntegrationInterface.wirelessStatusChanged(row.getColumns(), connectedClientId);
|
||||
}
|
||||
} else if (name.equals(OvsdbDao.wifiInetStateDbTable)) {
|
||||
Map<UUID, RowUpdate> updates = tableUpdates.getTableUpdates().get(name).getRowUpdates();
|
||||
|
||||
for (UUID id : updates.keySet()) {
|
||||
|
||||
Row row = updates.get(id).getNew();
|
||||
|
||||
if (row != null)
|
||||
extIntegrationInterface.networkStatusChanged(row.getColumns(), connectedClientId);
|
||||
}
|
||||
} else if (name.equals(OvsdbDao.wifiRadioStateDbTable)) {
|
||||
Map<UUID, RowUpdate> updates = tableUpdates.getTableUpdates().get(name).getRowUpdates();
|
||||
for (UUID id : updates.keySet()) {
|
||||
|
||||
Row row = updates.get(id).getNew();
|
||||
|
||||
if (row != null)
|
||||
extIntegrationInterface.deviceStatusChanged(row.getColumns(), connectedClientId);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 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:
|
||||
// example 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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -181,10 +169,11 @@ public class ConnectusOvsdbClient implements ConnectusOvsdbClientInterface {
|
||||
ovsdbDao.monitorInetState(ovsdbClient, new ConnectusMonitorCallback(key));
|
||||
// monitor vif state
|
||||
ovsdbDao.monitorVIFState(ovsdbClient, new ConnectusMonitorCallback(key));
|
||||
// monitor Route state
|
||||
ovsdbDao.monitorRouteState(ovsdbClient, new ConnectusMonitorCallback(key));
|
||||
// monitor Master State
|
||||
ovsdbDao.monitorMasterState(ovsdbClient, new ConnectusMonitorCallback(key));
|
||||
// monitor AWLAN_Node
|
||||
ovsdbDao.monitorAwlanNode(ovsdbClient, new ConnectusMonitorCallback(key));
|
||||
// monitor Wifi_Associated_Clients
|
||||
ovsdbDao.monitorAssociatedClients(ovsdbClient, new ConnectusMonitorCallback(key));
|
||||
|
||||
} catch (Exception e) {
|
||||
LOG.error("ovsdbClient error", e);
|
||||
// something is wrong with the SSL
|
||||
|
||||
@@ -84,81 +84,39 @@ public class OvsdbDao {
|
||||
public static final String wifiInetConfigDbTable = "Wifi_Inet_Config";
|
||||
public static final String wifiInetStateDbTable = "Wifi_Inet_State";
|
||||
|
||||
public static final String wifiRouteStateDbTable = "Wifi_Route_State";
|
||||
public static final String wifiMasterStateDbTable = "Wifi_Master_State";
|
||||
public static final String wifiAssociatedClientsDbTable = "Wifi_Associated_Clients";
|
||||
|
||||
private static final String wifiRadioStateDbTableMonitorId = "Wifi_Radio_State_Monitor_Id";
|
||||
private static final String wifiInetStateDbTableMonitorId = "Wifi_Inet_State_Monitor_Id";
|
||||
private static final String wifiVifStateDbTableMonitorId = "Wifi_VIF_State_Monitor_Id";
|
||||
private static final String wifiRouteStateDbTableMonitorId = "Wifi_Route_State_Monitor_Id";
|
||||
private static final String wifiMasterStateDbTableMonitorId = "Wifi_Master_State_Monitor_Id";
|
||||
|
||||
public void monitorRouteState(OvsdbClient ovsdbClient, MonitorCallback monitorCallback) {
|
||||
|
||||
List<String> columns = new ArrayList<>();
|
||||
columns.add("_uuid");
|
||||
columns.add("_version");
|
||||
columns.add("dest_addr");
|
||||
columns.add("dest_mask");
|
||||
columns.add("gateway");
|
||||
columns.add("gateway_hwaddr");
|
||||
columns.add("if_name");
|
||||
private static final String wifiAwlanNodeDbTableMonitorId = "AWLAN_Node_Monitor_Id";
|
||||
private static final String wifiAssociatedClientsDbTableMonitorId = "Wifi_Associated_Clients_Monitor_Id";
|
||||
|
||||
public void monitorAwlanNode(OvsdbClient ovsdbClient, MonitorCallback monitorCallback) {
|
||||
MonitorRequest monitorRequest = new MonitorRequest();
|
||||
MonitorRequests monitorRequests = new MonitorRequests(ImmutableMap.of(wifiRouteStateDbTable, monitorRequest));
|
||||
try {
|
||||
ovsdbClient.monitor(ovsdbName, wifiRouteStateDbTableMonitorId, monitorRequests, monitorCallback);
|
||||
} catch (OvsdbClientException e) {
|
||||
LOG.error("Unable to add Monitor to table " + wifiRouteStateDbTable, e);
|
||||
}
|
||||
MonitorRequests monitorRequests = new MonitorRequests(ImmutableMap.of(awlanNodeDbTable, monitorRequest));
|
||||
|
||||
try {
|
||||
ovsdbClient.monitor(ovsdbName, wifiAwlanNodeDbTableMonitorId, monitorRequests, monitorCallback);
|
||||
} catch (OvsdbClientException e) {
|
||||
LOG.error("Unable to add Monitor to table " + awlanNodeDbTable, e);
|
||||
}
|
||||
}
|
||||
|
||||
public void monitorMasterState(OvsdbClient ovsdbClient, MonitorCallback monitorCallback) {
|
||||
List<String> columns = new ArrayList<>();
|
||||
columns.add("_uuid");
|
||||
columns.add("_version");
|
||||
columns.add("dhcpc");
|
||||
columns.add("if_name");
|
||||
columns.add("if_type");
|
||||
columns.add("inet_addr");
|
||||
columns.add("netmask");
|
||||
columns.add("network_state");
|
||||
columns.add("port_state");
|
||||
|
||||
public void monitorAssociatedClients(OvsdbClient ovsdbClient, MonitorCallback monitorCallback) {
|
||||
MonitorRequest monitorRequest = new MonitorRequest();
|
||||
MonitorRequests monitorRequests = new MonitorRequests(ImmutableMap.of(wifiMasterStateDbTable, monitorRequest));
|
||||
MonitorRequests monitorRequests = new MonitorRequests(
|
||||
ImmutableMap.of(wifiAssociatedClientsDbTable, monitorRequest));
|
||||
|
||||
try {
|
||||
ovsdbClient.monitor(ovsdbName, wifiMasterStateDbTableMonitorId, monitorRequests, monitorCallback);
|
||||
ovsdbClient.monitor(ovsdbName, wifiAssociatedClientsDbTableMonitorId, monitorRequests, monitorCallback);
|
||||
} catch (OvsdbClientException e) {
|
||||
LOG.error("Unable to add Monitor to table " + wifiMasterStateDbTable, e);
|
||||
LOG.error("Unable to add Monitor to table " + wifiAssociatedClientsDbTable, e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void monitorVIFState(OvsdbClient ovsdbClient, MonitorCallback monitorCallback) {
|
||||
List<String> columns = new ArrayList<>();
|
||||
columns.add("_uuid");
|
||||
columns.add("_version");
|
||||
columns.add("ap_bridge");
|
||||
columns.add("associated_clients");
|
||||
columns.add("bridge");
|
||||
columns.add("btm");
|
||||
columns.add("channel");
|
||||
columns.add("dynamic_beacon");
|
||||
columns.add("enabled");
|
||||
columns.add("group_rekey");
|
||||
columns.add("if_name");
|
||||
columns.add("mac");
|
||||
columns.add("min_hw_mode");
|
||||
columns.add("mode");
|
||||
columns.add("rrm");
|
||||
columns.add("security");
|
||||
columns.add("ssid");
|
||||
columns.add("ssid_broadcast");
|
||||
columns.add("uapsd_enable");
|
||||
columns.add("vif_config");
|
||||
columns.add("vif_radio_idx");
|
||||
|
||||
MonitorRequest monitorRequest = new MonitorRequest();
|
||||
MonitorRequests monitorRequests = new MonitorRequests(ImmutableMap.of(wifiVifStateDbTable, monitorRequest));
|
||||
@@ -208,8 +166,8 @@ public class OvsdbDao {
|
||||
ovsdbClient.cancelMonitor(wifiRadioStateDbTableMonitorId);
|
||||
ovsdbClient.cancelMonitor(wifiVifStateDbTableMonitorId);
|
||||
ovsdbClient.cancelMonitor(wifiInetStateDbTableMonitorId);
|
||||
ovsdbClient.cancelMonitor(wifiRouteStateDbTableMonitorId);
|
||||
ovsdbClient.cancelMonitor(wifiMasterStateDbTableMonitorId);
|
||||
ovsdbClient.cancelMonitor(wifiAssociatedClientsDbTableMonitorId);
|
||||
ovsdbClient.cancelMonitor(wifiAwlanNodeDbTableMonitorId);
|
||||
} catch (OvsdbClientException e) {
|
||||
LOG.debug("Could not cancel Monitor. {}", e.getLocalizedMessage());
|
||||
}
|
||||
@@ -1560,7 +1518,7 @@ public class OvsdbDao {
|
||||
updateColumns.put("sampling_interval", new Atom<>(0));
|
||||
updateColumns.put("stats_type", new Atom<>("device"));
|
||||
// updateColumns.put("survey_interval_ms", new Atom<>(10) );
|
||||
// updateColumns.put("survey_type", new Atom<>("on-chan") );
|
||||
updateColumns.put("survey_type", new Atom<>("on-chan"));
|
||||
// updateColumns.put("threshold", thresholds );
|
||||
|
||||
row = new Row(updateColumns);
|
||||
@@ -1641,11 +1599,13 @@ public class OvsdbDao {
|
||||
updateColumns = new HashMap<>();
|
||||
// updateColumns.put("channel_list", channels );
|
||||
updateColumns.put("radio_type", new Atom<>("5GL"));
|
||||
updateColumns.put("report_type", new Atom<>("average"));
|
||||
|
||||
updateColumns.put("reporting_interval", new Atom<>(60));
|
||||
updateColumns.put("sampling_interval", new Atom<>(10));
|
||||
updateColumns.put("stats_type", new Atom<>("client"));
|
||||
// updateColumns.put("survey_interval_ms", new Atom<>(0) );
|
||||
// updateColumns.put("survey_type", new Atom<>("on-chan") );
|
||||
updateColumns.put("survey_type", new Atom<>("on-chan"));
|
||||
// updateColumns.put("threshold", thresholds );
|
||||
|
||||
row = new Row(updateColumns);
|
||||
@@ -1658,11 +1618,13 @@ public class OvsdbDao {
|
||||
updateColumns = new HashMap<>();
|
||||
// updateColumns.put("channel_list", channels );
|
||||
updateColumns.put("radio_type", new Atom<>("5GU"));
|
||||
updateColumns.put("report_type", new Atom<>("average"));
|
||||
|
||||
updateColumns.put("reporting_interval", new Atom<>(60));
|
||||
updateColumns.put("sampling_interval", new Atom<>(10));
|
||||
updateColumns.put("stats_type", new Atom<>("client"));
|
||||
// updateColumns.put("survey_interval_ms", new Atom<>(0) );
|
||||
// updateColumns.put("survey_type", new Atom<>("on-chan") );
|
||||
updateColumns.put("survey_type", new Atom<>("on-chan"));
|
||||
// updateColumns.put("threshold", thresholds );
|
||||
|
||||
row = new Row(updateColumns);
|
||||
@@ -1692,11 +1654,13 @@ public class OvsdbDao {
|
||||
updateColumns = new HashMap<>();
|
||||
// updateColumns.put("channel_list", channels );
|
||||
updateColumns.put("radio_type", new Atom<>("2.4G"));
|
||||
updateColumns.put("report_type", new Atom<>("average"));
|
||||
|
||||
updateColumns.put("reporting_interval", new Atom<>(60));
|
||||
updateColumns.put("sampling_interval", new Atom<>(10));
|
||||
updateColumns.put("stats_type", new Atom<>("client"));
|
||||
// updateColumns.put("survey_interval_ms", new Atom<>(0) );
|
||||
// updateColumns.put("survey_type", new Atom<>("on-chan") );
|
||||
updateColumns.put("survey_type", new Atom<>("on-chan"));
|
||||
// updateColumns.put("threshold", thresholds );
|
||||
|
||||
row = new Row(updateColumns);
|
||||
@@ -1759,12 +1723,13 @@ public class OvsdbDao {
|
||||
updateColumns = new HashMap<>();
|
||||
updateColumns.put("radio_type", new Atom<>(band));
|
||||
updateColumns.put("reporting_interval", new Atom<>(120));
|
||||
updateColumns.put("sampling_interval", new Atom<>(0));
|
||||
updateColumns.put("sampling_interval", new Atom<>(10));
|
||||
updateColumns.put("report_type", new Atom<>("average"));
|
||||
updateColumns.put("stats_type", new Atom<>("rssi"));
|
||||
updateColumns.put("survey_interval_ms", new Atom<>(0));
|
||||
updateColumns.put("survey_type", new Atom<>("on-chan"));
|
||||
row = new Row(updateColumns);
|
||||
|
||||
|
||||
if (provisionedWifiStatsConfigs.containsKey(band + "_rssi_onChannel")) {
|
||||
operations.add(new Update(wifiStatsConfigDbTable, row));
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user