mirror of
				https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
				synced 2025-10-31 18:47:57 +00:00 
			
		
		
		
	Compare commits
	
		
			12 Commits
		
	
	
		
			WIFI-2007
			...
			release/v1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | af604289cc | ||
|   | e173e02eae | ||
|   | 1fbc4e1dff | ||
|   | cd67fc15dd | ||
|   | a98cca3d8c | ||
|   | 4552118b4e | ||
|   | 67abbc0bc7 | ||
|   | 9d33afec93 | ||
|   | 1bdecada9b | ||
|   | 9b31e67822 | ||
|   | 1af6b363b8 | ||
|   | 04c6a13675 | 
| @@ -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> | ||||
|   | ||||
| @@ -1736,7 +1736,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra | ||||
|  | ||||
|         EquipmentManufacturerQrCode qrCode = new EquipmentManufacturerQrCode(); | ||||
|         if (node.qrCode != null) { | ||||
|             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"))); | ||||
|   | ||||
| @@ -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( | ||||
| @@ -297,6 +302,10 @@ public class OpensyncCloudGatewayController { | ||||
|         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) { | ||||
|  | ||||
|   | ||||
| @@ -197,7 +197,8 @@ public class MqttStatsPublisher { | ||||
|         // 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); | ||||
|         // JsonFormat.Printer jsonPrinter = | ||||
|         // JsonFormat.printer().preservingProtoFieldNames().includingDefaultValueFields().usingTypeRegistry(oldRegistry); | ||||
|         // | ||||
|         // try { | ||||
|         // LOG.trace(jsonPrinter.print(report)); | ||||
| @@ -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) { | ||||
| @@ -661,8 +673,7 @@ 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())); | ||||
|         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); | ||||
| @@ -710,8 +721,7 @@ public class MqttStatsPublisher { | ||||
|     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())); | ||||
|         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); | ||||
| @@ -756,8 +766,7 @@ public class MqttStatsPublisher { | ||||
|  | ||||
|     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())); | ||||
|         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); | ||||
| @@ -801,8 +810,7 @@ public class MqttStatsPublisher { | ||||
|  | ||||
|     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())); | ||||
|         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); | ||||
| @@ -861,8 +869,7 @@ public class MqttStatsPublisher { | ||||
|     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())); | ||||
|         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); | ||||
| @@ -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; | ||||
| @@ -1088,7 +1093,8 @@ 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); | ||||
| @@ -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); | ||||
|             } | ||||
|  | ||||
|   | ||||
| @@ -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> | ||||
| 		 | ||||
|  | ||||
|   | ||||
| @@ -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); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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" | ||||
|  | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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 --> | ||||
|   | ||||
| @@ -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); | ||||
| @@ -966,4 +967,22 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     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; | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -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,10 +85,18 @@ 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); | ||||
|     } | ||||
| @@ -181,6 +190,10 @@ public class OvsdbDao extends OvsdbDaoBase { | ||||
|         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); | ||||
|     } | ||||
|   | ||||
| @@ -145,6 +145,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() { | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -579,23 +579,22 @@ public class OvsdbHotspotConfig extends OvsdbDaoBase { | ||||
|  | ||||
|  | ||||
|                         // # 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( | ||||
|                                 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); | ||||
|                         } | ||||
|   | ||||
| @@ -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); | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -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,6 +54,11 @@ public class OvsdbRadioConfig extends OvsdbDaoBase { | ||||
|         Map<String, WifiRadioConfigInfo> provisionedRadioConfigs = ovsdbGet.getProvisionedWifiRadioConfigs(ovsdbClient); | ||||
|         Map<String, WifiVifConfigInfo> vifConfigs = ovsdbGet.getProvisionedWifiVifConfigs(ovsdbClient); | ||||
|         List<Operation> operations = new ArrayList<>(); | ||||
|         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); | ||||
| @@ -93,7 +112,7 @@ public class OvsdbRadioConfig extends OvsdbDaoBase { | ||||
|                 } | ||||
|                 try { | ||||
|                     configureWifiRadios(freqBand, channel, hwConfig, country.toUpperCase(), beaconInterval, | ||||
|                         enabled, hwMode, ht_mode, txPower, mimoMode, vifUuidsForRadio, operations, maxNumClients); | ||||
|                             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); | ||||
| @@ -108,7 +127,7 @@ public class OvsdbRadioConfig extends OvsdbDaoBase { | ||||
|                     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,7 +281,7 @@ 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 | ||||
| @@ -274,11 +293,17 @@ public class OvsdbRadioConfig extends OvsdbDaoBase { | ||||
|          * 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)); | ||||
|         if (tableColumns.contains("rx_chainmask")) { | ||||
|             updateColumns.put("rx_chainmask", new Atom<>(mimoMode)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -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,35 +139,49 @@ public class OvsdbRrmConfig extends OvsdbDaoBase { | ||||
|  | ||||
|     void configureWifiRrm(OvsdbClient ovsdbClient, String freqBand, int backupChannel, | ||||
|             AutoOrManualValue probeResponseThreshold, AutoOrManualValue clientDisconnectThreshold, | ||||
|             ManagementRate managementRate, RadioBestApSettings bestApSettings, int multicastRate) | ||||
|             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 (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 (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 (probeResponseThreshold == null || clientDisconnectThreshold.isAuto()) { | ||||
|         } | ||||
|         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 (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()); | ||||
| @@ -213,7 +197,7 @@ public class OvsdbRrmConfig extends OvsdbDaoBase { | ||||
|                     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()); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -290,6 +273,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 { | ||||
|             List<Operation> operations = new ArrayList<>(); | ||||
|   | ||||
| @@ -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")); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user