Compare commits

...

13 Commits

Author SHA1 Message Date
Akshay Jagadish
bbe36d4a9f Update SDK master to use image tag 1.2.0-SNAPSHOT 2021-05-26 18:00:18 -04:00
Mike Hansen
3c9ee65742 WIFI-1829: CEGWY support for Excessive NF and ChanOcc channel change
Adding support for Non-Wifi Thresholds

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-20 19:04:11 -04:00
Mike Hansen
53022b5813 WIFI-1829: CEGWY support for Excessive NF and ChanOcc channel change
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-20 18:19:54 -04:00
Mike Hansen
b59a40afc0 Merge pull request #37 from Telecominfraproject/WIFI-2408
WIFI-2408 Support UnassocClientRx setting in RadioUtilization based o…
2021-05-20 17:28:48 -04:00
Mike Hansen
3447df19ef WIFI-2030: SDK Gateway/BE: Proxy-ARP service
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-20 17:02:06 -04:00
Lynn Shi
de671722f7 WIFI-2408 Support UnassocClientRx setting in RadioUtilization based on Mqtt data 2021-05-20 11:58:38 -04:00
Mike Hansen
6b7c418ccd Client Devices: Access Point appearing in Client device inventory
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-20 10:43:11 -04:00
Mike Hansen
e6472cf80b WIFI-2397: Add ApcElectionEvent values to EquipmentProtocolStatusData
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-19 18:00:58 -04:00
Mike Hansen
07489c2550 WIFI-2120: AP: Support 8x8 MIMO and Max Tx Power
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-19 16:36:41 -04:00
Mike Hansen
f39f148706 WIFI-2118: Gateway: populate new values acct_server, acct_port, acct_secret, and secret in Radius_Proxy_Config
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-07 10:54:52 -04:00
Mike Hansen
e0c26b66e0 Merge pull request #36 from Telecominfraproject/WIFI-2096
WIFI-2096 Add Portal support for cell size management
2021-05-07 10:34:30 -04:00
Lynn Shi
ee1350fbe9 WIFI-2096 Add Portal support for cell size management, update comments 2021-05-06 11:08:40 -04:00
Lynn Shi
b7a3564153 WIFI-2096 Add Portal support for cell size management 2021-05-05 16:25:57 -04:00
16 changed files with 426 additions and 413 deletions

View File

