Compare commits

...

12 Commits

Author SHA1 Message Date
Mike Hansen
af604289cc WIFI-2988: Ovsdb schema check for Wifi_Radio_Config and Wifi_RRM_Config
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-13 15:17:50 -04:00
Mike Hansen
e173e02eae Merge pull request #35 from Telecominfraproject/WIFI-2080
WIFI-2080 Add support for cell size attributes lightweight provisioni…
2021-05-04 13:03:35 -04:00
Lynn Shi
1fbc4e1dff WIFI-2080 update based on review comments 2021-04-30 14:00:32 -04:00
Mike Hansen
cd67fc15dd WIFI-2083: Fix Enum labels on Backend
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-04-30 12:12:31 -04:00
Lynn Shi
a98cca3d8c WIFI-2080 Add support for cell size attributes lightweight provisioning changes to AP 2021-04-29 18:21:59 -04:00
Mike Hansen
4552118b4e WIFI-2067: Enable setting default reporting interval for on and off-channel wifi stats as VM args 2021-04-26 12:29:01 -04:00
Mike Hansen
67abbc0bc7 WIFI-1730: Syslog configuration does't work 2021-04-23 15:00:16 -04:00
Mike Hansen
9d33afec93 WIFI-2043: CustomerPortalDashboardStatus counts incorrect. 2021-04-21 11:42:32 -04:00
Mike Hansen
1bdecada9b WIFI-2040: ECW5211, ECW5410, WF194C, WF188N in backoff after upgrade 2021-04-20 14:09:13 -04:00
norm-traxler
9b31e67822 Merge pull request #34 from Telecominfraproject/WIFI-2026
WIFI-2026 Changed pom versions from 0.0.1-SNAPSHOT to 1.1.0-SNAPSHOT
2021-04-16 17:09:14 -04:00
Akshay Jagadish
1af6b363b8 WIFI-2026 Changed pom versions from 0.0.1-SNAPSHOT to 1.1.0-SNAPSHOT 2021-04-16 15:28:03 -04:00
norm-traxler
04c6a13675 Merge pull request #33 from Telecominfraproject/WIFI-2007
WIFI-2007 Cloud: Sometime the Noise value reported in SurveySample fo…
2021-04-15 10:35:37 -04:00
22 changed files with 708 additions and 503 deletions

View File

