mirror of
				https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
				synced 2025-10-31 10:37:51 +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"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||||
| 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |  | ||||||
| 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |  | ||||||
| 	<modelVersion>4.0.0</modelVersion> | 	<modelVersion>4.0.0</modelVersion> | ||||||
| 	<parent> | 	<parent> | ||||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | 		<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||||
| 		<version>0.0.1-SNAPSHOT</version> | 		<version>1.1.0-SNAPSHOT</version> | ||||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | 		<relativePath>../../wlan-cloud-root</relativePath> | ||||||
| 	</parent> | 	</parent> | ||||||
| 	<artifactId>opensync-ext-cloud</artifactId> | 	<artifactId>opensync-ext-cloud</artifactId> | ||||||
| @@ -21,121 +19,121 @@ | |||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<artifactId>opensync-gateway</artifactId> | 			<artifactId>opensync-gateway</artifactId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  	  |  	  | ||||||
|         <dependency> |         <dependency> | ||||||
|             <artifactId>base-client</artifactId> |             <artifactId>base-client</artifactId> | ||||||
|             <groupId>com.telecominfraproject.wlan</groupId> |             <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|             <version>0.0.1-SNAPSHOT</version> |             <version>1.1.0-SNAPSHOT</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>equipment-gateway-models</artifactId> |         <artifactId>equipment-gateway-models</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency> |       </dependency> | ||||||
|       |       | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>customer-service-interface</artifactId> |         <artifactId>customer-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency> |       </dependency> | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>location-service-interface</artifactId> |         <artifactId>location-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>equipment-service-interface</artifactId> |         <artifactId>equipment-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>profile-service-interface</artifactId> |         <artifactId>profile-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|        |        | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>portal-user-service-interface</artifactId> |         <artifactId>portal-user-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>service-metric-service-interface</artifactId> |         <artifactId>service-metric-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|        |        | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>service-metric-models</artifactId> |         <artifactId>service-metric-models</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>system-event-service-interface</artifactId> |         <artifactId>system-event-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>system-event-models</artifactId> |         <artifactId>system-event-models</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|        |        | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>alarm-service-interface</artifactId> |         <artifactId>alarm-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>status-service-interface</artifactId> |         <artifactId>status-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>client-service-interface</artifactId> |         <artifactId>client-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>client-models</artifactId> |         <artifactId>client-models</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>routing-service-interface</artifactId> |         <artifactId>routing-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|   |   | ||||||
|        <dependency> |        <dependency> | ||||||
|         <artifactId>firmware-service-interface</artifactId> |         <artifactId>firmware-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|  |  | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>manufacturer-service-interface</artifactId> |         <artifactId>manufacturer-service-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>       |       </dependency>       | ||||||
|   |   | ||||||
|       <dependency> |       <dependency> | ||||||
|         <artifactId>cloud-event-dispatcher-interface</artifactId> |         <artifactId>cloud-event-dispatcher-interface</artifactId> | ||||||
|         <groupId>com.telecominfraproject.wlan</groupId> |         <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|         <version>0.0.1-SNAPSHOT</version> |         <version>1.1.0-SNAPSHOT</version> | ||||||
|       </dependency>      |       </dependency>      | ||||||
|  |  | ||||||
| 	</dependencies> | 	</dependencies> | ||||||
|   | |||||||
| @@ -1736,7 +1736,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra | |||||||
|  |  | ||||||
|         EquipmentManufacturerQrCode qrCode = new EquipmentManufacturerQrCode(); |         EquipmentManufacturerQrCode qrCode = new EquipmentManufacturerQrCode(); | ||||||
|         if (node.qrCode != null) { |         if (node.qrCode != null) { | ||||||
|             qrCode.setDeviceType(EquipmentType.getByName(node.qrCode.get("DT"))); |             if (node.qrCode.containsKey("DT")) { | ||||||
|  |                 qrCode.setDeviceType(EquipmentType.getByName(node.qrCode.get("DT"))); | ||||||
|  |             }                | ||||||
|             qrCode.setVendorName(node.qrCode.get("VN")); |             qrCode.setVendorName(node.qrCode.get("VN")); | ||||||
|             if (isValidMACAddress(node.qrCode.get("DM"))) { |             if (isValidMACAddress(node.qrCode.get("DM"))) { | ||||||
|                 qrCode.setDeviceMac(MacAddress.valueOf(node.qrCode.get("DM"))); |                 qrCode.setDeviceMac(MacAddress.valueOf(node.qrCode.get("DM"))); | ||||||
|   | |||||||
| @@ -32,6 +32,7 @@ import com.telecominfraproject.wlan.core.model.service.GatewayType; | |||||||
| import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation; | import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation; | ||||||
| import com.telecominfraproject.wlan.core.server.container.ConnectorProperties; | import com.telecominfraproject.wlan.core.server.container.ConnectorProperties; | ||||||
| import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException; | import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException; | ||||||
|  | import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes; | ||||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand; | import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand; | ||||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest; | import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest; | ||||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWChangeRedirectorHost; | import com.telecominfraproject.wlan.equipmentgateway.models.CEGWChangeRedirectorHost; | ||||||
| @@ -42,6 +43,7 @@ import com.telecominfraproject.wlan.equipmentgateway.models.CEGWConfigChangeNoti | |||||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest; | import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest; | ||||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareFlashRequest; | import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareFlashRequest; | ||||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest; | import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest; | ||||||
|  | import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCellSizeAttributesRequest; | ||||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRadioResetRequest; | import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRadioResetRequest; | ||||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRebootRequest; | import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRebootRequest; | ||||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck; | import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck; | ||||||
| @@ -205,6 +207,9 @@ public class OpensyncCloudGatewayController { | |||||||
|                     case NewChannelRequest: |                     case NewChannelRequest: | ||||||
|                         ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command)); |                         ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command)); | ||||||
|                         break; |                         break; | ||||||
|  |                     case CellSizeAttributesRequest: | ||||||
|  |                         ret.add(sendCellSizeRequest(session, (CEGWCellSizeAttributesRequest) command)); | ||||||
|  |                         break; | ||||||
|                     default: |                     default: | ||||||
|                         LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command); |                         LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command); | ||||||
|                         ret.add(new EquipmentCommandResponse( |                         ret.add(new EquipmentCommandResponse( | ||||||
| @@ -296,6 +301,10 @@ public class OpensyncCloudGatewayController { | |||||||
|     private EquipmentCommandResponse sendNewChannelRequest(OvsdbSession session, CEGWNewChannelRequest command) { |     private EquipmentCommandResponse sendNewChannelRequest(OvsdbSession session, CEGWNewChannelRequest command) { | ||||||
|         return sendMessage(session, command.getInventoryId(), command); |         return sendMessage(session, command.getInventoryId(), command); | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     private EquipmentCommandResponse sendCellSizeRequest(OvsdbSession session, CEGWCellSizeAttributesRequest command) { | ||||||
|  |         return sendMessage(session, command.getInventoryId(), command); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Deliver a message in payload to the CE |      * Deliver a message in payload to the CE | ||||||
| @@ -333,6 +342,12 @@ public class OpensyncCloudGatewayController { | |||||||
|  |  | ||||||
|             String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels,newPrimaryChannels); |             String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels,newPrimaryChannels); | ||||||
|             response.setResultDetail(resultDetails); |             response.setResultDetail(resultDetails); | ||||||
|  |         } else if (command instanceof CEGWCellSizeAttributesRequest) { | ||||||
|  |             CEGWCellSizeAttributesRequest request = (CEGWCellSizeAttributesRequest) command; | ||||||
|  |             Map<RadioType, CellSizeAttributes> cellSizeAttributeMap = request.getCellSizeAttributesMap(); | ||||||
|  |  | ||||||
|  |             String resultDetails = tipwlanOvsdbClient.processCellSizeAttributesRequest(inventoryId, cellSizeAttributeMap); | ||||||
|  |             response.setResultDetail(resultDetails); | ||||||
|  |  | ||||||
|         } else if (command instanceof CEGWFirmwareDownloadRequest) { |         } else if (command instanceof CEGWFirmwareDownloadRequest) { | ||||||
|  |  | ||||||
|   | |||||||
| @@ -194,17 +194,18 @@ public class MqttStatsPublisher { | |||||||
|  |  | ||||||
|         // prepare a JSONPrinter to format protobuf messages as |         // prepare a JSONPrinter to format protobuf messages as | ||||||
|         // json |         // json | ||||||
| //        List<Descriptors.Descriptor> protobufDescriptors = new ArrayList<>(); |         // List<Descriptors.Descriptor> protobufDescriptors = new ArrayList<>(); | ||||||
| //        protobufDescriptors.addAll(OpensyncStats.getDescriptor().getMessageTypes()); |         // protobufDescriptors.addAll(OpensyncStats.getDescriptor().getMessageTypes()); | ||||||
| //        TypeRegistry oldRegistry = TypeRegistry.newBuilder().add(protobufDescriptors).build(); |         // TypeRegistry oldRegistry = TypeRegistry.newBuilder().add(protobufDescriptors).build(); | ||||||
| //        JsonFormat.Printer jsonPrinter = JsonFormat.printer().preservingProtoFieldNames().includingDefaultValueFields().usingTypeRegistry(oldRegistry); |         // JsonFormat.Printer jsonPrinter = | ||||||
| // |         // JsonFormat.printer().preservingProtoFieldNames().includingDefaultValueFields().usingTypeRegistry(oldRegistry); | ||||||
| //        try { |         // | ||||||
| //            LOG.trace(jsonPrinter.print(report)); |         // try { | ||||||
| // |         // LOG.trace(jsonPrinter.print(report)); | ||||||
| //        } catch (InvalidProtocolBufferException e1) { |         // | ||||||
| //            LOG.error("Couldn't parse OpensyncStats.report.", e1); |         // } catch (InvalidProtocolBufferException e1) { | ||||||
| //        } |         // LOG.error("Couldn't parse OpensyncStats.report.", e1); | ||||||
|  |         // } | ||||||
|  |  | ||||||
|         List<ServiceMetric> metricRecordList = new ArrayList<>(); |         List<ServiceMetric> metricRecordList = new ArrayList<>(); | ||||||
|  |  | ||||||
| @@ -215,6 +216,22 @@ public class MqttStatsPublisher { | |||||||
|             populateChannelInfoReports(metricRecordList, report, customerId, equipmentId, locationId, profileId); |             populateChannelInfoReports(metricRecordList, report, customerId, equipmentId, locationId, profileId); | ||||||
|             populateApSsidMetrics(metricRecordList, report, customerId, equipmentId, apId, locationId); |             populateApSsidMetrics(metricRecordList, report, customerId, equipmentId, apId, locationId); | ||||||
|  |  | ||||||
|  |             if (!metricRecordList.isEmpty()) { | ||||||
|  |  | ||||||
|  |                 long serviceMetricTimestamp = System.currentTimeMillis(); | ||||||
|  |                 LOG.debug("Current timestamp for service metrics is {}", serviceMetricTimestamp); | ||||||
|  |                 metricRecordList.stream().forEach(smr -> { | ||||||
|  |                     smr.setCreatedTimestamp(serviceMetricTimestamp); | ||||||
|  |                     if (smr.getLocationId() == 0) smr.setLocationId(locationId); | ||||||
|  |                     if(smr.getCustomerId() == 0) smr.setCustomerId(customerId); | ||||||
|  |                     if (smr.getEquipmentId() == 0L) smr.setEquipmentId(equipmentId); | ||||||
|  |                 }); | ||||||
|  |                 metricRecordList.stream().forEach(smr -> { | ||||||
|  |                     LOG.debug("ServiceMetric {}", smr); | ||||||
|  |                 }); | ||||||
|  |                 cloudEventDispatcherInterface.publishMetrics(metricRecordList); | ||||||
|  |             } | ||||||
|  |              | ||||||
|             publishEvents(report, customerId, equipmentId, apId, locationId); |             publishEvents(report, customerId, equipmentId, apId, locationId); | ||||||
|             // handleRssiMetrics(metricRecordList, report, customerId, |             // handleRssiMetrics(metricRecordList, report, customerId, | ||||||
|             // equipmentId, locationId); |             // equipmentId, locationId); | ||||||
| @@ -223,11 +240,6 @@ public class MqttStatsPublisher { | |||||||
|             LOG.error("Exception when processing stats messages from AP", e); |             LOG.error("Exception when processing stats messages from AP", e); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!metricRecordList.isEmpty()) { |  | ||||||
|             LOG.debug("Publishing Metrics {}", metricRecordList); |  | ||||||
|             cloudEventDispatcherInterface.publishMetrics(metricRecordList); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void processMqttMessage(String topic, FlowReport flowReport) { |     public void processMqttMessage(String topic, FlowReport flowReport) { | ||||||
| @@ -441,9 +453,9 @@ public class MqttStatsPublisher { | |||||||
|         if (apClientEvent.hasIpAddr()) { |         if (apClientEvent.hasIpAddr()) { | ||||||
|             ByteString ipAddress = apClientEvent.getIpAddr(); |             ByteString ipAddress = apClientEvent.getIpAddr(); | ||||||
|             if (ipAddress != null) { |             if (ipAddress != null) { | ||||||
|                 try {                     |                 try { | ||||||
|                     InetAddress inetAddress = InetAddress.getByAddress(ipAddress.toByteArray()); |                     InetAddress inetAddress = InetAddress.getByAddress(ipAddress.toByteArray()); | ||||||
|                     LOG.info("ipAddr {} ", inetAddress);                    |                     LOG.info("ipAddr {} ", inetAddress); | ||||||
|                     if (inetAddress instanceof Inet4Address) { |                     if (inetAddress instanceof Inet4Address) { | ||||||
|                         LOG.info("IPv4 address {}", inetAddress); |                         LOG.info("IPv4 address {}", inetAddress); | ||||||
|                         clientSession.getDetails().setIpAddress(inetAddress); |                         clientSession.getDetails().setIpAddress(inetAddress); | ||||||
| @@ -661,248 +673,243 @@ public class MqttStatsPublisher { | |||||||
|     protected void processClientFailureEvent(int customerId, long equipmentId, long locationId, |     protected void processClientFailureEvent(int customerId, long equipmentId, long locationId, | ||||||
|             sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { |             sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { | ||||||
|         ClientFailureEvent apClientEvent = apEventClientSession.getClientFailureEvent(); |         ClientFailureEvent apClientEvent = apEventClientSession.getClientFailureEvent(); | ||||||
|             com.telecominfraproject.wlan.client.models.Client client = |         com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                     clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); |         if (client == null) { | ||||||
|             if (client == null) { |             client = new com.telecominfraproject.wlan.client.models.Client(); | ||||||
|                 client = new com.telecominfraproject.wlan.client.models.Client(); |             client.setCustomerId(customerId); | ||||||
|                 client.setCustomerId(customerId); |             client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                 client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); |             client.setDetails(new ClientInfoDetails()); | ||||||
|                 client.setDetails(new ClientInfoDetails()); |             client = clientServiceInterface.create(client); | ||||||
|                 client = clientServiceInterface.create(client); |         } | ||||||
|             } |         ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|             ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); |         if (clientSession == null) { | ||||||
|             if (clientSession == null) { |             clientSession = new ClientSession(); | ||||||
|                 clientSession = new ClientSession(); |             clientSession.setCustomerId(customerId); | ||||||
|                 clientSession.setCustomerId(customerId); |             clientSession.setEquipmentId(equipmentId); | ||||||
|                 clientSession.setEquipmentId(equipmentId); |             clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                 clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); |             clientSession.setLocationId(locationId); | ||||||
|                 clientSession.setLocationId(locationId); |             clientSession.setDetails(new ClientSessionDetails()); | ||||||
|                 clientSession.setDetails(new ClientSessionDetails()); |             clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); | ||||||
|                 clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); |             clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); | ||||||
|                 clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); |         } | ||||||
|             } |         if (clientSession.getDetails().getPriorEquipmentId() == null) { | ||||||
|             if (clientSession.getDetails().getPriorEquipmentId() == null) { |             clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); | ||||||
|                 clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); |         } | ||||||
|             } |         if (clientSession.getDetails().getPriorSessionId() == null) { | ||||||
|             if (clientSession.getDetails().getPriorSessionId() == null) { |             if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) | ||||||
|                 if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) |  | ||||||
|                     clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); |  | ||||||
|             } |  | ||||||
|             if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) { |  | ||||||
|                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); |                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||||
|             } |         } | ||||||
|             clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); |         if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) { | ||||||
|             clientSession.getDetails().setSsid(apClientEvent.getSsid()); |             clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||||
|              |         } | ||||||
|             ClientFailureDetails clientFailureDetails = new ClientFailureDetails(); |         clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); | ||||||
|             if (apClientEvent.hasReasonStr()) { |         clientSession.getDetails().setSsid(apClientEvent.getSsid()); | ||||||
|                 clientFailureDetails.setReason(apClientEvent.getReasonStr()); |  | ||||||
|             } |         ClientFailureDetails clientFailureDetails = new ClientFailureDetails(); | ||||||
|             if (apClientEvent.hasReasonCode()) { |         if (apClientEvent.hasReasonStr()) { | ||||||
|                 clientFailureDetails.setReasonCode(apClientEvent.getReasonCode()); |             clientFailureDetails.setReason(apClientEvent.getReasonStr()); | ||||||
|             } |         } | ||||||
|             clientSession.getDetails().setLastFailureDetails(clientFailureDetails); |         if (apClientEvent.hasReasonCode()) { | ||||||
|             clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); |             clientFailureDetails.setReasonCode(apClientEvent.getReasonCode()); | ||||||
|             clientSession = clientServiceInterface.updateSession(clientSession); |         } | ||||||
|  |         clientSession.getDetails().setLastFailureDetails(clientFailureDetails); | ||||||
|  |         clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); | ||||||
|  |         clientSession = clientServiceInterface.updateSession(clientSession); | ||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     protected void processClientFirstDataEvent(int customerId, long equipmentId, long locationId, |     protected void processClientFirstDataEvent(int customerId, long equipmentId, long locationId, | ||||||
|             sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { |             sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { | ||||||
|         ClientFirstDataEvent apClientEvent = apEventClientSession.getClientFirstDataEvent(); |         ClientFirstDataEvent apClientEvent = apEventClientSession.getClientFirstDataEvent(); | ||||||
|             com.telecominfraproject.wlan.client.models.Client client = |         com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                     clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); |         if (client == null) { | ||||||
|             if (client == null) { |             client = new com.telecominfraproject.wlan.client.models.Client(); | ||||||
|                 client = new com.telecominfraproject.wlan.client.models.Client(); |             client.setCustomerId(customerId); | ||||||
|                 client.setCustomerId(customerId); |             client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                 client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); |             client.setDetails(new ClientInfoDetails()); | ||||||
|                 client.setDetails(new ClientInfoDetails()); |             client = clientServiceInterface.create(client); | ||||||
|                 client = clientServiceInterface.create(client); |         } | ||||||
|             } |         ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|             ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); |         if (clientSession == null) { | ||||||
|             if (clientSession == null) { |             clientSession = new ClientSession(); | ||||||
|                 clientSession = new ClientSession(); |             clientSession.setCustomerId(customerId); | ||||||
|                 clientSession.setCustomerId(customerId); |             clientSession.setEquipmentId(equipmentId); | ||||||
|                 clientSession.setEquipmentId(equipmentId); |             clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                 clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); |             clientSession.setLocationId(locationId); | ||||||
|                 clientSession.setLocationId(locationId); |             clientSession.setDetails(new ClientSessionDetails()); | ||||||
|                 clientSession.setDetails(new ClientSessionDetails()); |             clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); | ||||||
|                 clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); |             clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); | ||||||
|                 clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); |         } | ||||||
|             } |         if (clientSession.getDetails().getPriorEquipmentId() == null) { | ||||||
|             if (clientSession.getDetails().getPriorEquipmentId() == null) { |             clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); | ||||||
|                 clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); |         } | ||||||
|             } |         if (clientSession.getDetails().getPriorSessionId() == null) { | ||||||
|             if (clientSession.getDetails().getPriorSessionId() == null) { |             if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) | ||||||
|                 if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) |  | ||||||
|                     clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); |  | ||||||
|             } |  | ||||||
|             if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) { |  | ||||||
|                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); |                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||||
|             } |         } | ||||||
|             clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); |         if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) { | ||||||
|              |             clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||||
|             if (apClientEvent.hasFdataRxUpTsInUs()) { |         } | ||||||
|                 clientSession.getDetails().setFirstDataRcvdTimestamp(apClientEvent.getFdataRxUpTsInUs()); |         clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); | ||||||
|             } |  | ||||||
|  |  | ||||||
|             if (apClientEvent.hasFdataTxUpTsInUs()) { |         if (apClientEvent.hasFdataRxUpTsInUs()) { | ||||||
|                 clientSession.getDetails().setFirstDataSentTimestamp(apClientEvent.getFdataTxUpTsInUs()); |             clientSession.getDetails().setFirstDataRcvdTimestamp(apClientEvent.getFdataRxUpTsInUs()); | ||||||
|             } |         } | ||||||
|             clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); |  | ||||||
|             clientSession = clientServiceInterface.updateSession(clientSession); |         if (apClientEvent.hasFdataTxUpTsInUs()) { | ||||||
|  |             clientSession.getDetails().setFirstDataSentTimestamp(apClientEvent.getFdataTxUpTsInUs()); | ||||||
|  |         } | ||||||
|  |         clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); | ||||||
|  |         clientSession = clientServiceInterface.updateSession(clientSession); | ||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     protected void processClientIdEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { |     protected void processClientIdEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { | ||||||
|         ClientIdEvent apClientEvent = apEventClientSession.getClientIdEvent(); |         ClientIdEvent apClientEvent = apEventClientSession.getClientIdEvent(); | ||||||
|             com.telecominfraproject.wlan.client.models.Client client = |         com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getCltMac())); | ||||||
|                     clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getCltMac())); |         if (client == null) { | ||||||
|             if (client == null) { |             client = new com.telecominfraproject.wlan.client.models.Client(); | ||||||
|                 client = new com.telecominfraproject.wlan.client.models.Client(); |             client.setCustomerId(customerId); | ||||||
|                 client.setCustomerId(customerId); |             client.setMacAddress(MacAddress.valueOf(apClientEvent.getCltMac())); | ||||||
|                 client.setMacAddress(MacAddress.valueOf(apClientEvent.getCltMac())); |             client.setDetails(new ClientInfoDetails()); | ||||||
|                 client.setDetails(new ClientInfoDetails()); |             client = clientServiceInterface.create(client); | ||||||
|                 client = clientServiceInterface.create(client); |         } | ||||||
|             } |         if (apClientEvent.hasCltId()) { | ||||||
|             if (apClientEvent.hasCltId()) { |             ((ClientInfoDetails) client.getDetails()).setHostName(apClientEvent.getCltId()); | ||||||
|                 ((ClientInfoDetails)client.getDetails()).setHostName(apClientEvent.getCltId()); |         } | ||||||
|             } |         client = clientServiceInterface.update(client); | ||||||
|             client = clientServiceInterface.update(client); |  | ||||||
|              |         ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getCltMac())); | ||||||
|             ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getCltMac())); |         if (clientSession == null) { | ||||||
|             if (clientSession == null) { |             clientSession = new ClientSession(); | ||||||
|                 clientSession = new ClientSession(); |             clientSession.setCustomerId(customerId); | ||||||
|                 clientSession.setCustomerId(customerId); |             clientSession.setEquipmentId(equipmentId); | ||||||
|                 clientSession.setEquipmentId(equipmentId); |             clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getCltMac())); | ||||||
|                 clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getCltMac())); |             clientSession.setLocationId(locationId); | ||||||
|                 clientSession.setLocationId(locationId); |             clientSession.setDetails(new ClientSessionDetails()); | ||||||
|                 clientSession.setDetails(new ClientSessionDetails()); |             clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); | ||||||
|                 clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); |             clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); | ||||||
|                 clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); |         } | ||||||
|             } |         if (clientSession.getDetails().getPriorEquipmentId() == null) { | ||||||
|             if (clientSession.getDetails().getPriorEquipmentId() == null) { |             clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); | ||||||
|                 clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); |         } | ||||||
|             } |         if (clientSession.getDetails().getPriorSessionId() == null) { | ||||||
|             if (clientSession.getDetails().getPriorSessionId() == null) { |             if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) | ||||||
|                 if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) |  | ||||||
|                     clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); |  | ||||||
|             } |  | ||||||
|             if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) { |  | ||||||
|                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); |                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||||
|             } |         } | ||||||
|             clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); |         if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) { | ||||||
|             if (apClientEvent.hasCltId()) { |             clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||||
|                 clientSession.getDetails().setHostname(apClientEvent.getCltId()); |         } | ||||||
|             }             |         clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); | ||||||
|             clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); |         if (apClientEvent.hasCltId()) { | ||||||
|             clientSession = clientServiceInterface.updateSession(clientSession); |             clientSession.getDetails().setHostname(apClientEvent.getCltId()); | ||||||
|  |         } | ||||||
|  |         clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); | ||||||
|  |         clientSession = clientServiceInterface.updateSession(clientSession); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     protected void processClientIpEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { |     protected void processClientIpEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { | ||||||
|         ClientIpEvent apClientEvent = apEventClientSession.getClientIpEvent(); |         ClientIpEvent apClientEvent = apEventClientSession.getClientIpEvent(); | ||||||
|             com.telecominfraproject.wlan.client.models.Client client = |         com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                     clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); |         if (client == null) { | ||||||
|             if (client == null) { |             client = new com.telecominfraproject.wlan.client.models.Client(); | ||||||
|                 client = new com.telecominfraproject.wlan.client.models.Client(); |             client.setCustomerId(customerId); | ||||||
|                 client.setCustomerId(customerId); |             client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                 client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); |             client.setDetails(new ClientInfoDetails()); | ||||||
|                 client.setDetails(new ClientInfoDetails()); |             client = clientServiceInterface.create(client); | ||||||
|                 client = clientServiceInterface.create(client); |         } | ||||||
|             } |         client = clientServiceInterface.update(client); | ||||||
|             client = clientServiceInterface.update(client); |  | ||||||
|  |  | ||||||
|             ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); |         ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|             if (clientSession == null) { |         if (clientSession == null) { | ||||||
|                 clientSession = new ClientSession(); |             clientSession = new ClientSession(); | ||||||
|                 clientSession.setCustomerId(customerId); |             clientSession.setCustomerId(customerId); | ||||||
|                 clientSession.setEquipmentId(equipmentId); |             clientSession.setEquipmentId(equipmentId); | ||||||
|                 clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); |             clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                 clientSession.setLocationId(locationId); |             clientSession.setLocationId(locationId); | ||||||
|                 clientSession.setDetails(new ClientSessionDetails()); |             clientSession.setDetails(new ClientSessionDetails()); | ||||||
|                 clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); |             clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); | ||||||
|                 clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); |             clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); | ||||||
|             } |         } | ||||||
|             if (clientSession.getDetails().getPriorEquipmentId() == null) { |         if (clientSession.getDetails().getPriorEquipmentId() == null) { | ||||||
|                 clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); |             clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); | ||||||
|             } |         } | ||||||
|             if (clientSession.getDetails().getPriorSessionId() == null) { |         if (clientSession.getDetails().getPriorSessionId() == null) { | ||||||
|                 if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) |             if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) | ||||||
|                     clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); |  | ||||||
|             } |  | ||||||
|             if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) { |  | ||||||
|                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); |                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||||
|             } |         } | ||||||
|             clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); |         if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) { | ||||||
|             if (apClientEvent.hasIpAddr()) { |             clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||||
|                 ByteString ipAddress = apClientEvent.getIpAddr(); |         } | ||||||
|                 if (ipAddress != null) { |         clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); | ||||||
|                     try { |         if (apClientEvent.hasIpAddr()) { | ||||||
|                         InetAddress inetAddress = InetAddress.getByAddress(ipAddress.toByteArray()); |             ByteString ipAddress = apClientEvent.getIpAddr(); | ||||||
|                         if (inetAddress instanceof Inet4Address) { |             if (ipAddress != null) { | ||||||
|                             LOG.info("IPv4 address {}", inetAddress); |                 try { | ||||||
|                             clientSession.getDetails().setIpAddress(inetAddress); |                     InetAddress inetAddress = InetAddress.getByAddress(ipAddress.toByteArray()); | ||||||
|                         } else if (inetAddress instanceof Inet6Address) { |                     if (inetAddress instanceof Inet4Address) { | ||||||
|                             LOG.info("IPv6 address {}", inetAddress); |                         LOG.info("IPv4 address {}", inetAddress); | ||||||
|                             clientSession.getDetails().setIpAddress(inetAddress); |                         clientSession.getDetails().setIpAddress(inetAddress); | ||||||
|                         } else { |                     } else if (inetAddress instanceof Inet6Address) { | ||||||
|                             LOG.error("Invalid IP Address {}", ipAddress); |                         LOG.info("IPv6 address {}", inetAddress); | ||||||
|                         } |                         clientSession.getDetails().setIpAddress(inetAddress); | ||||||
|                         clientSession.getDetails().setIpTimestamp(apClientEvent.getTimestampMs()); |                     } else { | ||||||
|  |                         LOG.error("Invalid IP Address {}", ipAddress); | ||||||
|                     } catch (UnknownHostException ex) { |  | ||||||
|                     } |                     } | ||||||
|  |                     clientSession.getDetails().setIpTimestamp(apClientEvent.getTimestampMs()); | ||||||
|  |  | ||||||
|  |                 } catch (UnknownHostException ex) { | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); |         } | ||||||
|             clientSession = clientServiceInterface.updateSession(clientSession); |         clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); | ||||||
|  |         clientSession = clientServiceInterface.updateSession(clientSession); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     protected void processClientTimeoutEvent(int customerId, long equipmentId, long locationId, |     protected void processClientTimeoutEvent(int customerId, long equipmentId, long locationId, | ||||||
|             sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { |             sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { | ||||||
|         ClientTimeoutEvent apClientEvent = apEventClientSession.getClientTimeoutEvent(); |         ClientTimeoutEvent apClientEvent = apEventClientSession.getClientTimeoutEvent(); | ||||||
|             com.telecominfraproject.wlan.client.models.Client client = |         com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                     clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); |         if (client == null) { | ||||||
|             if (client == null) { |             client = new com.telecominfraproject.wlan.client.models.Client(); | ||||||
|                 client = new com.telecominfraproject.wlan.client.models.Client(); |             client.setCustomerId(customerId); | ||||||
|                 client.setCustomerId(customerId); |             client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                 client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); |             client.setDetails(new ClientInfoDetails()); | ||||||
|                 client.setDetails(new ClientInfoDetails()); |             client = clientServiceInterface.create(client); | ||||||
|                 client = clientServiceInterface.create(client); |         } | ||||||
|             } |         client = clientServiceInterface.update(client); | ||||||
|             client = clientServiceInterface.update(client); |         ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|             ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); |         if (clientSession == null) { | ||||||
|             if (clientSession == null) { |             clientSession = new ClientSession(); | ||||||
|                 clientSession = new ClientSession(); |             clientSession.setCustomerId(customerId); | ||||||
|                 clientSession.setCustomerId(customerId); |             clientSession.setEquipmentId(equipmentId); | ||||||
|                 clientSession.setEquipmentId(equipmentId); |             clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||||
|                 clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); |             clientSession.setLocationId(locationId); | ||||||
|                 clientSession.setLocationId(locationId); |             clientSession.setDetails(new ClientSessionDetails()); | ||||||
|                 clientSession.setDetails(new ClientSessionDetails()); |             clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); | ||||||
|                 clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(apEventClientSession.getSessionId())); |             clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); | ||||||
|                 clientSession.getDetails().setMetricDetails(new ClientSessionMetricDetails()); |         } | ||||||
|             } |         if (clientSession.getDetails().getPriorEquipmentId() == null) { | ||||||
|             if (clientSession.getDetails().getPriorEquipmentId() == null) { |             clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); | ||||||
|                 clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); |         } | ||||||
|             } |         if (clientSession.getDetails().getPriorSessionId() == null) { | ||||||
|             if (clientSession.getDetails().getPriorSessionId() == null) { |             if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) | ||||||
|                 if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) |  | ||||||
|                     clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); |  | ||||||
|             } |  | ||||||
|             if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) { |  | ||||||
|                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); |                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||||
|             } |         } | ||||||
|             clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); |         if (clientSession.getDetails().getSessionId() != apEventClientSession.getSessionId()) { | ||||||
|             if (apClientEvent.hasLastRcvUpTsInUs()) { |             clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||||
|                 clientSession.getDetails().setLastRxTimestamp(apClientEvent.getLastRcvUpTsInUs()); |         } | ||||||
|             } |         clientSession.getDetails().setSessionId(apEventClientSession.getSessionId()); | ||||||
|             if (apClientEvent.hasLastSentUpTsInUs()) { |         if (apClientEvent.hasLastRcvUpTsInUs()) { | ||||||
|                 clientSession.getDetails().setLastTxTimestamp(apClientEvent.getLastSentUpTsInUs()); |             clientSession.getDetails().setLastRxTimestamp(apClientEvent.getLastRcvUpTsInUs()); | ||||||
|             } |         } | ||||||
|             clientSession.getDetails().setTimeoutTimestamp(apClientEvent.getTimestampMs()); |         if (apClientEvent.hasLastSentUpTsInUs()) { | ||||||
|             clientSession.getDetails().setAssociationState(AssociationState.AP_Timeout); |             clientSession.getDetails().setLastTxTimestamp(apClientEvent.getLastSentUpTsInUs()); | ||||||
|             clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); |         } | ||||||
|             clientSession = clientServiceInterface.updateSession(clientSession); |         clientSession.getDetails().setTimeoutTimestamp(apClientEvent.getTimestampMs()); | ||||||
|  |         clientSession.getDetails().setAssociationState(AssociationState.AP_Timeout); | ||||||
|  |         clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); | ||||||
|  |         clientSession = clientServiceInterface.updateSession(clientSession); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     void populateApNodeMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId, long locationId) { |     void populateApNodeMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId, long locationId) { | ||||||
| @@ -922,8 +929,6 @@ public class MqttStatsPublisher { | |||||||
|             ApPerformance apPerformance = new ApPerformance(); |             ApPerformance apPerformance = new ApPerformance(); | ||||||
|             apNodeMetrics.setApPerformance(apPerformance); |             apNodeMetrics.setApPerformance(apPerformance); | ||||||
|  |  | ||||||
|             smr.setCreatedTimestamp(deviceReport.getTimestampMs()); |  | ||||||
|  |  | ||||||
|             if (deviceReport.getRadioTempCount() > 0) { |             if (deviceReport.getRadioTempCount() > 0) { | ||||||
|                 float cpuTemperature = 0; |                 float cpuTemperature = 0; | ||||||
|                 int numSamples = 0; |                 int numSamples = 0; | ||||||
| @@ -1087,8 +1092,9 @@ public class MqttStatsPublisher { | |||||||
|  |  | ||||||
|         // populate it from report.survey |         // populate it from report.survey | ||||||
|         for (Survey survey : report.getSurveyList()) { |         for (Survey survey : report.getSurveyList()) { | ||||||
|              |  | ||||||
|             if (survey.getSurveyType().equals(SurveyType.ON_CHANNEL)) { // only interested in ON_CHANNEL for this Metrics Report |             if (survey.getSurveyType().equals(SurveyType.ON_CHANNEL)) { // only interested in ON_CHANNEL for this | ||||||
|  |                                                                         // Metrics Report | ||||||
|  |  | ||||||
|                 int busyRx = 0; /* Rx = Rx_obss + Rx_errr (self and obss errors) */ |                 int busyRx = 0; /* Rx = Rx_obss + Rx_errr (self and obss errors) */ | ||||||
|                 int busyTx = 0; /* Tx */ |                 int busyTx = 0; /* Tx */ | ||||||
| @@ -1194,7 +1200,6 @@ public class MqttStatsPublisher { | |||||||
|                 networkAdminStatus = new Status(); |                 networkAdminStatus = new Status(); | ||||||
|                 networkAdminStatus.setCustomerId(customerId); |                 networkAdminStatus.setCustomerId(customerId); | ||||||
|                 networkAdminStatus.setEquipmentId(equipmentId); |                 networkAdminStatus.setEquipmentId(equipmentId); | ||||||
|                 networkAdminStatus.setCreatedTimestamp(System.currentTimeMillis()); |  | ||||||
|                 networkAdminStatus.setStatusDataType(StatusDataType.NETWORK_ADMIN); |                 networkAdminStatus.setStatusDataType(StatusDataType.NETWORK_ADMIN); | ||||||
|                 networkAdminStatus.setDetails(new NetworkAdminStatusData()); |                 networkAdminStatus.setDetails(new NetworkAdminStatusData()); | ||||||
|                 networkAdminStatus = statusServiceInterface.update(networkAdminStatus); |                 networkAdminStatus = statusServiceInterface.update(networkAdminStatus); | ||||||
| @@ -1383,7 +1388,6 @@ public class MqttStatsPublisher { | |||||||
|                 smr.setLocationId(locationId); |                 smr.setLocationId(locationId); | ||||||
|                 metricRecordList.add(smr); |                 metricRecordList.add(smr); | ||||||
|  |  | ||||||
|                 smr.setCreatedTimestamp(clReport.getTimestampMs()); |  | ||||||
|                 smr.setClientMac(MacAddress.valueOf(cl.getMacAddress()).getAddressAsLong()); |                 smr.setClientMac(MacAddress.valueOf(cl.getMacAddress()).getAddressAsLong()); | ||||||
|  |  | ||||||
|                 // clReport.getChannel(); |                 // clReport.getChannel(); | ||||||
| @@ -1475,7 +1479,6 @@ public class MqttStatsPublisher { | |||||||
|             metricRecordList.add(smr); |             metricRecordList.add(smr); | ||||||
|             NeighbourScanReports neighbourScanReports = new NeighbourScanReports(); |             NeighbourScanReports neighbourScanReports = new NeighbourScanReports(); | ||||||
|             smr.setDetails(neighbourScanReports); |             smr.setDetails(neighbourScanReports); | ||||||
|             smr.setCreatedTimestamp(neighbor.getTimestampMs()); |  | ||||||
|  |  | ||||||
|             List<NeighbourReport> neighbourReports = new ArrayList<>(); |             List<NeighbourReport> neighbourReports = new ArrayList<>(); | ||||||
|             neighbourScanReports.setNeighbourReports(neighbourReports); |             neighbourScanReports.setNeighbourReports(neighbourReports); | ||||||
| @@ -1516,7 +1519,7 @@ public class MqttStatsPublisher { | |||||||
|                 // some shifting |                 // some shifting | ||||||
|                 int rssi = nBss.getRssi(); |                 int rssi = nBss.getRssi(); | ||||||
|                 nr.setRssi(rssi); |                 nr.setRssi(rssi); | ||||||
|                 nr.setScanTimeInSeconds(neighbor.getTimestampMs()/1000L); |                 nr.setScanTimeInSeconds(neighbor.getTimestampMs() / 1000L); | ||||||
|                 nr.setSecureMode(DetectedAuthMode.WPA); |                 nr.setSecureMode(DetectedAuthMode.WPA); | ||||||
|                 // nr.setSignal(signal); |                 // nr.setSignal(signal); | ||||||
|                 nr.setSsid(nBss.getSsid()); |                 nr.setSsid(nBss.getSsid()); | ||||||
| @@ -1624,10 +1627,6 @@ public class MqttStatsPublisher { | |||||||
|  |  | ||||||
|             LOG.debug("ClientReport for channel {} RadioBand {}", clientReport.getChannel(), clientReport.getBand()); |             LOG.debug("ClientReport for channel {} RadioBand {}", clientReport.getChannel(), clientReport.getBand()); | ||||||
|  |  | ||||||
|             if (smr.getCreatedTimestamp() < clientReport.getTimestampMs()) { |  | ||||||
|                 smr.setCreatedTimestamp(clientReport.getTimestampMs()); |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             long txBytes = 0L; |             long txBytes = 0L; | ||||||
|             long rxBytes = 0L; |             long rxBytes = 0L; | ||||||
|             long txFrames = 0L; |             long txFrames = 0L; | ||||||
| @@ -1833,8 +1832,7 @@ public class MqttStatsPublisher { | |||||||
|  |  | ||||||
|             survey.getSurveyListList().stream().filter(t -> { |             survey.getSurveyListList().stream().filter(t -> { | ||||||
|                 if (survey.getSurveyType().equals(SurveyType.ON_CHANNEL)) { |                 if (survey.getSurveyType().equals(SurveyType.ON_CHANNEL)) { | ||||||
|                     return t.hasDurationMs() && (t.getDurationMs() > 0) && t.hasChannel() && |                     return t.hasDurationMs() && (t.getDurationMs() > 0) && t.hasChannel() && (t.hasBusy() || t.hasBusyTx() || t.hasBusySelf() || t.hasNoise()); | ||||||
|                             (t.hasBusy() || t.hasBusyTx() || t.hasBusySelf() || t.hasNoise()); |  | ||||||
|                 } else { |                 } else { | ||||||
|                     return t.hasDurationMs() && t.hasChannel(); |                     return t.hasDurationMs() && t.hasChannel(); | ||||||
|                 } |                 } | ||||||
| @@ -1863,7 +1861,6 @@ public class MqttStatsPublisher { | |||||||
|             if (!channelInfoMap.isEmpty()) { |             if (!channelInfoMap.isEmpty()) { | ||||||
|                 channelInfoReports.setChannelInformationReportsPerRadio(channelInfoMap); |                 channelInfoReports.setChannelInformationReportsPerRadio(channelInfoMap); | ||||||
|                 smr.setDetails(channelInfoReports); |                 smr.setDetails(channelInfoReports); | ||||||
|                 smr.setCreatedTimestamp(survey.getTimestampMs()); |  | ||||||
|                 metricRecordList.add(smr); |                 metricRecordList.add(smr); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,11 +1,9 @@ | |||||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||||
| 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |  | ||||||
| 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |  | ||||||
| 	<modelVersion>4.0.0</modelVersion> | 	<modelVersion>4.0.0</modelVersion> | ||||||
| 	<parent> | 	<parent> | ||||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | 		<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||||
| 		<version>0.0.1-SNAPSHOT</version> | 		<version>1.1.0-SNAPSHOT</version> | ||||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | 		<relativePath>../../wlan-cloud-root</relativePath> | ||||||
| 	</parent> | 	</parent> | ||||||
| 	<artifactId>opensync-ext-interface</artifactId> | 	<artifactId>opensync-ext-interface</artifactId> | ||||||
| @@ -15,33 +13,33 @@ | |||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<artifactId>base-models</artifactId> | 			<artifactId>base-models</artifactId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<artifactId>tip-wlan-opensync-protobuf</artifactId> | 			<artifactId>tip-wlan-opensync-protobuf</artifactId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
| 		 | 		 | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>equipment-models</artifactId> | 			<artifactId>equipment-models</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>profile-models</artifactId> | 			<artifactId>profile-models</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>location-models</artifactId> | 			<artifactId>location-models</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>routing-models</artifactId> | 			<artifactId>routing-models</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
| 		 | 		 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,6 +6,7 @@ import java.util.Set; | |||||||
|  |  | ||||||
| import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | ||||||
| import com.telecominfraproject.wlan.core.model.equipment.RadioType; | import com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||||
|  | import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes; | ||||||
|  |  | ||||||
| public interface OvsdbClientInterface { | public interface OvsdbClientInterface { | ||||||
|  |  | ||||||
| @@ -33,4 +34,6 @@ public interface OvsdbClientInterface { | |||||||
|      |      | ||||||
|     String processNewChannelsRequest(String apId, Map<RadioType,Integer> backupChannelMap, Map<RadioType,Integer> primaryChannelMap); |     String processNewChannelsRequest(String apId, Map<RadioType,Integer> backupChannelMap, Map<RadioType,Integer> primaryChannelMap); | ||||||
|  |  | ||||||
|  |     String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap); | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
|   <parent> |   <parent> | ||||||
|     <groupId>com.telecominfraproject.wlan</groupId> |     <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|     <artifactId>tip-wlan-cloud-root-pom</artifactId> |     <artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||||
|     <version>0.0.1-SNAPSHOT</version> |     <version>1.1.0-SNAPSHOT</version> | ||||||
|     <relativePath>../../wlan-cloud-root</relativePath> |     <relativePath>../../wlan-cloud-root</relativePath> | ||||||
|   </parent> |   </parent> | ||||||
|   <artifactId>opensync-ext-static</artifactId> |   <artifactId>opensync-ext-static</artifactId> | ||||||
| @@ -13,7 +13,7 @@ | |||||||
|   	<dependency> |   	<dependency> | ||||||
|   		<groupId>com.telecominfraproject.wlan</groupId> |   		<groupId>com.telecominfraproject.wlan</groupId> | ||||||
|   		<artifactId>opensync-gateway</artifactId> |   		<artifactId>opensync-gateway</artifactId> | ||||||
|   		<version>0.0.1-SNAPSHOT</version> |   		<version>1.1.0-SNAPSHOT</version> | ||||||
|   	</dependency> |   	</dependency> | ||||||
|   </dependencies> |   </dependencies> | ||||||
| </project> | </project> | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
|   <parent> |   <parent> | ||||||
|     <groupId>com.telecominfraproject.wlan</groupId> |     <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|     <artifactId>tip-wlan-cloud-root-pom</artifactId> |     <artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||||
|     <version>0.0.1-SNAPSHOT</version> |     <version>1.1.0-SNAPSHOT</version> | ||||||
|     <relativePath>../../wlan-cloud-root</relativePath> |     <relativePath>../../wlan-cloud-root</relativePath> | ||||||
|   </parent> |   </parent> | ||||||
|   <artifactId>opensync-gateway-build</artifactId> |   <artifactId>opensync-gateway-build</artifactId> | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
| 	<parent> | 	<parent> | ||||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | 		<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||||
| 		<version>0.0.1-SNAPSHOT</version> | 		<version>1.1.0-SNAPSHOT</version> | ||||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | 		<relativePath>../../wlan-cloud-root</relativePath> | ||||||
| 	</parent> | 	</parent> | ||||||
| 	<artifactId>opensync-gateway-cloud-docker</artifactId> | 	<artifactId>opensync-gateway-cloud-docker</artifactId> | ||||||
| @@ -22,7 +22,7 @@ | |||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<artifactId>opensync-gateway-cloud-process</artifactId> | 			<artifactId>opensync-gateway-cloud-process</artifactId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 	</dependencies> | 	</dependencies> | ||||||
|   | |||||||
| @@ -22,6 +22,8 @@ FILE_STORE_DIRECTORY="${FILE_STORE_DIRECTORY_INTERNAL:=/tmp/filestore}" | |||||||
| FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}" | FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}" | ||||||
| MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_EXTERNAL_PORT}" | MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_EXTERNAL_PORT}" | ||||||
| OVSDB_EXTERNAL_PORT="${OVSDB_EXTERNAL_PORT}" | OVSDB_EXTERNAL_PORT="${OVSDB_EXTERNAL_PORT}" | ||||||
|  | OFF_CHANNEL_REPORTING_INTERVAL_SECONDS="${OFF_CHANNEL_REPORTING_INTERVAL_SECONDS:=120}" | ||||||
|  | REPORTING_INTERVAL_SECONDS="${REPORTING_INTERVAL_SECONDS:=60}" | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -106,6 +108,8 @@ PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$DEFAULT_WAN_TYPE" | |||||||
| PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$DEFAULT_WAN_NAME" | PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$DEFAULT_WAN_NAME" | ||||||
| PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$DEFAULT_LAN_TYPE" | PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$DEFAULT_LAN_TYPE" | ||||||
| PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$DEFAULT_LAN_NAME" | PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$DEFAULT_LAN_NAME" | ||||||
|  | PROV_PROPS+=" -Dtip.wlan.defaultOffChannelReportingIntervalSeconds=$OFF_CHANNEL_REPORTING_INTERVAL_SECONDS" | ||||||
|  | PROV_PROPS+=" -Dtip.wlan.defaultReportingIntervalSeconds=$REPORTING_INTERVAL_SECONDS" | ||||||
|  |  | ||||||
| PROV_PROPS+=" -Dtip.wlan.ovsdb.autoProvisionedCustomerId=$AUTO_PROV_CUSTOMER_ID" | PROV_PROPS+=" -Dtip.wlan.ovsdb.autoProvisionedCustomerId=$AUTO_PROV_CUSTOMER_ID" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,11 +1,9 @@ | |||||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||||
| 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |  | ||||||
| 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |  | ||||||
| 	<modelVersion>4.0.0</modelVersion> | 	<modelVersion>4.0.0</modelVersion> | ||||||
| 	<parent> | 	<parent> | ||||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | 		<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||||
| 		<version>0.0.1-SNAPSHOT</version> | 		<version>1.1.0-SNAPSHOT</version> | ||||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | 		<relativePath>../../wlan-cloud-root</relativePath> | ||||||
| 	</parent> | 	</parent> | ||||||
| 	<artifactId>opensync-gateway-cloud-process</artifactId> | 	<artifactId>opensync-gateway-cloud-process</artifactId> | ||||||
| @@ -22,95 +20,95 @@ | |||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<artifactId>opensync-ext-cloud</artifactId> | 			<artifactId>opensync-ext-cloud</artifactId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <artifactId>filestore-service</artifactId> |             <artifactId>filestore-service</artifactId> | ||||||
|             <groupId>com.telecominfraproject.wlan</groupId> |             <groupId>com.telecominfraproject.wlan</groupId> | ||||||
|             <version>0.0.1-SNAPSHOT</version> |             <version>1.1.0-SNAPSHOT</version> | ||||||
|         </dependency> |         </dependency> | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>customer-service-remote</artifactId> | 			<artifactId>customer-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>location-service-remote</artifactId> | 			<artifactId>location-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>equipment-service-remote</artifactId> | 			<artifactId>equipment-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>profile-service-remote</artifactId> | 			<artifactId>profile-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>portal-user-service-remote</artifactId> | 			<artifactId>portal-user-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>service-metric-service-remote</artifactId> | 			<artifactId>service-metric-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>system-event-service-remote</artifactId> | 			<artifactId>system-event-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>alarm-service-remote</artifactId> | 			<artifactId>alarm-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>status-service-remote</artifactId> | 			<artifactId>status-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>client-service-remote</artifactId> | 			<artifactId>client-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>routing-service-remote</artifactId> | 			<artifactId>routing-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>firmware-service-remote</artifactId> | 			<artifactId>firmware-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>manufacturer-service-remote</artifactId> | 			<artifactId>manufacturer-service-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>cloud-event-dispatcher-remote</artifactId> | 			<artifactId>cloud-event-dispatcher-remote</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 	</dependencies> | 	</dependencies> | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
| 	<parent> | 	<parent> | ||||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | 		<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||||
| 		<version>0.0.1-SNAPSHOT</version> | 		<version>1.1.0-SNAPSHOT</version> | ||||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | 		<relativePath>../../wlan-cloud-root</relativePath> | ||||||
| 	</parent> | 	</parent> | ||||||
| 	<artifactId>opensync-gateway-static-docker</artifactId> | 	<artifactId>opensync-gateway-static-docker</artifactId> | ||||||
| @@ -22,7 +22,7 @@ | |||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<artifactId>opensync-gateway-static-process</artifactId> | 			<artifactId>opensync-gateway-static-process</artifactId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 	</dependencies> | 	</dependencies> | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
| 	<parent> | 	<parent> | ||||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | 		<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||||
| 		<version>0.0.1-SNAPSHOT</version> | 		<version>1.1.0-SNAPSHOT</version> | ||||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | 		<relativePath>../../wlan-cloud-root</relativePath> | ||||||
| 	</parent> | 	</parent> | ||||||
| 	<artifactId>opensync-gateway-static-process</artifactId> | 	<artifactId>opensync-gateway-static-process</artifactId> | ||||||
| @@ -18,7 +18,7 @@ | |||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<artifactId>opensync-ext-static</artifactId> | 			<artifactId>opensync-ext-static</artifactId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 	</dependencies> | 	</dependencies> | ||||||
|   | |||||||
| @@ -1,11 +1,9 @@ | |||||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||||
| 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |  | ||||||
| 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |  | ||||||
| 	<modelVersion>4.0.0</modelVersion> | 	<modelVersion>4.0.0</modelVersion> | ||||||
| 	<parent> | 	<parent> | ||||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | 		<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||||
| 		<version>0.0.1-SNAPSHOT</version> | 		<version>1.1.0-SNAPSHOT</version> | ||||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | 		<relativePath>../../wlan-cloud-root</relativePath> | ||||||
| 	</parent> | 	</parent> | ||||||
| 	<artifactId>opensync-gateway</artifactId> | 	<artifactId>opensync-gateway</artifactId> | ||||||
| @@ -16,22 +14,22 @@ | |||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>base-container</artifactId> | 			<artifactId>base-container</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<artifactId>opensync-ext-interface</artifactId> | 			<artifactId>opensync-ext-interface</artifactId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>client-models</artifactId> | 			<artifactId>client-models</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>customer-models</artifactId> | 			<artifactId>customer-models</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<groupId>com.vmware.ovsdb</groupId> | 			<groupId>com.vmware.ovsdb</groupId> | ||||||
| @@ -49,13 +47,13 @@ | |||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>service-metric-service-interface</artifactId> | 			<artifactId>service-metric-service-interface</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<dependency> | 		<dependency> | ||||||
| 			<artifactId>status-service-interface</artifactId> | 			<artifactId>status-service-interface</artifactId> | ||||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | 			<groupId>com.telecominfraproject.wlan</groupId> | ||||||
| 			<version>0.0.1-SNAPSHOT</version> | 			<version>1.1.0-SNAPSHOT</version> | ||||||
| 		</dependency> | 		</dependency> | ||||||
|  |  | ||||||
| 		<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util --> | 		<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util --> | ||||||
|   | |||||||
| @@ -10,6 +10,7 @@ import com.netflix.servo.tag.TagList; | |||||||
| import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags; | import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags; | ||||||
| import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | ||||||
| import com.telecominfraproject.wlan.core.model.equipment.RadioType; | import com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||||
|  | import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes; | ||||||
| import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface; | import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface; | ||||||
| import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface.RowUpdateOperation; | import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface.RowUpdateOperation; | ||||||
| import com.telecominfraproject.wlan.opensync.external.integration.OvsdbClientInterface; | import com.telecominfraproject.wlan.opensync.external.integration.OvsdbClientInterface; | ||||||
| @@ -248,7 +249,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { | |||||||
|         OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId); |         OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId); | ||||||
|  |  | ||||||
|         if (opensyncAPConfig != null) { |         if (opensyncAPConfig != null) { | ||||||
|             ovsdbDao.configureNtpServer(ovsdbClient, opensyncAPConfig); |             ovsdbDao.configureNode(ovsdbClient, opensyncAPConfig); | ||||||
|             ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig); |             ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig); | ||||||
|             ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig); |             ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig); | ||||||
|             ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig); |             ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig); | ||||||
| @@ -319,7 +320,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { | |||||||
|  |  | ||||||
|         extIntegrationInterface.clearEquipmentStatus(apId); |         extIntegrationInterface.clearEquipmentStatus(apId); | ||||||
|          |          | ||||||
|         ovsdbDao.configureNtpServer(ovsdbClient, opensyncAPConfig); |         ovsdbDao.configureNode(ovsdbClient, opensyncAPConfig); | ||||||
|         ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig); |         ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig); | ||||||
|         ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig); |         ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig); | ||||||
|         ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig); |         ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig); | ||||||
| @@ -965,5 +966,23 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface { | |||||||
|             return "failed to change backup and/or primary channels for AP " + apId; |             return "failed to change backup and/or primary channels for AP " + apId; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     public String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap) { | ||||||
|  |         LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest for AP {}", apId); | ||||||
|  |  | ||||||
|  |         try { | ||||||
|  |             OvsdbSession session = ovsdbSessionMapInterface.getSession(apId); | ||||||
|  |             OvsdbClient ovsdbClient = session.getOvsdbClient(); | ||||||
|  |             ovsdbDao.processCellSizeAttributesRequest(ovsdbClient, cellSizeAttributeMap); | ||||||
|  |             LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest change cellSizeAttributes for AP {}", | ||||||
|  |                     apId); | ||||||
|  |             return " change cell size attributes for AP " + apId; | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             LOG.error( | ||||||
|  |                     "TipWlanOvsdbClient::processCellSizeAttributesRequest failed to change cell size attributes for AP {}", | ||||||
|  |                     apId, e); | ||||||
|  |             return "failed to change cell size attributes for AP " + apId; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -9,6 +9,7 @@ import org.springframework.stereotype.Component; | |||||||
|  |  | ||||||
| import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | ||||||
| import com.telecominfraproject.wlan.core.model.equipment.RadioType; | import com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||||
|  | import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes; | ||||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo; | import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo; | ||||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig; | import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig; | ||||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState; | import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState; | ||||||
| @@ -84,9 +85,17 @@ public class OvsdbDao extends OvsdbDaoBase { | |||||||
|         ovsdbNetwork.configureInterfaces(ovsdbClient); |         ovsdbNetwork.configureInterfaces(ovsdbClient); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     public void configureNtpServer(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { |     public void configureNode(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { | ||||||
|  |         configureNtpServer(ovsdbClient,opensyncAPConfig);configureSyslog(ovsdbClient, opensyncAPConfig); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     void configureNtpServer(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { | ||||||
|         ovsdbNodeConfig.configureNtpServer(ovsdbClient, opensyncAPConfig); |         ovsdbNodeConfig.configureNtpServer(ovsdbClient, opensyncAPConfig); | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     void configureSyslog(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { | ||||||
|  |         ovsdbNodeConfig.configureSyslog(ovsdbClient, opensyncAPConfig); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public void configureRadsecRadiusAndRealm(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { |     public void configureRadsecRadiusAndRealm(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { | ||||||
|         ovsdbRadiusProxyConfig.configureRadius(ovsdbClient, opensyncAPConfig); |         ovsdbRadiusProxyConfig.configureRadius(ovsdbClient, opensyncAPConfig); | ||||||
| @@ -180,6 +189,10 @@ public class OvsdbDao extends OvsdbDaoBase { | |||||||
|             Map<RadioType, Integer> primaryChannelMap) { |             Map<RadioType, Integer> primaryChannelMap) { | ||||||
|         ovsdbRrm.processNewChannelsRequest(ovsdbClient, backupChannelMap, primaryChannelMap); |         ovsdbRrm.processNewChannelsRequest(ovsdbClient, backupChannelMap, primaryChannelMap); | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     public void processCellSizeAttributesRequest(OvsdbClient ovsdbClient, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap) { | ||||||
|  |         ovsdbRrm.processCellSizeAttributesRequest(ovsdbClient, cellSizeAttributeMap); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public void rebootOrResetAp(OvsdbClient ovsdbClient, String ovsdbAwlanApSwitchSoftwareBank) { |     public void rebootOrResetAp(OvsdbClient ovsdbClient, String ovsdbAwlanApSwitchSoftwareBank) { | ||||||
|         ovsdbNode.rebootOrResetAp(ovsdbClient, ovsdbAwlanApSwitchSoftwareBank); |         ovsdbNode.rebootOrResetAp(ovsdbClient, ovsdbAwlanApSwitchSoftwareBank); | ||||||
|   | |||||||
| @@ -144,6 +144,12 @@ public class OvsdbDaoBase { | |||||||
|      |      | ||||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.fileStoreDirectory:/tmp/tip-wlan-filestore}") |     @org.springframework.beans.factory.annotation.Value("${tip.wlan.fileStoreDirectory:/tmp/tip-wlan-filestore}") | ||||||
|     String fileStoreDirectoryName; |     String fileStoreDirectoryName; | ||||||
|  |      | ||||||
|  |     @org.springframework.beans.factory.annotation.Value("${tip.wlan.defaultReportingIntervalSeconds:60}") | ||||||
|  |     public int defaultReportingIntervalSeconds; | ||||||
|  |      | ||||||
|  |     @org.springframework.beans.factory.annotation.Value("${tip.wlan.defaultOffChannelReportingIntervalSeconds:120}") | ||||||
|  |     public int defaultOffChannelReportingIntervalSeconds; | ||||||
|  |  | ||||||
|     public OvsdbDaoBase() { |     public OvsdbDaoBase() { | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -576,26 +576,25 @@ public class OvsdbHotspotConfig extends OvsdbDaoBase { | |||||||
|                                 rowColumns.put("access_network_type", new Atom<>(hs2Profile.getAccessNetworkType().getId())); |                                 rowColumns.put("access_network_type", new Atom<>(hs2Profile.getAccessNetworkType().getId())); | ||||||
|                             } |                             } | ||||||
|                         } |                         } | ||||||
|                          |  | ||||||
|                          |  | ||||||
|                         // # format: <1-octet encoded value as hex str> |                         // # format: <1-octet encoded value as hex str> | ||||||
|                         // # (ipv4_type & 0x3f) << 2 | (ipv6_type & 0x3) << 2 |                         // # (ipv4_type & 0x3f) << 2 | (ipv6_type & 0x3)  | ||||||
|                         // 0x3f = 63 in decimal |                         // 0x3f = 63 in decimal | ||||||
|                         // 0x3 = 3 in decimal |                         // 0x3 = 3 in decimal | ||||||
|                         if (PasspointIPv6AddressType.getByName( |                         if (PasspointIPv6AddressType.getByName( | ||||||
|                                 hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv6AddressType.UNSUPPORTED) { |                                 hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv6AddressType.UNSUPPORTED) { | ||||||
|                             int availability = PasspointIPv6AddressType |                             int availability = PasspointIPv6AddressType | ||||||
|                                     .getByName(hs2Profile.getIpAddressTypeAvailability()).getId(); |                                     .getByName(hs2Profile.getIpAddressTypeAvailability()).getId(); | ||||||
|                             String hexString = Integer.toHexString((availability & 3) << 2); |                             String hexString = String.format("%02x", (availability & 0x3)); | ||||||
|                             rowColumns.put("ipaddr_type_availability", new Atom<>(hexString)); |                             rowColumns.put("ipaddr_type_availability", new Atom<>(hexString)); | ||||||
|                         } else if (PasspointIPv4AddressType.getByName( |                         }else  if (PasspointIPv4AddressType.getByName( | ||||||
|                                 hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv4AddressType.UNSUPPORTED) { |                                 hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv4AddressType.UNSUPPORTED) { | ||||||
|                             int availability = PasspointIPv4AddressType |                             int availability = PasspointIPv4AddressType | ||||||
|                                     .getByName(hs2Profile.getIpAddressTypeAvailability()).getId(); |                                     .getByName(hs2Profile.getIpAddressTypeAvailability()).getId(); | ||||||
|                             String hexString = Integer.toHexString((availability & 63) << 2); |                             String hexString = String.format("%02x", ((availability & 0x3f) << 2)); | ||||||
|                             rowColumns.put("ipaddr_type_availability", new Atom<>(hexString)); |                             rowColumns.put("ipaddr_type_availability", new Atom<>(hexString)); | ||||||
|                         } |                         }  | ||||||
|  |  | ||||||
|                         Row row = new Row(rowColumns); |                         Row row = new Row(rowColumns); | ||||||
|  |  | ||||||
|                         Insert newHs20Config = new Insert(hotspot20ConfigDbTable, row); |                         Insert newHs20Config = new Insert(hotspot20ConfigDbTable, row); | ||||||
| @@ -676,8 +675,8 @@ public class OvsdbHotspotConfig extends OvsdbDaoBase { | |||||||
|                             operations.add(newOsuProvider); |                             operations.add(newOsuProvider); | ||||||
|                         } else { |                         } else { | ||||||
|                             List<Condition> conditions = new ArrayList<>(); |                             List<Condition> conditions = new ArrayList<>(); | ||||||
|                             conditions.add(new Condition("server_uri", Function.EQUALS, |                             conditions.add(new Condition("osu_provider_name", Function.EQUALS, | ||||||
|                                     new Atom<>(providerProfile.getOsuServerUri()))); |                                     new Atom<>(apOsuProviderName))); | ||||||
|                             Update updatedOsuProvider = new Update(hotspot20OsuProvidersDbTable, conditions, row); |                             Update updatedOsuProvider = new Update(hotspot20OsuProvidersDbTable, conditions, row); | ||||||
|                             operations.add(updatedOsuProvider); |                             operations.add(updatedOsuProvider); | ||||||
|                         } |                         } | ||||||
|   | |||||||
| @@ -1,3 +1,4 @@ | |||||||
|  |  | ||||||
| package com.telecominfraproject.wlan.opensync.ovsdb.dao; | package com.telecominfraproject.wlan.opensync.ovsdb.dao; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| @@ -15,6 +16,8 @@ import org.springframework.stereotype.Component; | |||||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig; | import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig; | ||||||
| import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration; | import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration; | ||||||
| import com.vmware.ovsdb.exception.OvsdbClientException; | import com.vmware.ovsdb.exception.OvsdbClientException; | ||||||
|  | import com.vmware.ovsdb.protocol.operation.Delete; | ||||||
|  | import com.vmware.ovsdb.protocol.operation.Insert; | ||||||
| import com.vmware.ovsdb.protocol.operation.Operation; | import com.vmware.ovsdb.protocol.operation.Operation; | ||||||
| import com.vmware.ovsdb.protocol.operation.Update; | import com.vmware.ovsdb.protocol.operation.Update; | ||||||
| import com.vmware.ovsdb.protocol.operation.notation.Atom; | import com.vmware.ovsdb.protocol.operation.notation.Atom; | ||||||
| @@ -23,6 +26,7 @@ import com.vmware.ovsdb.protocol.operation.notation.Function; | |||||||
| import com.vmware.ovsdb.protocol.operation.notation.Row; | import com.vmware.ovsdb.protocol.operation.notation.Row; | ||||||
| import com.vmware.ovsdb.protocol.operation.notation.Value; | import com.vmware.ovsdb.protocol.operation.notation.Value; | ||||||
| import com.vmware.ovsdb.protocol.operation.result.OperationResult; | import com.vmware.ovsdb.protocol.operation.result.OperationResult; | ||||||
|  | import com.vmware.ovsdb.protocol.operation.result.UpdateResult; | ||||||
| import com.vmware.ovsdb.service.OvsdbClient; | import com.vmware.ovsdb.service.OvsdbClient; | ||||||
|  |  | ||||||
| @Component | @Component | ||||||
| @@ -33,8 +37,7 @@ public class OvsdbNodeConfig extends OvsdbDaoBase { | |||||||
|  |  | ||||||
|     public void configureNtpServer(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { |     public void configureNtpServer(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { | ||||||
|         try { |         try { | ||||||
|             ApNetworkConfiguration apNetworkConfig = (ApNetworkConfiguration) opensyncAPConfig.getApProfile() |             ApNetworkConfiguration apNetworkConfig = (ApNetworkConfiguration) opensyncAPConfig.getApProfile().getDetails(); | ||||||
|                     .getDetails(); |  | ||||||
|             if (apNetworkConfig.getNtpServer() == null || apNetworkConfig.getNtpServer().getValue() == null) { |             if (apNetworkConfig.getNtpServer() == null || apNetworkConfig.getNtpServer().getValue() == null) { | ||||||
|                 LOG.info("Cannot configure NTP server to null value. {}", apNetworkConfig); |                 LOG.info("Cannot configure NTP server to null value. {}", apNetworkConfig); | ||||||
|                 return; |                 return; | ||||||
| @@ -43,8 +46,7 @@ public class OvsdbNodeConfig extends OvsdbDaoBase { | |||||||
|             Map<String, Value> updateColumns = new HashMap<>(); |             Map<String, Value> updateColumns = new HashMap<>(); | ||||||
|             updateColumns.put("value", new Atom<>(apNetworkConfig.getNtpServer().getValue())); |             updateColumns.put("value", new Atom<>(apNetworkConfig.getNtpServer().getValue())); | ||||||
|             List<Operation> operations = new ArrayList<>(); |             List<Operation> operations = new ArrayList<>(); | ||||||
|             operations.add(new Update(nodeConfigTable, |             operations.add(new Update(nodeConfigTable, List.of(new Condition("module", Function.EQUALS, new Atom<>("ntp"))), new Row(updateColumns))); | ||||||
|                     List.of(new Condition("module", Function.EQUALS, new Atom<>("ntp"))), new Row(updateColumns))); |  | ||||||
|             CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); |             CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); | ||||||
|             OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); |             OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||||
|             for (OperationResult res : result) { |             for (OperationResult res : result) { | ||||||
| @@ -54,4 +56,67 @@ public class OvsdbNodeConfig extends OvsdbDaoBase { | |||||||
|             throw new RuntimeException(e); |             throw new RuntimeException(e); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void configureSyslog(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) { | ||||||
|  |         // /usr/opensync/tools/ovsh insert Node_Config module:="syslog" key:="remote" value:="udp:192.168.178.9:1000:4" | ||||||
|  |         // The format is a colon delimited list.  log_proto:log_ip:log_port:log_priority | ||||||
|  |         try { | ||||||
|  |             ApNetworkConfiguration apNetworkConfig = (ApNetworkConfiguration) opensyncAPConfig.getApProfile().getDetails(); | ||||||
|  |             if (apNetworkConfig.getSyslogRelay() == null ) { | ||||||
|  |                 LOG.info("Cannot configure syslog to null value. {}", apNetworkConfig); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |              | ||||||
|  |             if (apNetworkConfig.getSyslogRelay().isEnabled()) { | ||||||
|  |                  | ||||||
|  |                 if (apNetworkConfig.getSyslogRelay().getSrvHostIp() == null | ||||||
|  |                     || apNetworkConfig.getSyslogRelay().getSeverity() == null) { | ||||||
|  |                     LOG.info("Cannot configure syslog remote_logging without SrvHostIp and Severity values. {}", apNetworkConfig); | ||||||
|  |                     return; | ||||||
|  |                 } | ||||||
|  |                 LOG.debug("configureSyslog remote_logging to {}", apNetworkConfig.getSyslogRelay()); | ||||||
|  |                 Map<String, Value> columns = new HashMap<>(); | ||||||
|  |                 columns.put("key", new Atom<>("remote")); | ||||||
|  |                 columns.put("module", new Atom<>("syslog")); | ||||||
|  |                 String delimitedValue = "udp:" + apNetworkConfig.getSyslogRelay().getSrvHostIp().getHostAddress() + ":" + String | ||||||
|  |                         .valueOf(apNetworkConfig.getSyslogRelay().getSrvHostPort() + ":" +String.valueOf(apNetworkConfig.getSyslogRelay().getSeverity().getId())); | ||||||
|  |                 columns.put("value", new Atom<>(delimitedValue)); | ||||||
|  |                 List<Operation> operations = new ArrayList<>(); | ||||||
|  |                 operations.add(new Update(nodeConfigTable, List.of(new Condition("module", Function.EQUALS, new Atom<>("syslog"))), new Row(columns))); | ||||||
|  |                 CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); | ||||||
|  |                 OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||||
|  |                 long numUpdates = 0; | ||||||
|  |                 for (OperationResult res : result) { | ||||||
|  |                     if (res instanceof UpdateResult) { | ||||||
|  |                         numUpdates += ((UpdateResult) res).getCount(); | ||||||
|  |                         LOG.debug("configureSyslog update result {}", res); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |                 if (numUpdates == 0) { | ||||||
|  |                     // no records existed, insert the row instead | ||||||
|  |                     operations.clear(); | ||||||
|  |                     operations.add(new Insert(nodeConfigTable, new Row(columns))); | ||||||
|  |                     fResult = ovsdbClient.transact(ovsdbName, operations); | ||||||
|  |                     result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||||
|  |                     for (OperationResult res : result) { | ||||||
|  |                         LOG.debug("configureSyslog insert result {}", res); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } else { | ||||||
|  |                 LOG.debug("Disable remote_logging", apNetworkConfig.getSyslogRelay()); | ||||||
|  |                 List<Operation> operations = new ArrayList<>(); | ||||||
|  |                 operations.add(new Delete(nodeConfigTable, List.of(new Condition("module", Function.EQUALS, new Atom<>("syslog"))))); | ||||||
|  |                 CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); | ||||||
|  |                 OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||||
|  |                 for (OperationResult res : result) { | ||||||
|  |                     if (res instanceof UpdateResult) { | ||||||
|  |                         LOG.debug("configureSyslog disabled remote_logging {}", res); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) { | ||||||
|  |             throw new RuntimeException(e); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,9 +1,27 @@ | |||||||
| package com.telecominfraproject.wlan.opensync.ovsdb.dao; | package com.telecominfraproject.wlan.opensync.ovsdb.dao; | ||||||
|  |  | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.HashSet; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | import java.util.Set; | ||||||
|  | import java.util.concurrent.CompletableFuture; | ||||||
|  | import java.util.concurrent.ExecutionException; | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  | import java.util.concurrent.TimeoutException; | ||||||
|  |  | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
| import com.telecominfraproject.wlan.core.model.equipment.ChannelBandwidth; | import com.telecominfraproject.wlan.core.model.equipment.ChannelBandwidth; | ||||||
| import com.telecominfraproject.wlan.core.model.equipment.RadioType; | import com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||||
| import com.telecominfraproject.wlan.core.model.equipment.SourceType; | import com.telecominfraproject.wlan.core.model.equipment.SourceType; | ||||||
| import com.telecominfraproject.wlan.equipment.models.*; | import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration; | ||||||
|  | import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration; | ||||||
|  | import com.telecominfraproject.wlan.equipment.models.MimoMode; | ||||||
|  | import com.telecominfraproject.wlan.equipment.models.RadioConfiguration; | ||||||
|  | import com.telecominfraproject.wlan.equipment.models.StateSetting; | ||||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig; | import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig; | ||||||
| import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiRadioConfigInfo; | import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiRadioConfigInfo; | ||||||
| import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiVifConfigInfo; | import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiVifConfigInfo; | ||||||
| @@ -12,19 +30,15 @@ import com.telecominfraproject.wlan.profile.rf.models.RfElementConfiguration; | |||||||
| import com.vmware.ovsdb.exception.OvsdbClientException; | import com.vmware.ovsdb.exception.OvsdbClientException; | ||||||
| import com.vmware.ovsdb.protocol.operation.Operation; | import com.vmware.ovsdb.protocol.operation.Operation; | ||||||
| import com.vmware.ovsdb.protocol.operation.Update; | import com.vmware.ovsdb.protocol.operation.Update; | ||||||
| import com.vmware.ovsdb.protocol.operation.notation.*; | import com.vmware.ovsdb.protocol.operation.notation.Atom; | ||||||
|  | import com.vmware.ovsdb.protocol.operation.notation.Condition; | ||||||
|  | import com.vmware.ovsdb.protocol.operation.notation.Function; | ||||||
|  | import com.vmware.ovsdb.protocol.operation.notation.Row; | ||||||
|  | import com.vmware.ovsdb.protocol.operation.notation.Uuid; | ||||||
|  | import com.vmware.ovsdb.protocol.operation.notation.Value; | ||||||
| import com.vmware.ovsdb.protocol.operation.result.OperationResult; | import com.vmware.ovsdb.protocol.operation.result.OperationResult; | ||||||
|  | import com.vmware.ovsdb.protocol.schema.DatabaseSchema; | ||||||
| import com.vmware.ovsdb.service.OvsdbClient; | import com.vmware.ovsdb.service.OvsdbClient; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; |  | ||||||
| import org.springframework.stereotype.Component; |  | ||||||
|  |  | ||||||
| import java.util.*; |  | ||||||
| import java.util.Map; |  | ||||||
| import java.util.Set; |  | ||||||
| import java.util.concurrent.CompletableFuture; |  | ||||||
| import java.util.concurrent.ExecutionException; |  | ||||||
| import java.util.concurrent.TimeUnit; |  | ||||||
| import java.util.concurrent.TimeoutException; |  | ||||||
|  |  | ||||||
| @Component | @Component | ||||||
| public class OvsdbRadioConfig extends OvsdbDaoBase { | public class OvsdbRadioConfig extends OvsdbDaoBase { | ||||||
| @@ -40,75 +54,80 @@ public class OvsdbRadioConfig extends OvsdbDaoBase { | |||||||
|         Map<String, WifiRadioConfigInfo> provisionedRadioConfigs = ovsdbGet.getProvisionedWifiRadioConfigs(ovsdbClient); |         Map<String, WifiRadioConfigInfo> provisionedRadioConfigs = ovsdbGet.getProvisionedWifiRadioConfigs(ovsdbClient); | ||||||
|         Map<String, WifiVifConfigInfo> vifConfigs = ovsdbGet.getProvisionedWifiVifConfigs(ovsdbClient); |         Map<String, WifiVifConfigInfo> vifConfigs = ovsdbGet.getProvisionedWifiVifConfigs(ovsdbClient); | ||||||
|         List<Operation> operations = new ArrayList<>(); |         List<Operation> operations = new ArrayList<>(); | ||||||
|         for (RadioType radioType : apElementConfiguration.getRadioMap().keySet()) { |         try { | ||||||
|             Map<String, String> hwConfig = new HashMap<>(); |             CompletableFuture<DatabaseSchema> cfDatabaseSchema = ovsdbClient.getSchema(ovsdbName); | ||||||
|             ElementRadioConfiguration elementRadioConfig = apElementConfiguration.getRadioMap().get(radioType); |             DatabaseSchema databaseSchema = cfDatabaseSchema.get(); | ||||||
|             RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType); |             Set<String> columnNames = databaseSchema.getTables().get(wifiRadioConfigDbTable).getColumns().keySet(); | ||||||
|             boolean autoChannelSelection = rfElementConfig.getAutoChannelSelection(); |  | ||||||
|             int channel = elementRadioConfig.getActiveChannel(autoChannelSelection); |             for (RadioType radioType : apElementConfiguration.getRadioMap().keySet()) { | ||||||
|             LOG.debug("configureWifiRadios autoChannelSelection {} activeChannel {} getChannelNumber {} ", |                 Map<String, String> hwConfig = new HashMap<>(); | ||||||
|                     autoChannelSelection, channel, elementRadioConfig.getChannelNumber()); |                 ElementRadioConfiguration elementRadioConfig = apElementConfiguration.getRadioMap().get(radioType); | ||||||
|             ChannelBandwidth bandwidth = rfElementConfig.getChannelBandwidth(); |                 RfElementConfiguration rfElementConfig = rfConfig.getRfConfig(radioType); | ||||||
|             String ht_mode = getBandwidth(bandwidth); |                 boolean autoChannelSelection = rfElementConfig.getAutoChannelSelection(); | ||||||
|             RadioConfiguration radioConfig = apElementConfiguration.getAdvancedRadioMap().get(radioType); |                 int channel = elementRadioConfig.getActiveChannel(autoChannelSelection); | ||||||
|             int beaconInterval = rfElementConfig.getBeaconInterval(); |                 LOG.debug("configureWifiRadios autoChannelSelection {} activeChannel {} getChannelNumber {} ", | ||||||
|             boolean enabled = radioConfig.getRadioAdminState().equals(StateSetting.enabled); |                         autoChannelSelection, channel, elementRadioConfig.getChannelNumber()); | ||||||
|             int txPower; |                 ChannelBandwidth bandwidth = rfElementConfig.getChannelBandwidth(); | ||||||
|             if (elementRadioConfig.getEirpTxPower().getSource() == SourceType.profile) { |                 String ht_mode = getBandwidth(bandwidth); | ||||||
|                 txPower = rfElementConfig.getEirpTxPower(); |                 RadioConfiguration radioConfig = apElementConfiguration.getAdvancedRadioMap().get(radioType); | ||||||
|             } else { |                 int beaconInterval = rfElementConfig.getBeaconInterval(); | ||||||
|                 txPower = elementRadioConfig.getEirpTxPower().getValue(); |                 boolean enabled = radioConfig.getRadioAdminState().equals(StateSetting.enabled); | ||||||
|             } |                 int txPower; | ||||||
|             String hwMode = getHwMode(rfElementConfig); |                 if (elementRadioConfig.getEirpTxPower().getSource() == SourceType.profile) { | ||||||
|             String freqBand = getHwConfigAndFreq(radioType, hwConfig); |                     txPower = rfElementConfig.getEirpTxPower(); | ||||||
|             String radioName = null; |                 } else { | ||||||
|             for (String key : provisionedRadioConfigs.keySet()) { |                     txPower = elementRadioConfig.getEirpTxPower().getValue(); | ||||||
|                 if (provisionedRadioConfigs.get(key).freqBand.equals(freqBand)) { |                 } | ||||||
|                     radioName = key; |                 String hwMode = getHwMode(rfElementConfig); | ||||||
|                     break; |                 String freqBand = getHwConfigAndFreq(radioType, hwConfig); | ||||||
|  |                 String radioName = null; | ||||||
|  |                 for (String key : provisionedRadioConfigs.keySet()) { | ||||||
|  |                     if (provisionedRadioConfigs.get(key).freqBand.equals(freqBand)) { | ||||||
|  |                         radioName = key; | ||||||
|  |                         break; | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |                 if (radioName == null) continue; | ||||||
|  |                 String ifName = null; // for vifConfigs | ||||||
|  |                 if (radioName.equals(radio0)) { | ||||||
|  |                     ifName = defaultRadio0; | ||||||
|  |                 } else if (radioName.equals(radio1)) { | ||||||
|  |                     ifName = defaultRadio1; | ||||||
|  |                 } else if (radioName.equals(radio2)) { | ||||||
|  |                     ifName = defaultRadio2; | ||||||
|  |                 } | ||||||
|  |                 if (ifName == null) continue; | ||||||
|  |                 Set<Uuid> vifUuidsForRadio = new HashSet<>(); | ||||||
|  |                 for (String key : vifConfigs.keySet()) { | ||||||
|  |                     if (key.contains(ifName)) | ||||||
|  |                         vifUuidsForRadio.add(vifConfigs.get(key).uuid); | ||||||
|  |                 } | ||||||
|  |                 int mimoMode = MimoMode.none.getId(); | ||||||
|  |                 if (rfElementConfig.getMimoMode() != null) { | ||||||
|  |                     mimoMode = rfElementConfig.getMimoMode().getId(); | ||||||
|  |                 }            | ||||||
|  |                 int maxNumClients = 0;           | ||||||
|  |                 if (rfElementConfig.getMaxNumClients() != null) { | ||||||
|  |                     maxNumClients = rfElementConfig.getMaxNumClients(); | ||||||
|  |                 } | ||||||
|  |                 try { | ||||||
|  |                     configureWifiRadios(freqBand, channel, hwConfig, country.toUpperCase(), beaconInterval, | ||||||
|  |                             enabled, hwMode, ht_mode, txPower, mimoMode, vifUuidsForRadio, operations, maxNumClients,columnNames); | ||||||
|  |                 } catch (OvsdbClientException e) { | ||||||
|  |                     LOG.error("ConfigureWifiRadios failed with OvsdbClient exception.", e); | ||||||
|  |                     throw new RuntimeException(e); | ||||||
|  |                 } catch (TimeoutException e) { | ||||||
|  |                     LOG.error("ConfigureWifiRadios failed with Timeout.", e); | ||||||
|  |                     throw new RuntimeException(e); | ||||||
|  |                 } catch (ExecutionException e) { | ||||||
|  |                     LOG.error("ConfigureWifiRadios excecution failed.", e); | ||||||
|  |                     throw new RuntimeException(e); | ||||||
|  |                 } catch (InterruptedException e) { | ||||||
|  |                     LOG.error("ConfigureWifiRadios interrupted.", e); | ||||||
|  |                     throw new RuntimeException(e); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             if (radioName == null) continue; |  | ||||||
|             String ifName = null; // for vifConfigs |  | ||||||
|             if (radioName.equals(radio0)) { |  | ||||||
|                 ifName = defaultRadio0; |  | ||||||
|             } else if (radioName.equals(radio1)) { |  | ||||||
|                 ifName = defaultRadio1; |  | ||||||
|             } else if (radioName.equals(radio2)) { |  | ||||||
|                 ifName = defaultRadio2; |  | ||||||
|             } |  | ||||||
|             if (ifName == null) continue; |  | ||||||
|             Set<Uuid> vifUuidsForRadio = new HashSet<>(); |  | ||||||
|             for (String key : vifConfigs.keySet()) { |  | ||||||
|                 if (key.contains(ifName)) |  | ||||||
|                     vifUuidsForRadio.add(vifConfigs.get(key).uuid); |  | ||||||
|             } |  | ||||||
|             int mimoMode = MimoMode.none.getId(); |  | ||||||
|             if (rfElementConfig.getMimoMode() != null) { |  | ||||||
|                 mimoMode = rfElementConfig.getMimoMode().getId(); |  | ||||||
|             }            |  | ||||||
|             int maxNumClients = 0;           |  | ||||||
|             if (rfElementConfig.getMaxNumClients() != null) { |  | ||||||
|                 maxNumClients = rfElementConfig.getMaxNumClients(); |  | ||||||
|             } |  | ||||||
|             try { |  | ||||||
|                 configureWifiRadios(freqBand, channel, hwConfig, country.toUpperCase(), beaconInterval, |  | ||||||
|                         enabled, hwMode, ht_mode, txPower, mimoMode, vifUuidsForRadio, operations, maxNumClients); |  | ||||||
|             } catch (OvsdbClientException e) { |  | ||||||
|                 LOG.error("ConfigureWifiRadios failed with OvsdbClient exception.", e); |  | ||||||
|                 throw new RuntimeException(e); |  | ||||||
|             } catch (TimeoutException e) { |  | ||||||
|                 LOG.error("ConfigureWifiRadios failed with Timeout.", e); |  | ||||||
|                 throw new RuntimeException(e); |  | ||||||
|             } catch (ExecutionException e) { |  | ||||||
|                 LOG.error("ConfigureWifiRadios excecution failed.", e); |  | ||||||
|                 throw new RuntimeException(e); |  | ||||||
|             } catch (InterruptedException e) { |  | ||||||
|                 LOG.error("ConfigureWifiRadios interrupted.", e); |  | ||||||
|                 throw new RuntimeException(e); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         try { |  | ||||||
|             CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); |             CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); | ||||||
|             OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); |             OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||||
|             for (OperationResult res : result) { |             for (OperationResult res : result) { | ||||||
| @@ -217,7 +236,7 @@ public class OvsdbRadioConfig extends OvsdbDaoBase { | |||||||
|  |  | ||||||
|     void configureWifiRadios(String freqBand, int channel, Map<String, String> hwConfig, |     void configureWifiRadios(String freqBand, int channel, Map<String, String> hwConfig, | ||||||
|                              String country, int beaconInterval, boolean enabled, String hwMode, String ht_mode, int txPower, |                              String country, int beaconInterval, boolean enabled, String hwMode, String ht_mode, int txPower, | ||||||
|                              int mimoMode, Set<Uuid> vifUuidsForRadio, List<Operation> operations, int maxNumClients) throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException { |                              int mimoMode, Set<Uuid> vifUuidsForRadio, List<Operation> operations, int maxNumClients, Set<String> tableColumns) throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException { | ||||||
|         Map<String, Value> updateColumns = new HashMap<>(); |         Map<String, Value> updateColumns = new HashMap<>(); | ||||||
|         List<Condition> conditions = new ArrayList<>(); |         List<Condition> conditions = new ArrayList<>(); | ||||||
|         conditions.add(new Condition("freq_band", Function.EQUALS, new Atom<>(freqBand))); |         conditions.add(new Condition("freq_band", Function.EQUALS, new Atom<>(freqBand))); | ||||||
| @@ -243,7 +262,7 @@ public class OvsdbRadioConfig extends OvsdbDaoBase { | |||||||
|             updateColumns.put("hw_mode", new Atom<>(hwMode)); |             updateColumns.put("hw_mode", new Atom<>(hwMode)); | ||||||
|         } |         } | ||||||
|         configureCustomOptionsMap(maxNumClients, updateColumns); |         configureCustomOptionsMap(maxNumClients, updateColumns); | ||||||
|         setTxAndRxChainmask(mimoMode, updateColumns); |         setTxAndRxChainmask(mimoMode, updateColumns,tableColumns); | ||||||
|         if (vifUuidsForRadio.size() > 0) { |         if (vifUuidsForRadio.size() > 0) { | ||||||
|             com.vmware.ovsdb.protocol.operation.notation.Set vifConfigUuids = com.vmware.ovsdb.protocol.operation.notation.Set |             com.vmware.ovsdb.protocol.operation.notation.Set vifConfigUuids = com.vmware.ovsdb.protocol.operation.notation.Set | ||||||
|                     .of(vifUuidsForRadio); |                     .of(vifUuidsForRadio); | ||||||
| @@ -262,23 +281,29 @@ public class OvsdbRadioConfig extends OvsdbDaoBase { | |||||||
|         updateColumns.put("custom_options", customOptionsMap);            |         updateColumns.put("custom_options", customOptionsMap);            | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     void setTxAndRxChainmask(int mimoMode, Map<String, Value> updateColumns) { |     void setTxAndRxChainmask(int mimoMode, Map<String, Value> updateColumns, Set<String> tableColumns) { | ||||||
|         /* |         /* | ||||||
|          * Chainmask is a bitmask, so map mimo mode values accordingly |          * Chainmask is a bitmask, so map mimo mode values accordingly | ||||||
|          * Note values 0, 1 remain unchanged  |          * Note values 0, 1 remain unchanged | ||||||
|          *  |          *  | ||||||
|          * mimoMode  bitmask  |          * mimoMode bitmask | ||||||
|          *    0         0  |          * 0 0 | ||||||
|          *    1         1  |          * 1 1 | ||||||
|          *    2         3  |          * 2 3 | ||||||
|          *    3         7  |          * 3 7 | ||||||
|          *    4        15 |          * 4 15 | ||||||
|          */ |          */ | ||||||
|         if (mimoMode == 2) {mimoMode = 3;} |         if (mimoMode == 2) { | ||||||
|         else if (mimoMode == 3) {mimoMode = 7;} |             mimoMode = 3; | ||||||
|         else if (mimoMode == 4) {mimoMode = 15;} |         } else if (mimoMode == 3) { | ||||||
|  |             mimoMode = 7; | ||||||
|  |         } else if (mimoMode == 4) { | ||||||
|  |             mimoMode = 15; | ||||||
|  |         } | ||||||
|         updateColumns.put("tx_chainmask", new Atom<>(mimoMode)); |         updateColumns.put("tx_chainmask", new Atom<>(mimoMode)); | ||||||
|         updateColumns.put("rx_chainmask", new Atom<>(mimoMode));        |         if (tableColumns.contains("rx_chainmask")) { | ||||||
|  |             updateColumns.put("rx_chainmask", new Atom<>(mimoMode)); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ import java.util.ArrayList; | |||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  | import java.util.Set; | ||||||
| import java.util.concurrent.CompletableFuture; | import java.util.concurrent.CompletableFuture; | ||||||
| import java.util.concurrent.ExecutionException; | import java.util.concurrent.ExecutionException; | ||||||
| import java.util.concurrent.TimeUnit; | import java.util.concurrent.TimeUnit; | ||||||
| @@ -16,6 +17,7 @@ import com.telecominfraproject.wlan.core.model.equipment.RadioBestApSettings; | |||||||
| import com.telecominfraproject.wlan.core.model.equipment.RadioType; | import com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||||
| import com.telecominfraproject.wlan.core.model.equipment.SourceType; | import com.telecominfraproject.wlan.core.model.equipment.SourceType; | ||||||
| import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration; | import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration; | ||||||
|  | import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes; | ||||||
| import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration; | import com.telecominfraproject.wlan.equipment.models.ElementRadioConfiguration; | ||||||
| import com.telecominfraproject.wlan.equipment.models.ManagementRate; | import com.telecominfraproject.wlan.equipment.models.ManagementRate; | ||||||
| import com.telecominfraproject.wlan.equipment.models.MulticastRate; | import com.telecominfraproject.wlan.equipment.models.MulticastRate; | ||||||
| @@ -38,6 +40,7 @@ import com.vmware.ovsdb.protocol.operation.result.ErrorResult; | |||||||
| import com.vmware.ovsdb.protocol.operation.result.InsertResult; | import com.vmware.ovsdb.protocol.operation.result.InsertResult; | ||||||
| import com.vmware.ovsdb.protocol.operation.result.OperationResult; | import com.vmware.ovsdb.protocol.operation.result.OperationResult; | ||||||
| import com.vmware.ovsdb.protocol.operation.result.UpdateResult; | import com.vmware.ovsdb.protocol.operation.result.UpdateResult; | ||||||
|  | import com.vmware.ovsdb.protocol.schema.DatabaseSchema; | ||||||
| import com.vmware.ovsdb.service.OvsdbClient; | import com.vmware.ovsdb.service.OvsdbClient; | ||||||
|  |  | ||||||
| @Component | @Component | ||||||
| @@ -114,43 +117,10 @@ public class OvsdbRrmConfig extends OvsdbDaoBase { | |||||||
|             	} |             	} | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             int multicastRateMbps = 0; |  | ||||||
|             if (multicastRate != null) { |  | ||||||
|                 switch (multicastRate) { |  | ||||||
|                 case rate6mbps: |  | ||||||
|                     multicastRateMbps = 6; |  | ||||||
|                     break; |  | ||||||
|                 case rate9mbps: |  | ||||||
|                     multicastRateMbps = 9; |  | ||||||
|                     break; |  | ||||||
|                 case rate12mbps: |  | ||||||
|                     multicastRateMbps = 12; |  | ||||||
|                     break; |  | ||||||
|                 case rate18mbps: |  | ||||||
|                     multicastRateMbps = 18; |  | ||||||
|                     break; |  | ||||||
|                 case rate24mbps: |  | ||||||
|                     multicastRateMbps = 24; |  | ||||||
|                     break; |  | ||||||
|                 case rate36mbps: |  | ||||||
|                     multicastRateMbps = 36; |  | ||||||
|                     break; |  | ||||||
|                 case rate48mbps: |  | ||||||
|                     multicastRateMbps = 48; |  | ||||||
|                     break; |  | ||||||
|                 case rate54mbps: |  | ||||||
|                     multicastRateMbps = 54; |  | ||||||
|                     break; |  | ||||||
|                 case auto: |  | ||||||
|                 default: |  | ||||||
|                     multicastRateMbps = 0; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             if (freqBand != null) { |             if (freqBand != null) { | ||||||
|                 try { |                 try { | ||||||
|                     configureWifiRrm(ovsdbClient, freqBand, backupChannel, probeResponseThresholdDb,  |                     configureWifiRrm(ovsdbClient, freqBand, backupChannel, probeResponseThresholdDb,  | ||||||
|                     		clientDisconnectThresholdDb, managementRate, bestApSettings, multicastRateMbps); |                     		clientDisconnectThresholdDb, managementRate, bestApSettings, multicastRate); | ||||||
|                 } catch (OvsdbClientException e) { |                 } catch (OvsdbClientException e) { | ||||||
|                     LOG.error("configureRrm failed with OvsdbClient exception.", e); |                     LOG.error("configureRrm failed with OvsdbClient exception.", e); | ||||||
|                     throw new RuntimeException(e); |                     throw new RuntimeException(e); | ||||||
| @@ -169,51 +139,65 @@ public class OvsdbRrmConfig extends OvsdbDaoBase { | |||||||
|  |  | ||||||
|     void configureWifiRrm(OvsdbClient ovsdbClient, String freqBand, int backupChannel, |     void configureWifiRrm(OvsdbClient ovsdbClient, String freqBand, int backupChannel, | ||||||
|             AutoOrManualValue probeResponseThreshold, AutoOrManualValue clientDisconnectThreshold, |             AutoOrManualValue probeResponseThreshold, AutoOrManualValue clientDisconnectThreshold, | ||||||
|             ManagementRate managementRate, RadioBestApSettings bestApSettings, int multicastRate) |             ManagementRate managementRate, RadioBestApSettings bestApSettings, MulticastRate multicastRate) | ||||||
|             throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException { |                     throws OvsdbClientException, TimeoutException, ExecutionException, InterruptedException { | ||||||
|  |  | ||||||
|  |         CompletableFuture<DatabaseSchema> cfDatabaseSchema = ovsdbClient.getSchema(ovsdbName); | ||||||
|  |         DatabaseSchema databaseSchema = cfDatabaseSchema.get(); | ||||||
|  |         Set<String> columnNames = databaseSchema.getTables().get(wifiRrmConfigDbTable).getColumns().keySet(); | ||||||
|  |  | ||||||
|         List<Operation> operations = new ArrayList<>(); |         List<Operation> operations = new ArrayList<>(); | ||||||
|         Map<String, Value> updateColumns = new HashMap<>(); |         Map<String, Value> updateColumns = new HashMap<>(); | ||||||
|  |  | ||||||
|         updateColumns.put("freq_band", new Atom<>(freqBand)); |         updateColumns.put("freq_band", new Atom<>(freqBand)); | ||||||
|         updateColumns.put("backup_channel", new Atom<>(backupChannel)); |         updateColumns.put("backup_channel", new Atom<>(backupChannel)); | ||||||
|  |         if (columnNames.contains("freq_band")) updateColumns.put("freq_band", new Atom<>(freqBand)); | ||||||
|         updateColumns.put("mcast_rate", new Atom<>(multicastRate)); |         if (columnNames.contains("backup_channel")) updateColumns.put("backup_channel", new Atom<>(backupChannel)); | ||||||
|  |         if (columnNames.contains("mcast_rate")) { | ||||||
|         if (probeResponseThreshold == null || probeResponseThreshold.isAuto()) { |             if (multicastRate == null || multicastRate == MulticastRate.auto) { | ||||||
|             updateColumns.put("probe_resp_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set()); |                 updateColumns.put("mcast_rate", new Atom<>(0)); | ||||||
|         } else { |             } else { | ||||||
|             updateColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.getValue())); |                 updateColumns.put("mcast_rate", new Atom<>(managementRate.getId())); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|  |         if (columnNames.contains("probe_resp_threshold")) { | ||||||
|         if (probeResponseThreshold == null || clientDisconnectThreshold.isAuto()) { |             if (probeResponseThreshold == null || probeResponseThreshold.isAuto()) { | ||||||
|             updateColumns.put("client_disconnect_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set()); |                 updateColumns.put("probe_resp_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set()); | ||||||
|         } else { |             } else { | ||||||
|             updateColumns.put("client_disconnect_threshold", new Atom<>(clientDisconnectThreshold.getValue())); |                 updateColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.getValue())); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|  |         if (columnNames.contains("client_disconnect_threshold")) { | ||||||
|         if (managementRate == null || managementRate == ManagementRate.auto) { |             if (clientDisconnectThreshold == null || clientDisconnectThreshold.isAuto()) { | ||||||
|             updateColumns.put("beacon_rate", new Atom<>(0)); |                 updateColumns.put("client_disconnect_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set()); | ||||||
|         } else { |             } else { | ||||||
|             updateColumns.put("beacon_rate", new Atom<>(managementRate.getId() * 10)); |                 updateColumns.put("client_disconnect_threshold", new Atom<>(clientDisconnectThreshold.getValue())); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|  |         if (columnNames.contains("beacon_rate")) { | ||||||
|         if (bestApSettings == null) { |             if (managementRate == null || managementRate == ManagementRate.auto) { | ||||||
|             updateColumns.put("min_load", new com.vmware.ovsdb.protocol.operation.notation.Set()); |                 updateColumns.put("beacon_rate", new Atom<>(0)); | ||||||
|             updateColumns.put("snr_percentage_drop", new com.vmware.ovsdb.protocol.operation.notation.Set()); |             } else { | ||||||
|         } else { |                 updateColumns.put("beacon_rate", new Atom<>(managementRate.getId() * 10)); | ||||||
|             if (bestApSettings.getDropInSnrPercentage() == null) { |             } | ||||||
|  |         } | ||||||
|  |         if (columnNames.contains("min_load") && columnNames.contains("snr_percentage_drop")) { | ||||||
|  |             if (bestApSettings == null) { | ||||||
|  |                 updateColumns.put("min_load", new com.vmware.ovsdb.protocol.operation.notation.Set()); | ||||||
|                 updateColumns.put("snr_percentage_drop", new com.vmware.ovsdb.protocol.operation.notation.Set()); |                 updateColumns.put("snr_percentage_drop", new com.vmware.ovsdb.protocol.operation.notation.Set()); | ||||||
|             } else { |             } else { | ||||||
|                 updateColumns.put("snr_percentage_drop", new Atom<>(bestApSettings.getDropInSnrPercentage())); |                 if (bestApSettings.getDropInSnrPercentage() == null) { | ||||||
|             } |                     updateColumns.put("snr_percentage_drop", new com.vmware.ovsdb.protocol.operation.notation.Set()); | ||||||
|             if (bestApSettings.getMinLoadFactor() == null) { |                 } else { | ||||||
|                 updateColumns.put("min_load", new com.vmware.ovsdb.protocol.operation.notation.Set()); |                     updateColumns.put("snr_percentage_drop", new Atom<>(bestApSettings.getDropInSnrPercentage())); | ||||||
|             } else { |                 } | ||||||
|                 updateColumns.put("min_load", new Atom<>(bestApSettings.getMinLoadFactor())); |                 if (bestApSettings.getMinLoadFactor() == null) { | ||||||
|  |                     updateColumns.put("min_load", new com.vmware.ovsdb.protocol.operation.notation.Set()); | ||||||
|  |                 } else { | ||||||
|  |                     updateColumns.put("min_load", new Atom<>(bestApSettings.getMinLoadFactor())); | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         Row row = new Row(updateColumns); |         Row row = new Row(updateColumns); | ||||||
|         operations.add(new Insert(wifiRrmConfigDbTable, row)); |         operations.add(new Insert(wifiRrmConfigDbTable, row)); | ||||||
|  |  | ||||||
| @@ -233,7 +217,6 @@ public class OvsdbRrmConfig extends OvsdbDaoBase { | |||||||
|                 LOG.error("configureWifiRrm error {}", (res)); |                 LOG.error("configureWifiRrm error {}", (res)); | ||||||
|                 throw new RuntimeException("configureWifiRrm " + ((ErrorResult) res).getError() + " " + ((ErrorResult) res).getDetails()); |                 throw new RuntimeException("configureWifiRrm " + ((ErrorResult) res).getError() + " " + ((ErrorResult) res).getDetails()); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -289,6 +272,88 @@ public class OvsdbRrmConfig extends OvsdbDaoBase { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     void processCellSizeAttributesRequest(OvsdbClient ovsdbClient, Map<RadioType, CellSizeAttributes> cellSizeAttributesMap) { | ||||||
|  |  | ||||||
|  |         LOG.info("OvsdbDao::processCellSizeAttributesRequest cellSizeAttributes {}", cellSizeAttributesMap); | ||||||
|  |         try { | ||||||
|  |             List<Operation> operations = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |             cellSizeAttributesMap.entrySet().stream().forEach(c -> { | ||||||
|  |                 String freqBand = OvsdbToWlanCloudTypeMappingUtility.getOvsdbRadioFreqBandForRadioType(c.getKey()); | ||||||
|  |                 List<Condition> conditions = new ArrayList<>(); | ||||||
|  |                 conditions.add(new Condition("freq_band", Function.EQUALS, new Atom<>(freqBand))); | ||||||
|  |                 Map<String, Value> updateRrmColumns = new HashMap<>(); | ||||||
|  |                  | ||||||
|  |                 CellSizeAttributes cellSizeAttributes = c.getValue(); | ||||||
|  |                 MulticastRate multicastRate = cellSizeAttributes.getMulticastRate(); | ||||||
|  |                 if (multicastRate == null || multicastRate == MulticastRate.auto) { | ||||||
|  |                     updateRrmColumns.put("mcast_rate", new Atom<>(0)); | ||||||
|  |                 } else { | ||||||
|  |                     updateRrmColumns.put("mcast_rate", new Atom<>(multicastRate.getId())); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 Integer probeResponseThreshold = cellSizeAttributes.getProbeResponseThresholdDb(); | ||||||
|  |                 if (probeResponseThreshold == null) { | ||||||
|  |                     updateRrmColumns.put("probe_resp_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set()); | ||||||
|  |                 } else { | ||||||
|  |                     updateRrmColumns.put("probe_resp_threshold", new Atom<>(probeResponseThreshold.intValue())); | ||||||
|  |                 } | ||||||
|  |                  | ||||||
|  |                 Integer clientDisconnectThreshold = cellSizeAttributes.getClientDisconnectThresholdDb(); | ||||||
|  |                 if (clientDisconnectThreshold == null) { | ||||||
|  |                     updateRrmColumns.put("client_disconnect_threshold", new com.vmware.ovsdb.protocol.operation.notation.Set()); | ||||||
|  |                 } else { | ||||||
|  |                     updateRrmColumns.put("client_disconnect_threshold", new Atom<>(clientDisconnectThreshold.intValue())); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 ManagementRate managementRate = cellSizeAttributes.getManagementRate(); | ||||||
|  |                 if (managementRate == null || managementRate == ManagementRate.auto) { | ||||||
|  |                     updateRrmColumns.put("beacon_rate", new Atom<>(0)); | ||||||
|  |                 } else { | ||||||
|  |                     updateRrmColumns.put("beacon_rate", new Atom<>(managementRate.getId() * 10)); | ||||||
|  |                 } | ||||||
|  |                  | ||||||
|  |                 Row rowRrm = new Row(updateRrmColumns); | ||||||
|  |                 operations.add(new Update(wifiRrmConfigDbTable, conditions, rowRrm)); | ||||||
|  |                  | ||||||
|  |                 Map<String, Value> updateRadioColumns = new HashMap<>(); | ||||||
|  |                 Integer txPower = cellSizeAttributes.getEirpTxPowerDb(); | ||||||
|  |                 if (txPower > 0) { | ||||||
|  |                     updateRadioColumns.put("tx_power", new Atom<>(txPower)); | ||||||
|  |                 } else { | ||||||
|  |                     updateRadioColumns.put("tx_power", new com.vmware.ovsdb.protocol.operation.notation.Set()); | ||||||
|  |                 } | ||||||
|  |                 Row rowRadio = new Row(updateRadioColumns); | ||||||
|  |                 operations.add(new Update(wifiRadioConfigDbTable, conditions, rowRadio)); | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); | ||||||
|  |             OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||||
|  |  | ||||||
|  |             for (OperationResult res : result) { | ||||||
|  |                 LOG.info("Op Result {}", res); | ||||||
|  |                  | ||||||
|  |                 if (res instanceof InsertResult) { | ||||||
|  |                     LOG.info("processCellSizeAttributesRequest insert new row result {}", (res)); | ||||||
|  |                     // for insert, make sure it is actually in the table | ||||||
|  |                     confirmRowExistsInTable(ovsdbClient, ((InsertResult) res).getUuid(), wifiRrmConfigDbTable); | ||||||
|  |                 } else if (res instanceof ErrorResult) { | ||||||
|  |                     LOG.error("processCellSizeAttributesRequest error {}", (res)); | ||||||
|  |                     throw new RuntimeException("processCellSizeAttributesRequest " + ((ErrorResult) res).getError() + | ||||||
|  |                             " " + ((ErrorResult) res).getDetails()); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             LOG.info("Updated ovsdb config for cell size attributes."); | ||||||
|  |         } catch (ExecutionException e) { | ||||||
|  |             LOG.error("Error in processCellSizeAttributesRequest", e); | ||||||
|  |         } catch (OvsdbClientException | TimeoutException | InterruptedException e) { | ||||||
|  |             LOG.error("Error in processCellSizeAttributesRequest", e); | ||||||
|  |             throw new RuntimeException(e); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|     void removeWifiRrm(OvsdbClient ovsdbClient) { |     void removeWifiRrm(OvsdbClient ovsdbClient) { | ||||||
|         try { |         try { | ||||||
|   | |||||||
| @@ -106,7 +106,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase { | |||||||
|             List<Operation> operations = new ArrayList<>(); |             List<Operation> operations = new ArrayList<>(); | ||||||
|             Map<String, Value> updateColumns = new HashMap<>(); |             Map<String, Value> updateColumns = new HashMap<>(); | ||||||
|  |  | ||||||
|             updateColumns.put("reporting_interval", new Atom<>(60)); |             updateColumns.put("reporting_interval", new Atom<>(defaultReportingIntervalSeconds)); | ||||||
|             updateColumns.put("radio_type", new Atom<>("2.4G")); |             updateColumns.put("radio_type", new Atom<>("2.4G")); | ||||||
|             updateColumns.put("stats_type", new Atom<>("network_probe")); |             updateColumns.put("stats_type", new Atom<>("network_probe")); | ||||||
|  |  | ||||||
| @@ -197,7 +197,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase { | |||||||
|             List<Operation> operations = new ArrayList<>(); |             List<Operation> operations = new ArrayList<>(); | ||||||
|             Map<String, Value> rowColumns = new HashMap<>(); |             Map<String, Value> rowColumns = new HashMap<>(); | ||||||
|             rowColumns.put("radio_type", new Atom<>("2.4G")); |             rowColumns.put("radio_type", new Atom<>("2.4G")); | ||||||
|             rowColumns.put("reporting_interval", new Atom<>(60)); |             rowColumns.put("reporting_interval", new Atom<>(defaultReportingIntervalSeconds)); | ||||||
|             rowColumns.put("report_type", new Atom<>("raw")); |             rowColumns.put("report_type", new Atom<>("raw")); | ||||||
|             rowColumns.put("sampling_interval", new Atom<>(10)); |             rowColumns.put("sampling_interval", new Atom<>(10)); | ||||||
|             rowColumns.put("stats_type", new Atom<>("video_voice")); |             rowColumns.put("stats_type", new Atom<>("video_voice")); | ||||||
| @@ -244,7 +244,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase { | |||||||
|                     // |                     // | ||||||
|                     Map<String, Value> rowColumns = new HashMap<>(); |                     Map<String, Value> rowColumns = new HashMap<>(); | ||||||
|                     rowColumns.put("radio_type", new Atom<>(rc.freqBand)); |                     rowColumns.put("radio_type", new Atom<>(rc.freqBand)); | ||||||
|                     rowColumns.put("reporting_interval", new Atom<>(60)); |                     rowColumns.put("reporting_interval", new Atom<>(defaultReportingIntervalSeconds)); | ||||||
|                     rowColumns.put("report_type", new Atom<>("raw")); |                     rowColumns.put("report_type", new Atom<>("raw")); | ||||||
|                     rowColumns.put("sampling_interval", new Atom<>(10)); |                     rowColumns.put("sampling_interval", new Atom<>(10)); | ||||||
|                     rowColumns.put("stats_type", new Atom<>("client")); |                     rowColumns.put("stats_type", new Atom<>("client")); | ||||||
| @@ -277,7 +277,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase { | |||||||
|                     rowColumns.put("channel_list", channels); |                     rowColumns.put("channel_list", channels); | ||||||
|  |  | ||||||
|                     rowColumns.put("radio_type", new Atom<>(rc.freqBand)); |                     rowColumns.put("radio_type", new Atom<>(rc.freqBand)); | ||||||
|                     rowColumns.put("reporting_interval", new Atom<>(60)); |                     rowColumns.put("reporting_interval", new Atom<>(defaultOffChannelReportingIntervalSeconds)); | ||||||
|                     rowColumns.put("stats_type", new Atom<>("neighbor")); |                     rowColumns.put("stats_type", new Atom<>("neighbor")); | ||||||
|                     rowColumns.put("survey_type", new Atom<>("off-chan")); |                     rowColumns.put("survey_type", new Atom<>("off-chan")); | ||||||
|  |  | ||||||
| @@ -296,7 +296,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase { | |||||||
|                     // |                     // | ||||||
|                     Map<String, Value> rowColumns = new HashMap<>(); |                     Map<String, Value> rowColumns = new HashMap<>(); | ||||||
|                     rowColumns.put("radio_type", new Atom<>(rc.freqBand)); |                     rowColumns.put("radio_type", new Atom<>(rc.freqBand)); | ||||||
|                     rowColumns.put("reporting_interval", new Atom<>(60)); |                     rowColumns.put("reporting_interval", new Atom<>(defaultReportingIntervalSeconds)); | ||||||
|                     rowColumns.put("stats_type", new Atom<>("neighbor")); |                     rowColumns.put("stats_type", new Atom<>("neighbor")); | ||||||
|                     rowColumns.put("survey_type", new Atom<>("on-chan")); |                     rowColumns.put("survey_type", new Atom<>("on-chan")); | ||||||
|  |  | ||||||
| @@ -321,7 +321,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase { | |||||||
|  |  | ||||||
|                     Map<String, Value> rowColumns = new HashMap<>(); |                     Map<String, Value> rowColumns = new HashMap<>(); | ||||||
|                     rowColumns.put("radio_type", new Atom<>(rc.freqBand)); |                     rowColumns.put("radio_type", new Atom<>(rc.freqBand)); | ||||||
|                     rowColumns.put("reporting_interval", new Atom<>(60)); |                     rowColumns.put("reporting_interval", new Atom<>(defaultReportingIntervalSeconds)); | ||||||
|                     rowColumns.put("report_type", new Atom<>("raw")); |                     rowColumns.put("report_type", new Atom<>("raw")); | ||||||
|                     rowColumns.put("sampling_interval", new Atom<>(10)); |                     rowColumns.put("sampling_interval", new Atom<>(10)); | ||||||
|                     rowColumns.put("stats_type", new Atom<>("survey")); |                     rowColumns.put("stats_type", new Atom<>("survey")); | ||||||
| @@ -350,7 +350,7 @@ public class OvsdbStatsConfig extends OvsdbDaoBase { | |||||||
|                     rowColumns.put("channel_list", channels); |                     rowColumns.put("channel_list", channels); | ||||||
|  |  | ||||||
|                     rowColumns.put("radio_type", new Atom<>(rc.freqBand)); |                     rowColumns.put("radio_type", new Atom<>(rc.freqBand)); | ||||||
|                     rowColumns.put("reporting_interval", new Atom<>(120)); |                     rowColumns.put("reporting_interval", new Atom<>(defaultOffChannelReportingIntervalSeconds)); | ||||||
|                     rowColumns.put("report_type", new Atom<>("raw")); |                     rowColumns.put("report_type", new Atom<>("raw")); | ||||||
|                     rowColumns.put("stats_type", new Atom<>("survey")); |                     rowColumns.put("stats_type", new Atom<>("survey")); | ||||||
|                     rowColumns.put("survey_type", new Atom<>("off-chan")); |                     rowColumns.put("survey_type", new Atom<>("off-chan")); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user