@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-ext-cloud</artifactId> <artifactId>opensync-ext-cloud</artifactId>
@@ -19,121 +19,121 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway</artifactId> <artifactId>opensync-gateway</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>base-client</artifactId> <artifactId>base-client</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>equipment-gateway-models</artifactId> <artifactId>equipment-gateway-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>customer-service-interface</artifactId> <artifactId>customer-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>location-service-interface</artifactId> <artifactId>location-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>equipment-service-interface</artifactId> <artifactId>equipment-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>profile-service-interface</artifactId> <artifactId>profile-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>portal-user-service-interface</artifactId> <artifactId>portal-user-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>service-metric-service-interface</artifactId> <artifactId>service-metric-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>service-metric-models</artifactId> <artifactId>service-metric-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>system-event-service-interface</artifactId> <artifactId>system-event-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>system-event-models</artifactId> <artifactId>system-event-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>alarm-service-interface</artifactId> <artifactId>alarm-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>status-service-interface</artifactId> <artifactId>status-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>client-service-interface</artifactId> <artifactId>client-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>client-models</artifactId> <artifactId>client-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>routing-service-interface</artifactId> <artifactId>routing-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>firmware-service-interface</artifactId> <artifactId>firmware-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>manufacturer-service-interface</artifactId> <artifactId>manufacturer-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>cloud-event-dispatcher-interface</artifactId> <artifactId>cloud-event-dispatcher-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -112,6 +112,7 @@ import com.telecominfraproject.wlan.status.models.StatusDataType;
import com.telecominfraproject.wlan.status.network.models.NetworkAdminStatusData; import com.telecominfraproject.wlan.status.network.models.NetworkAdminStatusData;
import com.telecominfraproject.wlan.systemevent.equipment.realtime.ApcElectionEvent; import com.telecominfraproject.wlan.systemevent.equipment.realtime.ApcElectionEvent;
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeEventType; import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeEventType;
import com.telecominfraproject.wlan.systemevent.equipment.realtime.ApcElectionEvent.ApcMode;
import sts.OpensyncStats.Report; import sts.OpensyncStats.Report;
import traffic.NetworkMetadata.FlowReport; import traffic.NetworkMetadata.FlowReport;
@@ -1024,7 +1025,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
if ((blockedClients != null) && !blockedClients.isEmpty()) { if ((blockedClients != null) && !blockedClients.isEmpty()) {
blockedClients.forEach(client -> blockList.add(client.getMacAddress())); blockedClients.forEach(client -> blockList.add(client.getMacAddress()));
} }
ret.setBlockedClients(blockList); ret.setBlockedClients(blockList);
ret.setRadiusProfiles(new ArrayList<>(radiusSet)); ret.setRadiusProfiles(new ArrayList<>(radiusSet));
@@ -1738,7 +1739,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
if (node.qrCode != null) { if (node.qrCode != null) {
if (node.qrCode.containsKey("DT")) { if (node.qrCode.containsKey("DT")) {
qrCode.setDeviceType(EquipmentType.getByName(node.qrCode.get("DT"))); qrCode.setDeviceType(EquipmentType.getByName(node.qrCode.get("DT")));
} }
qrCode.setVendorName(node.qrCode.get("VN")); qrCode.setVendorName(node.qrCode.get("VN"));
if (isValidMACAddress(node.qrCode.get("DM"))) { if (isValidMACAddress(node.qrCode.get("DM"))) {
qrCode.setDeviceMac(MacAddress.valueOf(node.qrCode.get("DM"))); qrCode.setDeviceMac(MacAddress.valueOf(node.qrCode.get("DM")));
@@ -2029,31 +2030,8 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
// Create or update // Create or update
Client client = clientServiceInterface.getOrNull(customerId, clientMacAddress); Client client = clientServiceInterface.getOrNull(customerId, clientMacAddress);
if (client == null) { if (client == null) {
LOG.info("Cannot find client instance for {}", clientMacAddress); LOG.info("No client present for {}", clientMacAddress);
if (rowUpdateOperation.equals(RowUpdateOperation.INSERT)) { continue;
client = new Client();
client.setCustomerId(customerId);
client.setMacAddress(clientMacAddress);
client.setDetails(new ClientInfoDetails());
if (dhcpLeasedIps.containsKey("hostname")) {
((ClientInfoDetails) client.getDetails()).setHostName(dhcpLeasedIps.get("hostname"));
}
if (dhcpLeasedIps.containsKey("fingerprint")) {
((ClientInfoDetails) client.getDetails()).setApFingerprint(dhcpLeasedIps.get("fingerprint"));
}
if (dhcpLeasedIps.containsKey("device_type")) {
DhcpFpDeviceType dhcpFpDeviceType = DhcpFpDeviceType.getByName(dhcpLeasedIps.get("device_type"));
ClientType clientType = OvsdbToWlanCloudTypeMappingUtility.getClientTypeForDhcpFpDeviceType(dhcpFpDeviceType);
LOG.debug("Translate from ovsdb {} to cloud {}", dhcpFpDeviceType, clientType);
((ClientInfoDetails) client.getDetails()).setClientType(clientType.getId());
}
client = clientServiceInterface.create(client);
LOG.info("Created client from DHCP_Leased_IP event {}.", client);
ClientSession session = updateClientSession(customerId, equipmentId, locationId, dhcpLeasedIps, clientMacAddress);
if (session != null) {
clientSessionList.add(session);
}
}
} else { } else {
LOG.info("Client {} already exists on the cloud, update client values", dhcpLeasedIps); LOG.info("Client {} already exists on the cloud, update client values", dhcpLeasedIps);
if (dhcpLeasedIps.containsKey("hostname")) { if (dhcpLeasedIps.containsKey("hostname")) {
@@ -2133,19 +2111,8 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
ClientSession session = clientServiceInterface.getSessionOrNull(customerId, equipmentId, clientMacAddress); ClientSession session = clientServiceInterface.getSessionOrNull(customerId, equipmentId, clientMacAddress);
if (session == null) { if (session == null) {
session = new ClientSession(); LOG.info("No session for client {} with for customer {} equipment {}", clientMacAddress, customerId, equipmentId);
session.setCustomerId(customerId); return null;
session.setEquipmentId(equipmentId);
session.setLocationId(locationId);
session.setMacAddress(clientMacAddress);
session.setDetails(new ClientSessionDetails());
session.getDetails().setSessionId(clientMacAddress.getAddressAsLong());
session.getDetails().setDhcpDetails(new ClientDhcpDetails(clientMacAddress.getAddressAsLong()));
session.getDetails().getDhcpDetails().setLeaseStartTimestamp(timestamp);
session.getDetails().setMetricDetails(new ClientSessionMetricDetails());
session.getDetails().setLastEventTimestamp(timestamp);
session.getDetails().setAssociationState(AssociationState._802_11_Associated);
session.getDetails().setAssocTimestamp(timestamp);
} else { } else {
if (session.getDetails().getPriorEquipmentId() == null) { if (session.getDetails().getPriorEquipmentId() == null) {
session.getDetails().setPriorEquipmentId(session.getEquipmentId()); session.getDetails().setPriorEquipmentId(session.getEquipmentId());
@@ -2437,6 +2404,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
LOG.error("UnknownHost for designatedRouterIp", e); LOG.error("UnknownHost for designatedRouterIp", e);
} }
Status protocolStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL); Status protocolStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL);
String mode = apcStateAttributes.get("mode");
InetAddress localIpV4Addr = null; InetAddress localIpV4Addr = null;
if (protocolStatus != null) { if (protocolStatus != null) {
@@ -2445,10 +2413,13 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
((EquipmentProtocolStatusData) protocolStatus.getDetails()).setLastApcUpdate(System.currentTimeMillis()); ((EquipmentProtocolStatusData) protocolStatus.getDetails()).setLastApcUpdate(System.currentTimeMillis());
((EquipmentProtocolStatusData) protocolStatus.getDetails()).setReportedApcAddress(drIpAddr); ((EquipmentProtocolStatusData) protocolStatus.getDetails()).setReportedApcAddress(drIpAddr);
((EquipmentProtocolStatusData) protocolStatus.getDetails()).setRadiusProxyAddress(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); protocolStatus = statusServiceInterface.update(protocolStatus);
LOG.info("Protocol Status updated for APC_State table monitor change {}", protocolStatus); LOG.info("Protocol Status updated for APC_State table monitor change {}", protocolStatus);
} }
String mode = apcStateAttributes.get("mode");
ApcElectionEvent electionEvent = ApcElectionEvent electionEvent =
new ApcElectionEvent(drIpAddr, bdrIpAddr, localIpV4Addr, drIpAddr, mode, Boolean.valueOf(apcStateAttributes.get("enabled")), new ApcElectionEvent(drIpAddr, bdrIpAddr, localIpV4Addr, drIpAddr, mode, Boolean.valueOf(apcStateAttributes.get("enabled")),
RealTimeEventType.APC_Election_event, customerId, ce.getLocationId(), equipmentId, System.currentTimeMillis()); RealTimeEventType.APC_Election_event, customerId, ce.getLocationId(), equipmentId, System.currentTimeMillis());

View File

@@ -1136,6 +1136,10 @@ public class MqttStatsPublisher {
int nonWifi = (busy - (busyTx + busyRx)) / totalDurationMs; int nonWifi = (busy - (busyTx + busyRx)) / totalDurationMs;
checkIfOutOfBound("nonWifi", nonWifi, survey, totalDurationMs, busyTx, busyRx, busy, busySelf); checkIfOutOfBound("nonWifi", nonWifi, survey, totalDurationMs, busyTx, busyRx, busy, busySelf);
radioUtil.setNonWifi(nonWifi); radioUtil.setNonWifi(nonWifi);
int pctOBSSAndSelfErrors = (busyRx - busySelf) / totalDurationMs;
checkIfOutOfBound("OBSSAndSelfErrors", pctOBSSAndSelfErrors, survey, totalDurationMs, busyTx, busyRx, busy, busySelf);
radioUtil.setUnassocClientRx(pctOBSSAndSelfErrors);
radioType = OvsdbToWlanCloudTypeMappingUtility.getRadioTypeFromOpensyncStatsRadioBandType(survey.getBand()); radioType = OvsdbToWlanCloudTypeMappingUtility.getRadioTypeFromOpensyncStatsRadioBandType(survey.getBand());
if (radioType != RadioType.UNSUPPORTED) { if (radioType != RadioType.UNSUPPORTED) {

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-ext-interface</artifactId> <artifactId>opensync-ext-interface</artifactId>
@@ -13,33 +13,33 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId> <artifactId>base-models</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-opensync-protobuf</artifactId> <artifactId>tip-wlan-opensync-protobuf</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>equipment-models</artifactId> <artifactId>equipment-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>profile-models</artifactId> <artifactId>profile-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>location-models</artifactId> <artifactId>location-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>routing-models</artifactId> <artifactId>routing-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-ext-static</artifactId> <artifactId>opensync-ext-static</artifactId>
@@ -13,7 +13,7 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway</artifactId> <artifactId>opensync-gateway</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway-build</artifactId> <artifactId>opensync-gateway-build</artifactId>

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway-cloud-docker</artifactId> <artifactId>opensync-gateway-cloud-docker</artifactId>
@@ -22,7 +22,7 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway-cloud-process</artifactId> <artifactId>opensync-gateway-cloud-process</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway-cloud-process</artifactId> <artifactId>opensync-gateway-cloud-process</artifactId>
@@ -20,95 +20,95 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-ext-cloud</artifactId> <artifactId>opensync-ext-cloud</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>filestore-service</artifactId> <artifactId>filestore-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>customer-service-remote</artifactId> <artifactId>customer-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>location-service-remote</artifactId> <artifactId>location-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>equipment-service-remote</artifactId> <artifactId>equipment-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>profile-service-remote</artifactId> <artifactId>profile-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>portal-user-service-remote</artifactId> <artifactId>portal-user-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>service-metric-service-remote</artifactId> <artifactId>service-metric-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>system-event-service-remote</artifactId> <artifactId>system-event-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>alarm-service-remote</artifactId> <artifactId>alarm-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>status-service-remote</artifactId> <artifactId>status-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>client-service-remote</artifactId> <artifactId>client-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>routing-service-remote</artifactId> <artifactId>routing-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>firmware-service-remote</artifactId> <artifactId>firmware-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>manufacturer-service-remote</artifactId> <artifactId>manufacturer-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>cloud-event-dispatcher-remote</artifactId> <artifactId>cloud-event-dispatcher-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway-static-docker</artifactId> <artifactId>opensync-gateway-static-docker</artifactId>
@@ -22,7 +22,7 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway-static-process</artifactId> <artifactId>opensync-gateway-static-process</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway-static-process</artifactId> <artifactId>opensync-gateway-static-process</artifactId>
@@ -18,7 +18,7 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-ext-static</artifactId> <artifactId>opensync-ext-static</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway</artifactId> <artifactId>opensync-gateway</artifactId>
@@ -14,22 +14,22 @@
<dependency> <dependency>
<artifactId>base-container</artifactId> <artifactId>base-container</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-ext-interface</artifactId> <artifactId>opensync-ext-interface</artifactId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>client-models</artifactId> <artifactId>client-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>customer-models</artifactId> <artifactId>customer-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.vmware.ovsdb</groupId> <groupId>com.vmware.ovsdb</groupId>
@@ -47,13 +47,13 @@
<dependency> <dependency>
<artifactId>service-metric-service-interface</artifactId> <artifactId>service-metric-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>status-service-interface</artifactId> <artifactId>status-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version> <version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util --> <!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util -->

View File

@@ -1,3 +1,4 @@
package com.telecominfraproject.wlan.opensync.ovsdb; package com.telecominfraproject.wlan.opensync.ovsdb;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
@@ -50,17 +51,13 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
private final TagList tags = CloudMetricsTags.commonTags; private final TagList tags = CloudMetricsTags.commonTags;
private final Counter connectionsAttempted = new BasicCounter( private final Counter connectionsAttempted = new BasicCounter(MonitorConfig.builder("osgw-connectionsAttempted").withTags(tags).build());
MonitorConfig.builder("osgw-connectionsAttempted").withTags(tags).build());
private final Counter connectionsFailed = new BasicCounter( private final Counter connectionsFailed = new BasicCounter(MonitorConfig.builder("osgw-connectionsFailed").withTags(tags).build());
MonitorConfig.builder("osgw-connectionsFailed").withTags(tags).build());
private final Counter connectionsCreated = new BasicCounter( private final Counter connectionsCreated = new BasicCounter(MonitorConfig.builder("osgw-connectionsCreated").withTags(tags).build());
MonitorConfig.builder("osgw-connectionsCreated").withTags(tags).build());
private final Counter connectionsDropped = new BasicCounter( private final Counter connectionsDropped = new BasicCounter(MonitorConfig.builder("osgw-connectionsDropped").withTags(tags).build());
MonitorConfig.builder("osgw-connectionsDropped").withTags(tags).build());
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listenPort:6640}") @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listenPort:6640}")
private int ovsdbListenPort; private int ovsdbListenPort;
@@ -127,8 +124,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
int localPort = ovsdbClient.getConnectionInfo().getLocalPort(); int localPort = ovsdbClient.getConnectionInfo().getLocalPort();
String subjectDn; String subjectDn;
try { try {
subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()) subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()).getSubjectDN().getName();
.getSubjectDN().getName();
String clientCn = SslUtil.extractCN(subjectDn); String clientCn = SslUtil.extractCN(subjectDn);
LOG.info("ovsdbClient connecting from {} on port {} clientCn {}", remoteHost, localPort, clientCn); LOG.info("ovsdbClient connecting from {} on port {} clientCn {}", remoteHost, localPort, clientCn);
@@ -189,8 +185,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
localPort = ovsdbClient.getConnectionInfo().getLocalPort(); localPort = ovsdbClient.getConnectionInfo().getLocalPort();
String subjectDn = null; String subjectDn = null;
try { try {
subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()) subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()).getSubjectDN().getName();
.getSubjectDN().getName();
} catch (Exception e) { } catch (Exception e) {
// do nothing // do nothing
} }
@@ -204,8 +199,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
LOG.debug("Unable to process ap disconnect. {}", e.getMessage()); LOG.debug("Unable to process ap disconnect. {}", e.getMessage());
} }
} }
LOG.info("ovsdbClient disconnected from {} on port {} clientCn {} AP {} ", remoteHost, localPort, LOG.info("ovsdbClient disconnected from {} on port {} clientCn {} AP {} ", remoteHost, localPort, clientCn, key);
clientCn, key);
LOG.info("ovsdbClient connectedClients = {}", ovsdbSessionMapInterface.getNumSessions()); LOG.info("ovsdbClient connectedClients = {}", ovsdbSessionMapInterface.getNumSessions());
} finally { } finally {
try { try {
@@ -228,8 +222,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
private void processConnectRequest(OvsdbClient ovsdbClient, String clientCn, ConnectNodeInfo connectNodeInfo) { private void processConnectRequest(OvsdbClient ovsdbClient, String clientCn, ConnectNodeInfo connectNodeInfo) {
LOG.debug("Starting Client connect"); LOG.debug("Starting Client connect");
connectNodeInfo = ovsdbDao.updateConnectNodeInfoOnConnect(ovsdbClient, clientCn, connectNodeInfo, connectNodeInfo = ovsdbDao.updateConnectNodeInfoOnConnect(ovsdbClient, clientCn, connectNodeInfo, preventClientCnAlteration);
preventClientCnAlteration);
// successfully connected - register it in our // successfully connected - register it in our
// connectedClients table // connectedClients table
@@ -319,7 +312,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
ovsdbDao.removeRadsecRadiusAndRealmConfigs(ovsdbClient); ovsdbDao.removeRadsecRadiusAndRealmConfigs(ovsdbClient);
extIntegrationInterface.clearEquipmentStatus(apId); extIntegrationInterface.clearEquipmentStatus(apId);
ovsdbDao.configureNode(ovsdbClient, opensyncAPConfig); ovsdbDao.configureNode(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig); ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig); ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
@@ -413,27 +406,24 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
} catch (OvsdbClientException e) { } catch (OvsdbClientException e) {
LOG.debug("Could not enable monitor for Node_State table. {}", e.getMessage()); LOG.debug("Could not enable monitor for Node_State table. {}", e.getMessage());
} }
try { try {
if (ovsdbClient.getSchema(OvsdbDao.ovsdbName).get().getTables().containsKey("APC_State")) { if (ovsdbClient.getSchema(OvsdbDao.ovsdbName).get().getTables().containsKey("APC_State")) {
monitorAPCStateTable(ovsdbClient, key); monitorAPCStateTable(ovsdbClient, key);
} }
} catch (InterruptedException | ExecutionException | OvsdbClientException e) { } 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); LOG.debug("Finished (re)setting monitors for AP {}", key);
} }
private void monitorDhcpLeasedIpDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { private void monitorDhcpLeasedIpDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.dhcpLeasedIpDbTable + "_" + key,
OvsdbDao.dhcpLeasedIpDbTable + "_" + key, new MonitorRequests(ImmutableMap.of(OvsdbDao.dhcpLeasedIpDbTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))),
new MonitorRequests(ImmutableMap.of(OvsdbDao.dhcpLeasedIpDbTable,
new MonitorRequest(new MonitorSelect(true, true, true, true)))),
tableUpdates -> { tableUpdates -> {
try { try {
LOG.info(OvsdbDao.dhcpLeasedIpDbTable + "_" + key + " monitor callback received {}", LOG.info(OvsdbDao.dhcpLeasedIpDbTable + "_" + key + " monitor callback received {}", tableUpdates);
tableUpdates);
List<Map<String, String>> insert = new ArrayList<>(); List<Map<String, String>> insert = new ArrayList<>();
List<Map<String, String>> delete = new ArrayList<>(); List<Map<String, String>> delete = new ArrayList<>();
@@ -445,8 +435,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
if (rowUpdate.getNew() == null) { if (rowUpdate.getNew() == null) {
Map<String, String> rowMap = new HashMap<>(); Map<String, String> rowMap = new HashMap<>();
rowUpdate.getOld().getColumns().entrySet() rowUpdate.getOld().getColumns().entrySet().forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap));
.forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap));
delete.add(rowMap); delete.add(rowMap);
// delete // delete
@@ -454,8 +443,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
// insert // insert
Map<String, String> rowMap = new HashMap<>(); Map<String, String> rowMap = new HashMap<>();
rowUpdate.getNew().getColumns().entrySet() rowUpdate.getNew().getColumns().entrySet().forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap));
.forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap));
insert.add(rowMap); insert.add(rowMap);
} else { } else {
@@ -464,8 +452,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
Map<String, String> rowMap = new HashMap<>(); Map<String, String> rowMap = new HashMap<>();
rowUpdate.getOld().getColumns().putAll(rowUpdate.getNew().getColumns()); rowUpdate.getOld().getColumns().putAll(rowUpdate.getNew().getColumns());
rowUpdate.getOld().getColumns().entrySet() rowUpdate.getOld().getColumns().entrySet().forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap));
.forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap));
update.add(rowMap); update.add(rowMap);
@@ -498,13 +485,10 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
private void monitorCommandStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { private void monitorCommandStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
CompletableFuture<TableUpdates> csCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, CompletableFuture<TableUpdates> csCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.commandStateDbTable + "_" + key,
OvsdbDao.commandStateDbTable + "_" + key, new MonitorRequests(ImmutableMap.of(OvsdbDao.commandStateDbTable, new MonitorRequest())), tableUpdates -> {
new MonitorRequests(ImmutableMap.of(OvsdbDao.commandStateDbTable, new MonitorRequest())),
tableUpdates -> {
try { try {
LOG.info(OvsdbDao.commandStateDbTable + "_" + key + " monitor callback received {}", LOG.info(OvsdbDao.commandStateDbTable + "_" + key + " monitor callback received {}", tableUpdates);
tableUpdates);
List<Map<String, String>> insert = new ArrayList<>(); List<Map<String, String>> insert = new ArrayList<>();
List<Map<String, String>> delete = new ArrayList<>(); List<Map<String, String>> delete = new ArrayList<>();
@@ -516,8 +500,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
if (rowUpdate.getNew() == null) { if (rowUpdate.getNew() == null) {
Map<String, String> rowMap = new HashMap<>(); Map<String, String> rowMap = new HashMap<>();
rowUpdate.getOld().getColumns() rowUpdate.getOld().getColumns().forEach((key1, value) -> rowMap.put(key1, value.toString()));
.forEach((key1, value) -> rowMap.put(key1, value.toString()));
delete.add(rowMap); delete.add(rowMap);
// delete // delete
@@ -525,8 +508,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
// insert // insert
Map<String, String> rowMap = new HashMap<>(); Map<String, String> rowMap = new HashMap<>();
rowUpdate.getNew().getColumns() rowUpdate.getNew().getColumns().forEach((key1, value) -> rowMap.put(key1, value.toString()));
.forEach((key1, value) -> rowMap.put(key1, value.toString()));
insert.add(rowMap); insert.add(rowMap);
} else { } else {
@@ -535,8 +517,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
Map<String, String> rowMap = new HashMap<>(); Map<String, String> rowMap = new HashMap<>();
rowUpdate.getOld().getColumns().putAll(rowUpdate.getNew().getColumns()); rowUpdate.getOld().getColumns().putAll(rowUpdate.getNew().getColumns());
rowUpdate.getOld().getColumns() rowUpdate.getOld().getColumns().forEach((key1, value) -> rowMap.put(key1, value.toString()));
.forEach((key1, value) -> rowMap.put(key1, value.toString()));
update.add(rowMap); update.add(rowMap);
@@ -568,33 +549,27 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
} }
private void monitorAwlanNodeDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { private void monitorAwlanNodeDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.awlanNodeDbTable + "_" + key,
OvsdbDao.awlanNodeDbTable + "_" + key, new MonitorRequests(ImmutableMap.of(OvsdbDao.awlanNodeDbTable, new MonitorRequests(ImmutableMap.of(OvsdbDao.awlanNodeDbTable, new MonitorRequest(new MonitorSelect(true, false, false, true)))),
new MonitorRequest(new MonitorSelect(true, false, false, true)))),
tableUpdates -> { tableUpdates -> {
try { try {
LOG.info(OvsdbDao.awlanNodeDbTable + "_" + key + " monitor callback received {}", tableUpdates); LOG.info(OvsdbDao.awlanNodeDbTable + "_" + key + " monitor callback received {}", tableUpdates);
extIntegrationInterface.awlanNodeDbTableUpdate( extIntegrationInterface.awlanNodeDbTableUpdate(ovsdbDao.getOpensyncAWLANNode(tableUpdates, key, ovsdbClient), key);
ovsdbDao.getOpensyncAWLANNode(tableUpdates, key, ovsdbClient), key);
} catch (Exception e) { } catch (Exception e) {
LOG.error("awlanNodeDbTableUpdate failed", e); LOG.error("awlanNodeDbTableUpdate failed", e);
} }
}); });
extIntegrationInterface.awlanNodeDbTableUpdate(ovsdbDao.getOpensyncAWLANNode(awCf.join(), key, ovsdbClient), extIntegrationInterface.awlanNodeDbTableUpdate(ovsdbDao.getOpensyncAWLANNode(awCf.join(), key, ovsdbClient), key);
key);
} }
private void monitorWifiAssociatedClientsDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { private void monitorWifiAssociatedClientsDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
CompletableFuture<TableUpdates> acCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, CompletableFuture<TableUpdates> acCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiAssociatedClientsDbTable + "_" + key,
OvsdbDao.wifiAssociatedClientsDbTable + "_" + key, new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiAssociatedClientsDbTable, new MonitorRequest())), tableUpdates -> {
new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiAssociatedClientsDbTable, new MonitorRequest())),
tableUpdates -> {
try { try {
LOG.info(OvsdbDao.wifiAssociatedClientsDbTable + "_" + key + " monitor callback received {}", LOG.info(OvsdbDao.wifiAssociatedClientsDbTable + "_" + key + " monitor callback received {}", tableUpdates);
tableUpdates);
List<OpensyncWifiAssociatedClients> associatedClients = new ArrayList<>(); List<OpensyncWifiAssociatedClients> associatedClients = new ArrayList<>();
@@ -611,8 +586,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
// adding anyway. // adding anyway.
extIntegrationInterface.wifiAssociatedClientsDbTableDelete(deletedClientMac, key); extIntegrationInterface.wifiAssociatedClientsDbTableDelete(deletedClientMac, key);
} else { } else {
associatedClients.addAll( associatedClients.addAll(ovsdbDao.getOpensyncWifiAssociatedClients(rowUpdate, key, ovsdbClient));
ovsdbDao.getOpensyncWifiAssociatedClients(rowUpdate, key, ovsdbClient));
} }
} }
@@ -626,20 +600,16 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
}); });
extIntegrationInterface.wifiAssociatedClientsDbTableUpdate( extIntegrationInterface.wifiAssociatedClientsDbTableUpdate(ovsdbDao.getInitialOpensyncWifiAssociatedClients(acCf.join(), key, ovsdbClient), key);
ovsdbDao.getInitialOpensyncWifiAssociatedClients(acCf.join(), key, ovsdbClient), key);
} }
private void monitorWifiInetStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { private void monitorWifiInetStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
CompletableFuture<TableUpdates> isCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, CompletableFuture<TableUpdates> isCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiInetStateDbTable + "_" + key,
OvsdbDao.wifiInetStateDbTable + "_" + key, new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiInetStateDbTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))),
new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiInetStateDbTable,
new MonitorRequest(new MonitorSelect(true, true, true, true)))),
tableUpdates -> { tableUpdates -> {
try { try {
LOG.info(OvsdbDao.wifiInetStateDbTable + "_" + key + " monitor callback received {}", LOG.info(OvsdbDao.wifiInetStateDbTable + "_" + key + " monitor callback received {}", tableUpdates);
tableUpdates);
List<OpensyncAPInetState> inetStateInsertOrUpdate = new ArrayList<>(); List<OpensyncAPInetState> inetStateInsertOrUpdate = new ArrayList<>();
List<OpensyncAPInetState> inetStateDelete = new ArrayList<>(); List<OpensyncAPInetState> inetStateDelete = new ArrayList<>();
@@ -649,11 +619,9 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) { for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
if (rowUpdate.getNew() == null) { if (rowUpdate.getNew() == null) {
inetStateDelete.addAll( inetStateDelete.addAll(ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
} else { } else {
inetStateInsertOrUpdate.addAll( inetStateInsertOrUpdate.addAll(ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
} }
} }
@@ -670,42 +638,33 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
}); });
extIntegrationInterface.wifiInetStateDbTableUpdate( extIntegrationInterface.wifiInetStateDbTableUpdate(ovsdbDao.getInitialOpensyncApInetStateForRowUpdate(isCf.join(), key, ovsdbClient), key);
ovsdbDao.getInitialOpensyncApInetStateForRowUpdate(isCf.join(), key, ovsdbClient), key);
} }
private void monitorWifiRadioStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { private void monitorWifiRadioStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
CompletableFuture<TableUpdates> rsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, CompletableFuture<TableUpdates> rsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiRadioStateDbTable + "_" + key,
OvsdbDao.wifiRadioStateDbTable + "_" + key, new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiRadioStateDbTable, new MonitorRequest(new MonitorSelect(true, false, false, true)))),
new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiRadioStateDbTable,
new MonitorRequest(new MonitorSelect(true, false, false, true)))),
tableUpdates -> { tableUpdates -> {
try { try {
LOG.info(OvsdbDao.wifiRadioStateDbTable + "_" + key + " monitor callback received {}", LOG.info(OvsdbDao.wifiRadioStateDbTable + "_" + key + " monitor callback received {}", tableUpdates);
tableUpdates);
extIntegrationInterface.wifiRadioStatusDbTableUpdate( extIntegrationInterface.wifiRadioStatusDbTableUpdate(ovsdbDao.getOpensyncAPRadioState(tableUpdates, key, ovsdbClient), key);
ovsdbDao.getOpensyncAPRadioState(tableUpdates, key, ovsdbClient), key);
} catch (Exception e) { } catch (Exception e) {
LOG.error("wifiRadioStatusDbTableUpdate failed", e); LOG.error("wifiRadioStatusDbTableUpdate failed", e);
} }
}); });
extIntegrationInterface extIntegrationInterface.wifiRadioStatusDbTableUpdate(ovsdbDao.getOpensyncAPRadioState(rsCf.join(), key, ovsdbClient), key);
.wifiRadioStatusDbTableUpdate(ovsdbDao.getOpensyncAPRadioState(rsCf.join(), key, ovsdbClient), key);
} }
private void monitorWifiVifStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { private void monitorWifiVifStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
CompletableFuture<TableUpdates> vsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, CompletableFuture<TableUpdates> vsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiVifStateDbTable + "_" + key,
OvsdbDao.wifiVifStateDbTable + "_" + key, new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiVifStateDbTable, new MonitorRequest(new MonitorSelect(false, true, true, true)))),
new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiVifStateDbTable,
new MonitorRequest(new MonitorSelect(false, true, true, true)))),
tableUpdates -> { tableUpdates -> {
try { try {
LOG.info(OvsdbDao.wifiVifStateDbTable + "_" + key + " monitor callback received {}", LOG.info(OvsdbDao.wifiVifStateDbTable + "_" + key + " monitor callback received {}", tableUpdates);
tableUpdates);
List<OpensyncAPVIFState> vifsToDelete = new ArrayList<>(); List<OpensyncAPVIFState> vifsToDelete = new ArrayList<>();
List<OpensyncAPVIFState> vifsToInsertOrUpdate = new ArrayList<>(); List<OpensyncAPVIFState> vifsToInsertOrUpdate = new ArrayList<>();
@@ -715,14 +674,12 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
if (rowUpdate.getNew() == null) { if (rowUpdate.getNew() == null) {
// this is a deletion // this is a deletion
vifsToDelete.addAll( vifsToDelete.addAll(ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient));
ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient));
} else { } else {
// either an insert or // either an insert or
// mutuate/update // mutuate/update
vifsToInsertOrUpdate.addAll( vifsToInsertOrUpdate.addAll(ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient));
ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient));
} }
@@ -747,10 +704,8 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
} }
private void monitorNodeStateTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { private void monitorNodeStateTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
CompletableFuture<TableUpdates> nsCf = ovsdbClient.monitor( CompletableFuture<TableUpdates> nsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.nodeStateTable + "_" + key,
OvsdbDao.ovsdbName, OvsdbDao.nodeStateTable + "_" + key, new MonitorRequests(ImmutableMap new MonitorRequests(ImmutableMap.of(OvsdbDao.nodeStateTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))), tableUpdates -> {
.of(OvsdbDao.nodeStateTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))),
tableUpdates -> {
LOG.info(OvsdbDao.nodeStateTable + "_" + key + " monitor callback received {}"); LOG.info(OvsdbDao.nodeStateTable + "_" + key + " monitor callback received {}");
tableUpdates.getTableUpdates().forEach((key1, value) -> { tableUpdates.getTableUpdates().forEach((key1, value) -> {
LOG.info("TableUpdate for {}", key1); LOG.info("TableUpdate for {}", key1);
@@ -769,10 +724,8 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
} }
private void monitorAPCStateTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException { private void monitorAPCStateTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
CompletableFuture<TableUpdates> nsCf = ovsdbClient.monitor( CompletableFuture<TableUpdates> nsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.apcStateDbTable + "_" + key,
OvsdbDao.ovsdbName, OvsdbDao.apcStateDbTable + "_" + key, new MonitorRequests(ImmutableMap new MonitorRequests(ImmutableMap.of(OvsdbDao.apcStateDbTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))), tableUpdates -> {
.of(OvsdbDao.apcStateDbTable, new MonitorRequest(new MonitorSelect(true, false, false, true)))),
tableUpdates -> {
LOG.info(OvsdbDao.apcStateDbTable + "_" + key + " monitor callback received {}"); LOG.info(OvsdbDao.apcStateDbTable + "_" + key + " monitor callback received {}");
tableUpdates.getTableUpdates().forEach((key1, value) -> { tableUpdates.getTableUpdates().forEach((key1, value) -> {
LOG.info("TableUpdate for {}", key1); LOG.info("TableUpdate for {}", key1);
@@ -780,14 +733,19 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
Map<String, String> apcStateAttributes = ovsdbDao.getAPCState(r, key); Map<String, String> apcStateAttributes = ovsdbDao.getAPCState(r, key);
extIntegrationInterface.apcStateDbTableUpdate(apcStateAttributes, key, extIntegrationInterface.apcStateDbTableUpdate(apcStateAttributes, key, RowUpdateOperation.MODIFY);
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 @Override
@@ -837,8 +795,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
@Override @Override
public String startDebugEngine(String apId, String gatewayHostname, Integer gatewayPort) { public String startDebugEngine(String apId, String gatewayHostname, Integer gatewayPort) {
LOG.debug("TipWlanOvsdbClient::startDebugEngine apId {} gatewayHostname {} gatewayPort {}", apId, LOG.debug("TipWlanOvsdbClient::startDebugEngine apId {} gatewayHostname {} gatewayPort {}", apId, gatewayHostname, gatewayPort);
gatewayHostname, gatewayPort);
try { try {
OvsdbSession session = ovsdbSessionMapInterface.getSession(apId); OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
@@ -846,17 +803,14 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
Map<String, String> payload = new HashMap<>(); Map<String, String> payload = new HashMap<>();
payload.put("gateway_hostname", gatewayHostname); payload.put("gateway_hostname", gatewayHostname);
payload.put("gateway_port", gatewayPort.toString()); payload.put("gateway_port", gatewayPort.toString());
ovsdbDao.configureCommands(ovsdbClient, OvsdbDao.StartDebugEngineApCommand, payload, 0L, ovsdbDao.configureCommands(ovsdbClient, OvsdbDao.StartDebugEngineApCommand, payload, 0L, defaultCommandDurationSec);
defaultCommandDurationSec);
LOG.debug("Started debug engine on AP {} with gateway {} port {}", apId, gatewayHostname, gatewayPort); 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; return "Started debug engine on AP " + apId + " with gateway " + gatewayHostname + " port " + gatewayPort;
} catch (Exception e) { } catch (Exception e) {
LOG.error( LOG.error("TipWlanOvsdbClient::startDebugEngine Failed to start debug engine on AP {} with gateway {} port {}", apId, gatewayHostname, gatewayPort,
"TipWlanOvsdbClient::startDebugEngine Failed to start debug engine on AP {} with gateway {} port {}", e);
apId, gatewayHostname, gatewayPort, e); return "Failed to start debug engine on AP " + apId + " with gateway " + gatewayHostname + " port " + gatewayPort;
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) { } catch (Exception e) {
if (switchBanks) { if (switchBanks) {
LOG.debug("TipWlanOvsdbClient::processRebootRequest failed to trigger switch software bank on AP {}", LOG.debug("TipWlanOvsdbClient::processRebootRequest failed to trigger switch software bank on AP {}", apId, e);
apId, e);
return "failed to trigger switch software bank on AP " + apId; return "failed to trigger switch software bank on AP " + apId;
} else { } else {
LOG.error("TipWlanOvsdbClient::processRebootRequest failed to trigger reboot of AP {}", apId, e); LOG.error("TipWlanOvsdbClient::processRebootRequest failed to trigger reboot of AP {}", apId, e);
@@ -948,25 +901,21 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
return key; return key;
} }
public String processNewChannelsRequest(String apId, Map<RadioType, Integer> backupChannelMap, public String processNewChannelsRequest(String apId, Map<RadioType, Integer> backupChannelMap, Map<RadioType, Integer> primaryChannelMap) {
Map<RadioType, Integer> primaryChannelMap) {
LOG.info("TipWlanOvsdbClient::processNewChannelsRequest for AP {}", apId); LOG.info("TipWlanOvsdbClient::processNewChannelsRequest for AP {}", apId);
try { try {
OvsdbSession session = ovsdbSessionMapInterface.getSession(apId); OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
OvsdbClient ovsdbClient = session.getOvsdbClient(); OvsdbClient ovsdbClient = session.getOvsdbClient();
ovsdbDao.processNewChannelsRequest(ovsdbClient, backupChannelMap, primaryChannelMap); ovsdbDao.processNewChannelsRequest(ovsdbClient, backupChannelMap, primaryChannelMap);
LOG.info("TipWlanOvsdbClient::processNewChannelsRequest change backup and/or primary channels for AP {}", LOG.info("TipWlanOvsdbClient::processNewChannelsRequest change backup and/or primary channels for AP {}", apId);
apId);
return " change backup and/or primary channels for AP " + apId; return " change backup and/or primary channels for AP " + apId;
} catch (Exception e) { } catch (Exception e) {
LOG.error( LOG.error("TipWlanOvsdbClient::processNewChannelsRequest failed to change backup and/or primary channels for AP {}", apId, e);
"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; return "failed to change backup and/or primary channels for AP " + apId;
} }
} }
public String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap) { public String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap) {
LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest for AP {}", apId); LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest for AP {}", apId);
@@ -974,13 +923,10 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
OvsdbSession session = ovsdbSessionMapInterface.getSession(apId); OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
OvsdbClient ovsdbClient = session.getOvsdbClient(); OvsdbClient ovsdbClient = session.getOvsdbClient();
ovsdbDao.processCellSizeAttributesRequest(ovsdbClient, cellSizeAttributeMap); ovsdbDao.processCellSizeAttributesRequest(ovsdbClient, cellSizeAttributeMap);
LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest change cellSizeAttributes for AP {}", LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest change cellSizeAttributes for AP {}", apId);
apId);
return " change cell size attributes for AP " + apId; return " change cell size attributes for AP " + apId;
} catch (Exception e) { } catch (Exception e) {
LOG.error( LOG.error("TipWlanOvsdbClient::processCellSizeAttributesRequest failed to change cell size attributes for AP {}", apId, e);
"TipWlanOvsdbClient::processCellSizeAttributesRequest failed to change cell size attributes for AP {}",
apId, e);
return "failed to change cell size attributes for AP " + apId; return "failed to change cell size attributes for AP " + apId;
} }
} }

View File

@@ -1,8 +1,8 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao; package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import com.telecominfraproject.wlan.core.model.equipment.ChannelBandwidth; import com.telecominfraproject.wlan.core.model.equipment.ChannelBandwidth;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.equipment.SourceType;
import com.telecominfraproject.wlan.equipment.models.*; import com.telecominfraproject.wlan.equipment.models.*;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiRadioConfigInfo; import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiRadioConfigInfo;
@@ -34,8 +34,7 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
void configureWifiRadios(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { void configureWifiRadios(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
String country = opensyncAPConfig.getCountryCode(); // should be the String country = opensyncAPConfig.getCountryCode(); // should be the
ApElementConfiguration apElementConfiguration = (ApElementConfiguration) opensyncAPConfig.getCustomerEquipment() ApElementConfiguration apElementConfiguration = (ApElementConfiguration) opensyncAPConfig.getCustomerEquipment().getDetails();
.getDetails();
RfConfiguration rfConfig = (RfConfiguration) opensyncAPConfig.getRfProfile().getDetails(); RfConfiguration rfConfig = (RfConfiguration) opensyncAPConfig.getRfProfile().getDetails();
Map<String, WifiRadioConfigInfo> provisionedRadioConfigs = ovsdbGet.getProvisionedWifiRadioConfigs(ovsdbClient); Map<String, WifiRadioConfigInfo> provisionedRadioConfigs = ovsdbGet.getProvisionedWifiRadioConfigs(ovsdbClient);
Map<String, WifiVifConfigInfo> vifConfigs = ovsdbGet.getProvisionedWifiVifConfigs(ovsdbClient); Map<String, WifiVifConfigInfo> vifConfigs = ovsdbGet.getProvisionedWifiVifConfigs(ovsdbClient);
@@ -44,20 +43,26 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
Map<String, String> hwConfig = new HashMap<>(); Map<String, String> hwConfig = new HashMap<>();
ElementRadioConfiguration elementRadioConfig = apElementConfiguration.getRadioMap().get(radioType); ElementRadioConfiguration elementRadioConfig = apElementConfiguration.getRadioMap().get(radioType);
RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType); RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType);
if (elementRadioConfig == null || rfElementConfig == null) {
continue;
}
boolean autoChannelSelection = rfElementConfig.getAutoChannelSelection(); boolean autoChannelSelection = rfElementConfig.getAutoChannelSelection();
int channel = elementRadioConfig.getActiveChannel(autoChannelSelection); int channel = elementRadioConfig.getActiveChannel(autoChannelSelection);
LOG.debug("configureWifiRadios autoChannelSelection {} activeChannel {} getChannelNumber {} ", LOG.debug("configureWifiRadios autoChannelSelection {} activeChannel {} getChannelNumber {} ", autoChannelSelection, channel,
autoChannelSelection, channel, elementRadioConfig.getChannelNumber()); elementRadioConfig.getChannelNumber());
ChannelBandwidth bandwidth = rfElementConfig.getChannelBandwidth(); ChannelBandwidth bandwidth = rfElementConfig.getChannelBandwidth();
String ht_mode = getBandwidth(bandwidth); String ht_mode = getBandwidth(bandwidth);
RadioConfiguration radioConfig = apElementConfiguration.getAdvancedRadioMap().get(radioType); RadioConfiguration radioConfig = apElementConfiguration.getAdvancedRadioMap().get(radioType);
int beaconInterval = rfElementConfig.getBeaconInterval(); int beaconInterval = rfElementConfig.getBeaconInterval();
boolean enabled = radioConfig.getRadioAdminState().equals(StateSetting.enabled); boolean enabled = radioConfig.getRadioAdminState().equals(StateSetting.enabled);
int txPower; boolean autoCellSizeSelection = rfElementConfig.getAutoCellSizeSelection();
if (elementRadioConfig.getEirpTxPower().getSource() == SourceType.profile) { int txPower = 0;
txPower = rfElementConfig.getEirpTxPower(); if (autoCellSizeSelection) {
if (elementRadioConfig.getEirpTxPower() != null) {
txPower = elementRadioConfig.getEirpTxPower().getValue();
}
} else { } else {
txPower = elementRadioConfig.getEirpTxPower().getValue(); txPower = rfElementConfig.getEirpTxPower();
} }
String hwMode = getHwMode(rfElementConfig); String hwMode = getHwMode(rfElementConfig);
String freqBand = getHwConfigAndFreq(radioType, hwConfig); String freqBand = getHwConfigAndFreq(radioType, hwConfig);
@@ -68,7 +73,8 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
break; break;
} }
} }
if (radioName == null) continue; if (radioName == null)
continue;
String ifName = null; // for vifConfigs String ifName = null; // for vifConfigs
if (radioName.equals(radio0)) { if (radioName.equals(radio0)) {
ifName = defaultRadio0; ifName = defaultRadio0;
@@ -77,7 +83,8 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
} else if (radioName.equals(radio2)) { } else if (radioName.equals(radio2)) {
ifName = defaultRadio2; ifName = defaultRadio2;
} }
if (ifName == null) continue; if (ifName == null)
continue;
Set<Uuid> vifUuidsForRadio = new HashSet<>(); Set<Uuid> vifUuidsForRadio = new HashSet<>();
for (String key : vifConfigs.keySet()) { for (String key : vifConfigs.keySet()) {
if (key.contains(ifName)) if (key.contains(ifName))
@@ -86,14 +93,14 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
int mimoMode = MimoMode.none.getId(); int mimoMode = MimoMode.none.getId();
if (rfElementConfig.getMimoMode() != null) { if (rfElementConfig.getMimoMode() != null) {
mimoMode = rfElementConfig.getMimoMode().getId(); mimoMode = rfElementConfig.getMimoMode().getId();
} }
int maxNumClients = 0; int maxNumClients = 0;
if (rfElementConfig.getMaxNumClients() != null) { if (rfElementConfig.getMaxNumClients() != null) {
maxNumClients = rfElementConfig.getMaxNumClients(); maxNumClients = rfElementConfig.getMaxNumClients();
} }
try { try {
configureWifiRadios(freqBand, channel, hwConfig, country.toUpperCase(), beaconInterval, configureWifiRadios(freqBand, channel, hwConfig, country.toUpperCase(), beaconInterval, enabled, hwMode, ht_mode, txPower, mimoMode,
enabled, hwMode, ht_mode, txPower, mimoMode, vifUuidsForRadio, operations, maxNumClients); vifUuidsForRadio, operations, maxNumClients);
} catch (OvsdbClientException e) { } catch (OvsdbClientException e) {
LOG.error("ConfigureWifiRadios failed with OvsdbClient exception.", e); LOG.error("ConfigureWifiRadios failed with OvsdbClient exception.", e);
throw new RuntimeException(e); throw new RuntimeException(e);
@@ -115,73 +122,74 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
LOG.debug("Op Result {}", res); LOG.debug("Op Result {}", res);
} }
} catch (OvsdbClientException | ExecutionException | InterruptedException | TimeoutException e) { } catch (OvsdbClientException | ExecutionException | InterruptedException | TimeoutException e) {
LOG.error("configureWifiRadios error", e); throw new RuntimeException(e); LOG.error("configureWifiRadios error", e);
throw new RuntimeException(e);
} }
} }
String getHwConfigAndFreq(RadioType radioType, Map<String, String> hwConfig) { String getHwConfigAndFreq(RadioType radioType, Map<String, String> hwConfig) {
switch (radioType) { switch (radioType) {
case is2dot4GHz: case is2dot4GHz:
return "2.4G"; return "2.4G";
case is5GHz: case is5GHz:
// 802.11h dfs (Dynamic Frequency Selection) aka military // 802.11h dfs (Dynamic Frequency Selection) aka military
// and // and
// weather radar // weather radar
// avoidance protocol // avoidance protocol
// Must not be disabled (by law) // Must not be disabled (by law)
// NA for 2.4GHz // NA for 2.4GHz
hwConfig.put("dfs_enable", "1"); hwConfig.put("dfs_enable", "1");
hwConfig.put("dfs_ignorecac", "0"); hwConfig.put("dfs_ignorecac", "0");
hwConfig.put("dfs_usenol", "1"); hwConfig.put("dfs_usenol", "1");
return "5G"; return "5G";
case is5GHzL: case is5GHzL:
// 802.11h dfs (Dynamic Frequency Selection) aka military // 802.11h dfs (Dynamic Frequency Selection) aka military
// and // and
// weather radar // weather radar
// avoidance protocol // avoidance protocol
// Must not be disabled (by law) // Must not be disabled (by law)
// NA for 2.4GHz // NA for 2.4GHz
hwConfig.put("dfs_enable", "1"); hwConfig.put("dfs_enable", "1");
hwConfig.put("dfs_ignorecac", "0"); hwConfig.put("dfs_ignorecac", "0");
hwConfig.put("dfs_usenol", "1"); hwConfig.put("dfs_usenol", "1");
return "5GL"; return "5GL";
case is5GHzU: case is5GHzU:
// 802.11h dfs (Dynamic Frequency Selection) aka military // 802.11h dfs (Dynamic Frequency Selection) aka military
// and // and
// weather radar // weather radar
// avoidance protocol // avoidance protocol
// Must not be disabled (by law) // Must not be disabled (by law)
// NA for 2.4GHz // NA for 2.4GHz
hwConfig.put("dfs_enable", "1"); hwConfig.put("dfs_enable", "1");
hwConfig.put("dfs_ignorecac", "0"); hwConfig.put("dfs_ignorecac", "0");
hwConfig.put("dfs_usenol", "1"); hwConfig.put("dfs_usenol", "1");
return "5GU"; return "5GU";
default: // don't know this interface default: // don't know this interface
return null; return null;
} }
} }
private String getBandwidth(ChannelBandwidth bandwidth) { private String getBandwidth(ChannelBandwidth bandwidth) {
String ht_mode; String ht_mode;
switch (bandwidth) { switch (bandwidth) {
case is20MHz: case is20MHz:
ht_mode = "HT20"; ht_mode = "HT20";
break; break;
case is40MHz: case is40MHz:
ht_mode = "HT40"; ht_mode = "HT40";
break; break;
case is80MHz: case is80MHz:
ht_mode = "HT80"; ht_mode = "HT80";
break; break;
case is160MHz: case is160MHz:
ht_mode = "HT160"; ht_mode = "HT160";
break; break;
case auto: case auto:
ht_mode = "0"; ht_mode = "0";
break; break;
default: default:
ht_mode = null; ht_mode = null;
} }
return ht_mode; return ht_mode;
} }
@@ -189,43 +197,46 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
String getHwMode(RfElementConfiguration rfElementConfig) { String getHwMode(RfElementConfiguration rfElementConfig) {
String hwMode = null; String hwMode = null;
switch (rfElementConfig.getRadioMode()) { switch (rfElementConfig.getRadioMode()) {
case modeA: case modeA:
hwMode = "11a"; hwMode = "11a";
break; break;
case modeAB: case modeAB:
hwMode = "11ab"; hwMode = "11ab";
break; break;
case modeAC: case modeAC:
hwMode = "11ac"; hwMode = "11ac";
break; break;
case modeB: case modeB:
hwMode = "11b"; hwMode = "11b";
break; break;
case modeG: case modeG:
hwMode = "11g"; hwMode = "11g";
break; break;
case modeAX: case modeAX:
hwMode = "11ax"; hwMode = "11ax";
break; break;
case modeN: case modeN:
hwMode = "11n"; hwMode = "11n";
break; break;
default: // case auto:
// TODO: enable when AP supports
// hwMode = "auto";
// break;
default:
} }
return hwMode; return hwMode;
} }
void configureWifiRadios(String freqBand, int channel, Map<String, String> hwConfig, void configureWifiRadios(String freqBand, int channel, Map<String, String> hwConfig, String country, int beaconInterval, boolean enabled, String hwMode,
String country, int beaconInterval, boolean enabled, String hwMode, String ht_mode, int txPower, String ht_mode, int txPower, int mimoMode, Set<Uuid> vifUuidsForRadio, List<Operation> operations, int maxNumClients)
int mimoMode, Set<Uuid> vifUuidsForRadio, List<Operation> operations, int maxNumClients) throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException { throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException {
Map<String, Value> updateColumns = new HashMap<>(); Map<String, Value> updateColumns = new HashMap<>();
List<Condition> conditions = new ArrayList<>(); List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("freq_band", Function.EQUALS, new Atom<>(freqBand))); conditions.add(new Condition("freq_band", Function.EQUALS, new Atom<>(freqBand)));
updateColumns.put("channel", new Atom<>(channel)); updateColumns.put("channel", new Atom<>(channel));
updateColumns.put("country", new Atom<>(country)); updateColumns.put("country", new Atom<>(country));
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> hwConfigMap = com.vmware.ovsdb.protocol.operation.notation.Map com.vmware.ovsdb.protocol.operation.notation.Map<String, String> hwConfigMap = com.vmware.ovsdb.protocol.operation.notation.Map.of(hwConfig);
.of(hwConfig);
updateColumns.put("hw_config", hwConfigMap); updateColumns.put("hw_config", hwConfigMap);
updateColumns.put("bcn_int", new Atom<>(beaconInterval)); updateColumns.put("bcn_int", new Atom<>(beaconInterval));
updateColumns.put("enabled", new Atom<>(enabled)); updateColumns.put("enabled", new Atom<>(enabled));
@@ -245,8 +256,7 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
configureCustomOptionsMap(maxNumClients, updateColumns); configureCustomOptionsMap(maxNumClients, updateColumns);
setTxAndRxChainmask(mimoMode, updateColumns); setTxAndRxChainmask(mimoMode, updateColumns);
if (vifUuidsForRadio.size() > 0) { if (vifUuidsForRadio.size() > 0) {
com.vmware.ovsdb.protocol.operation.notation.Set vifConfigUuids = com.vmware.ovsdb.protocol.operation.notation.Set com.vmware.ovsdb.protocol.operation.notation.Set vifConfigUuids = com.vmware.ovsdb.protocol.operation.notation.Set.of(vifUuidsForRadio);
.of(vifUuidsForRadio);
updateColumns.put("vif_configs", vifConfigUuids); updateColumns.put("vif_configs", vifConfigUuids);
} }
Row row = new Row(updateColumns); Row row = new Row(updateColumns);
@@ -254,31 +264,58 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
} }
void configureCustomOptionsMap(int maxNumClients, Map<String, Value> updateColumns) { void configureCustomOptionsMap(int maxNumClients, Map<String, Value> updateColumns) {
Map<String,String> customOptions = new HashMap<>(); Map<String, String> customOptions = new HashMap<>();
customOptions.put("max_clients", String.valueOf(maxNumClients)); customOptions.put("max_clients", String.valueOf(maxNumClients));
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> customOptionsMap = com.vmware.ovsdb.protocol.operation.notation.Map com.vmware.ovsdb.protocol.operation.notation.Map<String, String> customOptionsMap = com.vmware.ovsdb.protocol.operation.notation.Map.of(customOptions);
.of(customOptions); updateColumns.put("custom_options", customOptionsMap);
updateColumns.put("custom_options", customOptionsMap);
} }
void setTxAndRxChainmask(int mimoMode, Map<String, Value> updateColumns) { void setTxAndRxChainmask(int mimoMode, Map<String, Value> updateColumns) {
/* /*
* Chainmask is a bitmask, so map mimo mode values accordingly * Chainmask is a bitmask, so map mimo mode values accordingly
* Note values 0, 1 remain unchanged * Note values 0, 1 remain unchanged
* *
* mimoMode bitmask * mimoMode bitmask
* 0 0 * 0 0
* 1 1 * 1 1 1
* 2 3 * 2 3 2
* 3 7 * 3 7 4
* 4 15 * 4 15 8
* 5 31 16
* 6 63 32
* 7 127 64
* 8 255 128
*/ */
if (mimoMode == 2) {mimoMode = 3;} switch (mimoMode) {
else if (mimoMode == 3) {mimoMode = 7;} case 0: // unchanged
else if (mimoMode == 4) {mimoMode = 15;} break;
case 1: // unchanged
break;
case 2:
mimoMode = 3;
break;
case 3:
mimoMode = 7;
break;
case 4:
mimoMode = 15;
break;
case 5:
mimoMode = 31;
break;
case 6:
mimoMode = 63;
break;
case 7:
mimoMode = 127;
break;
case 8:
mimoMode = 255;
break;
}
updateColumns.put("tx_chainmask", new Atom<>(mimoMode)); updateColumns.put("tx_chainmask", new Atom<>(mimoMode));
updateColumns.put("rx_chainmask", new Atom<>(mimoMode)); updateColumns.put("rx_chainmask", new Atom<>(mimoMode));
} }
} }

View File

@@ -1,3 +1,4 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao; package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList; import java.util.ArrayList;
@@ -65,19 +66,53 @@ public class OvsdbRadiusProxyConfig extends OvsdbDaoBase {
} }
} }
// _version "uuid"
// server "string"
// realm {"key":{"maxLength":256,"type":"string"},"max":16,"min":0}
// port "integer"
// client_cert {"key":{"maxLength":256,"minLength":1,"type":"string"},"min":0}
// radsec "boolean"
// acct_server {"key":"string","min":0}
// radius_config_name "string"
// passphrase {"key":{"maxLength":128,"type":"string"},"min":0}
// acct_secret {"key":"string","min":0}
// acct_port {"key":"integer","min":0}
// _uuid "uuid"
// secret "string"
// ca_cert {"key":{"maxLength":256,"minLength":1,"type":"string"},"min":0}
// client_key {"key":{"maxLength":256,"minLength":1,"type":"string"},"min":0}
private void configureRadiusServers(OvsdbClient ovsdbClient, OpensyncAPConfig apConfig, List<Operation> operations) private void configureRadiusServers(OvsdbClient ovsdbClient, OpensyncAPConfig apConfig, List<Operation> operations)
throws OvsdbClientException, InterruptedException, ExecutionException, TimeoutException { throws OvsdbClientException, InterruptedException, ExecutionException, TimeoutException {
for (RadiusProxyConfiguration rsc : ((ApNetworkConfiguration) apConfig.getApProfile().getDetails()) for (RadiusProxyConfiguration rsc : ((ApNetworkConfiguration) apConfig.getApProfile().getDetails()).getRadiusProxyConfigurations()) {
.getRadiusProxyConfigurations()) {
Map<String, Value> updateColumns = new HashMap<>(); Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("server", new Atom<>(rsc.getServer().getHostAddress())); updateColumns.put("server", new Atom<>(rsc.getServer().getHostAddress()));
getCertificateUrls(rsc, updateColumns); getCertificateUrls(rsc, updateColumns);
updateColumns.put("radius_config_name", new Atom<>(rsc.getName())); updateColumns.put("radius_config_name", new Atom<>(rsc.getName()));
updateColumns.put("passphrase", new Atom<>(rsc.getPassphrase())); updateColumns.put("passphrase", new Atom<>(rsc.getPassphrase()));
updateColumns.put("port", new Atom<>(rsc.getPort())); updateColumns.put("port", new Atom<>(rsc.getPort()));
updateColumns.put("realm", Set.of(rsc.getRealm())); updateColumns.put("realm", Set.of(rsc.getRealm()));
updateColumns.put("radsec", new Atom<>(rsc.getUseRadSec())); updateColumns.put("radsec", new Atom<>(rsc.getUseRadSec()));
java.util.Set<String> columnKeys = ovsdbClient.getSchema(ovsdbName).get().getTables().get(radiusConfigDbTable).getColumns().keySet();
if (columnKeys.contains("acct_server") && columnKeys.contains("acct_secret") && columnKeys.contains("acct_port") && columnKeys.contains("secret")) {
if (rsc.getAcctServer() != null) {
updateColumns.put("acct_server", new Atom<>(rsc.getAcctServer().getHostAddress()));
}
if (rsc.getSharedSecret() != null) {
updateColumns.put("secret", new Atom<>(rsc.getSharedSecret()));
updateColumns.put("acct_secret", new Atom<>(rsc.getSharedSecret()));
}
if (rsc.getAcctPort() != null) {
updateColumns.put("acct_port", new Atom<>(rsc.getAcctPort()));
}
}
Row row = new Row(updateColumns); Row row = new Row(updateColumns);
operations.add(new Insert(radiusConfigDbTable, row)); operations.add(new Insert(radiusConfigDbTable, row));
} }
@@ -104,7 +139,7 @@ public class OvsdbRadiusProxyConfig extends OvsdbDaoBase {
} }
if (!caCertFilestoreUrl.contains("filestore")) { if (!caCertFilestoreUrl.contains("filestore")) {
caCertFilestoreUrl = externalFileStoreURL + "/filestore/" + rsc.getCaCert().getApExportUrl(); caCertFilestoreUrl = externalFileStoreURL + "/filestore/" + rsc.getCaCert().getApExportUrl();
} }
updateColumns.put("client_cert", new Atom<>(clientCertFilestoreUrl)); updateColumns.put("client_cert", new Atom<>(clientCertFilestoreUrl));
updateColumns.put("client_key", new Atom<>(clientKeyFilestoreUrl)); updateColumns.put("client_key", new Atom<>(clientKeyFilestoreUrl));
updateColumns.put("ca_cert", new Atom<>(caCertFilestoreUrl)); updateColumns.put("ca_cert", new Atom<>(caCertFilestoreUrl));
@@ -124,8 +159,7 @@ public class OvsdbRadiusProxyConfig extends OvsdbDaoBase {
LOG.info("removeRadiusConfigurations {}", res.toString()); LOG.info("removeRadiusConfigurations {}", res.toString());
} else if (res instanceof ErrorResult) { } else if (res instanceof ErrorResult) {
LOG.error("removeRadiusConfigurations error {}", (res)); LOG.error("removeRadiusConfigurations error {}", (res));
throw new RuntimeException("removeRadiusConfigurations " throw new RuntimeException("removeRadiusConfigurations " + ((ErrorResult) res).getError() + " " + ((ErrorResult) res).getDetails());
+ ((ErrorResult) res).getError() + " " + ((ErrorResult) res).getDetails());
} }
} }
LOG.info("Removed all radius and realm configurations"); LOG.info("Removed all radius and realm configurations");