@@ -1,12 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<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>0.0.1-SNAPSHOT</version> <version>1.1.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>
@@ -21,121 +19,121 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway</artifactId> <artifactId>opensync-gateway</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -1736,7 +1736,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
EquipmentManufacturerQrCode qrCode = new EquipmentManufacturerQrCode(); EquipmentManufacturerQrCode qrCode = new EquipmentManufacturerQrCode();
if (node.qrCode != null) { if (node.qrCode != null) {
qrCode.setDeviceType(EquipmentType.getByName(node.qrCode.get("DT"))); if (node.qrCode.containsKey("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")));

View File

@@ -32,6 +32,7 @@ import com.telecominfraproject.wlan.core.model.service.GatewayType;
import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation; import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation;
import com.telecominfraproject.wlan.core.server.container.ConnectorProperties; import com.telecominfraproject.wlan.core.server.container.ConnectorProperties;
import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException; import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWChangeRedirectorHost; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWChangeRedirectorHost;
@@ -42,6 +43,7 @@ import com.telecominfraproject.wlan.equipmentgateway.models.CEGWConfigChangeNoti
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareFlashRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareFlashRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCellSizeAttributesRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRadioResetRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRadioResetRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRebootRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRebootRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck;
@@ -205,6 +207,9 @@ public class OpensyncCloudGatewayController {
case NewChannelRequest: case NewChannelRequest:
ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command)); ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command));
break; break;
case CellSizeAttributesRequest:
ret.add(sendCellSizeRequest(session, (CEGWCellSizeAttributesRequest) command));
break;
default: default:
LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command); LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command);
ret.add(new EquipmentCommandResponse( ret.add(new EquipmentCommandResponse(
@@ -296,6 +301,10 @@ public class OpensyncCloudGatewayController {
private EquipmentCommandResponse sendNewChannelRequest(OvsdbSession session, CEGWNewChannelRequest command) { private EquipmentCommandResponse sendNewChannelRequest(OvsdbSession session, CEGWNewChannelRequest command) {
return sendMessage(session, command.getInventoryId(), command); return sendMessage(session, command.getInventoryId(), command);
} }
private EquipmentCommandResponse sendCellSizeRequest(OvsdbSession session, CEGWCellSizeAttributesRequest command) {
return sendMessage(session, command.getInventoryId(), command);
}
/** /**
* Deliver a message in payload to the CE * Deliver a message in payload to the CE
@@ -333,6 +342,12 @@ public class OpensyncCloudGatewayController {
String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels,newPrimaryChannels); String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels,newPrimaryChannels);
response.setResultDetail(resultDetails); response.setResultDetail(resultDetails);
} else if (command instanceof CEGWCellSizeAttributesRequest) {
CEGWCellSizeAttributesRequest request = (CEGWCellSizeAttributesRequest) command;
Map<RadioType, CellSizeAttributes> cellSizeAttributeMap = request.getCellSizeAttributesMap();
String resultDetails = tipwlanOvsdbClient.processCellSizeAttributesRequest(inventoryId, cellSizeAttributeMap);
response.setResultDetail(resultDetails);
} else if (command instanceof CEGWFirmwareDownloadRequest) { } else if (command instanceof CEGWFirmwareDownloadRequest) {

View File

@@ -194,17 +194,18 @@ public class MqttStatsPublisher {
// prepare a JSONPrinter to format protobuf messages as // prepare a JSONPrinter to format protobuf messages as
// json // json
// List<Descriptors.Descriptor> protobufDescriptors = new ArrayList<>(); // List<Descriptors.Descriptor> protobufDescriptors = new ArrayList<>();
// protobufDescriptors.addAll(OpensyncStats.getDescriptor().getMessageTypes()); // protobufDescriptors.addAll(OpensyncStats.getDescriptor().getMessageTypes());
// TypeRegistry oldRegistry = TypeRegistry.newBuilder().add(protobufDescriptors).build(); // TypeRegistry oldRegistry = TypeRegistry.newBuilder().add(protobufDescriptors).build();
// JsonFormat.Printer jsonPrinter = JsonFormat.printer().preservingProtoFieldNames().includingDefaultValueFields().usingTypeRegistry(oldRegistry); // JsonFormat.Printer jsonPrinter =
// // JsonFormat.printer().preservingProtoFieldNames().includingDefaultValueFields().usingTypeRegistry(oldRegistry);
// try { //
// LOG.trace(jsonPrinter.print(report)); // try {
// // LOG.trace(jsonPrinter.print(report));
// } catch (InvalidProtocolBufferException e1) { //
// LOG.error("Couldn't parse OpensyncStats.report.", e1); // } catch (InvalidProtocolBufferException e1) {
// } // LOG.error("Couldn't parse OpensyncStats.report.", e1);
// }
List<ServiceMetric> metricRecordList = new ArrayList<>(); List<ServiceMetric> metricRecordList = new ArrayList<>();
@@ -215,6 +216,22 @@ public class MqttStatsPublisher {
populateChannelInfoReports(metricRecordList, report, customerId, equipmentId, locationId, profileId); populateChannelInfoReports(metricRecordList, report, customerId, equipmentId, locationId, profileId);
populateApSsidMetrics(metricRecordList, report, customerId, equipmentId, apId, locationId); populateApSsidMetrics(metricRecordList, report, customerId, equipmentId, apId, locationId);
if (!metricRecordList.isEmpty()) {
long serviceMetricTimestamp = System.currentTimeMillis();
LOG.debug("Current timestamp for service metrics is {}", serviceMetricTimestamp);
metricRecordList.stream().forEach(smr -> {
smr.setCreatedTimestamp(serviceMetricTimestamp);
if (smr.getLocationId() == 0) smr.setLocationId(locationId);
if(smr.getCustomerId() == 0) smr.setCustomerId(customerId);
if (smr.getEquipmentId() == 0L) smr.setEquipmentId(equipmentId);
});
metricRecordList.stream().forEach(smr -> {
LOG.debug("ServiceMetric {}", smr);
});
cloudEventDispatcherInterface.publishMetrics(metricRecordList);
}
publishEvents(report, customerId, equipmentId, apId, locationId); publishEvents(report, customerId, equipmentId, apId, locationId);
// handleRssiMetrics(metricRecordList, report, customerId, // handleRssiMetrics(metricRecordList, report, customerId,
// equipmentId, locationId); // equipmentId, locationId);
@@ -223,11 +240,6 @@ public class MqttStatsPublisher {
LOG.error("Exception when processing stats messages from AP", e); LOG.error("Exception when processing stats messages from AP", e);
} }
if (!metricRecordList.isEmpty()) {
LOG.debug("Publishing Metrics {}", metricRecordList);
cloudEventDispatcherInterface.publishMetrics(metricRecordList);
}
} }
public void processMqttMessage(String topic, FlowReport flowReport) { public void processMqttMessage(String topic, FlowReport flowReport) {
@@ -441,9 +453,9 @@ public class MqttStatsPublisher {
if (apClientEvent.hasIpAddr()) { if (apClientEvent.hasIpAddr()) {
ByteString ipAddress = apClientEvent.getIpAddr(); ByteString ipAddress = apClientEvent.getIpAddr();
if (ipAddress != null) { if (ipAddress != null) {
try { try {
InetAddress inetAddress = InetAddress.getByAddress(ipAddress.toByteArray()); InetAddress inetAddress = InetAddress.getByAddress(ipAddress.toByteArray());
LOG.info("ipAddr {} ", inetAddress); LOG.info("ipAddr {} ", inetAddress);
if (inetAddress instanceof Inet4Address) { if (inetAddress instanceof Inet4Address) {
LOG.info("IPv4 address {}", inetAddress); LOG.info("IPv4 address {}", inetAddress);
clientSession.getDetails().setIpAddress(inetAddress); clientSession.getDetails().setIpAddress(inetAddress);
@@ -661,248 +673,243 @@ public class MqttStatsPublisher {
protected void processClientFailureEvent(int customerId, long equipmentId, long locationId, protected void processClientFailureEvent(int customerId, long equipmentId, long locationId,
sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { sts.OpensyncStats.EventReport.ClientSession apEventClientSession) {
ClientFailureEvent apClientEvent = apEventClientSession.getClientFailureEvent(); ClientFailureEvent apClientEvent = apEventClientSession.getClientFailureEvent();
com.telecominfraproject.wlan.client.models.Client client = com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac()));
clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); if (client == null) {
if (client == null) { client = new com.telecominfraproject.wlan.client.models.Client();
client = new com.telecominfraproject.wlan.client.models.Client(); client.setCustomerId(customerId);
client.setCustomerId(customerId); client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); client.setDetails(new ClientInfoDetails());
client.setDetails(new ClientInfoDetails()); client = clientServiceInterface.create(client);
client = clientServiceInterface.create(client); }
} ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac()));
ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); if (clientSession == null) {
if (clientSession == null) { clientSession = new ClientSession();
clientSession = new ClientSession(); clientSession.setCustomerId(customerId);
clientSession.setCustomerId(customerId); clientSession.setEquipmentId(equipmentId);
clientSession.setEquipmentId(equipmentId); clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); clientSession.setLocationId(locationId);
clientSession.setLocationId(locationId); clientSession.setDetails(new ClientSessionDetails());
clientSession.setDetails(new ClientSessionDetails()); clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId()));
clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails());
clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); }
} if (clientSession.getDetails().getPriorEquipmentId() == null) {
if (clientSession.getDetails().getPriorEquipmentId() == null) { clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId());
clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); }
} if (clientSession.getDetails().getPriorSessionId() == null) {
if (clientSession.getDetails().getPriorSessionId() == null) { if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId())
if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId())
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
}
if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) {
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
} }
clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) {
clientSession.getDetails().setSsid(apClientEvent.getSsid()); clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
}
ClientFailureDetails clientFailureDetails = new ClientFailureDetails(); clientSession.getDetails().setSessionId(apEventClientSession.getSessionId());
if (apClientEvent.hasReasonStr()) { clientSession.getDetails().setSsid(apClientEvent.getSsid());
clientFailureDetails.setReason(apClientEvent.getReasonStr());
} ClientFailureDetails clientFailureDetails = new ClientFailureDetails();
if (apClientEvent.hasReasonCode()) { if (apClientEvent.hasReasonStr()) {
clientFailureDetails.setReasonCode(apClientEvent.getReasonCode()); clientFailureDetails.setReason(apClientEvent.getReasonStr());
} }
clientSession.getDetails().setLastFailureDetails(clientFailureDetails); if (apClientEvent.hasReasonCode()) {
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); clientFailureDetails.setReasonCode(apClientEvent.getReasonCode());
clientSession = clientServiceInterface.updateSession(clientSession); }
clientSession.getDetails().setLastFailureDetails(clientFailureDetails);
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs());
clientSession = clientServiceInterface.updateSession(clientSession);
} }
protected void processClientFirstDataEvent(int customerId, long equipmentId, long locationId, protected void processClientFirstDataEvent(int customerId, long equipmentId, long locationId,
sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { sts.OpensyncStats.EventReport.ClientSession apEventClientSession) {
ClientFirstDataEvent apClientEvent = apEventClientSession.getClientFirstDataEvent(); ClientFirstDataEvent apClientEvent = apEventClientSession.getClientFirstDataEvent();
com.telecominfraproject.wlan.client.models.Client client = com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac()));
clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); if (client == null) {
if (client == null) { client = new com.telecominfraproject.wlan.client.models.Client();
client = new com.telecominfraproject.wlan.client.models.Client(); client.setCustomerId(customerId);
client.setCustomerId(customerId); client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); client.setDetails(new ClientInfoDetails());
client.setDetails(new ClientInfoDetails()); client = clientServiceInterface.create(client);
client = clientServiceInterface.create(client); }
} ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac()));
ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); if (clientSession == null) {
if (clientSession == null) { clientSession = new ClientSession();
clientSession = new ClientSession(); clientSession.setCustomerId(customerId);
clientSession.setCustomerId(customerId); clientSession.setEquipmentId(equipmentId);
clientSession.setEquipmentId(equipmentId); clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); clientSession.setLocationId(locationId);
clientSession.setLocationId(locationId); clientSession.setDetails(new ClientSessionDetails());
clientSession.setDetails(new ClientSessionDetails()); clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId()));
clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails());
clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); }
} if (clientSession.getDetails().getPriorEquipmentId() == null) {
if (clientSession.getDetails().getPriorEquipmentId() == null) { clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId());
clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); }
} if (clientSession.getDetails().getPriorSessionId() == null) {
if (clientSession.getDetails().getPriorSessionId() == null) { if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId())
if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId())
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
}
if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) {
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
} }
clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) {
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
if (apClientEvent.hasFdataRxUpTsInUs()) { }
clientSession.getDetails().setFirstDataRcvdTimestamp(apClientEvent.getFdataRxUpTsInUs()); clientSession.getDetails().setSessionId(apEventClientSession.getSessionId());
}
if (apClientEvent.hasFdataTxUpTsInUs()) { if (apClientEvent.hasFdataRxUpTsInUs()) {
clientSession.getDetails().setFirstDataSentTimestamp(apClientEvent.getFdataTxUpTsInUs()); clientSession.getDetails().setFirstDataRcvdTimestamp(apClientEvent.getFdataRxUpTsInUs());
} }
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs());
clientSession = clientServiceInterface.updateSession(clientSession); if (apClientEvent.hasFdataTxUpTsInUs()) {
clientSession.getDetails().setFirstDataSentTimestamp(apClientEvent.getFdataTxUpTsInUs());
}
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs());
clientSession = clientServiceInterface.updateSession(clientSession);
} }
protected void processClientIdEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { protected void processClientIdEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) {
ClientIdEvent apClientEvent = apEventClientSession.getClientIdEvent(); ClientIdEvent apClientEvent = apEventClientSession.getClientIdEvent();
com.telecominfraproject.wlan.client.models.Client client = com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getCltMac()));
clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getCltMac())); if (client == null) {
if (client == null) { client = new com.telecominfraproject.wlan.client.models.Client();
client = new com.telecominfraproject.wlan.client.models.Client(); client.setCustomerId(customerId);
client.setCustomerId(customerId); client.setMacAddress(MacAddress.valueOf(apClientEvent.getCltMac()));
client.setMacAddress(MacAddress.valueOf(apClientEvent.getCltMac())); client.setDetails(new ClientInfoDetails());
client.setDetails(new ClientInfoDetails()); client = clientServiceInterface.create(client);
client = clientServiceInterface.create(client); }
} if (apClientEvent.hasCltId()) {
if (apClientEvent.hasCltId()) { ((ClientInfoDetails) client.getDetails()).setHostName(apClientEvent.getCltId());
((ClientInfoDetails)client.getDetails()).setHostName(apClientEvent.getCltId()); }
} client = clientServiceInterface.update(client);
client = clientServiceInterface.update(client);
ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getCltMac()));
ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getCltMac())); if (clientSession == null) {
if (clientSession == null) { clientSession = new ClientSession();
clientSession = new ClientSession(); clientSession.setCustomerId(customerId);
clientSession.setCustomerId(customerId); clientSession.setEquipmentId(equipmentId);
clientSession.setEquipmentId(equipmentId); clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getCltMac()));
clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getCltMac())); clientSession.setLocationId(locationId);
clientSession.setLocationId(locationId); clientSession.setDetails(new ClientSessionDetails());
clientSession.setDetails(new ClientSessionDetails()); clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId()));
clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails());
clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); }
} if (clientSession.getDetails().getPriorEquipmentId() == null) {
if (clientSession.getDetails().getPriorEquipmentId() == null) { clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId());
clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); }
} if (clientSession.getDetails().getPriorSessionId() == null) {
if (clientSession.getDetails().getPriorSessionId() == null) { if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId())
if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId())
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
}
if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) {
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
} }
clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) {
if (apClientEvent.hasCltId()) { clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
clientSession.getDetails().setHostname(apClientEvent.getCltId()); }
} clientSession.getDetails().setSessionId(apEventClientSession.getSessionId());
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); if (apClientEvent.hasCltId()) {
clientSession = clientServiceInterface.updateSession(clientSession); clientSession.getDetails().setHostname(apClientEvent.getCltId());
}
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs());
clientSession = clientServiceInterface.updateSession(clientSession);
} }
protected void processClientIpEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { protected void processClientIpEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) {
ClientIpEvent apClientEvent = apEventClientSession.getClientIpEvent(); ClientIpEvent apClientEvent = apEventClientSession.getClientIpEvent();
com.telecominfraproject.wlan.client.models.Client client = com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac()));
clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); if (client == null) {
if (client == null) { client = new com.telecominfraproject.wlan.client.models.Client();
client = new com.telecominfraproject.wlan.client.models.Client(); client.setCustomerId(customerId);
client.setCustomerId(customerId); client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); client.setDetails(new ClientInfoDetails());
client.setDetails(new ClientInfoDetails()); client = clientServiceInterface.create(client);
client = clientServiceInterface.create(client); }
} client = clientServiceInterface.update(client);
client = clientServiceInterface.update(client);
ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac()));
if (clientSession == null) { if (clientSession == null) {
clientSession = new ClientSession(); clientSession = new ClientSession();
clientSession.setCustomerId(customerId); clientSession.setCustomerId(customerId);
clientSession.setEquipmentId(equipmentId); clientSession.setEquipmentId(equipmentId);
clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
clientSession.setLocationId(locationId); clientSession.setLocationId(locationId);
clientSession.setDetails(new ClientSessionDetails()); clientSession.setDetails(new ClientSessionDetails());
clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId()));
clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails());
} }
if (clientSession.getDetails().getPriorEquipmentId() == null) { if (clientSession.getDetails().getPriorEquipmentId() == null) {
clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId());
} }
if (clientSession.getDetails().getPriorSessionId() == null) { if (clientSession.getDetails().getPriorSessionId() == null) {
if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId())
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
}
if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) {
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
} }
clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) {
if (apClientEvent.hasIpAddr()) { clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
ByteString ipAddress = apClientEvent.getIpAddr(); }
if (ipAddress != null) { clientSession.getDetails().setSessionId(apEventClientSession.getSessionId());
try { if (apClientEvent.hasIpAddr()) {
InetAddress inetAddress = InetAddress.getByAddress(ipAddress.toByteArray()); ByteString ipAddress = apClientEvent.getIpAddr();
if (inetAddress instanceof Inet4Address) { if (ipAddress != null) {
LOG.info("IPv4 address {}", inetAddress); try {
clientSession.getDetails().setIpAddress(inetAddress); InetAddress inetAddress = InetAddress.getByAddress(ipAddress.toByteArray());
} else if (inetAddress instanceof Inet6Address) { if (inetAddress instanceof Inet4Address) {
LOG.info("IPv6 address {}", inetAddress); LOG.info("IPv4 address {}", inetAddress);
clientSession.getDetails().setIpAddress(inetAddress); clientSession.getDetails().setIpAddress(inetAddress);
} else { } else if (inetAddress instanceof Inet6Address) {
LOG.error("Invalid IP Address {}", ipAddress); LOG.info("IPv6 address {}", inetAddress);
} clientSession.getDetails().setIpAddress(inetAddress);
clientSession.getDetails().setIpTimestamp(apClientEvent.getTimestampMs()); } else {
LOG.error("Invalid IP Address {}", ipAddress);
} catch (UnknownHostException ex) {
} }
clientSession.getDetails().setIpTimestamp(apClientEvent.getTimestampMs());
} catch (UnknownHostException ex) {
} }
} }
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); }
clientSession = clientServiceInterface.updateSession(clientSession); clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs());
clientSession = clientServiceInterface.updateSession(clientSession);
} }
protected void processClientTimeoutEvent(int customerId, long equipmentId, long locationId, protected void processClientTimeoutEvent(int customerId, long equipmentId, long locationId,
sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { sts.OpensyncStats.EventReport.ClientSession apEventClientSession) {
ClientTimeoutEvent apClientEvent = apEventClientSession.getClientTimeoutEvent(); ClientTimeoutEvent apClientEvent = apEventClientSession.getClientTimeoutEvent();
com.telecominfraproject.wlan.client.models.Client client = com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac()));
clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); if (client == null) {
if (client == null) { client = new com.telecominfraproject.wlan.client.models.Client();
client = new com.telecominfraproject.wlan.client.models.Client(); client.setCustomerId(customerId);
client.setCustomerId(customerId); client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); client.setDetails(new ClientInfoDetails());
client.setDetails(new ClientInfoDetails()); client = clientServiceInterface.create(client);
client = clientServiceInterface.create(client); }
} client = clientServiceInterface.update(client);
client = clientServiceInterface.update(client); ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac()));
ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); if (clientSession == null) {
if (clientSession == null) { clientSession = new ClientSession();
clientSession = new ClientSession(); clientSession.setCustomerId(customerId);
clientSession.setCustomerId(customerId); clientSession.setEquipmentId(equipmentId);
clientSession.setEquipmentId(equipmentId); clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); clientSession.setLocationId(locationId);
clientSession.setLocationId(locationId); clientSession.setDetails(new ClientSessionDetails());
clientSession.setDetails(new ClientSessionDetails()); clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId()));
clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails());
clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); }
} if (clientSession.getDetails().getPriorEquipmentId() == null) {
if (clientSession.getDetails().getPriorEquipmentId() == null) { clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId());
clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); }
} if (clientSession.getDetails().getPriorSessionId() == null) {
if (clientSession.getDetails().getPriorSessionId() == null) { if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId())
if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId())
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
}
if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) {
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
} }
clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) {
if (apClientEvent.hasLastRcvUpTsInUs()) { clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
clientSession.getDetails().setLastRxTimestamp(apClientEvent.getLastRcvUpTsInUs()); }
} clientSession.getDetails().setSessionId(apEventClientSession.getSessionId());
if (apClientEvent.hasLastSentUpTsInUs()) { if (apClientEvent.hasLastRcvUpTsInUs()) {
clientSession.getDetails().setLastTxTimestamp(apClientEvent.getLastSentUpTsInUs()); clientSession.getDetails().setLastRxTimestamp(apClientEvent.getLastRcvUpTsInUs());
} }
clientSession.getDetails().setTimeoutTimestamp(apClientEvent.getTimestampMs()); if (apClientEvent.hasLastSentUpTsInUs()) {
clientSession.getDetails().setAssociationState(AssociationState.AP_Timeout); clientSession.getDetails().setLastTxTimestamp(apClientEvent.getLastSentUpTsInUs());
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); }
clientSession = clientServiceInterface.updateSession(clientSession); clientSession.getDetails().setTimeoutTimestamp(apClientEvent.getTimestampMs());
clientSession.getDetails().setAssociationState(AssociationState.AP_Timeout);
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs());
clientSession = clientServiceInterface.updateSession(clientSession);
} }
void populateApNodeMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId, long locationId) { void populateApNodeMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId, long locationId) {
@@ -922,8 +929,6 @@ public class MqttStatsPublisher {
ApPerformance apPerformance = new ApPerformance(); ApPerformance apPerformance = new ApPerformance();
apNodeMetrics.setApPerformance(apPerformance); apNodeMetrics.setApPerformance(apPerformance);
smr.setCreatedTimestamp(deviceReport.getTimestampMs());
if (deviceReport.getRadioTempCount() > 0) { if (deviceReport.getRadioTempCount() > 0) {
float cpuTemperature = 0; float cpuTemperature = 0;
int numSamples = 0; int numSamples = 0;
@@ -1087,8 +1092,9 @@ public class MqttStatsPublisher {
// populate it from report.survey // populate it from report.survey
for (Survey survey : report.getSurveyList()) { for (Survey survey : report.getSurveyList()) {
if (survey.getSurveyType().equals(SurveyType.ON_CHANNEL)) { // only interested in ON_CHANNEL for this Metrics Report if (survey.getSurveyType().equals(SurveyType.ON_CHANNEL)) { // only interested in ON_CHANNEL for this
// Metrics Report
int busyRx = 0; /* Rx = Rx_obss + Rx_errr (self and obss errors) */ int busyRx = 0; /* Rx = Rx_obss + Rx_errr (self and obss errors) */
int busyTx = 0; /* Tx */ int busyTx = 0; /* Tx */
@@ -1194,7 +1200,6 @@ public class MqttStatsPublisher {
networkAdminStatus = new Status(); networkAdminStatus = new Status();
networkAdminStatus.setCustomerId(customerId); networkAdminStatus.setCustomerId(customerId);
networkAdminStatus.setEquipmentId(equipmentId); networkAdminStatus.setEquipmentId(equipmentId);
networkAdminStatus.setCreatedTimestamp(System.currentTimeMillis());
networkAdminStatus.setStatusDataType(StatusDataType.NETWORK_ADMIN); networkAdminStatus.setStatusDataType(StatusDataType.NETWORK_ADMIN);
networkAdminStatus.setDetails(new NetworkAdminStatusData()); networkAdminStatus.setDetails(new NetworkAdminStatusData());
networkAdminStatus = statusServiceInterface.update(networkAdminStatus); networkAdminStatus = statusServiceInterface.update(networkAdminStatus);
@@ -1383,7 +1388,6 @@ public class MqttStatsPublisher {
smr.setLocationId(locationId); smr.setLocationId(locationId);
metricRecordList.add(smr); metricRecordList.add(smr);
smr.setCreatedTimestamp(clReport.getTimestampMs());
smr.setClientMac(MacAddress.valueOf(cl.getMacAddress()).getAddressAsLong()); smr.setClientMac(MacAddress.valueOf(cl.getMacAddress()).getAddressAsLong());
// clReport.getChannel(); // clReport.getChannel();
@@ -1475,7 +1479,6 @@ public class MqttStatsPublisher {
metricRecordList.add(smr); metricRecordList.add(smr);
NeighbourScanReports neighbourScanReports = new NeighbourScanReports(); NeighbourScanReports neighbourScanReports = new NeighbourScanReports();
smr.setDetails(neighbourScanReports); smr.setDetails(neighbourScanReports);
smr.setCreatedTimestamp(neighbor.getTimestampMs());
List<NeighbourReport> neighbourReports = new ArrayList<>(); List<NeighbourReport> neighbourReports = new ArrayList<>();
neighbourScanReports.setNeighbourReports(neighbourReports); neighbourScanReports.setNeighbourReports(neighbourReports);
@@ -1516,7 +1519,7 @@ public class MqttStatsPublisher {
// some shifting // some shifting
int rssi = nBss.getRssi(); int rssi = nBss.getRssi();
nr.setRssi(rssi); nr.setRssi(rssi);
nr.setScanTimeInSeconds(neighbor.getTimestampMs()/1000L); nr.setScanTimeInSeconds(neighbor.getTimestampMs() / 1000L);
nr.setSecureMode(DetectedAuthMode.WPA); nr.setSecureMode(DetectedAuthMode.WPA);
// nr.setSignal(signal); // nr.setSignal(signal);
nr.setSsid(nBss.getSsid()); nr.setSsid(nBss.getSsid());
@@ -1624,10 +1627,6 @@ public class MqttStatsPublisher {
LOG.debug("ClientReport for channel {} RadioBand {}", clientReport.getChannel(), clientReport.getBand()); LOG.debug("ClientReport for channel {} RadioBand {}", clientReport.getChannel(), clientReport.getBand());
if (smr.getCreatedTimestamp() < clientReport.getTimestampMs()) {
smr.setCreatedTimestamp(clientReport.getTimestampMs());
}
long txBytes = 0L; long txBytes = 0L;
long rxBytes = 0L; long rxBytes = 0L;
long txFrames = 0L; long txFrames = 0L;
@@ -1833,8 +1832,7 @@ public class MqttStatsPublisher {
survey.getSurveyListList().stream().filter(t -> { survey.getSurveyListList().stream().filter(t -> {
if (survey.getSurveyType().equals(SurveyType.ON_CHANNEL)) { if (survey.getSurveyType().equals(SurveyType.ON_CHANNEL)) {
return t.hasDurationMs() && (t.getDurationMs() > 0) && t.hasChannel() && return t.hasDurationMs() && (t.getDurationMs() > 0) && t.hasChannel() && (t.hasBusy() || t.hasBusyTx() || t.hasBusySelf() || t.hasNoise());
(t.hasBusy() || t.hasBusyTx() || t.hasBusySelf() || t.hasNoise());
} else { } else {
return t.hasDurationMs() && t.hasChannel(); return t.hasDurationMs() && t.hasChannel();
} }
@@ -1863,7 +1861,6 @@ public class MqttStatsPublisher {
if (!channelInfoMap.isEmpty()) { if (!channelInfoMap.isEmpty()) {
channelInfoReports.setChannelInformationReportsPerRadio(channelInfoMap); channelInfoReports.setChannelInformationReportsPerRadio(channelInfoMap);
smr.setDetails(channelInfoReports); smr.setDetails(channelInfoReports);
smr.setCreatedTimestamp(survey.getTimestampMs());
metricRecordList.add(smr); metricRecordList.add(smr);
} }

View File

@@ -1,11 +1,9 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<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>0.0.1-SNAPSHOT</version> <version>1.1.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>
@@ -15,33 +13,33 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId> <artifactId>base-models</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.0-SNAPSHOT</version>
</dependency> </dependency>

View File

@@ -6,6 +6,7 @@ import java.util.Set;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress; import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
public interface OvsdbClientInterface { public interface OvsdbClientInterface {
@@ -33,4 +34,6 @@ public interface OvsdbClientInterface {
String processNewChannelsRequest(String apId, Map<RadioType,Integer> backupChannelMap, Map<RadioType,Integer> primaryChannelMap); String processNewChannelsRequest(String apId, Map<RadioType,Integer> backupChannelMap, Map<RadioType,Integer> primaryChannelMap);
String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap);
} }

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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -22,6 +22,8 @@ FILE_STORE_DIRECTORY="${FILE_STORE_DIRECTORY_INTERNAL:=/tmp/filestore}"
FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}" FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}"
MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_EXTERNAL_PORT}" MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_EXTERNAL_PORT}"
OVSDB_EXTERNAL_PORT="${OVSDB_EXTERNAL_PORT}" OVSDB_EXTERNAL_PORT="${OVSDB_EXTERNAL_PORT}"
OFF_CHANNEL_REPORTING_INTERVAL_SECONDS="${OFF_CHANNEL_REPORTING_INTERVAL_SECONDS:=120}"
REPORTING_INTERVAL_SECONDS="${REPORTING_INTERVAL_SECONDS:=60}"
@@ -106,6 +108,8 @@ PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$DEFAULT_WAN_TYPE"
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$DEFAULT_WAN_NAME" PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$DEFAULT_WAN_NAME"
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$DEFAULT_LAN_TYPE" PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$DEFAULT_LAN_TYPE"
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$DEFAULT_LAN_NAME" PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$DEFAULT_LAN_NAME"
PROV_PROPS+=" -Dtip.wlan.defaultOffChannelReportingIntervalSeconds=$OFF_CHANNEL_REPORTING_INTERVAL_SECONDS"
PROV_PROPS+=" -Dtip.wlan.defaultReportingIntervalSeconds=$REPORTING_INTERVAL_SECONDS"
PROV_PROPS+=" -Dtip.wlan.ovsdb.autoProvisionedCustomerId=$AUTO_PROV_CUSTOMER_ID" PROV_PROPS+=" -Dtip.wlan.ovsdb.autoProvisionedCustomerId=$AUTO_PROV_CUSTOMER_ID"

View File

@@ -1,11 +1,9 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<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>0.0.1-SNAPSHOT</version> <version>1.1.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>
@@ -22,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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.0-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -1,11 +1,9 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<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>0.0.1-SNAPSHOT</version> <version>1.1.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway</artifactId> <artifactId>opensync-gateway</artifactId>
@@ -16,22 +14,22 @@
<dependency> <dependency>
<artifactId>base-container</artifactId> <artifactId>base-container</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.vmware.ovsdb</groupId> <groupId>com.vmware.ovsdb</groupId>
@@ -49,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>0.0.1-SNAPSHOT</version> <version>1.1.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>0.0.1-SNAPSHOT</version> <version>1.1.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

@@ -10,6 +10,7 @@ import com.netflix.servo.tag.TagList;
import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags; import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress; import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface; import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface;
import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface.RowUpdateOperation; import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface.RowUpdateOperation;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbClientInterface; import com.telecominfraproject.wlan.opensync.external.integration.OvsdbClientInterface;
@@ -248,7 +249,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId); OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId);
if (opensyncAPConfig != null) { if (opensyncAPConfig != null) {
ovsdbDao.configureNtpServer(ovsdbClient, opensyncAPConfig); ovsdbDao.configureNode(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig); ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig); ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig); ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig);
@@ -319,7 +320,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
extIntegrationInterface.clearEquipmentStatus(apId); extIntegrationInterface.clearEquipmentStatus(apId);
ovsdbDao.configureNtpServer(ovsdbClient, opensyncAPConfig); ovsdbDao.configureNode(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig); ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig); ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig); ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig);
@@ -965,5 +966,23 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
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) {
LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest for AP {}", apId);
try {
OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
OvsdbClient ovsdbClient = session.getOvsdbClient();
ovsdbDao.processCellSizeAttributesRequest(ovsdbClient, cellSizeAttributeMap);
LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest change cellSizeAttributes for AP {}",
apId);
return " change cell size attributes for AP " + apId;
} catch (Exception e) {
LOG.error(
"TipWlanOvsdbClient::processCellSizeAttributesRequest failed to change cell size attributes for AP {}",
apId, e);
return "failed to change cell size attributes for AP " + apId;
}
}
} }

View File

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Component;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress; import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo; import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState;
@@ -84,9 +85,17 @@ public class OvsdbDao extends OvsdbDaoBase {
ovsdbNetwork.configureInterfaces(ovsdbClient); ovsdbNetwork.configureInterfaces(ovsdbClient);
} }
public void configureNtpServer(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { public void configureNode(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
configureNtpServer(ovsdbClient,opensyncAPConfig);configureSyslog(ovsdbClient, opensyncAPConfig);
}
void configureNtpServer(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
ovsdbNodeConfig.configureNtpServer(ovsdbClient, opensyncAPConfig); ovsdbNodeConfig.configureNtpServer(ovsdbClient, opensyncAPConfig);
} }
void configureSyslog(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
ovsdbNodeConfig.configureSyslog(ovsdbClient, opensyncAPConfig);
}
public void configureRadsecRadiusAndRealm(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { public void configureRadsecRadiusAndRealm(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
ovsdbRadiusProxyConfig.configureRadius(ovsdbClient, opensyncAPConfig); ovsdbRadiusProxyConfig.configureRadius(ovsdbClient, opensyncAPConfig);
@@ -180,6 +189,10 @@ public class OvsdbDao extends OvsdbDaoBase {
Map<RadioType, Integer> primaryChannelMap) { Map<RadioType, Integer> primaryChannelMap) {
ovsdbRrm.processNewChannelsRequest(ovsdbClient, backupChannelMap, primaryChannelMap); ovsdbRrm.processNewChannelsRequest(ovsdbClient, backupChannelMap, primaryChannelMap);
} }
public void processCellSizeAttributesRequest(OvsdbClient ovsdbClient, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap) {
ovsdbRrm.processCellSizeAttributesRequest(ovsdbClient, cellSizeAttributeMap);
}
public void rebootOrResetAp(OvsdbClient ovsdbClient, String ovsdbAwlanApSwitchSoftwareBank) { public void rebootOrResetAp(OvsdbClient ovsdbClient, String ovsdbAwlanApSwitchSoftwareBank) {
ovsdbNode.rebootOrResetAp(ovsdbClient, ovsdbAwlanApSwitchSoftwareBank); ovsdbNode.rebootOrResetAp(ovsdbClient, ovsdbAwlanApSwitchSoftwareBank);

View File

@@ -144,6 +144,12 @@ public class OvsdbDaoBase {
@org.springframework.beans.factory.annotation.Value("${tip.wlan.fileStoreDirectory:/tmp/tip-wlan-filestore}") @org.springframework.beans.factory.annotation.Value("${tip.wlan.fileStoreDirectory:/tmp/tip-wlan-filestore}")
String fileStoreDirectoryName; String fileStoreDirectoryName;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.defaultReportingIntervalSeconds:60}")
public int defaultReportingIntervalSeconds;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.defaultOffChannelReportingIntervalSeconds:120}")
public int defaultOffChannelReportingIntervalSeconds;
public OvsdbDaoBase() { public OvsdbDaoBase() {
} }

View File

@@ -576,26 +576,25 @@ public class OvsdbHotspotConfig extends OvsdbDaoBase {
rowColumns.put("access_network_type", new Atom<>(hs2Profile.getAccessNetworkType().getId())); rowColumns.put("access_network_type", new Atom<>(hs2Profile.getAccessNetworkType().getId()));
} }
} }
// # format: <1-octet encoded value as hex str> // # format: <1-octet encoded value as hex str>
// # (ipv4_type & 0x3f) << 2 | (ipv6_type & 0x3) << 2 // # (ipv4_type & 0x3f) << 2 | (ipv6_type & 0x3)
// 0x3f = 63 in decimal // 0x3f = 63 in decimal
// 0x3 = 3 in decimal // 0x3 = 3 in decimal
if (PasspointIPv6AddressType.getByName( if (PasspointIPv6AddressType.getByName(
hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv6AddressType.UNSUPPORTED) { hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv6AddressType.UNSUPPORTED) {
int availability = PasspointIPv6AddressType int availability = PasspointIPv6AddressType
.getByName(hs2Profile.getIpAddressTypeAvailability()).getId(); .getByName(hs2Profile.getIpAddressTypeAvailability()).getId();
String hexString = Integer.toHexString((availability & 3) << 2); String hexString = String.format("%02x", (availability & 0x3));
rowColumns.put("ipaddr_type_availability", new Atom<>(hexString)); rowColumns.put("ipaddr_type_availability", new Atom<>(hexString));
} else if (PasspointIPv4AddressType.getByName( }else if (PasspointIPv4AddressType.getByName(
hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv4AddressType.UNSUPPORTED) { hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv4AddressType.UNSUPPORTED) {
int availability = PasspointIPv4AddressType int availability = PasspointIPv4AddressType
.getByName(hs2Profile.getIpAddressTypeAvailability()).getId(); .getByName(hs2Profile.getIpAddressTypeAvailability()).getId();
String hexString = Integer.toHexString((availability & 63) << 2); String hexString = String.format("%02x", ((availability & 0x3f) << 2));
rowColumns.put("ipaddr_type_availability", new Atom<>(hexString)); rowColumns.put("ipaddr_type_availability", new Atom<>(hexString));
} }
Row row = new Row(rowColumns); Row row = new Row(rowColumns);
Insert newHs20Config = new Insert(hotspot20ConfigDbTable, row); Insert newHs20Config = new Insert(hotspot20ConfigDbTable, row);
@@ -676,8 +675,8 @@ public class OvsdbHotspotConfig extends OvsdbDaoBase {
operations.add(newOsuProvider); operations.add(newOsuProvider);
} else { } else {
List<Condition> conditions = new ArrayList<>(); List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("server_uri", Function.EQUALS, conditions.add(new Condition("osu_provider_name", Function.EQUALS,
new Atom<>(providerProfile.getOsuServerUri()))); new Atom<>(apOsuProviderName)));
Update updatedOsuProvider = new Update(hotspot20OsuProvidersDbTable, conditions, row); Update updatedOsuProvider = new Update(hotspot20OsuProvidersDbTable, conditions, row);
operations.add(updatedOsuProvider); operations.add(updatedOsuProvider);
} }

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;
@@ -15,6 +16,8 @@ import org.springframework.stereotype.Component;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration; import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
import com.vmware.ovsdb.exception.OvsdbClientException; import com.vmware.ovsdb.exception.OvsdbClientException;
import com.vmware.ovsdb.protocol.operation.Delete;
import com.vmware.ovsdb.protocol.operation.Insert;
import com.vmware.ovsdb.protocol.operation.Operation; import com.vmware.ovsdb.protocol.operation.Operation;
import com.vmware.ovsdb.protocol.operation.Update; import com.vmware.ovsdb.protocol.operation.Update;
import com.vmware.ovsdb.protocol.operation.notation.Atom; import com.vmware.ovsdb.protocol.operation.notation.Atom;
@@ -23,6 +26,7 @@ import com.vmware.ovsdb.protocol.operation.notation.Function;
import com.vmware.ovsdb.protocol.operation.notation.Row; import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.protocol.operation.notation.Value; import com.vmware.ovsdb.protocol.operation.notation.Value;
import com.vmware.ovsdb.protocol.operation.result.OperationResult; import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.protocol.operation.result.UpdateResult;
import com.vmware.ovsdb.service.OvsdbClient; import com.vmware.ovsdb.service.OvsdbClient;
@Component @Component
@@ -33,8 +37,7 @@ public class OvsdbNodeConfig extends OvsdbDaoBase {
public void configureNtpServer(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { public void configureNtpServer(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
try { try {
ApNetworkConfiguration apNetworkConfig = (ApNetworkConfiguration) opensyncAPConfig.getApProfile() ApNetworkConfiguration apNetworkConfig = (ApNetworkConfiguration) opensyncAPConfig.getApProfile().getDetails();
.getDetails();
if (apNetworkConfig.getNtpServer() == null || apNetworkConfig.getNtpServer().getValue() == null) { if (apNetworkConfig.getNtpServer() == null || apNetworkConfig.getNtpServer().getValue() == null) {
LOG.info("Cannot configure NTP server to null value. {}", apNetworkConfig); LOG.info("Cannot configure NTP server to null value. {}", apNetworkConfig);
return; return;
@@ -43,8 +46,7 @@ public class OvsdbNodeConfig extends OvsdbDaoBase {
Map<String, Value> updateColumns = new HashMap<>(); Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("value", new Atom<>(apNetworkConfig.getNtpServer().getValue())); updateColumns.put("value", new Atom<>(apNetworkConfig.getNtpServer().getValue()));
List<Operation> operations = new ArrayList<>(); List<Operation> operations = new ArrayList<>();
operations.add(new Update(nodeConfigTable, operations.add(new Update(nodeConfigTable, List.of(new Condition("module", Function.EQUALS, new Atom<>("ntp"))), new Row(updateColumns)));
List.of(new Condition("module", Function.EQUALS, new Atom<>("ntp"))), new Row(updateColumns)));
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);
for (OperationResult res : result) { for (OperationResult res : result) {
@@ -54,4 +56,67 @@ public class OvsdbNodeConfig extends OvsdbDaoBase {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
public void configureSyslog(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
// /usr/opensync/tools/ovsh insert Node_Config module:="syslog" key:="remote" value:="udp:192.168.178.9:1000:4"
// The format is a colon delimited list. log_proto:log_ip:log_port:log_priority
try {
ApNetworkConfiguration apNetworkConfig = (ApNetworkConfiguration) opensyncAPConfig.getApProfile().getDetails();
if (apNetworkConfig.getSyslogRelay() == null ) {
LOG.info("Cannot configure syslog to null value. {}", apNetworkConfig);
return;
}
if (apNetworkConfig.getSyslogRelay().isEnabled()) {
if (apNetworkConfig.getSyslogRelay().getSrvHostIp() == null
|| apNetworkConfig.getSyslogRelay().getSeverity() == null) {
LOG.info("Cannot configure syslog remote_logging without SrvHostIp and Severity values. {}", apNetworkConfig);
return;
}
LOG.debug("configureSyslog remote_logging to {}", apNetworkConfig.getSyslogRelay());
Map<String, Value> columns = new HashMap<>();
columns.put("key", new Atom<>("remote"));
columns.put("module", new Atom<>("syslog"));
String delimitedValue = "udp:" + apNetworkConfig.getSyslogRelay().getSrvHostIp().getHostAddress() + ":" + String
.valueOf(apNetworkConfig.getSyslogRelay().getSrvHostPort() + ":" +String.valueOf(apNetworkConfig.getSyslogRelay().getSeverity().getId()));
columns.put("value", new Atom<>(delimitedValue));
List<Operation> operations = new ArrayList<>();
operations.add(new Update(nodeConfigTable, List.of(new Condition("module", Function.EQUALS, new Atom<>("syslog"))), new Row(columns)));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
long numUpdates = 0;
for (OperationResult res : result) {
if (res instanceof UpdateResult) {
numUpdates += ((UpdateResult) res).getCount();
LOG.debug("configureSyslog update result {}", res);
}
}
if (numUpdates == 0) {
// no records existed, insert the row instead
operations.clear();
operations.add(new Insert(nodeConfigTable, new Row(columns)));
fResult = ovsdbClient.transact(ovsdbName, operations);
result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
LOG.debug("configureSyslog insert result {}", res);
}
}
} else {
LOG.debug("Disable remote_logging", apNetworkConfig.getSyslogRelay());
List<Operation> operations = new ArrayList<>();
operations.add(new Delete(nodeConfigTable, List.of(new Condition("module", Function.EQUALS, new Atom<>("syslog")))));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
if (res instanceof UpdateResult) {
LOG.debug("configureSyslog disabled remote_logging {}", res);
}
}
}
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
throw new RuntimeException(e);
}
}
} }

View File

@@ -1,9 +1,27 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao; package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
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.core.model.equipment.SourceType;
import com.telecominfraproject.wlan.equipment.models.*; import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration;
import com.telecominfraproject.wlan.equipment.models.MimoMode;
import com.telecominfraproject.wlan.equipment.models.RadioConfiguration;
import com.telecominfraproject.wlan.equipment.models.StateSetting;
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;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiVifConfigInfo; import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiVifConfigInfo;
@@ -12,19 +30,15 @@ import com.telecominfraproject.wlan.profile.rf.models.RfElementConfiguration;
import com.vmware.ovsdb.exception.OvsdbClientException; import com.vmware.ovsdb.exception.OvsdbClientException;
import com.vmware.ovsdb.protocol.operation.Operation; import com.vmware.ovsdb.protocol.operation.Operation;
import com.vmware.ovsdb.protocol.operation.Update; import com.vmware.ovsdb.protocol.operation.Update;
import com.vmware.ovsdb.protocol.operation.notation.*; import com.vmware.ovsdb.protocol.operation.notation.Atom;
import com.vmware.ovsdb.protocol.operation.notation.Condition;
import com.vmware.ovsdb.protocol.operation.notation.Function;
import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
import com.vmware.ovsdb.protocol.operation.notation.Value;
import com.vmware.ovsdb.protocol.operation.result.OperationResult; import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.protocol.schema.DatabaseSchema;
import com.vmware.ovsdb.service.OvsdbClient; import com.vmware.ovsdb.service.OvsdbClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@Component @Component
public class OvsdbRadioConfig extends OvsdbDaoBase { public class OvsdbRadioConfig extends OvsdbDaoBase {
@@ -40,75 +54,80 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
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);
List<Operation> operations = new ArrayList<>(); List<Operation> operations = new ArrayList<>();
for (RadioType radioType : apElementConfiguration.getRadioMap().keySet()) { try {
Map<String, String> hwConfig = new HashMap<>(); CompletableFuture<DatabaseSchema> cfDatabaseSchema = ovsdbClient.getSchema(ovsdbName);
ElementRadioConfiguration elementRadioConfig = apElementConfiguration.getRadioMap().get(radioType); DatabaseSchema databaseSchema = cfDatabaseSchema.get();
RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType); Set<String> columnNames = databaseSchema.getTables().get(wifiRadioConfigDbTable).getColumns().keySet();
boolean autoChannelSelection = rfElementConfig.getAutoChannelSelection();
int channel = elementRadioConfig.getActiveChannel(autoChannelSelection); for (RadioType radioType : apElementConfiguration.getRadioMap().keySet()) {
LOG.debug("configureWifiRadios autoChannelSelection {} activeChannel {} getChannelNumber {} ", Map<String, String> hwConfig = new HashMap<>();
autoChannelSelection, channel, elementRadioConfig.getChannelNumber()); ElementRadioConfiguration elementRadioConfig = apElementConfiguration.getRadioMap().get(radioType);
ChannelBandwidth bandwidth = rfElementConfig.getChannelBandwidth(); RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType);
String ht_mode = getBandwidth(bandwidth); boolean autoChannelSelection = rfElementConfig.getAutoChannelSelection();
RadioConfiguration radioConfig = apElementConfiguration.getAdvancedRadioMap().get(radioType); int channel = elementRadioConfig.getActiveChannel(autoChannelSelection);
int beaconInterval = rfElementConfig.getBeaconInterval(); LOG.debug("configureWifiRadios autoChannelSelection {} activeChannel {} getChannelNumber {} ",
boolean enabled = radioConfig.getRadioAdminState().equals(StateSetting.enabled); autoChannelSelection, channel, elementRadioConfig.getChannelNumber());
int txPower; ChannelBandwidth bandwidth = rfElementConfig.getChannelBandwidth();
if (elementRadioConfig.getEirpTxPower().getSource() == SourceType.profile) { String ht_mode = getBandwidth(bandwidth);
txPower = rfElementConfig.getEirpTxPower(); RadioConfiguration radioConfig = apElementConfiguration.getAdvancedRadioMap().get(radioType);
} else { int beaconInterval = rfElementConfig.getBeaconInterval();
txPower = elementRadioConfig.getEirpTxPower().getValue(); boolean enabled = radioConfig.getRadioAdminState().equals(StateSetting.enabled);
} int txPower;
String hwMode = getHwMode(rfElementConfig); if (elementRadioConfig.getEirpTxPower().getSource() == SourceType.profile) {
String freqBand = getHwConfigAndFreq(radioType, hwConfig); txPower = rfElementConfig.getEirpTxPower();
String radioName = null; } else {
for (String key : provisionedRadioConfigs.keySet()) { txPower = elementRadioConfig.getEirpTxPower().getValue();
if (provisionedRadioConfigs.get(key).freqBand.equals(freqBand)) { }
radioName = key; String hwMode = getHwMode(rfElementConfig);
break; String freqBand = getHwConfigAndFreq(radioType, hwConfig);
String radioName = null;
for (String key : provisionedRadioConfigs.keySet()) {
if (provisionedRadioConfigs.get(key).freqBand.equals(freqBand)) {
radioName = key;
break;
}
}
if (radioName == null) continue;
String ifName = null; // for vifConfigs
if (radioName.equals(radio0)) {
ifName = defaultRadio0;
} else if (radioName.equals(radio1)) {
ifName = defaultRadio1;
} else if (radioName.equals(radio2)) {
ifName = defaultRadio2;
}
if (ifName == null) continue;
Set<Uuid> vifUuidsForRadio = new HashSet<>();
for (String key : vifConfigs.keySet()) {
if (key.contains(ifName))
vifUuidsForRadio.add(vifConfigs.get(key).uuid);
}
int mimoMode = MimoMode.none.getId();
if (rfElementConfig.getMimoMode() != null) {
mimoMode = rfElementConfig.getMimoMode().getId();
}
int maxNumClients = 0;
if (rfElementConfig.getMaxNumClients() != null) {
maxNumClients = rfElementConfig.getMaxNumClients();
}
try {
configureWifiRadios(freqBand, channel, hwConfig, country.toUpperCase(), beaconInterval,
enabled, hwMode, ht_mode, txPower, mimoMode, vifUuidsForRadio, operations, maxNumClients,columnNames);
} catch (OvsdbClientException e) {
LOG.error("ConfigureWifiRadios failed with OvsdbClient exception.", e);
throw new RuntimeException(e);
} catch (TimeoutException e) {
LOG.error("ConfigureWifiRadios failed with Timeout.", e);
throw new RuntimeException(e);
} catch (ExecutionException e) {
LOG.error("ConfigureWifiRadios excecution failed.", e);
throw new RuntimeException(e);
} catch (InterruptedException e) {
LOG.error("ConfigureWifiRadios interrupted.", e);
throw new RuntimeException(e);
} }
} }
if (radioName == null) continue;
String ifName = null; // for vifConfigs
if (radioName.equals(radio0)) {
ifName = defaultRadio0;
} else if (radioName.equals(radio1)) {
ifName = defaultRadio1;
} else if (radioName.equals(radio2)) {
ifName = defaultRadio2;
}
if (ifName == null) continue;
Set<Uuid> vifUuidsForRadio = new HashSet<>();
for (String key : vifConfigs.keySet()) {
if (key.contains(ifName))
vifUuidsForRadio.add(vifConfigs.get(key).uuid);
}
int mimoMode = MimoMode.none.getId();
if (rfElementConfig.getMimoMode() != null) {
mimoMode = rfElementConfig.getMimoMode().getId();
}
int maxNumClients = 0;
if (rfElementConfig.getMaxNumClients() != null) {
maxNumClients = rfElementConfig.getMaxNumClients();
}
try {
configureWifiRadios(freqBand, channel, hwConfig, country.toUpperCase(), beaconInterval,
enabled, hwMode, ht_mode, txPower, mimoMode, vifUuidsForRadio, operations, maxNumClients);
} catch (OvsdbClientException e) {
LOG.error("ConfigureWifiRadios failed with OvsdbClient exception.", e);
throw new RuntimeException(e);
} catch (TimeoutException e) {
LOG.error("ConfigureWifiRadios failed with Timeout.", e);
throw new RuntimeException(e);
} catch (ExecutionException e) {
LOG.error("ConfigureWifiRadios excecution failed.", e);
throw new RuntimeException(e);
} catch (InterruptedException e) {
LOG.error("ConfigureWifiRadios interrupted.", e);
throw new RuntimeException(e);
}
}
try {
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);
for (OperationResult res : result) { for (OperationResult res : result) {
@@ -217,7 +236,7 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
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 ht_mode, int txPower, String country, int beaconInterval, boolean enabled, String hwMode, String ht_mode, int txPower,
int mimoMode, Set<Uuid> vifUuidsForRadio, List<Operation> operations, int maxNumClients) throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException { int mimoMode, Set<Uuid> vifUuidsForRadio, List<Operation> operations, int maxNumClients, Set<String> tableColumns) 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)));
@@ -243,7 +262,7 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
updateColumns.put("hw_mode", new Atom<>(hwMode)); updateColumns.put("hw_mode", new Atom<>(hwMode));
} }
configureCustomOptionsMap(maxNumClients, updateColumns); configureCustomOptionsMap(maxNumClients, updateColumns);
setTxAndRxChainmask(mimoMode, updateColumns); setTxAndRxChainmask(mimoMode, updateColumns,tableColumns);
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);
@@ -262,23 +281,29 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
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, Set<String> tableColumns) {
/* /*
* 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
* 2 3 * 2 3
* 3 7 * 3 7
* 4 15 * 4 15
*/ */
if (mimoMode == 2) {mimoMode = 3;} if (mimoMode == 2) {
else if (mimoMode == 3) {mimoMode = 7;} mimoMode = 3;
else if (mimoMode == 4) {mimoMode = 15;} } else if (mimoMode == 3) {
mimoMode = 7;
} else if (mimoMode == 4) {
mimoMode = 15;
}
updateColumns.put("tx_chainmask", new Atom<>(mimoMode)); updateColumns.put("tx_chainmask", new Atom<>(mimoMode));
updateColumns.put("rx_chainmask", new Atom<>(mimoMode)); if (tableColumns.contains("rx_chainmask")) {
updateColumns.put("rx_chainmask", new Atom<>(mimoMode));
}
} }
} }

View File

@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -16,6 +17,7 @@ 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;
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration; import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration; import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration;
import com.telecominfraproject.wlan.equipment.models.ManagementRate; import com.telecominfraproject.wlan.equipment.models.ManagementRate;
import com.telecominfraproject.wlan.equipment.models.MulticastRate; import com.telecominfraproject.wlan.equipment.models.MulticastRate;
@@ -38,6 +40,7 @@ import com.vmware.ovsdb.protocol.operation.result.ErrorResult;
import com.vmware.ovsdb.protocol.operation.result.InsertResult; import com.vmware.ovsdb.protocol.operation.result.InsertResult;
import com.vmware.ovsdb.protocol.operation.result.OperationResult; import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.protocol.operation.result.UpdateResult; import com.vmware.ovsdb.protocol.operation.result.UpdateResult;
import com.vmware.ovsdb.protocol.schema.DatabaseSchema;
import com.vmware.ovsdb.service.OvsdbClient; import com.vmware.ovsdb.service.OvsdbClient;
@Component @Component
@@ -114,43 +117,10 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
} }
} }
int multicastRateMbps = 0;
if (multicastRate != null) {
switch (multicastRate) {
case rate6mbps:
multicastRateMbps = 6;
break;
case rate9mbps:
multicastRateMbps = 9;
break;
case rate12mbps:
multicastRateMbps = 12;
break;
case rate18mbps:
multicastRateMbps = 18;
break;
case rate24mbps:
multicastRateMbps = 24;
break;
case rate36mbps:
multicastRateMbps = 36;
break;
case rate48mbps:
multicastRateMbps = 48;
break;
case rate54mbps:
multicastRateMbps = 54;
break;
case auto:
default:
multicastRateMbps = 0;
}
}
if (freqBand != null) { if (freqBand != null) {
try { try {
configureWifiRrm(ovsdbClient, freqBand, backupChannel, probeResponseThresholdDb, configureWifiRrm(ovsdbClient, freqBand, backupChannel, probeResponseThresholdDb,
clientDisconnectThresholdDb, managementRate, bestApSettings, multicastRateMbps); clientDisconnectThresholdDb, managementRate, bestApSettings, multicastRate);
} 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);
@@ -169,51 +139,65 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
void configureWifiRrm(OvsdbClient ovsdbClient, String freqBand, int backupChannel, void configureWifiRrm(OvsdbClient ovsdbClient, String freqBand, int backupChannel,
AutoOrManualValue probeResponseThreshold, AutoOrManualValue clientDisconnectThreshold, AutoOrManualValue probeResponseThreshold, AutoOrManualValue clientDisconnectThreshold,
ManagementRate managementRate, RadioBestApSettings bestApSettings, int multicastRate) ManagementRate managementRate, RadioBestApSettings bestApSettings, MulticastRate multicastRate)
throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException { throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException {
CompletableFuture<DatabaseSchema> cfDatabaseSchema = ovsdbClient.getSchema(ovsdbName);
DatabaseSchema databaseSchema = cfDatabaseSchema.get();
Set<String> columnNames = databaseSchema.getTables().get(wifiRrmConfigDbTable).getColumns().keySet();
List<Operation> operations = new ArrayList<>(); List<Operation> operations = new ArrayList<>();
Map<String, Value> updateColumns = new HashMap<>(); Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("freq_band", new Atom<>(freqBand)); updateColumns.put("freq_band", new Atom<>(freqBand));
updateColumns.put("backup_channel", new Atom<>(backupChannel)); updateColumns.put("backup_channel", new Atom<>(backupChannel));
if (columnNames.contains("freq_band")) updateColumns.put("freq_band", new Atom<>(freqBand));
updateColumns.put("mcast_rate", new Atom<>(multicastRate)); if (columnNames.contains("backup_channel")) updateColumns.put("backup_channel", new Atom<>(backupChannel));
if (columnNames.contains("mcast_rate")) {
if (probeResponseThreshold == null || probeResponseThreshold.isAuto()) { if (multicastRate == null || multicastRate == MulticastRate.auto) {
updateColumns.put("probe_resp_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set()); updateColumns.put("mcast_rate", new Atom<>(0));
} else { } else {
updateColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.getValue())); updateColumns.put("mcast_rate", new Atom<>(managementRate.getId()));
}
} }
if (columnNames.contains("probe_resp_threshold")) {
if (probeResponseThreshold == null || clientDisconnectThreshold.isAuto()) { if (probeResponseThreshold == null || probeResponseThreshold.isAuto()) {
updateColumns.put("client_disconnect_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("client_disconnect_threshold", new Atom<>(clientDisconnectThreshold.getValue())); updateColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.getValue()));
}
} }
if (columnNames.contains("client_disconnect_threshold")) {
if (managementRate == null || managementRate == ManagementRate.auto) { if (clientDisconnectThreshold == null || clientDisconnectThreshold.isAuto()) {
updateColumns.put("beacon_rate", new Atom<>(0)); updateColumns.put("client_disconnect_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else { } else {
updateColumns.put("beacon_rate", new Atom<>(managementRate.getId() * 10)); updateColumns.put("client_disconnect_threshold", new Atom<>(clientDisconnectThreshold.getValue()));
}
} }
if (columnNames.contains("beacon_rate")) {
if (bestApSettings == null) { if (managementRate == null || managementRate == ManagementRate.auto) {
updateColumns.put("min_load", new com.vmware.ovsdb.protocol.operation.notation.Set()); updateColumns.put("beacon_rate", new Atom<>(0));
updateColumns.put("snr_percentage_drop", new com.vmware.ovsdb.protocol.operation.notation.Set()); } else {
} else { updateColumns.put("beacon_rate", new Atom<>(managementRate.getId() * 10));
if (bestApSettings.getDropInSnrPercentage() == null) { }
}
if (columnNames.contains("min_load") && columnNames.contains("snr_percentage_drop")) {
if (bestApSettings == null) {
updateColumns.put("min_load", new com.vmware.ovsdb.protocol.operation.notation.Set());
updateColumns.put("snr_percentage_drop", new com.vmware.ovsdb.protocol.operation.notation.Set()); updateColumns.put("snr_percentage_drop", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else { } else {
updateColumns.put("snr_percentage_drop", new Atom<>(bestApSettings.getDropInSnrPercentage())); if (bestApSettings.getDropInSnrPercentage() == null) {
} updateColumns.put("snr_percentage_drop", new com.vmware.ovsdb.protocol.operation.notation.Set());
if (bestApSettings.getMinLoadFactor() == null) { } else {
updateColumns.put("min_load", new com.vmware.ovsdb.protocol.operation.notation.Set()); updateColumns.put("snr_percentage_drop", new Atom<>(bestApSettings.getDropInSnrPercentage()));
} else { }
updateColumns.put("min_load", new Atom<>(bestApSettings.getMinLoadFactor())); if (bestApSettings.getMinLoadFactor() == null) {
updateColumns.put("min_load", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else {
updateColumns.put("min_load", new Atom<>(bestApSettings.getMinLoadFactor()));
}
} }
} }
Row row = new Row(updateColumns); Row row = new Row(updateColumns);
operations.add(new Insert(wifiRrmConfigDbTable, row)); operations.add(new Insert(wifiRrmConfigDbTable, row));
@@ -233,7 +217,6 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
LOG.error("configureWifiRrm error {}", (res)); LOG.error("configureWifiRrm error {}", (res));
throw new RuntimeException("configureWifiRrm " + ((ErrorResult) res).getError() + " " + ((ErrorResult) res).getDetails()); throw new RuntimeException("configureWifiRrm " + ((ErrorResult) res).getError() + " " + ((ErrorResult) res).getDetails());
} }
} }
} }
@@ -289,6 +272,88 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
} }
} }
void processCellSizeAttributesRequest(OvsdbClient ovsdbClient, Map<RadioType, CellSizeAttributes> cellSizeAttributesMap) {
LOG.info("OvsdbDao::processCellSizeAttributesRequest cellSizeAttributes {}", cellSizeAttributesMap);
try {
List<Operation> operations = new ArrayList<>();
cellSizeAttributesMap.entrySet().stream().forEach(c -> {
String freqBand = OvsdbToWlanCloudTypeMappingUtility.getOvsdbRadioFreqBandForRadioType(c.getKey());
List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("freq_band", Function.EQUALS, new Atom<>(freqBand)));
Map<String, Value> updateRrmColumns = new HashMap<>();
CellSizeAttributes cellSizeAttributes = c.getValue();
MulticastRate multicastRate = cellSizeAttributes.getMulticastRate();
if (multicastRate == null || multicastRate == MulticastRate.auto) {
updateRrmColumns.put("mcast_rate", new Atom<>(0));
} else {
updateRrmColumns.put("mcast_rate", new Atom<>(multicastRate.getId()));
}
Integer probeResponseThreshold = cellSizeAttributes.getProbeResponseThresholdDb();
if (probeResponseThreshold == null) {
updateRrmColumns.put("probe_resp_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else {
updateRrmColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.intValue()));
}
Integer clientDisconnectThreshold = cellSizeAttributes.getClientDisconnectThresholdDb();
if (clientDisconnectThreshold == null) {
updateRrmColumns.put("client_disconnect_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else {
updateRrmColumns.put("client_disconnect_threshold", new Atom<>(clientDisconnectThreshold.intValue()));
}
ManagementRate managementRate = cellSizeAttributes.getManagementRate();
if (managementRate == null || managementRate == ManagementRate.auto) {
updateRrmColumns.put("beacon_rate", new Atom<>(0));
} else {
updateRrmColumns.put("beacon_rate", new Atom<>(managementRate.getId() * 10));
}
Row rowRrm = new Row(updateRrmColumns);
operations.add(new Update(wifiRrmConfigDbTable, conditions, rowRrm));
Map<String, Value> updateRadioColumns = new HashMap<>();
Integer txPower = cellSizeAttributes.getEirpTxPowerDb();
if (txPower > 0) {
updateRadioColumns.put("tx_power", new Atom<>(txPower));
} else {
updateRadioColumns.put("tx_power", new com.vmware.ovsdb.protocol.operation.notation.Set());
}
Row rowRadio = new Row(updateRadioColumns);
operations.add(new Update(wifiRadioConfigDbTable, conditions, rowRadio));
});
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
LOG.info("Op Result {}", res);
if (res instanceof InsertResult) {
LOG.info("processCellSizeAttributesRequest insert new row result {}", (res));
// for insert, make sure it is actually in the table
confirmRowExistsInTable(ovsdbClient, ((InsertResult) res).getUuid(), wifiRrmConfigDbTable);
} else if (res instanceof ErrorResult) {
LOG.error("processCellSizeAttributesRequest error {}", (res));
throw new RuntimeException("processCellSizeAttributesRequest " + ((ErrorResult) res).getError() +
" " + ((ErrorResult) res).getDetails());
}
}
LOG.info("Updated ovsdb config for cell size attributes.");
} catch (ExecutionException e) {
LOG.error("Error in processCellSizeAttributesRequest", e);
} catch (OvsdbClientException | TimeoutException | InterruptedException e) {
LOG.error("Error in processCellSizeAttributesRequest", e);
throw new RuntimeException(e);
}
}
void removeWifiRrm(OvsdbClient ovsdbClient) { void removeWifiRrm(OvsdbClient ovsdbClient) {
try { try {

View File

@@ -106,7 +106,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
List<Operation> operations = new ArrayList<>(); List<Operation> operations = new ArrayList<>();
Map<String, Value> updateColumns = new HashMap<>(); Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("reporting_interval", new Atom<>(60)); updateColumns.put("reporting_interval", new Atom<>(defaultReportingIntervalSeconds));
updateColumns.put("radio_type", new Atom<>("2.4G")); updateColumns.put("radio_type", new Atom<>("2.4G"));
updateColumns.put("stats_type", new Atom<>("network_probe")); updateColumns.put("stats_type", new Atom<>("network_probe"));
@@ -197,7 +197,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
List<Operation> operations = new ArrayList<>(); List<Operation> operations = new ArrayList<>();
Map<String, Value> rowColumns = new HashMap<>(); Map<String, Value> rowColumns = new HashMap<>();
rowColumns.put("radio_type", new Atom<>("2.4G")); rowColumns.put("radio_type", new Atom<>("2.4G"));
rowColumns.put("reporting_interval", new Atom<>(60)); rowColumns.put("reporting_interval", new Atom<>(defaultReportingIntervalSeconds));
rowColumns.put("report_type", new Atom<>("raw")); rowColumns.put("report_type", new Atom<>("raw"));
rowColumns.put("sampling_interval", new Atom<>(10)); rowColumns.put("sampling_interval", new Atom<>(10));
rowColumns.put("stats_type", new Atom<>("video_voice")); rowColumns.put("stats_type", new Atom<>("video_voice"));
@@ -244,7 +244,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
// //
Map<String, Value> rowColumns = new HashMap<>(); Map<String, Value> rowColumns = new HashMap<>();
rowColumns.put("radio_type", new Atom<>(rc.freqBand)); rowColumns.put("radio_type", new Atom<>(rc.freqBand));
rowColumns.put("reporting_interval", new Atom<>(60)); rowColumns.put("reporting_interval", new Atom<>(defaultReportingIntervalSeconds));
rowColumns.put("report_type", new Atom<>("raw")); rowColumns.put("report_type", new Atom<>("raw"));
rowColumns.put("sampling_interval", new Atom<>(10)); rowColumns.put("sampling_interval", new Atom<>(10));
rowColumns.put("stats_type", new Atom<>("client")); rowColumns.put("stats_type", new Atom<>("client"));
@@ -277,7 +277,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
rowColumns.put("channel_list", channels); rowColumns.put("channel_list", channels);
rowColumns.put("radio_type", new Atom<>(rc.freqBand)); rowColumns.put("radio_type", new Atom<>(rc.freqBand));
rowColumns.put("reporting_interval", new Atom<>(60)); rowColumns.put("reporting_interval", new Atom<>(defaultOffChannelReportingIntervalSeconds));
rowColumns.put("stats_type", new Atom<>("neighbor")); rowColumns.put("stats_type", new Atom<>("neighbor"));
rowColumns.put("survey_type", new Atom<>("off-chan")); rowColumns.put("survey_type", new Atom<>("off-chan"));
@@ -296,7 +296,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
// //
Map<String, Value> rowColumns = new HashMap<>(); Map<String, Value> rowColumns = new HashMap<>();
rowColumns.put("radio_type", new Atom<>(rc.freqBand)); rowColumns.put("radio_type", new Atom<>(rc.freqBand));
rowColumns.put("reporting_interval", new Atom<>(60)); rowColumns.put("reporting_interval", new Atom<>(defaultReportingIntervalSeconds));
rowColumns.put("stats_type", new Atom<>("neighbor")); rowColumns.put("stats_type", new Atom<>("neighbor"));
rowColumns.put("survey_type", new Atom<>("on-chan")); rowColumns.put("survey_type", new Atom<>("on-chan"));
@@ -321,7 +321,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
Map<String, Value> rowColumns = new HashMap<>(); Map<String, Value> rowColumns = new HashMap<>();
rowColumns.put("radio_type", new Atom<>(rc.freqBand)); rowColumns.put("radio_type", new Atom<>(rc.freqBand));
rowColumns.put("reporting_interval", new Atom<>(60)); rowColumns.put("reporting_interval", new Atom<>(defaultReportingIntervalSeconds));
rowColumns.put("report_type", new Atom<>("raw")); rowColumns.put("report_type", new Atom<>("raw"));
rowColumns.put("sampling_interval", new Atom<>(10)); rowColumns.put("sampling_interval", new Atom<>(10));
rowColumns.put("stats_type", new Atom<>("survey")); rowColumns.put("stats_type", new Atom<>("survey"));
@@ -350,7 +350,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
rowColumns.put("channel_list", channels); rowColumns.put("channel_list", channels);
rowColumns.put("radio_type", new Atom<>(rc.freqBand)); rowColumns.put("radio_type", new Atom<>(rc.freqBand));
rowColumns.put("reporting_interval", new Atom<>(120)); rowColumns.put("reporting_interval", new Atom<>(defaultOffChannelReportingIntervalSeconds));
rowColumns.put("report_type", new Atom<>("raw")); rowColumns.put("report_type", new Atom<>("raw"));
rowColumns.put("stats_type", new Atom<>("survey")); rowColumns.put("stats_type", new Atom<>("survey"));
rowColumns.put("survey_type", new Atom<>("off-chan")); rowColumns.put("survey_type", new Atom<>("off-chan"));