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

View File

@@ -1736,7 +1736,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
EquipmentManufacturerQrCode qrCode = new EquipmentManufacturerQrCode();
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"));
if (isValidMACAddress(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.server.container.ConnectorProperties;
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.CEGWBlinkRequest;
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.CEGWFirmwareFlashRequest;
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.CEGWRebootRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck;
@@ -205,6 +207,9 @@ public class OpensyncCloudGatewayController {
case NewChannelRequest:
ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command));
break;
case CellSizeAttributesRequest:
ret.add(sendCellSizeRequest(session, (CEGWCellSizeAttributesRequest) command));
break;
default:
LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command);
ret.add(new EquipmentCommandResponse(
@@ -296,6 +301,10 @@ public class OpensyncCloudGatewayController {
private EquipmentCommandResponse sendNewChannelRequest(OvsdbSession session, CEGWNewChannelRequest 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
@@ -333,6 +342,12 @@ public class OpensyncCloudGatewayController {
String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels,newPrimaryChannels);
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) {

View File

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

View File

@@ -1,11 +1,9 @@
<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">
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>opensync-ext-interface</artifactId>
@@ -15,33 +13,33 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-opensync-protobuf</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>routing-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</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.RadioType;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
public interface OvsdbClientInterface {
@@ -33,4 +34,6 @@ public interface OvsdbClientInterface {
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>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>opensync-ext-static</artifactId>
@@ -13,7 +13,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

View File

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

View File

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

View File

@@ -22,6 +22,8 @@ FILE_STORE_DIRECTORY="${FILE_STORE_DIRECTORY_INTERNAL:=/tmp/filestore}"
FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}"
MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_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_lan_type=$DEFAULT_LAN_TYPE"
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"

View File

@@ -1,11 +1,9 @@
<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">
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>opensync-gateway-cloud-process</artifactId>
@@ -22,95 +20,95 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-ext-cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>filestore-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>customer-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-user-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>status-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>routing-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>firmware-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>manufacturer-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

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

View File

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

View File

@@ -1,11 +1,9 @@
<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">
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>opensync-gateway</artifactId>
@@ -16,22 +14,22 @@
<dependency>
<artifactId>base-container</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-ext-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>customer-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.vmware.ovsdb</groupId>
@@ -49,13 +47,13 @@
<dependency>
<artifactId>service-metric-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>status-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>0.0.1-SNAPSHOT</version>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<!-- 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.core.model.equipment.MacAddress;
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.RowUpdateOperation;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbClientInterface;
@@ -248,7 +249,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId);
if (opensyncAPConfig != null) {
ovsdbDao.configureNtpServer(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureNode(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig);
@@ -319,7 +320,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
extIntegrationInterface.clearEquipmentStatus(apId);
ovsdbDao.configureNtpServer(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureNode(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureGreTunnels(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;
}
}
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.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.OpensyncAPConfig;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState;
@@ -84,9 +85,17 @@ public class OvsdbDao extends OvsdbDaoBase {
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);
}
void configureSyslog(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
ovsdbNodeConfig.configureSyslog(ovsdbClient, opensyncAPConfig);
}
public void configureRadsecRadiusAndRealm(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
ovsdbRadiusProxyConfig.configureRadius(ovsdbClient, opensyncAPConfig);
@@ -180,6 +189,10 @@ public class OvsdbDao extends OvsdbDaoBase {
Map<RadioType, Integer> 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) {
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}")
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() {
}

View File

@@ -576,26 +576,25 @@ public class OvsdbHotspotConfig extends OvsdbDaoBase {
rowColumns.put("access_network_type", new Atom<>(hs2Profile.getAccessNetworkType().getId()));
}
}
// # 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
// 0x3 = 3 in decimal
if (PasspointIPv6AddressType.getByName(
hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv6AddressType.UNSUPPORTED) {
int availability = PasspointIPv6AddressType
.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));
} else if (PasspointIPv4AddressType.getByName(
}else if (PasspointIPv4AddressType.getByName(
hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv4AddressType.UNSUPPORTED) {
int availability = PasspointIPv4AddressType
.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));
}
}
Row row = new Row(rowColumns);
Insert newHs20Config = new Insert(hotspot20ConfigDbTable, row);
@@ -676,8 +675,8 @@ public class OvsdbHotspotConfig extends OvsdbDaoBase {
operations.add(newOsuProvider);
} else {
List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("server_uri", Function.EQUALS,
new Atom<>(providerProfile.getOsuServerUri())));
conditions.add(new Condition("osu_provider_name", Function.EQUALS,
new Atom<>(apOsuProviderName)));
Update updatedOsuProvider = new Update(hotspot20OsuProvidersDbTable, conditions, row);
operations.add(updatedOsuProvider);
}

View File

@@ -1,3 +1,4 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
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.profile.network.models.ApNetworkConfiguration;
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.Update;
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.Value;
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.protocol.operation.result.UpdateResult;
import com.vmware.ovsdb.service.OvsdbClient;
@Component
@@ -33,8 +37,7 @@ public class OvsdbNodeConfig extends OvsdbDaoBase {
public void configureNtpServer(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
try {
ApNetworkConfiguration apNetworkConfig = (ApNetworkConfiguration) opensyncAPConfig.getApProfile()
.getDetails();
ApNetworkConfiguration apNetworkConfig = (ApNetworkConfiguration) opensyncAPConfig.getApProfile().getDetails();
if (apNetworkConfig.getNtpServer() == null || apNetworkConfig.getNtpServer().getValue() == null) {
LOG.info("Cannot configure NTP server to null value. {}", apNetworkConfig);
return;
@@ -43,8 +46,7 @@ public class OvsdbNodeConfig extends OvsdbDaoBase {
Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("value", new Atom<>(apNetworkConfig.getNtpServer().getValue()));
List<Operation> operations = new ArrayList<>();
operations.add(new Update(nodeConfigTable,
List.of(new Condition("module", Function.EQUALS, new Atom<>("ntp"))), new Row(updateColumns)));
operations.add(new Update(nodeConfigTable, List.of(new Condition("module", Function.EQUALS, new Atom<>("ntp"))), new Row(updateColumns)));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
@@ -54,4 +56,67 @@ public class OvsdbNodeConfig extends OvsdbDaoBase {
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;
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.RadioType;
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.ovsdb.dao.models.WifiRadioConfigInfo;
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.protocol.operation.Operation;
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.schema.DatabaseSchema;
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
public class OvsdbRadioConfig extends OvsdbDaoBase {
@@ -40,75 +54,80 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
Map<String, WifiRadioConfigInfo> provisionedRadioConfigs = ovsdbGet.getProvisionedWifiRadioConfigs(ovsdbClient);
Map<String, WifiVifConfigInfo> vifConfigs = ovsdbGet.getProvisionedWifiVifConfigs(ovsdbClient);
List<Operation> operations = new ArrayList<>();
for (RadioType radioType : apElementConfiguration.getRadioMap().keySet()) {
Map<String, String> hwConfig = new HashMap<>();
ElementRadioConfiguration elementRadioConfig = apElementConfiguration.getRadioMap().get(radioType);
RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType);
boolean autoChannelSelection = rfElementConfig.getAutoChannelSelection();
int channel = elementRadioConfig.getActiveChannel(autoChannelSelection);
LOG.debug("configureWifiRadios autoChannelSelection {} activeChannel {} getChannelNumber {} ",
autoChannelSelection, channel, elementRadioConfig.getChannelNumber());
ChannelBandwidth bandwidth = rfElementConfig.getChannelBandwidth();
String ht_mode = getBandwidth(bandwidth);
RadioConfiguration radioConfig = apElementConfiguration.getAdvancedRadioMap().get(radioType);
int beaconInterval = rfElementConfig.getBeaconInterval();
boolean enabled = radioConfig.getRadioAdminState().equals(StateSetting.enabled);
int txPower;
if (elementRadioConfig.getEirpTxPower().getSource() == SourceType.profile) {
txPower = rfElementConfig.getEirpTxPower();
} else {
txPower = elementRadioConfig.getEirpTxPower().getValue();
}
String hwMode = getHwMode(rfElementConfig);
String freqBand = getHwConfigAndFreq(radioType, hwConfig);
String radioName = null;
for (String key : provisionedRadioConfigs.keySet()) {
if (provisionedRadioConfigs.get(key).freqBand.equals(freqBand)) {
radioName = key;
break;
try {
CompletableFuture<DatabaseSchema> cfDatabaseSchema = ovsdbClient.getSchema(ovsdbName);
DatabaseSchema databaseSchema = cfDatabaseSchema.get();
Set<String> columnNames = databaseSchema.getTables().get(wifiRadioConfigDbTable).getColumns().keySet();
for (RadioType radioType : apElementConfiguration.getRadioMap().keySet()) {
Map<String, String> hwConfig = new HashMap<>();
ElementRadioConfiguration elementRadioConfig = apElementConfiguration.getRadioMap().get(radioType);
RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType);
boolean autoChannelSelection = rfElementConfig.getAutoChannelSelection();
int channel = elementRadioConfig.getActiveChannel(autoChannelSelection);
LOG.debug("configureWifiRadios autoChannelSelection {} activeChannel {} getChannelNumber {} ",
autoChannelSelection, channel, elementRadioConfig.getChannelNumber());
ChannelBandwidth bandwidth = rfElementConfig.getChannelBandwidth();
String ht_mode = getBandwidth(bandwidth);
RadioConfiguration radioConfig = apElementConfiguration.getAdvancedRadioMap().get(radioType);
int beaconInterval = rfElementConfig.getBeaconInterval();
boolean enabled = radioConfig.getRadioAdminState().equals(StateSetting.enabled);
int txPower;
if (elementRadioConfig.getEirpTxPower().getSource() == SourceType.profile) {
txPower = rfElementConfig.getEirpTxPower();
} else {
txPower = elementRadioConfig.getEirpTxPower().getValue();
}
String hwMode = getHwMode(rfElementConfig);
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);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
@@ -217,7 +236,7 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
void configureWifiRadios(String freqBand, int channel, Map<String, String> hwConfig,
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<>();
List<Condition> conditions = new ArrayList<>();
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));
}
configureCustomOptionsMap(maxNumClients, updateColumns);
setTxAndRxChainmask(mimoMode, updateColumns);
setTxAndRxChainmask(mimoMode, updateColumns,tableColumns);
if (vifUuidsForRadio.size() > 0) {
com.vmware.ovsdb.protocol.operation.notation.Set vifConfigUuids = com.vmware.ovsdb.protocol.operation.notation.Set
.of(vifUuidsForRadio);
@@ -262,23 +281,29 @@ public class OvsdbRadioConfig extends OvsdbDaoBase {
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
* Note values 0, 1 remain unchanged
* Note values 0, 1 remain unchanged
*
* mimoMode bitmask
* 0 0
* 1 1
* 2 3
* 3 7
* 4 15
* mimoMode bitmask
* 0 0
* 1 1
* 2 3
* 3 7
* 4 15
*/
if (mimoMode == 2) {mimoMode = 3;}
else if (mimoMode == 3) {mimoMode = 7;}
else if (mimoMode == 4) {mimoMode = 15;}
if (mimoMode == 2) {
mimoMode = 3;
} else if (mimoMode == 3) {
mimoMode = 7;
} else if (mimoMode == 4) {
mimoMode = 15;
}
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.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
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.SourceType;
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.ManagementRate;
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.OperationResult;
import com.vmware.ovsdb.protocol.operation.result.UpdateResult;
import com.vmware.ovsdb.protocol.schema.DatabaseSchema;
import com.vmware.ovsdb.service.OvsdbClient;
@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) {
try {
configureWifiRrm(ovsdbClient, freqBand, backupChannel, probeResponseThresholdDb,
clientDisconnectThresholdDb, managementRate, bestApSettings, multicastRateMbps);
clientDisconnectThresholdDb, managementRate, bestApSettings, multicastRate);
} catch (OvsdbClientException e) {
LOG.error("configureRrm failed with OvsdbClient exception.", e);
throw new RuntimeException(e);
@@ -169,51 +139,65 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
void configureWifiRrm(OvsdbClient ovsdbClient, String freqBand, int backupChannel,
AutoOrManualValue probeResponseThreshold, AutoOrManualValue clientDisconnectThreshold,
ManagementRate managementRate, RadioBestApSettings bestApSettings, int multicastRate)
throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException {
ManagementRate managementRate, RadioBestApSettings bestApSettings, MulticastRate multicastRate)
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<>();
Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("freq_band", new Atom<>(freqBand));
updateColumns.put("backup_channel", new Atom<>(backupChannel));
updateColumns.put("mcast_rate", new Atom<>(multicastRate));
if (probeResponseThreshold == null || probeResponseThreshold.isAuto()) {
updateColumns.put("probe_resp_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else {
updateColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.getValue()));
if (columnNames.contains("freq_band")) updateColumns.put("freq_band", new Atom<>(freqBand));
if (columnNames.contains("backup_channel")) updateColumns.put("backup_channel", new Atom<>(backupChannel));
if (columnNames.contains("mcast_rate")) {
if (multicastRate == null || multicastRate == MulticastRate.auto) {
updateColumns.put("mcast_rate", new Atom<>(0));
} else {
updateColumns.put("mcast_rate", new Atom<>(managementRate.getId()));
}
}
if (probeResponseThreshold == null || clientDisconnectThreshold.isAuto()) {
updateColumns.put("client_disconnect_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else {
updateColumns.put("client_disconnect_threshold", new Atom<>(clientDisconnectThreshold.getValue()));
if (columnNames.contains("probe_resp_threshold")) {
if (probeResponseThreshold == null || probeResponseThreshold.isAuto()) {
updateColumns.put("probe_resp_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else {
updateColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.getValue()));
}
}
if (managementRate == null || managementRate == ManagementRate.auto) {
updateColumns.put("beacon_rate", new Atom<>(0));
} else {
updateColumns.put("beacon_rate", new Atom<>(managementRate.getId() * 10));
if (columnNames.contains("client_disconnect_threshold")) {
if (clientDisconnectThreshold == null || clientDisconnectThreshold.isAuto()) {
updateColumns.put("client_disconnect_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else {
updateColumns.put("client_disconnect_threshold", new Atom<>(clientDisconnectThreshold.getValue()));
}
}
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());
} else {
if (bestApSettings.getDropInSnrPercentage() == null) {
if (columnNames.contains("beacon_rate")) {
if (managementRate == null || managementRate == ManagementRate.auto) {
updateColumns.put("beacon_rate", new Atom<>(0));
} else {
updateColumns.put("beacon_rate", new Atom<>(managementRate.getId() * 10));
}
}
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());
} else {
updateColumns.put("snr_percentage_drop", new Atom<>(bestApSettings.getDropInSnrPercentage()));
}
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()));
if (bestApSettings.getDropInSnrPercentage() == null) {
updateColumns.put("snr_percentage_drop", new com.vmware.ovsdb.protocol.operation.notation.Set());
} else {
updateColumns.put("snr_percentage_drop", new Atom<>(bestApSettings.getDropInSnrPercentage()));
}
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);
operations.add(new Insert(wifiRrmConfigDbTable, row));
@@ -233,7 +217,6 @@ public class OvsdbRrmConfig extends OvsdbDaoBase {
LOG.error("configureWifiRrm error {}", (res));
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) {
try {

View File

@@ -106,7 +106,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
List<Operation> operations = new ArrayList<>();
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("stats_type", new Atom<>("network_probe"));
@@ -197,7 +197,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
List<Operation> operations = new ArrayList<>();
Map<String, Value> rowColumns = new HashMap<>();
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("sampling_interval", new Atom<>(10));
rowColumns.put("stats_type", new Atom<>("video_voice"));
@@ -244,7 +244,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
//
Map<String, Value> rowColumns = new HashMap<>();
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("sampling_interval", new Atom<>(10));
rowColumns.put("stats_type", new Atom<>("client"));
@@ -277,7 +277,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
rowColumns.put("channel_list", channels);
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("survey_type", new Atom<>("off-chan"));
@@ -296,7 +296,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
//
Map<String, Value> rowColumns = new HashMap<>();
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("survey_type", new Atom<>("on-chan"));
@@ -321,7 +321,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
Map<String, Value> rowColumns = new HashMap<>();
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("sampling_interval", new Atom<>(10));
rowColumns.put("stats_type", new Atom<>("survey"));
@@ -350,7 +350,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase {
rowColumns.put("channel_list", channels);
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("stats_type", new Atom<>("survey"));
rowColumns.put("survey_type", new Atom<>("off-chan"));