View File

@@ -1,3 +1,4 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao; package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList; import java.util.ArrayList;
@@ -12,6 +13,7 @@ import java.util.concurrent.TimeoutException;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.telecominfraproject.wlan.core.model.equipment.AutoOrManualValue; import com.telecominfraproject.wlan.core.model.equipment.AutoOrManualValue;
import com.telecominfraproject.wlan.core.model.equipment.OBSSHopMode;
import com.telecominfraproject.wlan.core.model.equipment.RadioBestApSettings; import com.telecominfraproject.wlan.core.model.equipment.RadioBestApSettings;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.equipment.SourceType; import com.telecominfraproject.wlan.core.model.equipment.SourceType;
@@ -45,8 +47,7 @@ import com.vmware.ovsdb.service.OvsdbClient;
public class OvsdbRrmConfig extends OvsdbDaoBase { public class OvsdbRrmConfig extends OvsdbDaoBase {
void configureWifiRrm(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) { void configureWifiRrm(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
ApElementConfiguration apElementConfig = (ApElementConfiguration) opensyncApConfig.getCustomerEquipment() ApElementConfiguration apElementConfig = (ApElementConfiguration) opensyncApConfig.getCustomerEquipment().getDetails();
.getDetails();
RfConfiguration rfConfig = (RfConfiguration) opensyncApConfig.getRfProfile().getDetails(); RfConfiguration rfConfig = (RfConfiguration) opensyncApConfig.getRfProfile().getDetails();
for (RadioType radioType : apElementConfig.getRadioMap().keySet()) { for (RadioType radioType : apElementConfig.getRadioMap().keySet()) {
String freqBand = null; String freqBand = null;
@@ -67,28 +68,24 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
ElementRadioConfiguration elementRadioConfig = apElementConfig.getRadioMap().get(radioType); ElementRadioConfiguration elementRadioConfig = apElementConfig.getRadioMap().get(radioType);
RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType); RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType);
if (elementRadioConfig == null || rfElementConfig == null) { if (elementRadioConfig == null || rfElementConfig == null) {
continue; // don't have a radio of this kind in the map continue; // don't have a radio of this kind in the map
} }
boolean autoChannelSelection = rfElementConfig.getAutoChannelSelection(); boolean autoChannelSelection = rfElementConfig.getAutoChannelSelection();
int backupChannel = elementRadioConfig.getActiveBackupChannel(autoChannelSelection); int backupChannel = elementRadioConfig.getActiveBackupChannel(autoChannelSelection);
LOG.debug("configureWifiRadios autoChannelSelection {} activeBackupChannel {}",
autoChannelSelection, backupChannel); boolean autoCellSizeSelection = rfElementConfig.getAutoCellSizeSelection();
Integer probeResponseThresholdDb = null;
AutoOrManualValue probeResponseThresholdDb = null; Integer clientDisconnectThresholdDb = null;
AutoOrManualValue clientDisconnectThresholdDb = null;
if (elementRadioConfig.getProbeResponseThresholdDb() != null) { if (elementRadioConfig.getProbeResponseThresholdDb() != null) {
probeResponseThresholdDb = getSourcedValue(elementRadioConfig.getProbeResponseThresholdDb().getSource(), probeResponseThresholdDb = getSourcedValue(autoCellSizeSelection, rfElementConfig.getProbeResponseThresholdDb(),
rfElementConfig.getProbeResponseThresholdDb(), elementRadioConfig.getProbeResponseThresholdDb().getValue());
elementRadioConfig.getProbeResponseThresholdDb().getValue());
} }
if (elementRadioConfig.getClientDisconnectThresholdDb() != null) { if (elementRadioConfig.getClientDisconnectThresholdDb() != null) {
clientDisconnectThresholdDb = getSourcedValue( clientDisconnectThresholdDb = getSourcedValue(autoCellSizeSelection, rfElementConfig.getClientDisconnectThresholdDb(),
elementRadioConfig.getClientDisconnectThresholdDb().getSource(), elementRadioConfig.getClientDisconnectThresholdDb().getValue());
rfElementConfig.getClientDisconnectThresholdDb(),
elementRadioConfig.getClientDisconnectThresholdDb().getValue());
} }
RadioConfiguration radioConfig = apElementConfig.getAdvancedRadioMap().get(radioType); RadioConfiguration radioConfig = apElementConfig.getAdvancedRadioMap().get(radioType);
@@ -96,29 +93,30 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
ManagementRate managementRate = null; ManagementRate managementRate = null;
RadioBestApSettings bestApSettings = null; RadioBestApSettings bestApSettings = null;
if (radioConfig != null) { if (radioConfig != null) {
if (radioConfig.getMulticastRate() != null) { if (radioConfig.getMulticastRate() != null) {
multicastRate = radioConfig.getMulticastRate().getSource() == SourceType.profile multicastRate = autoCellSizeSelection ? radioConfig.getMulticastRate().getValue() : rfElementConfig.getMulticastRate();
? rfElementConfig.getMulticastRate() }
: radioConfig.getMulticastRate().getValue();
} if (radioConfig.getManagementRate() != null) {
managementRate = autoCellSizeSelection ? radioConfig.getManagementRate().getValue() : rfElementConfig.getManagementRate();
if (radioConfig.getManagementRate() != null) { }
managementRate = radioConfig.getManagementRate().getSource() == SourceType.profile
? rfElementConfig.getManagementRate() if (radioConfig.getBestApSettings() != null) {
: radioConfig.getManagementRate().getValue(); bestApSettings = radioConfig.getBestApSettings().getSource() == SourceType.profile ? rfElementConfig.getBestApSettings()
} : radioConfig.getBestApSettings().getValue();
}
if (radioConfig.getBestApSettings() != null) {
bestApSettings = radioConfig.getBestApSettings().getSource() == SourceType.profile
? rfElementConfig.getBestApSettings()
: radioConfig.getBestApSettings().getValue();
}
} }
OBSSHopMode obssHopMode = rfElementConfig.getChannelHopSettings().getObssHopMode();
int noiseFloorThresholdInDB = rfElementConfig.getChannelHopSettings().getNoiseFloorThresholdInDB();
int noiseFloorThresholdTimeInSeconds = rfElementConfig.getChannelHopSettings().getNoiseFloorThresholdTimeInSeconds();
int nonWifiThresholdInPercentage = rfElementConfig.getChannelHopSettings().getNonWifiThresholdInPercentage();
int nonWifiThresholdTimeInSeconds = rfElementConfig.getChannelHopSettings().getNonWifiThresholdTimeInSeconds();
if (freqBand != null) { if (freqBand != null) {
try { try {
configureWifiRrm(ovsdbClient, freqBand, backupChannel, probeResponseThresholdDb, configureWifiRrm(ovsdbClient, freqBand, backupChannel, probeResponseThresholdDb, clientDisconnectThresholdDb, managementRate,
clientDisconnectThresholdDb, managementRate, bestApSettings, multicastRate); bestApSettings, multicastRate, obssHopMode, noiseFloorThresholdInDB, noiseFloorThresholdTimeInSeconds, nonWifiThresholdInPercentage,
nonWifiThresholdTimeInSeconds);
} catch (OvsdbClientException e) { } catch (OvsdbClientException e) {
LOG.error("configureRrm failed with OvsdbClient exception.", e); LOG.error("configureRrm failed with OvsdbClient exception.", e);
throw new RuntimeException(e); throw new RuntimeException(e);
@@ -135,9 +133,9 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
} }
} }
void configureWifiRrm(OvsdbClient ovsdbClient, String freqBand, int backupChannel, void configureWifiRrm(OvsdbClient ovsdbClient, String freqBand, int backupChannel, Integer probeResponseThreshold, Integer clientDisconnectThreshold,
AutoOrManualValue probeResponseThreshold, AutoOrManualValue clientDisconnectThreshold, ManagementRate managementRate, RadioBestApSettings bestApSettings, MulticastRate multicastRate, OBSSHopMode obssHopMode,
ManagementRate managementRate, RadioBestApSettings bestApSettings, MulticastRate multicastRate) int noiseFloorThresholdInDB, int noiseFloorThresholdTimeInSeconds, int nonWifiThresholdInPercentage, int nonWifiThresholdTimeInSeconds)
throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException { throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException {
List<Operation> operations = new ArrayList<>(); List<Operation> operations = new ArrayList<>();
@@ -149,19 +147,19 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
if (multicastRate == null || multicastRate == MulticastRate.auto) { if (multicastRate == null || multicastRate == MulticastRate.auto) {
updateColumns.put("mcast_rate", new Atom<>(0)); updateColumns.put("mcast_rate", new Atom<>(0));
} else { } else {
updateColumns.put("mcast_rate", new Atom<>(managementRate.getId())); updateColumns.put("mcast_rate", new Atom<>(multicastRate.getId()));
} }
if (probeResponseThreshold == null || probeResponseThreshold.isAuto()) { if (probeResponseThreshold == null) {
updateColumns.put("probe_resp_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set()); updateColumns.put("probe_resp_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else { } else {
updateColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.getValue())); updateColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.intValue()));
} }
if (clientDisconnectThreshold == null || clientDisconnectThreshold.isAuto()) { if (clientDisconnectThreshold == null) {
updateColumns.put("client_disconnect_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set()); updateColumns.put("client_disconnect_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else { } else {
updateColumns.put("client_disconnect_threshold", new Atom<>(clientDisconnectThreshold.getValue())); updateColumns.put("client_disconnect_threshold", new Atom<>(clientDisconnectThreshold.intValue()));
} }
if (managementRate == null || managementRate == ManagementRate.auto) { if (managementRate == null || managementRate == ManagementRate.auto) {
@@ -186,12 +184,21 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
} }
} }
if (obssHopMode != null) {
updateColumns.put("obss_hop_mode", new Atom<>(obssHopMode.equals(OBSSHopMode.NON_WIFI) ? 1 : 2));
}
updateColumns.put("noise_floor_thresh", new Atom<>(noiseFloorThresholdInDB));
updateColumns.put("noise_floor_time", new Atom<>(noiseFloorThresholdTimeInSeconds));
updateColumns.put("non_wifi_thresh", new Atom<>(nonWifiThresholdInPercentage));
updateColumns.put("non_wifi_time", new Atom<>(nonWifiThresholdTimeInSeconds));
Row row = new Row(updateColumns); Row row = new Row(updateColumns);
operations.add(new Insert(wifiRrmConfigDbTable, row)); operations.add(new Insert(wifiRrmConfigDbTable, row));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
LOG.debug("Provisioned rrm config with multicastRate {} Mbps for {}", multicastRate, freqBand); LOG.debug("Provisioned rrm config with multicastRate {} Mbps for {}", multicastRate, freqBand);
for (OperationResult res : result) { for (OperationResult res : result) {
@@ -217,8 +224,17 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
return AutoOrManualValue.createManualInstance(equipmentValue); return AutoOrManualValue.createManualInstance(equipmentValue);
} }
void processNewChannelsRequest(OvsdbClient ovsdbClient, Map<RadioType, Integer> backupChannelMap, // For cell size related attributes, the “manual" mode is not supported any more,
Map<RadioType, Integer> primaryChannelMap) { // user can create a new RF profile with desired values to achieve it
int getSourcedValue(boolean autoCellSizeSelection, int profileValue, int equipmentValue) {
if (autoCellSizeSelection) {
return equipmentValue;
} else {
return profileValue;
}
}
void processNewChannelsRequest(OvsdbClient ovsdbClient, Map<RadioType, Integer> backupChannelMap, Map<RadioType, Integer> primaryChannelMap) {
LOG.info("OvsdbDao::processNewChannelsRequest backup {} primary {}", backupChannelMap, primaryChannelMap); LOG.info("OvsdbDao::processNewChannelsRequest backup {} primary {}", backupChannelMap, primaryChannelMap);
try { try {
@@ -260,7 +276,7 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
} }
} }
void processCellSizeAttributesRequest(OvsdbClient ovsdbClient, Map<RadioType, CellSizeAttributes> cellSizeAttributesMap) { void processCellSizeAttributesRequest(OvsdbClient ovsdbClient, Map<RadioType, CellSizeAttributes> cellSizeAttributesMap) {
LOG.info("OvsdbDao::processCellSizeAttributesRequest cellSizeAttributes {}", cellSizeAttributesMap); LOG.info("OvsdbDao::processCellSizeAttributesRequest cellSizeAttributes {}", cellSizeAttributesMap);
@@ -272,7 +288,7 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
List<Condition> conditions = new ArrayList<>(); List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("freq_band", Function.EQUALS, new Atom<>(freqBand))); conditions.add(new Condition("freq_band", Function.EQUALS, new Atom<>(freqBand)));
Map<String, Value> updateRrmColumns = new HashMap<>(); Map<String, Value> updateRrmColumns = new HashMap<>();
CellSizeAttributes cellSizeAttributes = c.getValue(); CellSizeAttributes cellSizeAttributes = c.getValue();
MulticastRate multicastRate = cellSizeAttributes.getMulticastRate(); MulticastRate multicastRate = cellSizeAttributes.getMulticastRate();
if (multicastRate == null || multicastRate == MulticastRate.auto) { if (multicastRate == null || multicastRate == MulticastRate.auto) {
@@ -287,7 +303,7 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
} else { } else {
updateRrmColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.intValue())); updateRrmColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.intValue()));
} }
Integer clientDisconnectThreshold = cellSizeAttributes.getClientDisconnectThresholdDb(); Integer clientDisconnectThreshold = cellSizeAttributes.getClientDisconnectThresholdDb();
if (clientDisconnectThreshold == null) { if (clientDisconnectThreshold == null) {
updateRrmColumns.put("client_disconnect_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set()); updateRrmColumns.put("client_disconnect_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set());
@@ -301,13 +317,13 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
} else { } else {
updateRrmColumns.put("beacon_rate", new Atom<>(managementRate.getId() * 10)); updateRrmColumns.put("beacon_rate", new Atom<>(managementRate.getId() * 10));
} }
Row rowRrm = new Row(updateRrmColumns); Row rowRrm = new Row(updateRrmColumns);
operations.add(new Update(wifiRrmConfigDbTable, conditions, rowRrm)); operations.add(new Update(wifiRrmConfigDbTable, conditions, rowRrm));
Map<String, Value> updateRadioColumns = new HashMap<>(); Map<String, Value> updateRadioColumns = new HashMap<>();
Integer txPower = cellSizeAttributes.getEirpTxPowerDb(); Integer txPower = cellSizeAttributes.getEirpTxPowerDb();
if (txPower > 0) { if (txPower != null && txPower > 0) {
updateRadioColumns.put("tx_power", new Atom<>(txPower)); updateRadioColumns.put("tx_power", new Atom<>(txPower));
} else { } else {
updateRadioColumns.put("tx_power", new com.vmware.ovsdb.protocol.operation.notation.Set()); updateRadioColumns.put("tx_power", new com.vmware.ovsdb.protocol.operation.notation.Set());
@@ -321,15 +337,14 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
for (OperationResult res : result) { for (OperationResult res : result) {
LOG.info("Op Result {}", res); LOG.info("Op Result {}", res);
if (res instanceof InsertResult) { if (res instanceof InsertResult) {
LOG.info("processCellSizeAttributesRequest insert new row result {}", (res)); LOG.info("processCellSizeAttributesRequest insert new row result {}", (res));
// for insert, make sure it is actually in the table // for insert, make sure it is actually in the table
confirmRowExistsInTable(ovsdbClient, ((InsertResult) res).getUuid(), wifiRrmConfigDbTable); confirmRowExistsInTable(ovsdbClient, ((InsertResult) res).getUuid(), wifiRrmConfigDbTable);
} else if (res instanceof ErrorResult) { } else if (res instanceof ErrorResult) {
LOG.error("processCellSizeAttributesRequest error {}", (res)); LOG.error("processCellSizeAttributesRequest error {}", (res));
throw new RuntimeException("processCellSizeAttributesRequest " + ((ErrorResult) res).getError() + throw new RuntimeException("processCellSizeAttributesRequest " + ((ErrorResult) res).getError() + " " + ((ErrorResult) res).getDetails());
" " + ((ErrorResult) res).getDetails());
} }
} }

View File

@@ -227,8 +227,9 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
customOptions.put("rts_threshold", String.valueOf(rtsCtsThreshold)); customOptions.put("rts_threshold", String.valueOf(rtsCtsThreshold));
} }
void configureCustomOptionsForUseRadiusProxy(boolean useRadiusProxy, Map<String, String> customOptions) { void configureCustomOptionsForUseRadiusProxyAndHotspot(boolean useRadiusProxy, boolean enableProxyArpForHotspot, Map<String, String> customOptions) {
customOptions.put("radproxy", useRadiusProxy ? "1" : "0"); customOptions.put("radproxy", useRadiusProxy ? "1" : "0");
customOptions.put("proxy_arp", enableProxyArpForHotspot ? "1" : "0");
} }
/** /**
@@ -251,13 +252,14 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
* @param updateColumns * @param updateColumns
* @param dynamicVlan * @param dynamicVlan
* @param useRadiusProxy * @param useRadiusProxy
* @param enableProxyArpForHotspot TODO
*/ */
void configureCustomOptionsForSsid(OvsdbClient ovsdbClient, boolean enable80211k, boolean enable80211r, boolean rateLimitEnable, int ssidDlLimit, void configureCustomOptionsForSsid(OvsdbClient ovsdbClient, boolean enable80211k, boolean enable80211r, boolean rateLimitEnable, int ssidDlLimit,
int ssidUlLimit, int clientDlLimit, int clientUlLimit, int rtsCtsThreshold, int dtimPeriod, String radiusNasId, String radiusNasIp, int ssidUlLimit, int clientDlLimit, int clientUlLimit, int rtsCtsThreshold, int dtimPeriod, String radiusNasId, String radiusNasIp,
String radiusOperatorName, Map<String, Value> updateColumns, int dynamicVlan, Boolean useRadiusProxy) { String radiusOperatorName, Map<String, Value> updateColumns, int dynamicVlan, Boolean useRadiusProxy, Boolean enableProxyArpForHotspot) {
Map<String, String> customOptions = new HashMap<>(); Map<String, String> customOptions = new HashMap<>();
configureCustomOptionsForUseRadiusProxy(useRadiusProxy, customOptions); configureCustomOptionsForUseRadiusProxyAndHotspot(useRadiusProxy, enableProxyArpForHotspot, customOptions);
configureCustomOptionsForRatesAndLimits(rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit, rtsCtsThreshold, customOptions); configureCustomOptionsForRatesAndLimits(rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit, rtsCtsThreshold, customOptions);
@@ -277,7 +279,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
int keyRefresh, boolean uapsdEnabled, boolean apBridge, NetworkForwardMode networkForwardMode, List<MacAddress> macBlockList, int keyRefresh, boolean uapsdEnabled, boolean apBridge, NetworkForwardMode networkForwardMode, List<MacAddress> macBlockList,
boolean rateLimitEnable, int ssidDlLimit, int ssidUlLimit, int clientDlLimit, int clientUlLimit, int rtsCtsThreshold, int dtimPeriod, boolean rateLimitEnable, int ssidDlLimit, int ssidUlLimit, int clientDlLimit, int clientUlLimit, int rtsCtsThreshold, int dtimPeriod,
Map<String, String> captiveMap, List<String> walledGardenAllowlist, String radiusNasId, String radiusNasIp, String radiusOperatorName, Map<String, String> captiveMap, List<String> walledGardenAllowlist, String radiusNasId, String radiusNasIp, String radiusOperatorName,
String greTunnelName, int dynamicVlan, Boolean useRadiusProxy, List<Operation> operations) { String greTunnelName, int dynamicVlan, Boolean useRadiusProxy, List<Operation> operations, Boolean enableProxyArpForHotspot) {
Map<String, Value> updateColumns = new HashMap<>(); Map<String, Value> updateColumns = new HashMap<>();
// If we are doing a NAT SSID, no bridge, else yes // If we are doing a NAT SSID, no bridge, else yes
@@ -334,7 +336,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> securityMap = com.vmware.ovsdb.protocol.operation.notation.Map.of(security); com.vmware.ovsdb.protocol.operation.notation.Map<String, String> securityMap = com.vmware.ovsdb.protocol.operation.notation.Map.of(security);
updateColumns.put("security", securityMap); updateColumns.put("security", securityMap);
configureCustomOptionsForSsid(ovsdbClient, enable80211k, enable80211r, rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit, configureCustomOptionsForSsid(ovsdbClient, enable80211k, enable80211r, rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit,
rtsCtsThreshold, dtimPeriod, radiusNasId, radiusNasIp, radiusOperatorName, updateColumns, dynamicVlan, useRadiusProxy); rtsCtsThreshold, dtimPeriod, radiusNasId, radiusNasIp, radiusOperatorName, updateColumns, dynamicVlan, useRadiusProxy, enableProxyArpForHotspot);
updateBlockList(updateColumns, macBlockList); updateBlockList(updateColumns, macBlockList);
Row row = new Row(updateColumns); Row row = new Row(updateColumns);
operations.add(new Insert(wifiVifConfigDbTable, row)); operations.add(new Insert(wifiVifConfigDbTable, row));
@@ -550,11 +552,15 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
if (ssidConfig.getUseRadiusProxy() != null) { if (ssidConfig.getUseRadiusProxy() != null) {
useRadiusProxy = ssidConfig.getUseRadiusProxy(); useRadiusProxy = ssidConfig.getUseRadiusProxy();
} }
boolean enableProxyArpForHotspot = false;
if (ssidConfig.getEnableProxyArpForHotspot() != null) {
enableProxyArpForHotspot = false;
}
try { try {
configureSingleSsid(ovsdbClient, ifName, ssidConfig.getSsid(), ssidBroadcast, security, vlanId, rrmEnabled, enable80211r, mobilityDomain, configureSingleSsid(ovsdbClient, ifName, ssidConfig.getSsid(), ssidBroadcast, security, vlanId, rrmEnabled, enable80211r, mobilityDomain,
enable80211v, enable80211k, minHwMode, enabled, keyRefresh, uapsdEnabled, apBridge, ssidConfig.getForwardMode(), macBlockList, enable80211v, enable80211k, minHwMode, enabled, keyRefresh, uapsdEnabled, apBridge, ssidConfig.getForwardMode(), macBlockList,
rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit, rtsCtsThreshold, dtimPeriod, captiveMap, rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit, rtsCtsThreshold, dtimPeriod, captiveMap,
walledGardenAllowlist, radiusNasId, radiusNasIp, radiusOperName, greTunnelName, dynamicVlan, useRadiusProxy, operations); walledGardenAllowlist, radiusNasId, radiusNasIp, radiusOperName, greTunnelName, dynamicVlan, useRadiusProxy, operations, enableProxyArpForHotspot);
networkConfig.configureInetVifInterface(ovsdbClient, ifName, enabled, ssidConfig.getForwardMode(), operations); networkConfig.configureInetVifInterface(ovsdbClient, ifName, enabled, ssidConfig.getForwardMode(), operations);