mirror of
				https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
				synced 2025-10-31 18:47:57 +00:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			WIFI-7323
			...
			release-te
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 0fcdb7410e | 
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							| @@ -1,5 +1,5 @@ | ||||
| BSD 3-Clause License | ||||
|  | ||||
| #Release Testing | ||||
| Copyright (c) 2020, Telecom Infra Project | ||||
| All rights reserved. | ||||
|  | ||||
|   | ||||
| @@ -1,139 +1,123 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | ||||
| 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
| 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
| 	<modelVersion>4.0.0</modelVersion> | ||||
| 	<parent> | ||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||
| 		<version>1.2.0-SNAPSHOT</version> | ||||
| 		<version>0.0.1-SNAPSHOT</version> | ||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | ||||
| 	</parent> | ||||
| 	<artifactId>opensync-ext-cloud</artifactId> | ||||
| 	<name>opensync-ext-cloud</name> | ||||
| 	<description>Configuration interface that provides config from the cloud services.</description> | ||||
| 	<dependencies> | ||||
| 		<dependency> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<artifactId>opensync-ext-interface</artifactId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 		</dependency> | ||||
| <!-- 		<dependency> --> | ||||
| <!-- 			<groupId>com.telecominfraproject.wlan</groupId> --> | ||||
| <!-- 			<artifactId>opensync-ext-interface</artifactId> --> | ||||
| <!-- 			<version>${tip-wlan-cloud.release.version}</version> --> | ||||
| <!-- 		</dependency> --> | ||||
| 		<dependency> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<artifactId>opensync-gateway</artifactId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  	  | ||||
|         <dependency> | ||||
|             <artifactId>base-client</artifactId> | ||||
|             <groupId>com.telecominfraproject.wlan</groupId> | ||||
|             <version>1.2.0-SNAPSHOT</version> | ||||
|             <version>${tip-wlan-cloud.release.version}</version> | ||||
|         </dependency> | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>equipment-gateway-models</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency> | ||||
|       | ||||
|       <dependency> | ||||
|         <artifactId>customer-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency> | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>location-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>equipment-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>profile-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|        | ||||
|       <dependency> | ||||
|         <artifactId>portal-user-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>service-metric-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|        | ||||
|       <dependency> | ||||
|         <artifactId>service-metric-models</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|       </dependency>       | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>system-event-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|       </dependency>       | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>system-event-models</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|        | ||||
|       <dependency> | ||||
|         <artifactId>alarm-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>status-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>client-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|       </dependency>       | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>client-models</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>routing-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|   | ||||
|        <dependency> | ||||
|         <artifactId>firmware-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|  | ||||
|       <dependency> | ||||
|         <artifactId>manufacturer-service-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>       | ||||
|   | ||||
|       <dependency> | ||||
|         <artifactId>cloud-event-dispatcher-interface</artifactId> | ||||
|         <groupId>com.telecominfraproject.wlan</groupId> | ||||
|         <version>1.2.0-SNAPSHOT</version> | ||||
|         <version>${tip-wlan-cloud.release.version}</version> | ||||
|       </dependency>      | ||||
|  | ||||
| 	</dependencies> | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,4 +1,3 @@ | ||||
|  | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.controller; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| @@ -33,7 +32,6 @@ import com.telecominfraproject.wlan.core.model.service.GatewayType; | ||||
| import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation; | ||||
| import com.telecominfraproject.wlan.core.server.container.ConnectorProperties; | ||||
| import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException; | ||||
| import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes; | ||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand; | ||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest; | ||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWChangeRedirectorHost; | ||||
| @@ -44,7 +42,6 @@ import com.telecominfraproject.wlan.equipmentgateway.models.CEGWConfigChangeNoti | ||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest; | ||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareFlashRequest; | ||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest; | ||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCellSizeAttributesRequest; | ||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRadioResetRequest; | ||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRebootRequest; | ||||
| import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck; | ||||
| @@ -150,16 +147,19 @@ public class OpensyncCloudGatewayController { | ||||
|                 String inventoryId = command.getInventoryId(); | ||||
|  | ||||
|                 if (com.telecominfraproject.wlan.core.model.json.BaseJsonModel.hasUnsupportedValue(command)) { | ||||
|                     LOG.error("[{}] Failed to deliver command {}, command contains unsupported value", inventoryId, command); | ||||
|                     ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, "Unsupported value in command for " + inventoryId, command, | ||||
|                             registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort())); | ||||
|                     LOG.error("[{}] Failed to deliver command {}, command contains unsupported value", inventoryId, | ||||
|                             command); | ||||
|                     ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, | ||||
|                             "Unsupported value in command for " + inventoryId, command, registeredGateway.getHostname(), | ||||
|                             registeredGateway.getPort())); | ||||
|                     return; | ||||
|                 } | ||||
|                 OvsdbSession session = ovsdbSessionMapInterface.getSession(inventoryId); | ||||
|                 if (session == null) { | ||||
|                     LOG.warn("[{}] Failed to deliver command {}, equipment session not found", inventoryId, command); | ||||
|                     ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "No session found for " + inventoryId, command, | ||||
|                             registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort())); | ||||
|                     ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, | ||||
|                             "No session found for " + inventoryId, command, registeredGateway.getHostname(), | ||||
|                             registeredGateway.getPort())); | ||||
|                     return; | ||||
|                 } | ||||
|  | ||||
| @@ -199,35 +199,30 @@ public class OpensyncCloudGatewayController { | ||||
|                         ret.add(processRadioReboot(session, (CEGWRebootRequest) command)); | ||||
|                         break; | ||||
|                     case ClientBlocklistChangeNotification: | ||||
|                         ret.add(sendClientBlocklistChangeNotification(session, (CEGWClientBlocklistChangeNotification) command)); | ||||
|                         ret.add(sendClientBlocklistChangeNotification(session, | ||||
|                                 (CEGWClientBlocklistChangeNotification) command)); | ||||
|                         break; | ||||
|                     case NewChannelRequest: | ||||
|                         ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command)); | ||||
|                         break; | ||||
|                     case CellSizeAttributesRequest: | ||||
|                         ret.add(sendCellSizeRequest(session, (CEGWCellSizeAttributesRequest) command)); | ||||
|                         break; | ||||
| //                    case MostRecentStatsTimestamp: | ||||
| //                        ret.add(sendGetMostRecentStatsTimestampRequest(command, inventoryId)); | ||||
| //                        break; | ||||
|                     default: | ||||
|                         LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command); | ||||
|                         ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, | ||||
|                                 "Invalid command type (" + command.getCommandType() + ") for equipment (" + inventoryId + ")", command, | ||||
|                                 registeredGateway == null ? null : registeredGateway.getHostname(), | ||||
|                                 registeredGateway == null ? -1 : registeredGateway.getPort())); | ||||
|                         ret.add(new EquipmentCommandResponse( | ||||
|                                 CEGWCommandResultCode.UnsupportedCommand, "Invalid command type (" | ||||
|                                         + command.getCommandType() + ") for equipment (" + inventoryId + ")", | ||||
|                                 command, registeredGateway.getHostname(), registeredGateway.getPort())); | ||||
|                 } | ||||
|  | ||||
|             } | ||||
|  | ||||
|  | ||||
|  | ||||
|         }); | ||||
|  | ||||
|         return ret; | ||||
|     } | ||||
|  | ||||
|     private EquipmentCommandResponse processFirmwareDownload(OvsdbSession session, CEGWFirmwareDownloadRequest command) { | ||||
|     private EquipmentCommandResponse processFirmwareDownload(OvsdbSession session, | ||||
|             CEGWFirmwareDownloadRequest command) { | ||||
|         return sendMessage(session, command.getInventoryId(), command); | ||||
|     } | ||||
|  | ||||
| @@ -247,8 +242,6 @@ public class OpensyncCloudGatewayController { | ||||
|     public GatewayDefaults retrieveGatewayDefaults() { | ||||
|         return new GatewayDefaults(); | ||||
|     } | ||||
|      | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * Verify a route to customer equipment | ||||
| @@ -261,18 +254,19 @@ public class OpensyncCloudGatewayController { | ||||
|         if (null != command.getRoutingId()) { | ||||
|             if (!command.getRoutingId().equals(session.getRoutingId())) { | ||||
|  | ||||
|                 LOG.info("[E:{} R:{}] Stale routing entry ({}) detected", command.getInventoryId(), session.getRoutingId(), | ||||
|                         command.getRoutingId()); | ||||
|                 LOG.info("[C:{} E:{} R:{}] Stale routing entry ({}) detected", session.getCustomerId(), | ||||
|                         command.getInventoryId(), session.getRoutingId(), command.getRoutingId()); | ||||
|  | ||||
|                 return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "Inactive Route Identifer", command, | ||||
|                         registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); | ||||
|                 return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "Inactive Route Identifer", | ||||
|                         command, registeredGateway.getHostname(), registeredGateway.getPort()); | ||||
|             } | ||||
|         } | ||||
|         return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Route active", command, | ||||
|                 registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); | ||||
|                 registeredGateway.getHostname(), registeredGateway.getPort()); | ||||
|     } | ||||
|  | ||||
|     private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session, CEGWConfigChangeNotification command) { | ||||
|     private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session, | ||||
|             CEGWConfigChangeNotification command) { | ||||
|  | ||||
|         return sendMessage(session, command.getInventoryId(), command); | ||||
|     } | ||||
| @@ -282,17 +276,20 @@ public class OpensyncCloudGatewayController { | ||||
|             session.getOvsdbClient().shutdown(); | ||||
|         } catch (Exception e) { | ||||
|             LOG.error("[{}] Failed to close session on CE: {}", command.getInventoryId(), e.getLocalizedMessage()); | ||||
|             return new EquipmentCommandResponse(CEGWCommandResultCode.FailedToSend, | ||||
|                     "Failed to send command " + command.getCommandType() + " to " + command.getInventoryId() + ": " + e.getMessage(), command, | ||||
|                     registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); | ||||
|             return new EquipmentCommandResponse( | ||||
|                     CEGWCommandResultCode.FailedToSend, "Failed to send command " + command.getCommandType() + " to " | ||||
|                             + command.getInventoryId() + ": " + e.getMessage(), | ||||
|                     command, registeredGateway.getHostname(), registeredGateway.getPort()); | ||||
|         } | ||||
|         LOG.debug("[{}] Closed session to CE", command.getInventoryId()); | ||||
|         return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Closed session to " + command.getInventoryId(), command, | ||||
|                 registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); | ||||
|         return new EquipmentCommandResponse(CEGWCommandResultCode.Success, | ||||
|                 "Closed session to " + command.getInventoryId(), command, registeredGateway.getHostname(), | ||||
|                 registeredGateway.getPort()); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     private EquipmentCommandResponse sendClientBlocklistChangeNotification(OvsdbSession session, CEGWClientBlocklistChangeNotification command) { | ||||
|     private EquipmentCommandResponse sendClientBlocklistChangeNotification(OvsdbSession session, | ||||
|             CEGWClientBlocklistChangeNotification command) { | ||||
|         return sendMessage(session, command.getInventoryId(), command); | ||||
|     } | ||||
|  | ||||
| @@ -300,10 +297,6 @@ public class OpensyncCloudGatewayController { | ||||
|         return sendMessage(session, command.getInventoryId(), command); | ||||
|     } | ||||
|  | ||||
|     private EquipmentCommandResponse sendCellSizeRequest(OvsdbSession session, CEGWCellSizeAttributesRequest command) { | ||||
|         return sendMessage(session, command.getInventoryId(), command); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Deliver a message in payload to the CE | ||||
|      * | ||||
| @@ -315,17 +308,15 @@ public class OpensyncCloudGatewayController { | ||||
|     private EquipmentCommandResponse sendMessage(OvsdbSession session, String inventoryId, EquipmentCommand command) { | ||||
|  | ||||
|         LOG.debug("Received command {} for {}", command.getCommandType(), inventoryId); | ||||
|         EquipmentCommandResponse response = | ||||
|                 new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Received Command " + command.getCommandType() + " for " + inventoryId, command, | ||||
|                         registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); | ||||
|         EquipmentCommandResponse response = new EquipmentCommandResponse(CEGWCommandResultCode.Success, | ||||
|                 "Received Command " + command.getCommandType() + " for " + inventoryId, command, | ||||
|                 registeredGateway.getHostname(), registeredGateway.getPort()); | ||||
|  | ||||
|         if (command instanceof CEGWBlinkRequest) { | ||||
|             String resultDetails = tipwlanOvsdbClient.processBlinkRequest(inventoryId, ((CEGWBlinkRequest)command).getBlinkAllLEDs());  | ||||
|             response.setResultDetail(resultDetails); | ||||
|         } else if (command instanceof CEGWConfigChangeNotification) { | ||||
|         if (command instanceof CEGWConfigChangeNotification) { | ||||
|             tipwlanOvsdbClient.processConfigChanged(inventoryId); | ||||
|         } else if (command instanceof CEGWClientBlocklistChangeNotification) { | ||||
|             tipwlanOvsdbClient.processClientBlocklistChange(inventoryId, ((CEGWClientBlocklistChangeNotification) command).getBlockList()); | ||||
|             tipwlanOvsdbClient.processClientBlocklistChange(inventoryId, | ||||
|                     ((CEGWClientBlocklistChangeNotification) command).getBlockList()); | ||||
|         } else if (command instanceof CEGWChangeRedirectorHost) { | ||||
|             String newRedirectorAddress = ((CEGWChangeRedirectorHost) command).getRedirectorHost(); | ||||
|             tipwlanOvsdbClient.changeRedirectorHost(inventoryId, newRedirectorAddress); | ||||
| @@ -338,15 +329,7 @@ public class OpensyncCloudGatewayController { | ||||
|         } else if (command instanceof CEGWNewChannelRequest) { | ||||
|             CEGWNewChannelRequest request = (CEGWNewChannelRequest) command; | ||||
|             Map<RadioType, Integer> newBackupChannels = request.getNewBackupChannels(); | ||||
|             Map<RadioType, Integer> newPrimaryChannels = request.getNewPrimaryChannels(); | ||||
|  | ||||
|             String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels, newPrimaryChannels); | ||||
|             response.setResultDetail(resultDetails); | ||||
|         } else if (command instanceof CEGWCellSizeAttributesRequest) { | ||||
|             CEGWCellSizeAttributesRequest request = (CEGWCellSizeAttributesRequest) command; | ||||
|             Map<RadioType, CellSizeAttributes> cellSizeAttributeMap = request.getCellSizeAttributesMap(); | ||||
|  | ||||
|             String resultDetails = tipwlanOvsdbClient.processCellSizeAttributesRequest(inventoryId, cellSizeAttributeMap); | ||||
|             String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels); | ||||
|             response.setResultDetail(resultDetails); | ||||
|  | ||||
|         } else if (command instanceof CEGWFirmwareDownloadRequest) { | ||||
| @@ -356,8 +339,10 @@ public class OpensyncCloudGatewayController { | ||||
|             String filepath = dlRequest.getFilePath(); | ||||
|             String firmwareVersion = dlRequest.getFirmwareVersion(); | ||||
|             String username = dlRequest.getUsername(); | ||||
|             String validationCode = dlRequest.getValidationCode(); | ||||
|  | ||||
|             String resultDetails = tipwlanOvsdbClient.processFirmwareDownload(inventoryId, filepath, firmwareVersion, username); | ||||
|             String resultDetails = tipwlanOvsdbClient.processFirmwareDownload(inventoryId, filepath, firmwareVersion, | ||||
|                     username, validationCode); | ||||
|  | ||||
|             response.setResultDetail(resultDetails); | ||||
|  | ||||
| @@ -369,15 +354,15 @@ public class OpensyncCloudGatewayController { | ||||
|             flashRequest.getInventoryId(); | ||||
|             flashRequest.getUsername(); | ||||
|  | ||||
|             String resultDetails = | ||||
|                     tipwlanOvsdbClient.processFirmwareFlash(flashRequest.getInventoryId(), flashRequest.getFirmwareVersion(), flashRequest.getUsername()); | ||||
|             String resultDetails = tipwlanOvsdbClient.processFirmwareFlash(flashRequest.getInventoryId(), | ||||
|                     flashRequest.getFirmwareVersion(), flashRequest.getUsername()); | ||||
|  | ||||
|             response.setResultDetail(resultDetails); | ||||
|  | ||||
|         } else if (command instanceof CEGWRadioResetRequest) { | ||||
|             response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, | ||||
|                     "Received Command " + command.getCommandType() + " for " + inventoryId, command, | ||||
|                     registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); | ||||
|                     registeredGateway.getHostname(), registeredGateway.getPort()); | ||||
|         } else if (command instanceof CEGWRebootRequest) { | ||||
|  | ||||
|             CEGWRebootRequest rebootRequest = (CEGWRebootRequest) command; | ||||
| @@ -401,9 +386,10 @@ public class OpensyncCloudGatewayController { | ||||
|                 default: | ||||
|                     response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, | ||||
|                             "Received Command " + command.getCommandType() + " for " + inventoryId, command, | ||||
|                             registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); | ||||
|                             registeredGateway.getHostname(), registeredGateway.getPort()); | ||||
|             } | ||||
|  | ||||
|  | ||||
|         } | ||||
|  | ||||
|         return response; | ||||
| @@ -421,14 +407,15 @@ public class OpensyncCloudGatewayController { | ||||
|         return sendMessage(session, command.getInventoryId(), command); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     private EquipmentCommandResponse processBlinkRequest(OvsdbSession session, CEGWBlinkRequest command) { | ||||
|  | ||||
|         return sendMessage(session, command.getInventoryId(), command); | ||||
|     } | ||||
|  | ||||
|     @RequestMapping(value = "/commandWithUser", method = RequestMethod.POST) | ||||
|     public EquipmentCommandResponse sendCommandWithAuthUser(@RequestBody EquipmentCommand command, @AuthenticationPrincipal Object requestUser, | ||||
|             HttpServletRequest httpServletRequest) { | ||||
|     public EquipmentCommandResponse sendCommandWithAuthUser(@RequestBody EquipmentCommand command, | ||||
|             @AuthenticationPrincipal Object requestUser, HttpServletRequest httpServletRequest) { | ||||
|  | ||||
|         // use these properties to get address and port where request has | ||||
|         // arrived | ||||
| @@ -461,7 +448,8 @@ public class OpensyncCloudGatewayController { | ||||
|             } | ||||
|  | ||||
|             if (eqRoutingSvc == null) { | ||||
|                 throw new ConfigurationException("Unable to register gateway with routing service: routing service interface not initialized"); | ||||
|                 throw new ConfigurationException( | ||||
|                         "Unable to register gateway with routing service: routing service interface not initialized"); | ||||
|             } | ||||
|  | ||||
|             cleanupStaleGwRecord(); | ||||
| @@ -477,11 +465,13 @@ public class OpensyncCloudGatewayController { | ||||
|                 EquipmentGatewayRecord result = eqRoutingSvc.registerGateway(gwRecord); | ||||
|                 registeredGwId = result.getId(); | ||||
|                 registeredGateway = result; | ||||
|                 LOG.info("Successfully registered (name={}, id={}) with Routing Service", result.getHostname(), registeredGwId); | ||||
|                 LOG.info("Successfully registered (name={}, id={}) with Routing Service", result.getHostname(), | ||||
|                         registeredGwId); | ||||
|                 registeredWithRoutingService = true; | ||||
|             } catch (RuntimeException e) { | ||||
|                 // failed | ||||
|                 LOG.error("Failed to register Customer Equipment Gateway (name={}) with Routing Service : {}", getGatewayName(), e.getLocalizedMessage()); | ||||
|                 LOG.error("Failed to register Customer Equipment Gateway (name={}) with Routing Service : {}", | ||||
|                         getGatewayName(), e.getLocalizedMessage()); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @@ -506,7 +496,8 @@ public class OpensyncCloudGatewayController { | ||||
|                             eqRoutingSvc.deleteGateway(eqpRec.getId()); | ||||
|                         } catch (RuntimeException e) { | ||||
|                             // failed | ||||
|                             LOG.error("Failed to delete Equipment Gateway (name={}) from Routing Service: {}", eqpRec.getHostname(), e.getLocalizedMessage()); | ||||
|                             LOG.error("Failed to delete Equipment Gateway (name={}) from Routing Service: {}", | ||||
|                                     eqpRec.getHostname(), e.getLocalizedMessage()); | ||||
|                         } | ||||
|                     } else { | ||||
|                         LOG.debug("Gateway {} is reachable.", eqpRec.getHostname()); | ||||
| @@ -517,8 +508,9 @@ public class OpensyncCloudGatewayController { | ||||
|             } | ||||
|         } catch (Exception ex) { // Catching Exception to prevent crashing the | ||||
|                                  // register thread | ||||
|             LOG.debug("Generic Exception encountered when trying to cleanup " + "the stale not-reachable GateWays. Continuing to register the new Gateway." | ||||
|                     + " Error: {} ", ex.getMessage()); | ||||
|             LOG.debug("Generic Exception encountered when trying to cleanup " | ||||
|                     + "the stale not-reachable GateWays. Continuing to register the new Gateway." + " Error: {} ", | ||||
|                     ex.getMessage()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -542,13 +534,14 @@ public class OpensyncCloudGatewayController { | ||||
|         if (registeredWithRoutingService) { | ||||
|             try { | ||||
|                 eqRoutingSvc.deleteGateway(registeredGwId); | ||||
|                 LOG.info("Deregistered Customer Equipment Gateway (name={},id={}) with Routing Service", getGatewayName(), registeredGwId); | ||||
|                 LOG.info("Deregistered Customer Equipment Gateway (name={},id={}) with Routing Service", | ||||
|                         getGatewayName(), registeredGwId); | ||||
|                 registeredGwId = -1; | ||||
|                 registeredGateway = null; | ||||
|             } catch (Exception e) { | ||||
|                 // failed | ||||
|                 LOG.error("Failed to deregister Customer Equipment Gateway (name={},id={}) with Routing Service: {}", getGatewayName(), registeredGwId, | ||||
|                         e.getLocalizedMessage()); | ||||
|                 LOG.error("Failed to deregister Customer Equipment Gateway (name={},id={}) with Routing Service: {}", | ||||
|                         getGatewayName(), registeredGwId, e.getLocalizedMessage()); | ||||
|             } | ||||
|             registeredWithRoutingService = false; | ||||
|         } | ||||
| @@ -566,10 +559,12 @@ public class OpensyncCloudGatewayController { | ||||
|      * @param equipmentId | ||||
|      * @return associationId | ||||
|      */ | ||||
|     public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId, Long equipmentId) { | ||||
|     public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId, | ||||
|             Long equipmentId) { | ||||
|         registerWithRoutingService(); | ||||
|         if (!registeredWithRoutingService) { | ||||
|             LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName, equipmentId); | ||||
|             LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName, | ||||
|                     equipmentId); | ||||
|             return null; | ||||
|         } | ||||
|         // Clean up stale records | ||||
| @@ -581,11 +576,13 @@ public class OpensyncCloudGatewayController { | ||||
|         try { | ||||
|             routingRecord = eqRoutingSvc.create(routingRecord); | ||||
|  | ||||
|             LOG.debug("Registered customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingRecord.getId()); | ||||
|             LOG.debug("Registered customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, | ||||
|                     routingRecord.getId()); | ||||
|             return routingRecord; | ||||
|  | ||||
|         } catch (Exception e) { | ||||
|             LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId, e.getLocalizedMessage()); | ||||
|             LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId, | ||||
|                     e.getLocalizedMessage()); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| @@ -598,7 +595,7 @@ public class OpensyncCloudGatewayController { | ||||
|      * Gateway does not exist, delete the equipmentRouting entry. | ||||
|      *  | ||||
|      * @param equipmentId: | ||||
|      *        Equipment's ID | ||||
|      *            Equipment's ID | ||||
|      */ | ||||
|     protected void cleanupStaleEqptRoutingRecord(Long equipmentId) { | ||||
|         LOG.debug("In Clean Up stale Equipment Routing record for Equipment ID {}", equipmentId); | ||||
| @@ -611,17 +608,20 @@ public class OpensyncCloudGatewayController { | ||||
|                         if (gwRec != null) { | ||||
|                             if (!isGwReachable(gwRec.getIpAddr(), gwRec.getPort())) { | ||||
|                                 // GW isn't reachable --> invoke unregister | ||||
|                                 LOG.debug("Gateway {} is not-reachable... Deleting the equipment routing entry", gwRec.getHostname()); | ||||
|                                 LOG.debug("Gateway {} is not-reachable... Deleting the equipment routing entry", | ||||
|                                         gwRec.getHostname()); | ||||
|                                 deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId); | ||||
|                             } else { | ||||
|                                 LOG.debug("Gateway {} is reachable.", gwRec.getHostname()); | ||||
|                             } | ||||
|                         } else { | ||||
|                             LOG.debug("Gateway with ID {} not found. Deleting the equipment routing entry ", eqRouting.getGatewayId()); | ||||
|                             LOG.debug("Gateway with ID {} not found. Deleting the equipment routing entry ", | ||||
|                                     eqRouting.getGatewayId()); | ||||
|                             deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId); | ||||
|                         } | ||||
|                     } catch (DsEntityNotFoundException entityNotFoundException) { | ||||
|                         LOG.debug("Gateway ID: {} not found... Deleting the equipment routing entry", eqRouting.getGatewayId()); | ||||
|                         LOG.debug("Gateway ID: {} not found... Deleting the equipment routing entry", | ||||
|                                 eqRouting.getGatewayId()); | ||||
|                         deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId); | ||||
|                     } | ||||
|                 } | ||||
| @@ -630,10 +630,9 @@ public class OpensyncCloudGatewayController { | ||||
|             } | ||||
|         } catch (Exception genericException) { // Catching Exception to prevent | ||||
|                                                // crashing the register thread | ||||
|             LOG.debug( | ||||
|                     "Generic Exception encountered when trying to cleanup " | ||||
|                             + "the stale routing records for equipment ID: {}. Continuing to register the new RoutingRecord." + " Error: {} ", | ||||
|                     equipmentId, genericException.getMessage()); | ||||
|             LOG.debug("Generic Exception encountered when trying to cleanup " | ||||
|                     + "the stale routing records for equipment ID: {}. Continuing to register the new RoutingRecord." | ||||
|                     + " Error: {} ", equipmentId, genericException.getMessage()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -642,7 +641,8 @@ public class OpensyncCloudGatewayController { | ||||
|             eqRoutingSvc.delete(routingId); | ||||
|         } catch (RuntimeException e) { | ||||
|             // failed | ||||
|             LOG.error("Failed to delete Equipment routing record (ID={}) from Routing Service: {}", eqptId, e.getLocalizedMessage()); | ||||
|             LOG.error("Failed to delete Equipment routing record (ID={}) from Routing Service: {}", eqptId, | ||||
|                     e.getLocalizedMessage()); | ||||
|             return false; | ||||
|         } | ||||
|         return true; | ||||
| @@ -650,16 +650,18 @@ public class OpensyncCloudGatewayController { | ||||
|  | ||||
|     public void deregisterCustomerEquipment(Long routingId, String equipmentName, Long equipmentId) { | ||||
|         if (!registeredWithRoutingService) { | ||||
|             LOG.error("Unable to deregister customer equipement (name={},id={}): gateway not registered", equipmentName, equipmentId); | ||||
|             LOG.error("Unable to deregister customer equipement (name={},id={}): gateway not registered", equipmentName, | ||||
|                     equipmentId); | ||||
|             return; | ||||
|         } | ||||
|         try { | ||||
|             LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingId); | ||||
|             LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, | ||||
|                     routingId); | ||||
|  | ||||
|             eqRoutingSvc.delete(routingId); | ||||
|         } catch (Exception e) { | ||||
|             LOG.error("Failed to deregister customer equipement (name={},id={}) with route id={}: {}", equipmentName, equipmentId, routingId, | ||||
|                     e.getLocalizedMessage()); | ||||
|             LOG.error("Failed to deregister customer equipement (name={},id={}) with route id={}: {}", equipmentName, | ||||
|                     equipmentId, routingId, e.getLocalizedMessage()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -1,365 +0,0 @@ | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.utils; | ||||
|  | ||||
| import java.net.Inet4Address; | ||||
| import java.net.Inet6Address; | ||||
| import java.net.InetAddress; | ||||
| import java.net.UnknownHostException; | ||||
| import java.util.List; | ||||
| import java.util.concurrent.TimeUnit; | ||||
|  | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.scheduling.annotation.Async; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| import com.google.common.base.Objects; | ||||
| import com.google.protobuf.ByteString; | ||||
| import com.telecominfraproject.wlan.client.ClientServiceInterface; | ||||
| import com.telecominfraproject.wlan.client.info.models.ClientInfoDetails; | ||||
| import com.telecominfraproject.wlan.client.session.models.AssociationState; | ||||
| import com.telecominfraproject.wlan.client.session.models.ClientDhcpDetails; | ||||
| import com.telecominfraproject.wlan.client.session.models.ClientSession; | ||||
| import com.telecominfraproject.wlan.client.session.models.ClientSessionDetails; | ||||
| import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | ||||
| import com.telecominfraproject.wlan.opensync.util.OvsdbToWlanCloudTypeMappingUtility; | ||||
| import com.telecominfraproject.wlan.servicemetric.models.ServiceMetric; | ||||
|  | ||||
| import sts.OpensyncStats.AssocType; | ||||
| import sts.OpensyncStats.DeviceType; | ||||
| import sts.OpensyncStats.EventReport; | ||||
| import sts.OpensyncStats.FrameType; | ||||
| import sts.OpensyncStats.Report; | ||||
| import sts.OpensyncStats.EventReport.ClientAssocEvent; | ||||
| import sts.OpensyncStats.EventReport.ClientAuthEvent; | ||||
| import sts.OpensyncStats.EventReport.ClientDisconnectEvent; | ||||
| import sts.OpensyncStats.EventReport.ClientIpEvent; | ||||
|  | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
|  | ||||
| /*** | ||||
|  * MqttStatsPublisher will use this class to publish Stats and Events asynchronously. | ||||
|  * We use async to decrease the processing time for the gateway. | ||||
|  *  | ||||
|  * Note: @Async only applies on public method and cannot have self-invocation (i.e. cannot | ||||
|  * calling the async method from within the same class) | ||||
|  */ | ||||
| @Service | ||||
| public class AsyncPublishService { | ||||
| 	 | ||||
| 	private static final Logger LOG = LoggerFactory.getLogger(MqttStatsPublisher.class); | ||||
| 	 | ||||
|     @Autowired | ||||
|     private CloudEventDispatcherInterface cloudEventDispatcherInterface; | ||||
|      | ||||
|     @Autowired | ||||
|     private RealtimeEventPublisher realtimeEventPublisher; | ||||
|      | ||||
|     @Autowired | ||||
|     private ClientServiceInterface clientServiceInterface; | ||||
|      | ||||
|      | ||||
|     @Async | ||||
|     public void asyncPublishStats(String apId, List<ServiceMetric> metricRecordList) { | ||||
|         try { | ||||
|             long publishStart = System.nanoTime(); | ||||
|             cloudEventDispatcherInterface.publishMetrics(metricRecordList); | ||||
|             long publishStop = System.nanoTime(); | ||||
|             if (LOG.isDebugEnabled()) | ||||
|                 LOG.debug("Elapsed publishing time for metrics records from AP {} is {} milliseconds", apId, | ||||
|                         TimeUnit.MILLISECONDS.convert(publishStop - publishStart, TimeUnit.NANOSECONDS)); | ||||
|         } catch (Exception e) { | ||||
|             LOG.error("Exception when trying to publishServiceMetrics.", e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Async | ||||
|     public void asyncPublishEvents(Report report, int customerId, long equipmentId, String apId, long locationId) { | ||||
|         try { | ||||
|             long mqttEventsStart = System.nanoTime(); | ||||
|             publishEvents(report, customerId, equipmentId, apId, locationId); | ||||
|             long mqttEventsStop = System.nanoTime(); | ||||
|             if (LOG.isDebugEnabled()) | ||||
|                 LOG.debug("Elapsed publishing time for mqtt events from AP {} is {} milliseconds", apId, | ||||
|                         TimeUnit.MILLISECONDS.convert(mqttEventsStop - mqttEventsStart, TimeUnit.NANOSECONDS)); | ||||
|         } catch (Exception e) { | ||||
|             LOG.error("Exception when trying to publishEvents.", e); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     void publishEvents(Report report, int customerId, long equipmentId, String apId, long locationId) { | ||||
|  | ||||
|         realtimeEventPublisher.publishSipCallEvents(customerId, equipmentId, locationId, report.getVideoVoiceReportList()); | ||||
|  | ||||
|         for (EventReport eventReport : report.getEventReportList()) { | ||||
|  | ||||
|             for (sts.OpensyncStats.EventReport.ClientSession apEventClientSession : eventReport.getClientSessionList()) { | ||||
|  | ||||
|                 LOG.debug("Processing EventReport::ClientSession for AP {}", apId); | ||||
|                 // for the following MQTT events, the client/client session is first updated, then the real time event | ||||
|                 // is published. | ||||
|                 if (apEventClientSession.hasClientAuthEvent()) { | ||||
|                     processClientAuthEvent(customerId, equipmentId, locationId, apEventClientSession); | ||||
|                 } | ||||
|                 if (apEventClientSession.hasClientAssocEvent()) { | ||||
|                     processClientAssocEvent(customerId, equipmentId, locationId, apEventClientSession); | ||||
|                 } | ||||
|                 if (apEventClientSession.hasClientIpEvent()) { | ||||
|                     processClientIpEvent(customerId, equipmentId, locationId, apEventClientSession); | ||||
|                 } | ||||
|                 if (apEventClientSession.hasClientDisconnectEvent()) { | ||||
|                     processClientDisconnectEvent(customerId, equipmentId, locationId, apEventClientSession); | ||||
|                 } | ||||
|             } | ||||
|             realtimeEventPublisher.publishChannelHopEvents(customerId, equipmentId, locationId, eventReport); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|      | ||||
|     private void processClientAuthEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { | ||||
|         ClientAuthEvent apClientEvent = apEventClientSession.getClientAuthEvent(); | ||||
|         com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|  | ||||
|         if (client == null) { | ||||
|             client = new com.telecominfraproject.wlan.client.models.Client(); | ||||
|             client.setCustomerId(customerId); | ||||
|             client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|             client.setDetails(new ClientInfoDetails()); | ||||
|             client = clientServiceInterface.create(client); | ||||
|         } | ||||
|  | ||||
|         ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|  | ||||
|         if (clientSession == null) { | ||||
|             clientSession = new ClientSession(); | ||||
|             clientSession.setCustomerId(customerId); | ||||
|             clientSession.setEquipmentId(equipmentId); | ||||
|             clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|             clientSession.setLocationId(locationId); | ||||
|             clientSession.setDetails(new ClientSessionDetails()); | ||||
|             clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(Long.toUnsignedString(apEventClientSession.getSessionId()))); | ||||
|         } | ||||
|         if (clientSession.getDetails().getPriorEquipmentId() == null) { | ||||
|             clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); | ||||
|         } | ||||
|         if (clientSession.getDetails().getPriorSessionId() == null) { | ||||
|             if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) | ||||
|                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||
|         } | ||||
|         if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) { | ||||
|             clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||
|         } | ||||
|         clientSession.getDetails().setSessionId(Long.toUnsignedString(apEventClientSession.getSessionId())); | ||||
|         clientSession.getDetails().setRadioType(OvsdbToWlanCloudTypeMappingUtility.getRadioTypeFromOpensyncStatsRadioBandType(apClientEvent.getBand())); | ||||
|         clientSession.getDetails().setSsid(apClientEvent.getSsid()); | ||||
|         if (apClientEvent.hasAuthStatus()) { | ||||
|             clientSession.getDetails().setAssociationStatus(apClientEvent.getAuthStatus()); | ||||
|         } | ||||
|         clientSession.getDetails().setAuthTimestamp(apClientEvent.getTimestampMs()); | ||||
|         clientSession.getDetails().setAssociationState(AssociationState._802_11_Authenticated); | ||||
|         clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); | ||||
|         clientSession = clientServiceInterface.updateSession(clientSession); | ||||
|  | ||||
|         realtimeEventPublisher.publishClientAuthSystemEvent(customerId, equipmentId, locationId, apEventClientSession.getClientAuthEvent()); | ||||
|  | ||||
|     } | ||||
|      | ||||
|     private void processClientAssocEvent(int customerId, long equipmentId, long locationId, | ||||
|             sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { | ||||
|         ClientAssocEvent apClientEvent = apEventClientSession.getClientAssocEvent(); | ||||
|  | ||||
|         com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|  | ||||
|         if (client == null) { | ||||
|             client = new com.telecominfraproject.wlan.client.models.Client(); | ||||
|             client.setCustomerId(customerId); | ||||
|             client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|             client.setDetails(new ClientInfoDetails()); | ||||
|             client = clientServiceInterface.create(client); | ||||
|         } | ||||
|  | ||||
|         ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|  | ||||
|         if (clientSession == null) { | ||||
|             clientSession = new ClientSession(); | ||||
|             clientSession.setCustomerId(customerId); | ||||
|             clientSession.setEquipmentId(equipmentId); | ||||
|             clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|             clientSession.setLocationId(locationId); | ||||
|             clientSession.setDetails(new ClientSessionDetails()); | ||||
|             clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(Long.toUnsignedString(apEventClientSession.getSessionId()))); | ||||
|         } | ||||
|         if (clientSession.getDetails().getPriorEquipmentId() == null) { | ||||
|             clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); | ||||
|         } | ||||
|         if (clientSession.getDetails().getPriorSessionId() == null) { | ||||
|             if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) | ||||
|                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||
|         } | ||||
|         if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) { | ||||
|             clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||
|         } | ||||
|         clientSession.getDetails().setSessionId(Long.toUnsignedString(apEventClientSession.getSessionId())); | ||||
|         clientSession.getDetails().setRadioType(OvsdbToWlanCloudTypeMappingUtility.getRadioTypeFromOpensyncStatsRadioBandType(apClientEvent.getBand())); | ||||
|         clientSession.getDetails().setSsid(apClientEvent.getSsid()); | ||||
|         if (apClientEvent.hasStatus()) { | ||||
|             clientSession.getDetails().setAssociationStatus(apClientEvent.getStatus()); | ||||
|         } | ||||
|         clientSession.getDetails().setRadioType(OvsdbToWlanCloudTypeMappingUtility.getRadioTypeFromOpensyncStatsRadioBandType(apClientEvent.getBand())); | ||||
|         if (apClientEvent.hasUsing11K()) { | ||||
|             clientSession.getDetails().setIs11KUsed(apClientEvent.getUsing11K()); | ||||
|         } | ||||
|         if (apClientEvent.hasUsing11R()) { | ||||
|             clientSession.getDetails().setIs11RUsed(apClientEvent.getUsing11R()); | ||||
|         } | ||||
|         if (apClientEvent.hasUsing11V()) { | ||||
|             clientSession.getDetails().setIs11VUsed(apClientEvent.getUsing11V()); | ||||
|         } | ||||
|         if (apClientEvent.hasAssocType()) { | ||||
|             clientSession.getDetails().setIsReassociation(apClientEvent.getAssocType().equals(AssocType.REASSOC)); | ||||
|         } | ||||
|         if (apClientEvent.hasRssi()) { | ||||
|             clientSession.getDetails().setAssocRssi(apClientEvent.getRssi()); | ||||
|         } | ||||
|         if (apClientEvent.hasInternalSc()) { | ||||
|             clientSession.getDetails().setAssocInternalSC(apClientEvent.getInternalSc()); | ||||
|         } | ||||
|         clientSession.getDetails().setAssocTimestamp(apClientEvent.getTimestampMs()); | ||||
|         clientSession.getDetails().setAssociationState(AssociationState._802_11_Associated); | ||||
|         clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); | ||||
|         clientSession = clientServiceInterface.updateSession(clientSession); | ||||
|         realtimeEventPublisher.publishClientAssocEvent(customerId, equipmentId, locationId, apEventClientSession.getClientAssocEvent()); | ||||
|  | ||||
|     } | ||||
|      | ||||
|     private void processClientIpEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { | ||||
|         ClientIpEvent apClientEvent = apEventClientSession.getClientIpEvent(); | ||||
|         com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|         if (client == null) { | ||||
|             client = new com.telecominfraproject.wlan.client.models.Client(); | ||||
|             client.setCustomerId(customerId); | ||||
|             client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|             client.setDetails(new ClientInfoDetails()); | ||||
|             client = clientServiceInterface.create(client); | ||||
|         } | ||||
|         client = clientServiceInterface.update(client); | ||||
|  | ||||
|         ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|         if (clientSession == null) { | ||||
|             clientSession = new ClientSession(); | ||||
|             clientSession.setCustomerId(customerId); | ||||
|             clientSession.setEquipmentId(equipmentId); | ||||
|             clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|             clientSession.setLocationId(locationId); | ||||
|             clientSession.setDetails(new ClientSessionDetails()); | ||||
|             clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(Long.toUnsignedString(apEventClientSession.getSessionId()))); | ||||
|         } | ||||
|         if (clientSession.getDetails().getPriorEquipmentId() == null) { | ||||
|             clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId()); | ||||
|         } | ||||
|         if (clientSession.getDetails().getPriorSessionId() == null) { | ||||
|             if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) | ||||
|                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||
|         } | ||||
|         if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) { | ||||
|             clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||
|         } | ||||
|         clientSession.getDetails().setSessionId(Long.toUnsignedString(apEventClientSession.getSessionId())); | ||||
|         if (apClientEvent.hasIpAddr()) { | ||||
|             ByteString ipAddress = apClientEvent.getIpAddr(); | ||||
|             if (ipAddress != null) { | ||||
|                 try { | ||||
|                     InetAddress inetAddress = InetAddress.getByAddress(ipAddress.toByteArray()); | ||||
|                     if (inetAddress instanceof Inet4Address) { | ||||
|                         clientSession.getDetails().setIpAddress(inetAddress); | ||||
|                     } else if (inetAddress instanceof Inet6Address) { | ||||
|                         clientSession.getDetails().setIpAddress(inetAddress); | ||||
|                     } else { | ||||
|                         LOG.error("Invalid IP Address {}", ipAddress); | ||||
|                     } | ||||
|                     clientSession.getDetails().setIpTimestamp(apClientEvent.getTimestampMs()); | ||||
|  | ||||
|                 } catch (UnknownHostException ex) { | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); | ||||
|         clientSession = clientServiceInterface.updateSession(clientSession); | ||||
|         realtimeEventPublisher.publishClientIpEvent(customerId, equipmentId, locationId, apEventClientSession.getClientIpEvent()); | ||||
|     } | ||||
|      | ||||
|     private void processClientDisconnectEvent(int customerId, long equipmentId, long locationId, | ||||
|             sts.OpensyncStats.EventReport.ClientSession apEventClientSession) { | ||||
|         ClientDisconnectEvent apClientEvent = apEventClientSession.getClientDisconnectEvent(); | ||||
|         com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|         if (client == null) { | ||||
|             client = new com.telecominfraproject.wlan.client.models.Client(); | ||||
|             client.setCustomerId(customerId); | ||||
|             client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|             client.setDetails(new ClientInfoDetails()); | ||||
|             client = clientServiceInterface.create(client); | ||||
|         } | ||||
|         ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|         if (clientSession == null) { | ||||
|             clientSession = new ClientSession(); | ||||
|             clientSession.setCustomerId(customerId); | ||||
|             clientSession.setEquipmentId(equipmentId); | ||||
|             clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac())); | ||||
|             clientSession.setLocationId(locationId); | ||||
|             clientSession.setDetails(new ClientSessionDetails()); | ||||
|             clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(Long.toUnsignedString(apEventClientSession.getSessionId()))); | ||||
|         } | ||||
|  | ||||
|         if (clientSession.getDetails().getPriorSessionId() == null) { | ||||
|             if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) | ||||
|                 clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||
|         } | ||||
|         if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) { | ||||
|             clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId()); | ||||
|         } | ||||
|         clientSession.getDetails().setSessionId(Long.toUnsignedString(apEventClientSession.getSessionId())); | ||||
|         clientSession.getDetails().setRadioType(OvsdbToWlanCloudTypeMappingUtility.getRadioTypeFromOpensyncStatsRadioBandType(apClientEvent.getBand())); | ||||
|         clientSession.getDetails().setSsid(apClientEvent.getSsid()); | ||||
|         if (apClientEvent.hasDevType()) { | ||||
|             if (apClientEvent.getDevType().equals(DeviceType.DEV_AP)) { | ||||
|                 clientSession.getDetails().setDisconnectByApTimestamp(apClientEvent.getTimestampMs()); | ||||
|                 if (apClientEvent.hasInternalRc()) { | ||||
|                     clientSession.getDetails().setDisconnectByApInternalReasonCode(apClientEvent.getInternalRc()); | ||||
|                 } | ||||
|                 if (apClientEvent.hasReason()) { | ||||
|                     clientSession.getDetails().setDisconnectByApReasonCode(apClientEvent.getReason()); | ||||
|                 } | ||||
|             } else { | ||||
|                 clientSession.getDetails().setDisconnectByClientTimestamp(apClientEvent.getTimestampMs()); | ||||
|                 if (apClientEvent.hasInternalRc()) { | ||||
|                     clientSession.getDetails().setDisconnectByClientInternalReasonCode(apClientEvent.getInternalRc()); | ||||
|                 } | ||||
|                 if (apClientEvent.hasReason()) { | ||||
|                     clientSession.getDetails().setDisconnectByClientReasonCode(apClientEvent.getReason()); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         if (apClientEvent.hasFrType()) { | ||||
|             if (apClientEvent.getFrType().equals(FrameType.FT_DEAUTH)) { | ||||
|             } | ||||
|             if (apClientEvent.getFrType().equals(FrameType.FT_DISASSOC)) { | ||||
|             } | ||||
|         } | ||||
|         if (apClientEvent.hasRssi()) { | ||||
|             clientSession.getDetails().setAssocRssi(apClientEvent.getRssi()); | ||||
|         } | ||||
|         if (apClientEvent.hasLrcvUpTsInUs()) { | ||||
|             clientSession.getDetails().setLastRxTimestamp(apClientEvent.getLrcvUpTsInUs()); | ||||
|         } | ||||
|         if (apClientEvent.hasLsentUpTsInUs()) { | ||||
|             clientSession.getDetails().setLastTxTimestamp(apClientEvent.getLsentUpTsInUs()); | ||||
|         } | ||||
|         clientSession.getDetails().setAssociationState(AssociationState.Disconnected); | ||||
|         clientSession.getDetails().setAssocTimestamp(apClientEvent.getTimestampMs()); | ||||
|         clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs()); | ||||
|         clientSession = clientServiceInterface.updateSession(clientSession); | ||||
|         realtimeEventPublisher.publishClientDisconnectEvent(customerId, equipmentId, locationId, apEventClientSession.getClientDisconnectEvent()); | ||||
|  | ||||
|     } | ||||
|  | ||||
| } | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,749 +0,0 @@ | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.utils; | ||||
|  | ||||
| import java.net.InetAddress; | ||||
| import java.net.UnknownHostException; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Component; | ||||
|  | ||||
| import com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent.DisconnectFrameType; | ||||
| import com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent.DisconnectInitiator; | ||||
| import com.telecominfraproject.wlan.client.models.events.utils.WlanReasonCode; | ||||
| import com.telecominfraproject.wlan.client.models.events.utils.WlanStatusCode; | ||||
| import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.ChannelHopReason; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||
| import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface; | ||||
| import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration; | ||||
| import com.telecominfraproject.wlan.equipment.models.Equipment; | ||||
| import com.telecominfraproject.wlan.opensync.util.OvsdbToWlanCloudTypeMappingUtility; | ||||
| import com.telecominfraproject.wlan.profile.ProfileServiceInterface; | ||||
| import com.telecominfraproject.wlan.profile.models.ProfileContainer; | ||||
| import com.telecominfraproject.wlan.profile.models.ProfileType; | ||||
| import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration; | ||||
| import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeChannelHopEvent; | ||||
| import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeEventType; | ||||
| import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallReportEvent; | ||||
| import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallStartEvent; | ||||
| import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallStopEvent; | ||||
| import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeStreamingStartEvent; | ||||
| import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeStreamingStartSessionEvent; | ||||
| import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeStreamingStopEvent; | ||||
| import com.telecominfraproject.wlan.systemevent.equipment.realtime.SIPCallReportReason; | ||||
| import com.telecominfraproject.wlan.systemevent.equipment.realtime.SipCallStopReason; | ||||
| import com.telecominfraproject.wlan.systemevent.models.SystemEvent; | ||||
|  | ||||
| import sts.OpensyncStats; | ||||
| import sts.OpensyncStats.AssocType; | ||||
| import sts.OpensyncStats.CallReport; | ||||
| import sts.OpensyncStats.CallStart; | ||||
| import sts.OpensyncStats.CallStop; | ||||
| import sts.OpensyncStats.ChannelSwitchReason; | ||||
| import sts.OpensyncStats.DeviceType; | ||||
| import sts.OpensyncStats.EventReport; | ||||
| import sts.OpensyncStats.EventReport.ClientAssocEvent; | ||||
| import sts.OpensyncStats.EventReport.ClientAuthEvent; | ||||
| import sts.OpensyncStats.EventReport.ClientDisconnectEvent; | ||||
| import sts.OpensyncStats.EventReport.ClientIpEvent; | ||||
| import sts.OpensyncStats.FrameType; | ||||
| import sts.OpensyncStats.RtpFlowStats; | ||||
| import sts.OpensyncStats.StreamingVideoServerDetected; | ||||
| import sts.OpensyncStats.StreamingVideoSessionStart; | ||||
| import sts.OpensyncStats.StreamingVideoStop; | ||||
| import sts.OpensyncStats.VideoVoiceReport; | ||||
|  | ||||
| @org.springframework.context.annotation.Profile("opensync_cloud_config") | ||||
| @Component | ||||
| public class RealtimeEventPublisher { | ||||
|  | ||||
|     @Autowired | ||||
|     private CloudEventDispatcherInterface cloudEventDispatcherInterface; | ||||
|  | ||||
|     @Autowired | ||||
|     private EquipmentServiceInterface equipmentServiceInterface; | ||||
|  | ||||
|     @Autowired | ||||
|     private ProfileServiceInterface  profileServiceInterface; | ||||
|  | ||||
|     private static final Logger LOG = LoggerFactory.getLogger(RealtimeEventPublisher.class); | ||||
|      | ||||
|      | ||||
|     void publishChannelHopEvents(int customerId, long equipmentId, long locationId, EventReport e) { | ||||
|  | ||||
|         LOG.info("publishChannelHopEvents for customerId {} equipmentId {}"); | ||||
|         List<SystemEvent> events = new ArrayList<>(); | ||||
|  | ||||
|         LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", e, customerId, equipmentId); | ||||
|  | ||||
|         Equipment equipment = equipmentServiceInterface.getOrNull(equipmentId); | ||||
|         if (equipment == null) { | ||||
|             return; | ||||
|         } | ||||
|         ProfileContainer profileContainer = new ProfileContainer( | ||||
|         		profileServiceInterface.getProfileWithChildren(equipment.getProfileId())); | ||||
|         RfConfiguration rfConfig = null; | ||||
|         if (profileContainer != null) { | ||||
|         	rfConfig = (RfConfiguration) profileContainer.getChildOfTypeOrNull(equipment.getProfileId(), ProfileType.rf).getDetails(); | ||||
|         } | ||||
|         if (profileContainer == null || rfConfig == null) { | ||||
|         	LOG.warn("publishChannelHopEvents:profileContainer {} or RfConfiguration {} is null for customerId {} equipmentId {}", | ||||
| 					profileContainer, rfConfig, customerId, equipmentId); | ||||
|         } | ||||
|  | ||||
|         for (sts.OpensyncStats.EventReport.ChannelSwitchEvent channelSwitchEvent : e.getChannelSwitchList()) { | ||||
|  | ||||
|             RadioType radioType = null; | ||||
|             Long timestamp = null; | ||||
|             ChannelHopReason reason = null; | ||||
|             Integer channel = null; | ||||
|             if (channelSwitchEvent.hasBand()) { | ||||
|                 radioType = OvsdbToWlanCloudTypeMappingUtility | ||||
|                         .getRadioTypeFromOpensyncStatsRadioBandType(channelSwitchEvent.getBand()); | ||||
|             } | ||||
|             if (RadioType.isUnsupported(radioType)) { | ||||
|                 LOG.warn( | ||||
|                         "publishChannelHopEvents:RadioType {} is unsupported, cannot send RealTimeChannelHopEvent for {}", | ||||
|                         radioType, channelSwitchEvent); | ||||
|                 continue; | ||||
|             } | ||||
|             if (channelSwitchEvent.hasTimestampMs()) { | ||||
|                 timestamp = channelSwitchEvent.getTimestampMs(); | ||||
|             } | ||||
|             if (timestamp == null) { | ||||
|                 LOG.warn("publishChannelHopEvents:timestamp is null, cannot send RealTimeChannelHopEvent for {}", | ||||
|                         channelSwitchEvent); | ||||
|                 continue; | ||||
|             } | ||||
|  | ||||
|             if (channelSwitchEvent.hasReason()) { | ||||
|                 if (channelSwitchEvent.getReason().equals(ChannelSwitchReason.high_interference)) { | ||||
|                     reason = ChannelHopReason.HighInterference; | ||||
|                 } | ||||
|                 else if (channelSwitchEvent.getReason().equals(ChannelSwitchReason.radar_detected)) { | ||||
|                     reason = ChannelHopReason.RadarDetected; | ||||
|                 } | ||||
|             } | ||||
|             if (ChannelHopReason.isUnsupported(reason)) { | ||||
|                 LOG.warn("publishChannelHopEvents:reason {} is unsupported, cannot send RealTimeChannelHopEvent for {}", | ||||
|                         channelSwitchEvent.getReason(), channelSwitchEvent); | ||||
|                 continue; | ||||
|             } | ||||
|             if (channelSwitchEvent.hasChannel()) { | ||||
|                 channel = channelSwitchEvent.getChannel(); | ||||
|             } | ||||
|             if (channel == null) { | ||||
|                 LOG.warn("publishChannelHopEvents:channel is null, cannot send RealTimeChannelHopEvent for {}", | ||||
|                         channelSwitchEvent); | ||||
|                 continue; | ||||
|             } | ||||
|             boolean autoChannelSelection = false; | ||||
|             if (rfConfig != null && rfConfig.getRfConfigMap() != null && rfConfig.getRfConfigMap().get(radioType) != null) { | ||||
|                autoChannelSelection = rfConfig.getRfConfigMap().get(radioType).getAutoChannelSelection(); | ||||
|             } | ||||
|  | ||||
|             RealTimeChannelHopEvent channelHopEvent = new RealTimeChannelHopEvent(RealTimeEventType.Channel_Hop, | ||||
|                     customerId, locationId, equipmentId, radioType, channel, | ||||
|                     ((ApElementConfiguration) equipment.getDetails()).getRadioMap().get(radioType).getActiveChannel(autoChannelSelection), | ||||
|                     reason, timestamp); | ||||
|  | ||||
|             events.add(channelHopEvent); | ||||
|             LOG.debug("publishChannelHopEvents:Adding ChannelHopEvent to bulk list {}", channelHopEvent); | ||||
|         } | ||||
|  | ||||
|         if (events.size() > 0) { | ||||
|             LOG.info("publishChannelHopEvents:publishEventsBulk: {}", events); | ||||
|             cloudEventDispatcherInterface.publishEventsBulk(events); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|      | ||||
|  | ||||
|     void publishClientDisconnectEvent(int customerId, long equipmentId, long locationId, ClientDisconnectEvent clientDisconnectEvent) { | ||||
|  | ||||
|         LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientDisconnectEvent, customerId, | ||||
|                 equipmentId); | ||||
|  | ||||
|         com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent( | ||||
|                 clientDisconnectEvent.getTimestampMs()); | ||||
|         clientEvent.setClientMacAddress(MacAddress.valueOf(clientDisconnectEvent.getStaMac())); | ||||
|         clientEvent.setSessionId(Long.toUnsignedString( clientDisconnectEvent.getSessionId())); | ||||
|         clientEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility | ||||
|                 .getRadioTypeFromOpensyncStatsRadioBandType(clientDisconnectEvent.getBand())); | ||||
|         clientEvent.setSsid(clientDisconnectEvent.getSsid()); | ||||
|  | ||||
|         if (clientDisconnectEvent.hasDevType()) { | ||||
|  | ||||
|             clientEvent.setInitiator( | ||||
|                     clientDisconnectEvent.getDevType().equals(DeviceType.DEV_AP) ? DisconnectInitiator.AccessPoint | ||||
|                             : DisconnectInitiator.Client); | ||||
|  | ||||
|         } | ||||
|         if (clientDisconnectEvent.hasFrType()) { | ||||
|             clientEvent.setFrameType( | ||||
|                     clientDisconnectEvent.getFrType().equals(FrameType.FT_DEAUTH) ? DisconnectFrameType.Deauth | ||||
|                             : DisconnectFrameType.Disassoc); | ||||
|         } | ||||
|         if (clientDisconnectEvent.hasInternalRc()) { | ||||
|             clientEvent.setInternalReasonCode(clientDisconnectEvent.getInternalRc()); | ||||
|         } | ||||
|         if (clientDisconnectEvent.hasLrcvUpTsInUs()) { | ||||
|             clientEvent.setLastRecvTime(clientDisconnectEvent.getLrcvUpTsInUs()); | ||||
|         } | ||||
|         if (clientDisconnectEvent.hasLsentUpTsInUs()) { | ||||
|             clientEvent.setLastSentTime(clientDisconnectEvent.getLsentUpTsInUs()); | ||||
|         } | ||||
|         if (clientDisconnectEvent.hasReason()) { | ||||
|             clientEvent.setReasonCode(WlanReasonCode.getById(clientDisconnectEvent.getReason())); | ||||
|         } | ||||
|         if (clientDisconnectEvent.hasRssi()) { | ||||
|             clientEvent.setRssi(clientDisconnectEvent.getRssi()); | ||||
|         } | ||||
|         clientEvent.setEventTimestamp(clientDisconnectEvent.getTimestampMs()); | ||||
|         clientEvent.setCustomerId(customerId); | ||||
|         clientEvent.setEquipmentId(equipmentId); | ||||
|         clientEvent.setLocationId(locationId); | ||||
|  | ||||
|         LOG.info("publishing client event {} to cloud", clientEvent); | ||||
|         cloudEventDispatcherInterface.publishEvent(clientEvent); | ||||
|  | ||||
|     } | ||||
|      | ||||
|     void publishClientAuthSystemEvent(int customerId, long equipmentId, long locationId, ClientAuthEvent clientAuthEvent) { | ||||
|         LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientAuthEvent, customerId, equipmentId); | ||||
|  | ||||
|         com.telecominfraproject.wlan.client.models.events.realtime.ClientAuthEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientAuthEvent( | ||||
|                 clientAuthEvent.getTimestampMs()); | ||||
|         clientEvent.setSessionId(Long.toUnsignedString( clientAuthEvent.getSessionId())); | ||||
|         clientEvent.setSsid(clientAuthEvent.getSsid()); | ||||
|         clientEvent.setClientMacAddress(MacAddress.valueOf(clientAuthEvent.getStaMac())); | ||||
|         clientEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility | ||||
|                 .getRadioTypeFromOpensyncStatsRadioBandType(clientAuthEvent.getBand())); | ||||
|  | ||||
|         if (clientAuthEvent.hasAuthStatus()) { | ||||
|             clientEvent.setAuthStatus(WlanStatusCode.getById(clientAuthEvent.getAuthStatus())); | ||||
|         } | ||||
|         clientEvent.setEventTimestamp(clientAuthEvent.getTimestampMs()); | ||||
|         clientEvent.setCustomerId(customerId); | ||||
|         clientEvent.setEquipmentId(equipmentId); | ||||
|         clientEvent.setLocationId(locationId); | ||||
|  | ||||
|         LOG.info("publishing client event {} to cloud", clientEvent); | ||||
|         cloudEventDispatcherInterface.publishEvent(clientEvent); | ||||
|  | ||||
|     } | ||||
|     | ||||
|     void publishClientAssocEvent(int customerId, long equipmentId, long locationId, ClientAssocEvent clientAssocEvent) { | ||||
|         LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientAssocEvent, customerId, equipmentId); | ||||
|  | ||||
|         com.telecominfraproject.wlan.client.models.events.realtime.ClientAssocEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientAssocEvent( | ||||
|                 clientAssocEvent.getTimestampMs()); | ||||
|  | ||||
|         clientEvent.setSessionId(Long.toUnsignedString( clientAssocEvent.getSessionId())); | ||||
|         clientEvent.setSsid(clientAssocEvent.getSsid()); | ||||
|         clientEvent.setClientMacAddress(MacAddress.valueOf(clientAssocEvent.getStaMac())); | ||||
|         clientEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility | ||||
|                 .getRadioTypeFromOpensyncStatsRadioBandType(clientAssocEvent.getBand())); | ||||
|  | ||||
|         if (clientAssocEvent.hasAssocType()) { | ||||
|             clientEvent.setReassociation(clientAssocEvent.getAssocType().equals(AssocType.REASSOC)); | ||||
|         } | ||||
|  | ||||
|         if (clientAssocEvent.hasInternalSc()) { | ||||
|             clientEvent.setInternalSC(clientAssocEvent.getInternalSc()); | ||||
|         } | ||||
|  | ||||
|         if (clientAssocEvent.hasRssi()) { | ||||
|             clientEvent.setRssi(clientAssocEvent.getRssi()); | ||||
|         } | ||||
|  | ||||
|         if (clientAssocEvent.hasStatus()) { | ||||
|             clientEvent.setStatus(WlanStatusCode.getById(clientAssocEvent.getStatus())); | ||||
|         } | ||||
|  | ||||
|         if (clientAssocEvent.hasUsing11K()) { | ||||
|             clientEvent.setUsing11k(clientAssocEvent.getUsing11K()); | ||||
|         } | ||||
|  | ||||
|         if (clientAssocEvent.hasUsing11R()) { | ||||
|             clientEvent.setUsing11r(clientAssocEvent.getUsing11R()); | ||||
|         } | ||||
|  | ||||
|         if (clientAssocEvent.hasUsing11V()) { | ||||
|             clientEvent.setUsing11v(clientAssocEvent.getUsing11V()); | ||||
|         } | ||||
|  | ||||
|         clientEvent.setEventTimestamp(clientAssocEvent.getTimestampMs()); | ||||
|         clientEvent.setCustomerId(customerId); | ||||
|         clientEvent.setEquipmentId(equipmentId); | ||||
|         clientEvent.setLocationId(locationId); | ||||
|  | ||||
|         LOG.info("publishing client event {} to cloud", clientEvent); | ||||
|         cloudEventDispatcherInterface.publishEvent(clientEvent); | ||||
|  | ||||
|     } | ||||
|   | ||||
|     void publishClientIpEvent(int customerId, long equipmentId, long locationId, ClientIpEvent clientIpEvent) { | ||||
|  | ||||
|         LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientIpEvent, customerId, equipmentId); | ||||
|  | ||||
|         com.telecominfraproject.wlan.client.models.events.realtime.ClientIpAddressEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientIpAddressEvent( | ||||
|                 clientIpEvent.getTimestampMs()); | ||||
|  | ||||
|         clientEvent.setSessionId(Long.toUnsignedString( clientIpEvent.getSessionId())); | ||||
|         clientEvent.setClientMacAddress(MacAddress.valueOf(clientIpEvent.getStaMac())); | ||||
|         if (clientIpEvent.hasIpAddr()) { | ||||
|             try { | ||||
|                 clientEvent.setIpAddr(InetAddress.getByAddress(clientIpEvent.getIpAddr().toByteArray())); | ||||
|             } catch (UnknownHostException e1) { | ||||
|                 LOG.error("Invalid Client IP Address for equipmentId {}, clientIpEvent {}", equipmentId, clientIpEvent); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         clientEvent.setEventTimestamp(clientIpEvent.getTimestampMs()); | ||||
|         clientEvent.setCustomerId(customerId); | ||||
|         clientEvent.setEquipmentId(equipmentId); | ||||
|         clientEvent.setLocationId(locationId); | ||||
|  | ||||
|         LOG.info("publishing client event {} to cloud", clientEvent); | ||||
|         cloudEventDispatcherInterface.publishEvent(clientEvent); | ||||
|     } | ||||
|     | ||||
|     void publishSipCallEvents(int customerId, long equipmentId, long locationId, List<VideoVoiceReport> sipCallReportList) { | ||||
|         // only in case it is not there, we will just use the time when we | ||||
|         // received the report/event | ||||
|         long eventTimestamp = System.currentTimeMillis(); | ||||
|  | ||||
|         List<SystemEvent> eventsList = new ArrayList<>(); | ||||
|         for (VideoVoiceReport videoVoiceReport : sipCallReportList) { | ||||
|  | ||||
|             if (videoVoiceReport.hasTimestampMs()) { | ||||
|                 eventTimestamp = videoVoiceReport.getTimestampMs(); | ||||
|             } | ||||
|  | ||||
|             LOG.debug("Received VideoVoiceReport {} for SIP call", videoVoiceReport); | ||||
|  | ||||
|             processRealTimeSipCallReportEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport); | ||||
|  | ||||
|             processRealTimeSipCallStartEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport); | ||||
|  | ||||
|             processRealTimeSipCallStopEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport); | ||||
|  | ||||
|             processRtsStartEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport); | ||||
|  | ||||
|             processRtsStartSessionEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport); | ||||
|  | ||||
|             processRtsStopEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport); | ||||
|  | ||||
|         } | ||||
|  | ||||
|         if (eventsList.size() > 0) { | ||||
|             cloudEventDispatcherInterface.publishEventsBulk(eventsList); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     protected void processRealTimeSipCallReportEvent(int customerId, long equipmentId, long locationId, long eventTimestamp, | ||||
|             List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) { | ||||
|         if (videoVoiceReport.hasCallReport()) { | ||||
|  | ||||
|             CallReport callReport = videoVoiceReport.getCallReport(); | ||||
|  | ||||
|             RealTimeSipCallReportEvent cloudSipCallReportEvent = new RealTimeSipCallReportEvent(customerId, locationId, equipmentId, | ||||
|                     eventTimestamp); | ||||
|  | ||||
|             if (callReport.hasClientMac() && callReport.getClientMac().isValidUtf8()) { | ||||
|                 cloudSipCallReportEvent | ||||
|                         .setClientMacAddress(MacAddress.valueOf(callReport.getClientMac().toStringUtf8())); | ||||
|             } | ||||
|             cloudSipCallReportEvent.setStatuses(processRtpFlowStats(callReport.getStatsList())); | ||||
|             cloudSipCallReportEvent.setEventType(RealTimeEventType.SipCallReport); | ||||
|  | ||||
|             cloudSipCallReportEvent.setSipCallId(callReport.getWifiSessionId()); | ||||
|             cloudSipCallReportEvent.setAssociationId(Long.toUnsignedString( callReport.getSessionId())); | ||||
|  | ||||
|             if (callReport.hasReason()) { | ||||
|                 cloudSipCallReportEvent.setReportReason(getCallReportReason(callReport.getReason())); | ||||
|             } | ||||
|             if (callReport.hasProviderDomain()) { | ||||
|                 cloudSipCallReportEvent.setProviderDomain(callReport.getProviderDomain()); | ||||
|             } | ||||
|  | ||||
|             if (callReport.getCodecsCount() > 0) { | ||||
|                 cloudSipCallReportEvent.setCodecs(callReport.getCodecsList()); | ||||
|             } | ||||
|  | ||||
|             if (callReport.hasChannel()) { | ||||
|                 cloudSipCallReportEvent.setChannel(callReport.getChannel()); | ||||
|             } | ||||
|  | ||||
|             if (callReport.hasBand()) { | ||||
|                 cloudSipCallReportEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility | ||||
|                         .getRadioTypeFromOpensyncStatsRadioBandType(callReport.getBand())); | ||||
|             } | ||||
|  | ||||
|             eventsList.add(cloudSipCallReportEvent); | ||||
|  | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private SIPCallReportReason getCallReportReason(CallReport.CallReportReason reason) { | ||||
|         if (reason != null) { | ||||
|             switch (reason) { | ||||
|             case ROAMED_TO: | ||||
|                 return SIPCallReportReason.ROAMED_TO; | ||||
|             case GOT_PUBLISH: | ||||
|                 return SIPCallReportReason.GOT_PUBLISH; | ||||
|             case ROAMED_FROM: | ||||
|                 return SIPCallReportReason.ROAMED_FROM; | ||||
|             default: | ||||
|                 return SIPCallReportReason.UNSUPPORTED; | ||||
|             } | ||||
|         } | ||||
|         return SIPCallReportReason.UNSUPPORTED; | ||||
|     } | ||||
|  | ||||
|     protected void processRealTimeSipCallStartEvent(int customerId, long equipmentId, long locationId, long eventTimestamp, | ||||
|             List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) { | ||||
|         if (videoVoiceReport.hasCallStart()) { | ||||
|  | ||||
|             CallStart apCallStart = videoVoiceReport.getCallStart(); | ||||
|  | ||||
|             RealTimeSipCallStartEvent cloudSipCallStartEvent = new RealTimeSipCallStartEvent(customerId, locationId, equipmentId, | ||||
|                     eventTimestamp); | ||||
|  | ||||
|             if (apCallStart.hasClientMac() && apCallStart.getClientMac().isValidUtf8()) { | ||||
|                 cloudSipCallStartEvent | ||||
|                         .setClientMacAddress(MacAddress.valueOf(apCallStart.getClientMac().toStringUtf8())); | ||||
|             } | ||||
|  | ||||
|             if (apCallStart.hasDeviceInfo()) { | ||||
|                 cloudSipCallStartEvent.setDeviceInfo(apCallStart.getDeviceInfo()); | ||||
|             } | ||||
|  | ||||
|             if (apCallStart.hasProviderDomain()) { | ||||
|                 cloudSipCallStartEvent.setProviderDomain(apCallStart.getProviderDomain()); | ||||
|             } | ||||
|  | ||||
|             if (apCallStart.hasSessionId()) { | ||||
|                 cloudSipCallStartEvent.setAssociationId(Long.toUnsignedString( apCallStart.getSessionId())); | ||||
|             } | ||||
|  | ||||
|             if (apCallStart.hasWifiSessionId()) { | ||||
|                 cloudSipCallStartEvent.setAssociationId(Long.toUnsignedString( apCallStart.getWifiSessionId())); | ||||
|             } | ||||
|  | ||||
|             if (apCallStart.getCodecsCount() > 0) { | ||||
|                 cloudSipCallStartEvent.setCodecs(apCallStart.getCodecsList()); | ||||
|             } | ||||
|  | ||||
|             if (apCallStart.hasChannel()) { | ||||
|                 cloudSipCallStartEvent.setChannel(apCallStart.getChannel()); | ||||
|             } | ||||
|  | ||||
|             if (apCallStart.hasBand()) { | ||||
|                 cloudSipCallStartEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility | ||||
|                         .getRadioTypeFromOpensyncStatsRadioBandType(apCallStart.getBand())); | ||||
|             } | ||||
|  | ||||
|             eventsList.add(cloudSipCallStartEvent); | ||||
|  | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     protected void processRealTimeSipCallStopEvent(int customerId, long equipmentId, long locationId, long eventTimestamp, | ||||
|             List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) { | ||||
|         if (videoVoiceReport.hasCallStop()) { | ||||
|  | ||||
|             CallStop apCallStop = videoVoiceReport.getCallStop(); | ||||
|  | ||||
|             RealTimeSipCallStopEvent cloudSipCallStopEvent = new RealTimeSipCallStopEvent(customerId, locationId, equipmentId, | ||||
|                     eventTimestamp); | ||||
|  | ||||
|             if (apCallStop.hasCallDuration()) { | ||||
|  | ||||
|                 cloudSipCallStopEvent.setCallDuration(apCallStop.getCallDuration()); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             if (apCallStop.hasClientMac() && apCallStop.getClientMac().isValidUtf8()) { | ||||
|  | ||||
|                 cloudSipCallStopEvent.setClientMacAddress(MacAddress.valueOf(apCallStop.getClientMac().toStringUtf8())); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             if (apCallStop.hasReason()) { | ||||
|  | ||||
|                 switch (apCallStop.getReason()) { | ||||
|                 case BYE_OK: | ||||
|                     cloudSipCallStopEvent.setReason(SipCallStopReason.BYE_OK); | ||||
|                     break; | ||||
|                 case CALL_DROPPED: | ||||
|                     cloudSipCallStopEvent.setReason(SipCallStopReason.DROPPED); | ||||
|                     break; | ||||
|  | ||||
|                 default: | ||||
|                     cloudSipCallStopEvent.setReason(SipCallStopReason.UNSUPPORTED); | ||||
|                 } | ||||
|  | ||||
|             } | ||||
|  | ||||
|             if (apCallStop.hasSessionId()) { | ||||
|  | ||||
|                 cloudSipCallStopEvent.setAssociationId(Long.toUnsignedString(  apCallStop.getSessionId())); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             if (apCallStop.hasWifiSessionId()) { | ||||
|                 cloudSipCallStopEvent.setSipCallId(apCallStop.getWifiSessionId()); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             if (apCallStop.getStatsCount() > 0) { | ||||
|                 cloudSipCallStopEvent.setStatuses(processRtpFlowStats(apCallStop.getStatsList())); | ||||
|             } | ||||
|  | ||||
|             if (apCallStop.hasProviderDomain()) { | ||||
|                 cloudSipCallStopEvent.setProviderDomain(apCallStop.getProviderDomain()); | ||||
|             } | ||||
|  | ||||
|             if (apCallStop.getCodecsCount() > 0) { | ||||
|                 cloudSipCallStopEvent.setCodecs(apCallStop.getCodecsList()); | ||||
|             } | ||||
|  | ||||
|             if (apCallStop.hasChannel()) { | ||||
|                 cloudSipCallStopEvent.setChannel(apCallStop.getChannel()); | ||||
|             } | ||||
|  | ||||
|             if (apCallStop.hasBand()) { | ||||
|                 cloudSipCallStopEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility | ||||
|                         .getRadioTypeFromOpensyncStatsRadioBandType(apCallStop.getBand())); | ||||
|             } | ||||
|  | ||||
|             eventsList.add(cloudSipCallStopEvent); | ||||
|  | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     protected void processRtsStartEvent(int customerId, long equipmentId, long locationId, long eventTimestamp, | ||||
|             List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) { | ||||
|         if (videoVoiceReport.hasStreamVideoServer()) { | ||||
|             StreamingVideoServerDetected apStreamVideoServer = videoVoiceReport.getStreamVideoServer(); | ||||
|             RealTimeStreamingStartEvent rtsStartEvent = new RealTimeStreamingStartEvent(customerId, locationId, equipmentId, | ||||
|                     eventTimestamp); | ||||
|             if (apStreamVideoServer.hasServerIp()) { | ||||
|                 try { | ||||
|                     rtsStartEvent | ||||
|                             .setServerIp(InetAddress.getByAddress(apStreamVideoServer.getServerIp().toByteArray())); | ||||
|                 } catch (UnknownHostException e) { | ||||
|                     LOG.error("Cannot get IP Address from {}", apStreamVideoServer.getServerIp(), e); | ||||
|                 } | ||||
|             } | ||||
|             if (apStreamVideoServer.hasStreamingVideoType()) { | ||||
|                 rtsStartEvent.setType(OvsdbToWlanCloudTypeMappingUtility | ||||
|                         .getCloudStreamingVideoTypeFromApReport(apStreamVideoServer.getStreamingVideoType())); | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoServer.hasServerDnsName()) { | ||||
|                 rtsStartEvent.setServerDnsName(apStreamVideoServer.getServerDnsName()); | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoServer.hasClientMac() && apStreamVideoServer.getClientMac().isValidUtf8()) { | ||||
|                 rtsStartEvent | ||||
|                         .setClientMacAddress(MacAddress.valueOf(apStreamVideoServer.getClientMac().toStringUtf8())); | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoServer.hasSessionId()) { | ||||
|                 rtsStartEvent.setSessionId(Long.toUnsignedString( apStreamVideoServer.getSessionId())); | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoServer.hasVideoSessionId()) { | ||||
|                 rtsStartEvent.setVideoSessionId(Long.toUnsignedString(  apStreamVideoServer.getVideoSessionId())); | ||||
|             } | ||||
|  | ||||
|             eventsList.add(rtsStartEvent); | ||||
|  | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private List<com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats> processRtpFlowStats( | ||||
|             List<OpensyncStats.RtpFlowStats> stats) { | ||||
|         List<com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats> cloudRtpFlowStatsList = new ArrayList<>(); | ||||
|         for (RtpFlowStats apRtpFlowStats : stats) { | ||||
|  | ||||
|             com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats cloudRtpStats = new com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats(); | ||||
|  | ||||
|             if (apRtpFlowStats.hasCodec()) { | ||||
|                 cloudRtpStats.setCodec(apRtpFlowStats.getCodec()); | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasBlockCodecs()) { | ||||
|                 cloudRtpStats.setBlockCodecs(apRtpFlowStats.getBlockCodecs().toByteArray()); | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasLatency()) { | ||||
|                 cloudRtpStats.setLatency(apRtpFlowStats.getLatency()); | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasRtpSeqFirst()) { | ||||
|                 cloudRtpStats.setFirstRTPSeq(apRtpFlowStats.getRtpSeqFirst()); | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasRtpSeqLast()) { | ||||
|                 cloudRtpStats.setLastRTPSeq(apRtpFlowStats.getRtpSeqLast()); | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasDirection()) { | ||||
|                 switch (apRtpFlowStats.getDirection()) { | ||||
|                 case RTP_DOWNSTREAM: | ||||
|                     cloudRtpStats.setDirection( | ||||
|                             com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowDirection.DOWNSTREAM); | ||||
|                     break; | ||||
|                 case RTP_UPSTREAM: | ||||
|                     cloudRtpStats.setDirection( | ||||
|                             com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowDirection.UPSTREAM); | ||||
|                     break; | ||||
|                 default: | ||||
|                     cloudRtpStats.setDirection( | ||||
|                             com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowDirection.UNSUPPORTED); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasRtpFlowType()) { | ||||
|                 switch (apRtpFlowStats.getRtpFlowType()) { | ||||
|                 case RTP_VIDEO: | ||||
|                     cloudRtpStats | ||||
|                             .setFlowType(com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowType.VIDEO); | ||||
|                     break; | ||||
|                 case RTP_VOICE: | ||||
|                     cloudRtpStats | ||||
|                             .setFlowType(com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowType.VOICE); | ||||
|                     break; | ||||
|                 default: | ||||
|                     cloudRtpStats.setFlowType( | ||||
|                             com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowType.UNSUPPORTED); | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasJitter()) { | ||||
|                 cloudRtpStats.setJitter(apRtpFlowStats.getJitter()); | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasTotalPacketsSent()) { | ||||
|                 cloudRtpStats.setTotalPacket(apRtpFlowStats.getTotalPacketsSent()); | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasTotalPacketsLost()) { | ||||
|                 cloudRtpStats.setTotalPacketLost(apRtpFlowStats.getTotalPacketsLost()); | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasMosx100()) { | ||||
|                 cloudRtpStats.setMosMultipliedBy100(apRtpFlowStats.getMosx100()); | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasPacketLossConsec()) { | ||||
|                 cloudRtpStats.setPacketLossConsecutive(apRtpFlowStats.getPacketLossConsec()); | ||||
|             } | ||||
|  | ||||
|             if (apRtpFlowStats.hasPacketLossPercent()) { | ||||
|                 cloudRtpStats.setPacketLossPercentage(apRtpFlowStats.getPacketLossPercent()); | ||||
|             } | ||||
|  | ||||
|             cloudRtpFlowStatsList.add(cloudRtpStats); | ||||
|  | ||||
|         } | ||||
|         return cloudRtpFlowStatsList; | ||||
|     } | ||||
|  | ||||
|     protected void processRtsStartSessionEvent(int customerId, long equipmentId, long locationId, long eventTimestamp, | ||||
|             List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) { | ||||
|         if (videoVoiceReport.hasStreamVideoSessionStart()) { | ||||
|             StreamingVideoSessionStart apStreamVideoSessionStart = videoVoiceReport.getStreamVideoSessionStart(); | ||||
|             RealTimeStreamingStartSessionEvent rtsStartSessionEvent = new RealTimeStreamingStartSessionEvent(customerId, | ||||
|                     locationId, equipmentId, eventTimestamp); | ||||
|             if (apStreamVideoSessionStart.hasClientMac() && apStreamVideoSessionStart.getClientMac().isValidUtf8()) { | ||||
|                 rtsStartSessionEvent.setClientMacAddress( | ||||
|                         MacAddress.valueOf(apStreamVideoSessionStart.getClientMac().toStringUtf8())); | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoSessionStart.hasServerIp()) { | ||||
|                 try { | ||||
|                     rtsStartSessionEvent.setServerIp( | ||||
|                             InetAddress.getByAddress(apStreamVideoSessionStart.getServerIp().toByteArray())); | ||||
|                 } catch (UnknownHostException e) { | ||||
|                     LOG.error("Cannot get IP Address from {}", apStreamVideoSessionStart.getServerIp(), e); | ||||
|  | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoSessionStart.hasSessionId()) { | ||||
|                 rtsStartSessionEvent.setSessionId(Long.toUnsignedString( apStreamVideoSessionStart.getSessionId())); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoSessionStart.hasStreamingVideoType()) { | ||||
|                 rtsStartSessionEvent.setType(OvsdbToWlanCloudTypeMappingUtility | ||||
|                         .getCloudStreamingVideoTypeFromApReport(apStreamVideoSessionStart.getStreamingVideoType())); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoSessionStart.hasVideoSessionId()) { | ||||
|                 rtsStartSessionEvent.setVideoSessionId(Long.toUnsignedString( apStreamVideoSessionStart.getVideoSessionId())); | ||||
|             } | ||||
|             eventsList.add(rtsStartSessionEvent); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     protected void processRtsStopEvent(int customerId, long equipmentId, long locationId, long eventTimestamp, | ||||
|             List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) { | ||||
|         if (videoVoiceReport.hasStreamVideoStop()) { | ||||
|             StreamingVideoStop apStreamVideoStop = videoVoiceReport.getStreamVideoStop(); | ||||
|             RealTimeStreamingStopEvent rtsStopEvent = new RealTimeStreamingStopEvent(customerId, locationId, equipmentId, | ||||
|                     eventTimestamp); | ||||
|             if (apStreamVideoStop.hasClientMac() && apStreamVideoStop.getClientMac().isValidUtf8()) { | ||||
|                 rtsStopEvent.setClientMacAddress(MacAddress.valueOf(apStreamVideoStop.getClientMac().toStringUtf8())); | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoStop.hasDurationSec()) { | ||||
|                 rtsStopEvent.setDurationInSecs(apStreamVideoStop.getDurationSec()); | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoStop.hasServerIp()) { | ||||
|                 try { | ||||
|                     rtsStopEvent.setServerIp(InetAddress.getByAddress(apStreamVideoStop.getServerIp().toByteArray())); | ||||
|                 } catch (UnknownHostException e) { | ||||
|                     LOG.error("Cannot get IP Address from {}", apStreamVideoStop.getServerIp(), e); | ||||
|  | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoStop.hasSessionId()) { | ||||
|                 rtsStopEvent.setSessionId(Long.toUnsignedString( apStreamVideoStop.getSessionId())); | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoStop.hasStreamingVideoType()) { | ||||
|  | ||||
|                 rtsStopEvent.setType(OvsdbToWlanCloudTypeMappingUtility | ||||
|                         .getCloudStreamingVideoTypeFromApReport(apStreamVideoStop.getStreamingVideoType())); | ||||
|  | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoStop.hasTotalBytes()) { | ||||
|                 rtsStopEvent.setTotalBytes(apStreamVideoStop.getTotalBytes()); | ||||
|             } | ||||
|  | ||||
|             if (apStreamVideoStop.hasVideoSessionId()) { | ||||
|                 rtsStopEvent.setVideoSessionId(Long.toUnsignedString(  apStreamVideoStop.getVideoSessionId())); | ||||
|             } | ||||
|  | ||||
|             eventsList.add(rtsStopEvent); | ||||
|  | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,3 @@ | ||||
|  | ||||
| package com.telecominfraproject.wlan.opensync.external.integration; | ||||
|  | ||||
| import static org.junit.Assert.assertNotNull; | ||||
| @@ -6,7 +5,6 @@ import static org.junit.Assert.assertNull; | ||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.EnumMap; | ||||
| import java.util.HashMap; | ||||
| import java.util.HashSet; | ||||
| import java.util.List; | ||||
| @@ -50,7 +48,6 @@ import com.telecominfraproject.wlan.core.model.entity.CountryCode; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.EquipmentType; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||
| import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse; | ||||
| import com.telecominfraproject.wlan.customer.models.Customer; | ||||
| import com.telecominfraproject.wlan.customer.models.CustomerDetails; | ||||
| import com.telecominfraproject.wlan.customer.models.EquipmentAutoProvisioningSettings; | ||||
| @@ -67,10 +64,8 @@ import com.telecominfraproject.wlan.location.models.LocationType; | ||||
| import com.telecominfraproject.wlan.location.service.LocationServiceInterface; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.utils.MqttStatsPublisher; | ||||
| import com.telecominfraproject.wlan.profile.ProfileServiceInterface; | ||||
| import com.telecominfraproject.wlan.profile.models.Profile; | ||||
| import com.telecominfraproject.wlan.profile.models.ProfileType; | ||||
| @@ -79,13 +74,11 @@ import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration; | ||||
| import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration; | ||||
| import com.telecominfraproject.wlan.routing.RoutingServiceInterface; | ||||
| import com.telecominfraproject.wlan.status.StatusServiceInterface; | ||||
| import com.telecominfraproject.wlan.status.equipment.models.EquipmentChannelStatusData; | ||||
| import com.telecominfraproject.wlan.status.equipment.models.EquipmentProtocolStatusData; | ||||
| import com.telecominfraproject.wlan.status.equipment.models.EquipmentUpgradeStatusData; | ||||
| import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSID; | ||||
| import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSIDs; | ||||
| import com.telecominfraproject.wlan.status.equipment.report.models.ClientConnectionDetails; | ||||
| import com.telecominfraproject.wlan.status.equipment.report.models.WiredPortStatus; | ||||
| import com.telecominfraproject.wlan.status.models.Status; | ||||
| import com.telecominfraproject.wlan.status.models.StatusDataType; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Uuid; | ||||
| @@ -94,13 +87,16 @@ import sts.OpensyncStats.AssocType; | ||||
| import sts.OpensyncStats.Client; | ||||
| import sts.OpensyncStats.ClientReport; | ||||
| import sts.OpensyncStats.EventReport; | ||||
| import sts.OpensyncStats.EventReport.ClientAssocEvent; | ||||
| import sts.OpensyncStats.EventType; | ||||
| import sts.OpensyncStats.RadioBandType; | ||||
| import sts.OpensyncStats.Report; | ||||
|  | ||||
| @RunWith(SpringRunner.class) | ||||
| @ActiveProfiles(profiles = {"integration_test",}) | ||||
| @ActiveProfiles(profiles = { "integration_test", }) | ||||
| @SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OpensyncExternalIntegrationCloudTest.class) | ||||
| @Import(value = {AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class, OpensyncExternalIntegrationCloudTest.Config.class, | ||||
| @Import(value = { AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class, | ||||
|         OpensyncExternalIntegrationCloudTest.Config.class, | ||||
|  | ||||
| }) | ||||
| public class OpensyncExternalIntegrationCloudTest { | ||||
| @@ -130,11 +126,12 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|     @MockBean(answer = Answers.RETURNS_MOCKS) | ||||
|     OpensyncCloudGatewayController gatewayController; | ||||
|     @MockBean | ||||
|     MqttStatsPublisher opensyncExternalIntegrationMqttProcessor; | ||||
|     OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttProcessor; | ||||
|  | ||||
|     @Autowired | ||||
|     OpensyncExternalIntegrationCloud opensyncExternalIntegrationCloud; | ||||
|  | ||||
|  | ||||
|     MockitoSession mockito; | ||||
|  | ||||
|     @Configuration | ||||
| @@ -165,18 +162,30 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testGetCustomerEquipment() { | ||||
|  | ||||
|         Equipment equipment = new Equipment(); | ||||
|         equipment.setDetails(ApElementConfiguration.createWithDefaults()); | ||||
|  | ||||
|         Mockito.when( | ||||
|                 equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))) | ||||
|                 .thenReturn(equipment); | ||||
|         assertNotNull(opensyncExternalIntegrationCloud.getCustomerEquipment("Test_Client_21P10C68818122")); | ||||
|         assertNull(opensyncExternalIntegrationCloud.getCustomerEquipment("Test_Client_21P10C68818133")); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testApConnected() { | ||||
|  | ||||
|         Location location = new Location(); | ||||
|         location.setId(8L); | ||||
|         location.setCustomerId(2); | ||||
|         LocationDetails details = LocationDetails.createWithDefaults(); | ||||
|         details.setCountryCode(CountryCode.CA); | ||||
|         location.setDetails(details); | ||||
|         location.setDetails(LocationDetails.createWithDefaults()); | ||||
|         location.setName("Location-UT"); | ||||
|         location.setLocationType(LocationType.BUILDING); | ||||
|         Mockito.when(locationServiceInterface.getOrNull(Mockito.anyLong())).thenReturn(location); | ||||
|  | ||||
|         Customer customer = new Customer(); | ||||
|         customer.setId(2); | ||||
|         CustomerDetails customerDetails = new CustomerDetails(); | ||||
| @@ -195,21 +204,25 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         ssidProfile.setDetails(SsidConfiguration.createWithDefaults()); | ||||
|  | ||||
|         apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId())); | ||||
|         Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))) | ||||
|                 .thenAnswer(i -> i.getArguments()[0]); | ||||
|         // .thenReturn(ssidProfile); | ||||
|         Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))) | ||||
|                 .thenAnswer(i -> i.getArguments()[0]); | ||||
|  | ||||
|         Status fwStatus = new Status(); | ||||
|         fwStatus.setDetails(new EquipmentUpgradeStatusData()); | ||||
|         Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE))) | ||||
|                 .thenReturn(fwStatus); | ||||
|         Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), | ||||
|                 ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus); | ||||
|  | ||||
|         Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings()); | ||||
|         Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()) | ||||
|                 .thenReturn(new CustomerFirmwareTrackSettings()); | ||||
|         CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord(); | ||||
|         fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings()); | ||||
|         fwTrackRecord.setTrackRecordId(3); | ||||
|         fwTrackRecord.setCustomerId(2); | ||||
|         Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord); | ||||
|         Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())) | ||||
|                 .thenReturn(fwTrackRecord); | ||||
|  | ||||
|         Equipment equipment = new Equipment(); | ||||
|         equipment.setCustomerId(2); | ||||
| @@ -221,18 +234,24 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         equipment.setDetails(ApElementConfiguration.createWithDefaults()); | ||||
|  | ||||
|         Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment); | ||||
|         Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment); | ||||
|         Mockito.when( | ||||
|                 equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))) | ||||
|                 .thenReturn(equipment); | ||||
|  | ||||
|         Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))) | ||||
|                 .thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))) | ||||
|                 .thenAnswer(i -> i.getArguments()[0]); | ||||
|  | ||||
|         OvsdbSession session = Mockito.mock(OvsdbSession.class); | ||||
|  | ||||
|         Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session); | ||||
|  | ||||
|         opensyncExternalIntegrationCloud.apConnected("Test_Client_21P10C68818122", createConnectNodeInfo()); | ||||
|  | ||||
|  | ||||
|         Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting(); | ||||
|         Mockito.verify(locationServiceInterface).getOrNull(ArgumentMatchers.anyLong()); | ||||
|         Mockito.verifyNoInteractions(locationServiceInterface); | ||||
|  | ||||
|     } | ||||
|  | ||||
| @@ -241,12 +260,11 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         Location location = new Location(); | ||||
|         location.setId(8L); | ||||
|         location.setCustomerId(2); | ||||
|         LocationDetails details = LocationDetails.createWithDefaults(); | ||||
|         details.setCountryCode(CountryCode.CA); | ||||
|         location.setDetails(details); | ||||
|         location.setDetails(LocationDetails.createWithDefaults()); | ||||
|         location.setName("Location-UT"); | ||||
|         location.setLocationType(LocationType.BUILDING); | ||||
|         Mockito.when(locationServiceInterface.getOrNull(8L)).thenReturn(location); | ||||
|  | ||||
|         Mockito.when(locationServiceInterface.get(8L)).thenReturn(location); | ||||
|  | ||||
|         Customer customer = new Customer(); | ||||
|         customer.setId(2); | ||||
| @@ -258,7 +276,7 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         customer.setDetails(customerDetails); | ||||
|  | ||||
|         Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer); | ||||
|  | ||||
|          | ||||
|         Profile rfProfile = new Profile(); | ||||
|         rfProfile.setId(1); | ||||
|         rfProfile.setName("testRfProfile"); | ||||
| @@ -273,20 +291,21 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         Profile ssidProfile = new Profile(); | ||||
|         ssidProfile.setId(2); | ||||
|         ssidProfile.setDetails(SsidConfiguration.createWithDefaults()); | ||||
|  | ||||
|          | ||||
|         Set<Long> childProfileIds = new HashSet<>(); | ||||
|         childProfileIds.add(rfProfile.getId()); | ||||
|         childProfileIds.add(ssidProfile.getId()); | ||||
|         childProfileIds.add(rfProfile.getId());  | ||||
|         childProfileIds.add(ssidProfile.getId());    | ||||
|         apProfile.setChildProfileIds(childProfileIds); | ||||
|  | ||||
|         Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile).thenReturn(ssidProfile).thenReturn(rfProfile); | ||||
|         Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile) | ||||
|                 .thenReturn(ssidProfile).thenReturn(rfProfile); | ||||
|         Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile); | ||||
|  | ||||
|          | ||||
|         List<Profile> profileList = new ArrayList<>(); | ||||
|         profileList.add(apProfile); | ||||
|         profileList.add(rfProfile); | ||||
|         profileList.add(ssidProfile); | ||||
|  | ||||
|          | ||||
|         Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList); | ||||
|  | ||||
|         Equipment equipment = new Equipment(); | ||||
| @@ -300,21 +319,27 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|  | ||||
|         Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment); | ||||
|  | ||||
|         Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(null); | ||||
|         Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))) | ||||
|                 .thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))) | ||||
|                 .thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when( | ||||
|                 equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))) | ||||
|                 .thenReturn(null); | ||||
|  | ||||
|         Status fwStatus = new Status(); | ||||
|         fwStatus.setDetails(new EquipmentUpgradeStatusData()); | ||||
|         Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE))) | ||||
|                 .thenReturn(fwStatus); | ||||
|         Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), | ||||
|                 ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus); | ||||
|  | ||||
|         Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings()); | ||||
|         Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()) | ||||
|                 .thenReturn(new CustomerFirmwareTrackSettings()); | ||||
|         CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord(); | ||||
|         fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings()); | ||||
|         fwTrackRecord.setTrackRecordId(3); | ||||
|         fwTrackRecord.setCustomerId(2); | ||||
|         Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord); | ||||
|         Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())) | ||||
|                 .thenReturn(fwTrackRecord); | ||||
|  | ||||
|         OvsdbSession session = Mockito.mock(OvsdbSession.class); | ||||
|  | ||||
| @@ -326,7 +351,7 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         Mockito.verify(customerServiceInterface).getOrNull(ArgumentMatchers.anyInt()); | ||||
|         Mockito.verify(equipmentServiceInterface).getByInventoryIdOrNull("Test_Client_21P10C68818122"); | ||||
|         Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting(); | ||||
|         Mockito.verify(locationServiceInterface, Mockito.times(2)).getOrNull(ArgumentMatchers.anyLong()); | ||||
|         Mockito.verify(locationServiceInterface).get(ArgumentMatchers.anyLong()); | ||||
|  | ||||
|     } | ||||
|  | ||||
| @@ -339,19 +364,18 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         ssidProfile.setDetails(SsidConfiguration.createWithDefaults()); | ||||
|  | ||||
|         apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId())); | ||||
|         Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))) | ||||
|                 .thenAnswer(i -> i.getArguments()[0]); | ||||
|         // .thenReturn(ssidProfile); | ||||
|         Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))) | ||||
|                 .thenAnswer(i -> i.getArguments()[0]); | ||||
|  | ||||
|         Location location = new Location(); | ||||
|         location.setId(8L); | ||||
|         location.setCustomerId(2); | ||||
|         LocationDetails details = LocationDetails.createWithDefaults(); | ||||
|         details.setCountryCode(CountryCode.CA); | ||||
|         location.setDetails(details); | ||||
|         location.setDetails(LocationDetails.createWithDefaults()); | ||||
|         location.setName("Location-UT"); | ||||
|         location.setLocationType(LocationType.BUILDING); | ||||
|         Mockito.when(locationServiceInterface.get(8L)).thenReturn(location); | ||||
|  | ||||
|         Equipment equipment = new Equipment(); | ||||
|         equipment.setCustomerId(2); | ||||
| @@ -363,20 +387,26 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         equipment.setDetails(ApElementConfiguration.createWithDefaults()); | ||||
|         Status fwStatus = new Status(); | ||||
|         fwStatus.setDetails(new EquipmentUpgradeStatusData()); | ||||
|         Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE))) | ||||
|                 .thenReturn(fwStatus); | ||||
|         Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), | ||||
|                 ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus); | ||||
|  | ||||
|         Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings()); | ||||
|         Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()) | ||||
|                 .thenReturn(new CustomerFirmwareTrackSettings()); | ||||
|         CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord(); | ||||
|         fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings()); | ||||
|         fwTrackRecord.setTrackRecordId(3); | ||||
|         fwTrackRecord.setCustomerId(2); | ||||
|         Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord); | ||||
|         Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())) | ||||
|                 .thenReturn(fwTrackRecord); | ||||
|         Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment); | ||||
|  | ||||
|         Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment); | ||||
|         Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))) | ||||
|                 .thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))) | ||||
|                 .thenAnswer(i -> i.getArguments()[0]); | ||||
|         Mockito.when( | ||||
|                 equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))) | ||||
|                 .thenReturn(equipment); | ||||
|  | ||||
|         Customer customer = new Customer(); | ||||
|         customer.setId(2); | ||||
| @@ -422,7 +452,8 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         ssidProfile.setDetails(SsidConfiguration.createWithDefaults()); | ||||
|  | ||||
|         List<Profile> profileWithChildren = ImmutableList.of(apProfile, ssidProfile); | ||||
|         Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileWithChildren); | ||||
|         Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())) | ||||
|                 .thenReturn(profileWithChildren); | ||||
|  | ||||
|         assertNotNull(opensyncExternalIntegrationCloud.getApConfig("Test_Client_21P10C68818122")); | ||||
|  | ||||
| @@ -445,10 +476,21 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testExtractApIdFromTopic() { | ||||
|  | ||||
|         String topic = "/ap/Test_Client_21P10C68818122/opensync"; | ||||
|  | ||||
|         assertEquals("Test_Client_21P10C68818122", | ||||
|                 OpensyncExternalIntegrationMqttMessageProcessor.extractApIdFromTopic(topic)); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testProcessMqttMessageStringReport() { | ||||
|  | ||||
|         Report report = Report.newBuilder().setNodeID("21P10C68818122").addAllClients(getOpensyncStatsClientReportsList()) | ||||
|         Report report = Report.newBuilder().setNodeID("21P10C68818122") | ||||
|                 .addAllClients(getOpensyncStatsClientReportsList()) | ||||
|                 .addAllEventReport(getOpensyncStatsEventReportsList()).build(); | ||||
|  | ||||
|         String topic = "/ap/Test_Client_21P10C68818122/opensync"; | ||||
| @@ -461,31 +503,39 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         activeBssidsDetails.setActiveBSSIDs(getActiveBssidList()); | ||||
|         bssidStatus.setDetails(activeBssidsDetails); | ||||
|  | ||||
|         Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))) | ||||
|                 .thenReturn(bssidStatus); | ||||
|         Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), | ||||
|                 ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))).thenReturn(bssidStatus); | ||||
|  | ||||
|         Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus); | ||||
|         com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client(); | ||||
|         clientInstance.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D")); | ||||
|         clientInstance.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D")); | ||||
|         clientInstance.setDetails(new ClientInfoDetails()); | ||||
|         com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client(); | ||||
|         clientInstance2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69")); | ||||
|         clientInstance2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69")); | ||||
|         clientInstance2.setDetails(new ClientInfoDetails()); | ||||
|         Mockito.when(clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class))).thenReturn(clientInstance) | ||||
|                 .thenReturn(clientInstance2); | ||||
|         Mockito.when(clientServiceInterface.update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class))).thenReturn(clientInstance) | ||||
|                 .thenReturn(clientInstance2); | ||||
|         Mockito.when( | ||||
|                 clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class))) | ||||
|                 .thenReturn(clientInstance).thenReturn(clientInstance2); | ||||
|         Mockito.when(clientServiceInterface | ||||
|                 .update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class))) | ||||
|                 .thenReturn(clientInstance).thenReturn(clientInstance2); | ||||
|  | ||||
|         ClientSession clientSession = new ClientSession(); | ||||
|         clientSession.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D")); | ||||
|         clientSession.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D")); | ||||
|         clientSession.setDetails(new ClientSessionDetails()); | ||||
|         ClientSession clientSession2 = new ClientSession(); | ||||
|         clientSession2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69")); | ||||
|         clientSession2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69")); | ||||
|         clientSession2.setDetails(new ClientSessionDetails()); | ||||
|         Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.any(MacAddress.class))) | ||||
|         Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), | ||||
|                 ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2); | ||||
|  | ||||
|         Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class))) | ||||
|                 .thenReturn(clientSession).thenReturn(clientSession2); | ||||
|  | ||||
|         Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class))).thenReturn(clientSession).thenReturn(clientSession2); | ||||
|         opensyncExternalIntegrationCloud.processMqttMessage(topic, report); | ||||
|  | ||||
|         Mockito.verify(opensyncExternalIntegrationMqttProcessor, Mockito.times(1)).processMqttMessage(topic, report); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
| @@ -553,19 +603,19 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|  | ||||
|         OvsdbSession session = Mockito.mock(OvsdbSession.class); | ||||
|         Mockito.when(session.getEquipmentId()).thenReturn(1L); | ||||
|         Mockito.when(session.getCustomerId()).thenReturn(2); | ||||
|  | ||||
|         Equipment equipment = new Equipment(); | ||||
|         equipment.setCustomerId(2); | ||||
|         equipment.setId(1L); | ||||
|         equipment.setCustomerId(1); | ||||
|         equipment.setEquipmentType(EquipmentType.AP); | ||||
|         equipment.setInventoryId(apId); | ||||
|         equipment.setProfileId(1); | ||||
|         equipment.setDetails(ApElementConfiguration.createWithDefaults()); | ||||
|  | ||||
|         Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment); | ||||
|         Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment); | ||||
|         Mockito.when(equipmentServiceInterface.get(equipment.getId())).thenReturn(equipment); | ||||
|         Mockito.when(equipmentServiceInterface.update(equipment)).thenReturn(equipment); | ||||
|  | ||||
|          | ||||
|         Profile rfProfile = new Profile(); | ||||
|         rfProfile.setName("testRfProfile"); | ||||
|         rfProfile.setId(2); | ||||
| @@ -573,28 +623,30 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         rfProfile.setProfileType(ProfileType.rf); | ||||
|         Set<Long> childProfileIds = new HashSet<>(); | ||||
|         childProfileIds.add(rfProfile.getId()); | ||||
|  | ||||
|          | ||||
|         Profile apProfile = new Profile(); | ||||
|         apProfile.setName("testApProfile"); | ||||
|         apProfile.setId(1); | ||||
|         apProfile.setProfileType(ProfileType.equipment_ap); | ||||
|         apProfile.setChildProfileIds(childProfileIds); | ||||
|  | ||||
|          | ||||
|         List<Profile> profileList = new ArrayList<>(); | ||||
|         profileList.add(apProfile); | ||||
|         profileList.add(rfProfile); | ||||
|  | ||||
|          | ||||
|         Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList); | ||||
|  | ||||
|         Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session); | ||||
|  | ||||
|         opensyncExternalIntegrationCloud.wifiVIFStateDbTableUpdate(ImmutableList.of(vifState1, vifState2, vifState3), apId); | ||||
|         opensyncExternalIntegrationCloud.wifiVIFStateDbTableUpdate(ImmutableList.of(vifState1, vifState2, vifState3), | ||||
|                 apId); | ||||
|  | ||||
|         Mockito.verify(session).getCustomerId(); | ||||
|         Mockito.verify(session).getEquipmentId(); | ||||
|         Mockito.verify(ovsdbSessionMapInterface).getSession(apId); | ||||
|         Mockito.verify(equipmentServiceInterface).getOrNull(1L); | ||||
|         Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS); | ||||
|         Mockito.verify(equipmentServiceInterface).getByInventoryIdOrNull(apId); | ||||
|  | ||||
|         Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS); | ||||
|         Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS); | ||||
|         Mockito.verify(statusServiceInterface).update(clientStatus); | ||||
|  | ||||
| @@ -626,7 +678,8 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         radioState3.setChannel(149); | ||||
|         radioState3.setVifStates(ImmutableSet.of(new Uuid(UUID.randomUUID()))); | ||||
|         radioState3.setFreqBand(RadioType.is5GHzL); | ||||
|         radioState3.setAllowedChannels(ImmutableSet.of(00, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165)); | ||||
|         radioState3.setAllowedChannels( | ||||
|                 ImmutableSet.of(00, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165)); | ||||
|         radioState3.setTxPower(32); | ||||
|         radioState3.setEnabled(true); | ||||
|         radioState3.setCountry("CA"); | ||||
| @@ -650,18 +703,6 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|  | ||||
|         Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.PROTOCOL)).thenReturn(protocolStatus); | ||||
|  | ||||
|         Status channelStatus = new Status(); | ||||
|         channelStatus.setCustomerId(2); | ||||
|         channelStatus.setEquipmentId(1L); | ||||
|         EquipmentChannelStatusData channelStatusData = new EquipmentChannelStatusData(); | ||||
|         Map<RadioType, Integer> channelStatusDataMap = new EnumMap<>(RadioType.class); | ||||
|         channelStatusDataMap.put(RadioType.is2dot4GHz, 6); | ||||
|         channelStatusDataMap.put(RadioType.is5GHzL, 36); | ||||
|         channelStatusDataMap.put(RadioType.is5GHzU, 157); | ||||
|         channelStatusData.setChannelNumberStatusDataMap(channelStatusDataMap); | ||||
|         channelStatus.setDetails(channelStatusData); | ||||
|  | ||||
|         Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.RADIO_CHANNEL)).thenReturn(channelStatus); | ||||
|         Status bssidStatus = new Status(); | ||||
|         bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS); | ||||
|         bssidStatus.setCustomerId(2); | ||||
| @@ -672,6 +713,8 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|  | ||||
|         Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS)).thenReturn(bssidStatus); | ||||
|  | ||||
|         Mockito.when(statusServiceInterface.update(bssidStatus)).thenReturn(bssidStatus); | ||||
|  | ||||
|         Status clientStatus = new Status(); | ||||
|         clientStatus.setCustomerId(2); | ||||
|         clientStatus.setEquipmentId(1L); | ||||
| @@ -683,45 +726,27 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         clientStatus.setDetails(clientConnectionDetails); | ||||
|  | ||||
|         Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS)).thenReturn(clientStatus); | ||||
|         Mockito.when(statusServiceInterface.update(Mockito.any(Status.class))).thenReturn(channelStatus).thenReturn(bssidStatus).thenReturn(clientStatus); | ||||
|         Mockito.when(statusServiceInterface.update(clientStatus)).thenReturn(clientStatus); | ||||
|  | ||||
|         OvsdbSession session = Mockito.mock(OvsdbSession.class); | ||||
|         Mockito.when(session.getEquipmentId()).thenReturn(1L); | ||||
|         Mockito.when(session.getCustomerId()).thenReturn(2); | ||||
|  | ||||
|         Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session); | ||||
|  | ||||
|         opensyncExternalIntegrationCloud.wifiRadioStatusDbTableUpdate(ImmutableList.of(radioState1, radioState2, radioState3), apId); | ||||
|         opensyncExternalIntegrationCloud | ||||
|                 .wifiRadioStatusDbTableUpdate(ImmutableList.of(radioState1, radioState2, radioState3), apId); | ||||
|  | ||||
|         Mockito.verify(session).getCustomerId(); | ||||
|         Mockito.verify(session).getEquipmentId(); | ||||
|  | ||||
|         Mockito.verify(ovsdbSessionMapInterface).getSession(apId); | ||||
|         Mockito.verify(equipmentServiceInterface, Mockito.times(1)).getByInventoryIdOrNull(apId); | ||||
|         Mockito.verify(statusServiceInterface, Mockito.times(1)).getOrNull(1, 1L, StatusDataType.RADIO_CHANNEL); | ||||
|         Mockito.verify(equipmentServiceInterface, Mockito.times(2)).getByInventoryIdOrNull(apId); | ||||
|  | ||||
|         Mockito.verify(statusServiceInterface, Mockito.times(3)).getOrNull(1, 1L, StatusDataType.PROTOCOL); | ||||
|         Mockito.verify(statusServiceInterface, Mockito.times(3)).getOrNull(2, 1L, StatusDataType.PROTOCOL); | ||||
|         Mockito.verify(statusServiceInterface, Mockito.never()).update(bssidStatus); | ||||
|  | ||||
|     } | ||||
|      | ||||
|     @Test | ||||
|     public void testParseRawDataToWiredPortStatus() { | ||||
|     	 Map<String, List<WiredPortStatus>> portStatus = new HashMap<>(); | ||||
|     	OpensyncAPInetState inetState = new OpensyncAPInetState(); | ||||
|     	inetState.setIfType("bridge"); | ||||
|     	@SuppressWarnings("serial") | ||||
| 		Map<String, String> ethPorts = new HashMap<String, String>(){{ | ||||
|     	     put("eth0", "up lan 1000Mbps full"); | ||||
|     	     put("eth1", "up wan 1000Mbps full"); | ||||
|     	     put("eth2", "incorrect value"); | ||||
|     	}}; | ||||
|     	inetState.setIfName("lan"); | ||||
|     	inetState.setEthPorts(ethPorts); | ||||
|     	opensyncExternalIntegrationCloud.parseRawDataToWiredPortStatus(2, 1, portStatus, inetState); | ||||
|     	assertEquals(1, portStatus.size()); | ||||
|     	assertEquals(true, portStatus.containsKey("lan")); | ||||
|     	assertEquals(2, portStatus.get("lan").size()); | ||||
|     	assertEquals("lan", portStatus.get("lan").get(0).getCurrentIfName()); | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
|     public void testWifiInetStateDbTableUpdate() { | ||||
| @@ -740,23 +765,6 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|  | ||||
|     @Test | ||||
|     public void testWifiVIFStateDbTableDelete() { | ||||
|         String apId = "Test_Client_21P10C68818122"; | ||||
|  | ||||
|         Equipment equipment = new Equipment(); | ||||
|         equipment.setCustomerId(2); | ||||
|         equipment.setId(1L); | ||||
|         equipment.setEquipmentType(EquipmentType.AP); | ||||
|         equipment.setInventoryId(apId); | ||||
|         equipment.setProfileId(1); | ||||
|         equipment.setDetails(ApElementConfiguration.createWithDefaults()); | ||||
|  | ||||
|         Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment); | ||||
|         Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment); | ||||
|  | ||||
|         OvsdbSession session = new OvsdbSession(); | ||||
|         session.setApId(apId); | ||||
|         session.setEquipmentId(1L); | ||||
|         Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session); | ||||
|  | ||||
|         Status bssidStatus = new Status(); | ||||
|         bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS); | ||||
| @@ -766,36 +774,16 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         activeBssidsDetails.setActiveBSSIDs(getActiveBssidList()); | ||||
|         bssidStatus.setDetails(activeBssidsDetails); | ||||
|  | ||||
|         Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))) | ||||
|                 .thenReturn(bssidStatus); | ||||
|         PaginationResponse<ClientSession> pr = Mockito.mock(PaginationResponse.class,Mockito.RETURNS_MOCKS); | ||||
|         Mockito.when(clientServiceInterface.getSessionsForCustomer(Mockito.anyInt(), Mockito.anySet(), | ||||
|                 Mockito.anySet(), Mockito.isNull(), Mockito.isNull(),  Mockito.any())).thenReturn(pr); | ||||
|         Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), | ||||
|                 ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))).thenReturn(bssidStatus); | ||||
|  | ||||
|  | ||||
|         opensyncExternalIntegrationCloud.wifiVIFStateDbTableDelete(ImmutableList.of(new OpensyncAPVIFState()), "Test_Client_21P10C68818122"); | ||||
|         opensyncExternalIntegrationCloud.wifiVIFStateDbTableDelete(ImmutableList.of(new OpensyncAPVIFState()), "apId"); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testWifiAssociatedClientsDbTableDelete() { | ||||
|         String apId = "Test_Client_21P10C68818122"; | ||||
|  | ||||
|         Equipment equipment = new Equipment(); | ||||
|         equipment.setCustomerId(2); | ||||
|         equipment.setId(1L); | ||||
|         equipment.setEquipmentType(EquipmentType.AP); | ||||
|         equipment.setInventoryId(apId); | ||||
|         equipment.setProfileId(1); | ||||
|         equipment.setDetails(ApElementConfiguration.createWithDefaults()); | ||||
|  | ||||
|         Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment); | ||||
|         Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment); | ||||
|  | ||||
|         OvsdbSession session = new OvsdbSession(); | ||||
|         session.setApId(apId); | ||||
|         session.setEquipmentId(1L); | ||||
|         Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session); | ||||
|         opensyncExternalIntegrationCloud.wifiAssociatedClientsDbTableDelete("7C:AB:60:E6:EA:4D", "Test_Client_21P10C68818122"); | ||||
|         opensyncExternalIntegrationCloud.wifiAssociatedClientsDbTableDelete("7C:AB:60:E6:EA:4D", "apId"); | ||||
|     } | ||||
|  | ||||
|     // Helper methods | ||||
| @@ -823,9 +811,13 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         return bssidList; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     private List<EventReport> getOpensyncStatsEventReportsList() { | ||||
|  | ||||
|         sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent.getDefaultInstance().toBuilder(); | ||||
|  | ||||
|         List<ClientAssocEvent> clientAssocEventList = new ArrayList<>(); | ||||
|         sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent | ||||
|                 .getDefaultInstance().toBuilder(); | ||||
|         clientAssocBuilder.setAssocType(AssocType.ASSOC); | ||||
|         clientAssocBuilder.setBand(RadioBandType.BAND5GU); | ||||
|         clientAssocBuilder.setRssi(-65); | ||||
| @@ -835,8 +827,22 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         clientAssocBuilder.setInternalSc(1); | ||||
|         clientAssocBuilder.setSsid("ssid-3"); | ||||
|         clientAssocBuilder.setStatus(1); | ||||
|         clientAssocBuilder.setTimestampMs(System.currentTimeMillis()); | ||||
|  | ||||
|         sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder2 = EventReport.ClientAssocEvent | ||||
|                 .getDefaultInstance().toBuilder(); | ||||
|         clientAssocBuilder2.setAssocType(AssocType.ASSOC); | ||||
|         clientAssocBuilder2.setBand(RadioBandType.BAND2G); | ||||
|         clientAssocBuilder2.setRssi(-65); | ||||
|         clientAssocBuilder2.setStaMac("7C:AB:60:E6:EA:4D"); | ||||
|         clientAssocBuilder2.setStaMacBytes(ByteString.copyFrom("7C:AB:60:E6:EA:4D".getBytes())); | ||||
|         clientAssocBuilder2.setSessionId(1000L); | ||||
|         clientAssocBuilder2.setInternalSc(1); | ||||
|         clientAssocBuilder2.setSsid("ssid-1"); | ||||
|         clientAssocBuilder2.setStatus(1); | ||||
|  | ||||
|         clientAssocEventList.add(clientAssocBuilder.build()); | ||||
|         clientAssocEventList.add(clientAssocBuilder2.build()); | ||||
|          | ||||
|         List<EventReport> eventReportList = new ArrayList<>(); | ||||
|  | ||||
|         EventReport.Builder eventReportBuilder = EventReport.getDefaultInstance().toBuilder(); | ||||
| @@ -845,7 +851,7 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|  | ||||
|         clientSessionBuilder.setSessionId(1000L); | ||||
|  | ||||
|         clientSessionBuilder.setClientAssocEvent(clientAssocBuilder.build()); | ||||
|         clientSessionBuilder.addAllClientAssocEvent(clientAssocEventList); | ||||
|         List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>(); | ||||
|         clientSessionList.add(clientSessionBuilder.build()); | ||||
|  | ||||
| @@ -853,26 +859,29 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|  | ||||
|         eventReportList.add(eventReportBuilder.build()); | ||||
|  | ||||
|  | ||||
|         return eventReportList; | ||||
|  | ||||
|  | ||||
|     } | ||||
|  | ||||
|     private List<ClientReport> getOpensyncStatsClientReportsList() { | ||||
|         int rssi = Long.valueOf(4294967239L).intValue(); | ||||
|  | ||||
|         Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786).setRxRate(24000.0).setTxBytes(1208133026) | ||||
|                 .setTxRate(433300.0).setRssi(758722570).setRxFrames(10000).setTxFrames(10000).setTxRate(24000.0).build(); | ||||
|         Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1").setConnected(true).setDurationMs(59977) | ||||
|                 .setStats(clientStats).build(); | ||||
|         Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3").setConnected(true).setDurationMs(298127) | ||||
|                 .setStats(clientStats).build(); | ||||
|         Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786) | ||||
|                 .setRxRate(24000.0).setTxBytes(1208133026).setTxRate(433300.0).setRssi(758722570).setRxFrames(10000) | ||||
|                 .setTxFrames(10000).setTxRate(24000.0).build(); | ||||
|         Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1") | ||||
|                 .setConnected(true).setDurationMs(59977).setStats(clientStats).build(); | ||||
|         Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3") | ||||
|                 .setConnected(true).setDurationMs(298127).setStats(clientStats).build(); | ||||
|  | ||||
|         ClientReport clientReport2g = | ||||
|                 ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G).setChannel(6).addAllClientList(ImmutableList.of(client2g)).build(); | ||||
|         ClientReport clientReport5gl = | ||||
|                 ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL).setChannel(36).addAllClientList(new ArrayList<Client>()).build(); | ||||
|         ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU).setChannel(157) | ||||
|                 .addAllClientList(ImmutableList.of(client5gu)).build(); | ||||
|         ClientReport clientReport2g = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G) | ||||
|                 .setChannel(6).addAllClientList(ImmutableList.of(client2g)).build(); | ||||
|         ClientReport clientReport5gl = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL) | ||||
|                 .setChannel(36).addAllClientList(new ArrayList<Client>()).build(); | ||||
|         ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU) | ||||
|                 .setChannel(157).addAllClientList(ImmutableList.of(client5gu)).build(); | ||||
|  | ||||
|         List<ClientReport> clients = new ArrayList<>(); | ||||
|         clients.add(clientReport2g); | ||||
| @@ -901,7 +910,8 @@ public class OpensyncExternalIntegrationCloudTest { | ||||
|         connectNodeInfo.skuNumber = "connectus.ai_21P10C68818122"; | ||||
|         connectNodeInfo.redirectorAddr = "ssl:opensync.zone1.art2wave.com:6643"; | ||||
|         connectNodeInfo.platformVersion = "OPENWRT_EA8300"; | ||||
|         connectNodeInfo.wifiRadioStates = ImmutableMap.of("2.4G", "home-ap-24", "5GL", "home-ap-l50", "5GU", "home-ap-u50"); | ||||
|         connectNodeInfo.wifiRadioStates = ImmutableMap.of("2.4G", "home-ap-24", "5GL", "home-ap-l50", "5GU", | ||||
|                 "home-ap-u50"); | ||||
|  | ||||
|         Map<String, String> versionMatrix = new HashMap<>(); | ||||
|         versionMatrix.put("DATE", "Thu Jul 16 18:52:06 UTC 2020"); | ||||
|   | ||||
| @@ -0,0 +1,380 @@ | ||||
| package com.telecominfraproject.wlan.opensync.external.integration; | ||||
|  | ||||
| import static org.junit.Assert.assertNotNull; | ||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||||
|  | ||||
| import java.net.InetAddress; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| import org.junit.After; | ||||
| import org.junit.Before; | ||||
| import org.junit.Ignore; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.mockito.Answers; | ||||
| import org.mockito.ArgumentMatchers; | ||||
| import org.mockito.Mockito; | ||||
| import org.mockito.MockitoSession; | ||||
| import org.mockito.quality.Strictness; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; | ||||
| import org.springframework.boot.test.mock.mockito.MockBean; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
|  | ||||
| import com.google.common.collect.ImmutableList; | ||||
| import com.google.protobuf.ByteString; | ||||
| import com.telecominfraproject.wlan.alarm.AlarmServiceInterface; | ||||
| import com.telecominfraproject.wlan.client.ClientServiceInterface; | ||||
| import com.telecominfraproject.wlan.client.info.models.ClientInfoDetails; | ||||
| import com.telecominfraproject.wlan.client.session.models.ClientSession; | ||||
| import com.telecominfraproject.wlan.client.session.models.ClientSessionDetails; | ||||
| import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||
| import com.telecominfraproject.wlan.customer.service.CustomerServiceInterface; | ||||
| import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface; | ||||
| import com.telecominfraproject.wlan.firmware.FirmwareServiceInterface; | ||||
| import com.telecominfraproject.wlan.location.service.LocationServiceInterface; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController; | ||||
| import com.telecominfraproject.wlan.profile.ProfileServiceInterface; | ||||
| import com.telecominfraproject.wlan.routing.RoutingServiceInterface; | ||||
| import com.telecominfraproject.wlan.servicemetric.apnode.models.ApNodeMetrics; | ||||
| import com.telecominfraproject.wlan.servicemetric.apnode.models.StateUpDownError; | ||||
| import com.telecominfraproject.wlan.status.StatusServiceInterface; | ||||
| import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSID; | ||||
| import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSIDs; | ||||
| import com.telecominfraproject.wlan.status.models.Status; | ||||
| import com.telecominfraproject.wlan.status.models.StatusDataType; | ||||
|  | ||||
| import sts.OpensyncStats.AssocType; | ||||
| import sts.OpensyncStats.Client; | ||||
| import sts.OpensyncStats.ClientReport; | ||||
| import sts.OpensyncStats.DNSProbeMetric; | ||||
| import sts.OpensyncStats.EventReport; | ||||
| import sts.OpensyncStats.NetworkProbe; | ||||
| import sts.OpensyncStats.RADIUSMetrics; | ||||
| import sts.OpensyncStats.RadioBandType; | ||||
| import sts.OpensyncStats.Report; | ||||
| import sts.OpensyncStats.StateUpDown; | ||||
| import sts.OpensyncStats.VLANMetrics; | ||||
| import sts.OpensyncStats.EventReport.ClientAssocEvent; | ||||
|  | ||||
| @RunWith(SpringRunner.class) | ||||
| @ActiveProfiles(profiles = { "integration_test", }) | ||||
| @SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OpensyncExternalIntegrationMqttMessageProcessorTest.class) | ||||
| @Import(value = { AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class, | ||||
|         OpensyncExternalIntegrationMqttMessageProcessorTest.Config.class, | ||||
|  | ||||
| }) | ||||
| public class OpensyncExternalIntegrationMqttMessageProcessorTest { | ||||
|  | ||||
|     @MockBean | ||||
|     AlarmServiceInterface alarmServiceInterface; | ||||
|     @MockBean | ||||
|     CustomerServiceInterface customerServiceInterface; | ||||
|     @MockBean | ||||
|     LocationServiceInterface locationServiceInterface; | ||||
|     @MockBean(answer = Answers.RETURNS_MOCKS) | ||||
|     OvsdbSessionMapInterface ovsdbSessionMapInterface; | ||||
|     @MockBean | ||||
|     CloudEventDispatcherInterface equipmentMetricsCollectorInterface; | ||||
|     @MockBean | ||||
|     EquipmentServiceInterface equipmentServiceInterface; | ||||
|     @MockBean | ||||
|     RoutingServiceInterface routingServiceInterface; | ||||
|     @MockBean | ||||
|     ProfileServiceInterface profileServiceInterface; | ||||
|     @MockBean | ||||
|     StatusServiceInterface statusServiceInterface; | ||||
|     @MockBean | ||||
|     ClientServiceInterface clientServiceInterface; | ||||
|     @MockBean | ||||
|     FirmwareServiceInterface firmwareServiceInterface; | ||||
|     @MockBean(answer = Answers.RETURNS_MOCKS) | ||||
|     OpensyncCloudGatewayController gatewayController; | ||||
|  | ||||
|     @Autowired | ||||
|     OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttProcessor; | ||||
|  | ||||
|     MockitoSession mockito; | ||||
|  | ||||
|     @Configuration | ||||
|     static class Config { | ||||
|  | ||||
|         @Bean | ||||
|         public OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttMessageProcessor() { | ||||
|             return new OpensyncExternalIntegrationMqttMessageProcessor(); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Before | ||||
|     public void setUp() throws Exception { | ||||
|  | ||||
|         mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @After | ||||
|     public void tearDown() throws Exception { | ||||
|         mockito.finishMocking(); | ||||
|  | ||||
|     } | ||||
|  | ||||
|  | ||||
|     @Test | ||||
|     public void testExtractApIdFromTopic() { | ||||
|  | ||||
|         String topic = "/ap/Test_Client_21P10C68818122/opensync"; | ||||
|  | ||||
|         assertEquals("Test_Client_21P10C68818122", | ||||
|                 OpensyncExternalIntegrationMqttMessageProcessor.extractApIdFromTopic(topic)); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testExtractCustomerIdFromTopic() { | ||||
|         String topic = "/ap/Test_Client_21P10C68818122/opensync"; | ||||
|         OvsdbSession session = Mockito.mock(OvsdbSession.class); | ||||
|         Mockito.when(session.getCustomerId()).thenReturn(2); | ||||
|  | ||||
|         Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session); | ||||
|  | ||||
|         assertEquals(2, opensyncExternalIntegrationMqttProcessor.extractCustomerIdFromTopic(topic)); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testExtractEquipmentIdFromTopic() { | ||||
|  | ||||
|         String topic = "/ap/Test_Client_21P10C68818122/opensync"; | ||||
|         OvsdbSession session = Mockito.mock(OvsdbSession.class); | ||||
|         Mockito.when(session.getEquipmentId()).thenReturn(1L); | ||||
|  | ||||
|         Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session); | ||||
|  | ||||
|         assertEquals(1L, opensyncExternalIntegrationMqttProcessor.extractEquipmentIdFromTopic(topic)); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testProcessMqttMessageStringReport() { | ||||
|  | ||||
|         Report report = Report.newBuilder().setNodeID("21P10C68818122") | ||||
|                 .addAllClients(getOpensyncStatsClientReportsList()) | ||||
|                 .addAllEventReport(getOpensyncStatsEventReportsList()).build(); | ||||
|  | ||||
|         String topic = "/ap/Test_Client_21P10C68818122/opensync"; | ||||
|  | ||||
|         OvsdbSession session = Mockito.mock(OvsdbSession.class); | ||||
|         Mockito.when(session.getEquipmentId()).thenReturn(1L); | ||||
|         Mockito.when(session.getCustomerId()).thenReturn(2); | ||||
|  | ||||
|         Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session); | ||||
|  | ||||
|         Status bssidStatus = new Status(); | ||||
|         bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS); | ||||
|         bssidStatus.setCustomerId(2); | ||||
|  | ||||
|         ActiveBSSIDs activeBssidsDetails = new ActiveBSSIDs(); | ||||
|         activeBssidsDetails.setActiveBSSIDs(getActiveBssidList()); | ||||
|         bssidStatus.setDetails(activeBssidsDetails); | ||||
|  | ||||
|         Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), | ||||
|                 ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))).thenReturn(bssidStatus); | ||||
|  | ||||
|         Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus); | ||||
|         com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client(); | ||||
|         clientInstance.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D")); | ||||
|         clientInstance.setDetails(new ClientInfoDetails()); | ||||
|         com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client(); | ||||
|         clientInstance2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69")); | ||||
|         clientInstance2.setDetails(new ClientInfoDetails()); | ||||
|         Mockito.when( | ||||
|                 clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class))) | ||||
|                 .thenReturn(clientInstance).thenReturn(clientInstance2); | ||||
|         Mockito.when(clientServiceInterface | ||||
|                 .update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class))) | ||||
|                 .thenReturn(clientInstance).thenReturn(clientInstance2); | ||||
|  | ||||
|         ClientSession clientSession = new ClientSession(); | ||||
|         clientSession.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D")); | ||||
|         clientSession.setDetails(new ClientSessionDetails()); | ||||
|         ClientSession clientSession2 = new ClientSession(); | ||||
|         clientSession2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69")); | ||||
|         clientSession2.setDetails(new ClientSessionDetails()); | ||||
|         Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), | ||||
|                 ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2); | ||||
|  | ||||
|         Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class))) | ||||
|                 .thenReturn(clientSession).thenReturn(clientSession2); | ||||
|  | ||||
|         opensyncExternalIntegrationMqttProcessor.processMqttMessage(topic, report); | ||||
|  | ||||
|         // Mockito.verify(clientServiceInterface, | ||||
|         // Mockito.times(4)).getOrNull(Mockito.anyInt(), | ||||
|         // Mockito.any(MacAddress.class)); | ||||
|         // Mockito.verify(clientServiceInterface, | ||||
|         // Mockito.times(4)).getSessionOrNull(Mockito.anyInt(), | ||||
|         // Mockito.anyLong(), | ||||
|         // Mockito.any(MacAddress.class)); | ||||
|         // Mockito.verify(statusServiceInterface, | ||||
|         // Mockito.times(3)).getOrNull(Mockito.anyInt(), Mockito.anyLong(), | ||||
|         // Mockito.eq(StatusDataType.ACTIVE_BSSIDS)); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
|     public void testProcessMqttMessageStringFlowReport() { | ||||
|         // TODO: implement me when support flow reports | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
|     public void testProcessMqttMessageStringWCStatsReport() { | ||||
|         // TODO: implement me when wcs stats reports supported | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testpopulateNetworkProbeMetrics() throws Exception { | ||||
|  | ||||
|         InetAddress ip = InetAddress.getLocalHost(); | ||||
|  | ||||
|         DNSProbeMetric dnsProbeMetric = DNSProbeMetric.getDefaultInstance().toBuilder().setLatency(10) | ||||
|                 .setState(StateUpDown.SUD_up).setServerIP(ip.getHostName()).build(); | ||||
|         RADIUSMetrics radiusProbeMetric = RADIUSMetrics.getDefaultInstance().toBuilder().setLatency(10) | ||||
|                 .setRadiusState(StateUpDown.SUD_up).setServerIP(ip.getHostName()).build(); | ||||
|         VLANMetrics vlanMetrics = VLANMetrics.getDefaultInstance().toBuilder().setLatency(10) | ||||
|                 .setDhcpState(StateUpDown.SUD_up).setVlanIF("vlan-1").build(); | ||||
|         NetworkProbe networkProbe = NetworkProbe.getDefaultInstance().toBuilder().setVlanProbe(vlanMetrics) | ||||
|                 .setDnsProbe(dnsProbeMetric).addRadiusProbe(radiusProbeMetric).build(); | ||||
|  | ||||
|         Report report = Report.getDefaultInstance().toBuilder().setNodeID("21P10C68818122") | ||||
|                 .addNetworkProbe(networkProbe).build(); | ||||
|  | ||||
|         ApNodeMetrics apNodeMetrics = new ApNodeMetrics(); | ||||
|  | ||||
|         opensyncExternalIntegrationMqttProcessor.populateNetworkProbeMetrics(report, apNodeMetrics); | ||||
|  | ||||
|         assertNotNull(apNodeMetrics.getNetworkProbeMetrics()); | ||||
|  | ||||
|         assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDnsLatencyMs() == 10); | ||||
|         assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDhcpLatencyMs() == 10); | ||||
|         assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getRadiusState().equals(StateUpDownError.enabled)); | ||||
|         assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDhcpState().equals(StateUpDownError.enabled)); | ||||
|         assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDnsState().equals(StateUpDownError.enabled)); | ||||
|         assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getRadiusLatencyInMs() == 10); | ||||
|         assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getVlanIF().equals("vlan-1")); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     // Helper methods | ||||
|     private List<ActiveBSSID> getActiveBssidList() { | ||||
|         ActiveBSSID activeBssid = new ActiveBSSID(); | ||||
|         activeBssid.setBssid("24:f5:a2:ef:2e:54"); | ||||
|         activeBssid.setSsid("ssid-1"); | ||||
|         activeBssid.setNumDevicesConnected(1); | ||||
|         activeBssid.setRadioType(RadioType.is2dot4GHz); | ||||
|         ActiveBSSID activeBssid2 = new ActiveBSSID(); | ||||
|         activeBssid2.setBssid("24:f5:a2:ef:2e:55"); | ||||
|         activeBssid2.setSsid("ssid-2"); | ||||
|         activeBssid2.setNumDevicesConnected(1); | ||||
|         activeBssid2.setRadioType(RadioType.is5GHzL); | ||||
|         ActiveBSSID activeBssid3 = new ActiveBSSID(); | ||||
|         activeBssid3.setBssid("24:f5:a2:ef:2e:56"); | ||||
|         activeBssid3.setSsid("ssid-3"); | ||||
|         activeBssid3.setNumDevicesConnected(1); | ||||
|         activeBssid3.setRadioType(RadioType.is5GHzU); | ||||
|  | ||||
|         List<ActiveBSSID> bssidList = new ArrayList<>(); | ||||
|         bssidList.add(activeBssid); | ||||
|         bssidList.add(activeBssid2); | ||||
|         bssidList.add(activeBssid3); | ||||
|         return bssidList; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     private List<EventReport> getOpensyncStatsEventReportsList() { | ||||
|  | ||||
|  | ||||
|         List<ClientAssocEvent> clientAssocEventList = new ArrayList<>(); | ||||
|         sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent | ||||
|                 .getDefaultInstance().toBuilder(); | ||||
|         clientAssocBuilder.setAssocType(AssocType.ASSOC); | ||||
|         clientAssocBuilder.setBand(RadioBandType.BAND5GU); | ||||
|         clientAssocBuilder.setRssi(-65); | ||||
|         clientAssocBuilder.setStaMac("C0:9A:D0:76:A9:69"); | ||||
|         clientAssocBuilder.setStaMacBytes(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes())); | ||||
|         clientAssocBuilder.setSessionId(1000L); | ||||
|         clientAssocBuilder.setInternalSc(1); | ||||
|         clientAssocBuilder.setSsid("ssid-3"); | ||||
|         clientAssocBuilder.setStatus(1); | ||||
|  | ||||
|         sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder2 = EventReport.ClientAssocEvent | ||||
|                 .getDefaultInstance().toBuilder(); | ||||
|         clientAssocBuilder2.setAssocType(AssocType.ASSOC); | ||||
|         clientAssocBuilder2.setBand(RadioBandType.BAND2G); | ||||
|         clientAssocBuilder2.setRssi(-65); | ||||
|         clientAssocBuilder2.setStaMac("7C:AB:60:E6:EA:4D"); | ||||
|         clientAssocBuilder2.setStaMacBytes(ByteString.copyFrom("7C:AB:60:E6:EA:4D".getBytes())); | ||||
|         clientAssocBuilder2.setSessionId(1000L); | ||||
|         clientAssocBuilder2.setInternalSc(1); | ||||
|         clientAssocBuilder2.setSsid("ssid-1"); | ||||
|         clientAssocBuilder2.setStatus(1); | ||||
|  | ||||
|         clientAssocEventList.add(clientAssocBuilder.build()); | ||||
|         clientAssocEventList.add(clientAssocBuilder2.build()); | ||||
|  | ||||
|         List<EventReport> eventReportList = new ArrayList<>(); | ||||
|  | ||||
|         EventReport.Builder eventReportBuilder = EventReport.getDefaultInstance().toBuilder(); | ||||
|  | ||||
|         sts.OpensyncStats.EventReport.ClientSession.Builder clientSessionBuilder = sts.OpensyncStats.EventReport.ClientSession | ||||
|                 .getDefaultInstance().toBuilder(); | ||||
|  | ||||
|         clientSessionBuilder.setSessionId(1000L); | ||||
|  | ||||
|         clientSessionBuilder.addAllClientAssocEvent(clientAssocEventList); | ||||
|         List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>(); | ||||
|         clientSessionList.add(clientSessionBuilder.build()); | ||||
|  | ||||
|         eventReportBuilder.addAllClientSession(clientSessionList); | ||||
|  | ||||
|         eventReportList.add(eventReportBuilder.build()); | ||||
|  | ||||
|  | ||||
|         return eventReportList; | ||||
|  | ||||
|  | ||||
|     } | ||||
|  | ||||
|     private List<ClientReport> getOpensyncStatsClientReportsList() { | ||||
|         int rssi = Long.valueOf(4294967239L).intValue(); | ||||
|  | ||||
|         Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786) | ||||
|                 .setRxRate(24000.0).setTxBytes(1208133026).setTxRate(433300.0).setRssi(758722570).setRxFrames(10000) | ||||
|                 .setTxFrames(10000).setTxRate(24000.0).build(); | ||||
|         Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1") | ||||
|                 .setConnected(true).setDurationMs(59977).setStats(clientStats).build(); | ||||
|         Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3") | ||||
|                 .setConnected(true).setDurationMs(298127).setStats(clientStats).build(); | ||||
|  | ||||
|         ClientReport clientReport2g = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G) | ||||
|                 .setChannel(6).addAllClientList(ImmutableList.of(client2g)).build(); | ||||
|         ClientReport clientReport5gl = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL) | ||||
|                 .setChannel(36).addAllClientList(new ArrayList<Client>()).build(); | ||||
|         ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU) | ||||
|                 .setChannel(157).addAllClientList(ImmutableList.of(client5gu)).build(); | ||||
|  | ||||
|         List<ClientReport> clients = new ArrayList<>(); | ||||
|         clients.add(clientReport2g); | ||||
|         clients.add(clientReport5gl); | ||||
|         clients.add(clientReport5gu); | ||||
|         return clients; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -1,258 +0,0 @@ | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.utils; | ||||
|  | ||||
| import java.net.InetAddress; | ||||
| import java.sql.Date; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| import org.junit.After; | ||||
| import org.junit.Before; | ||||
| import org.junit.Ignore; | ||||
| import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | ||||
| import org.mockito.Mockito; | ||||
| import org.mockito.MockitoSession; | ||||
| import org.mockito.quality.Strictness; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; | ||||
| import org.springframework.boot.test.mock.mockito.MockBean; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.context.annotation.Import; | ||||
| import org.springframework.test.context.ActiveProfiles; | ||||
| import org.springframework.test.context.junit4.SpringRunner; | ||||
|  | ||||
| import com.google.protobuf.ByteString; | ||||
| import com.telecominfraproject.wlan.client.models.events.realtime.ClientAssocEvent; | ||||
| import com.telecominfraproject.wlan.client.models.events.realtime.ClientAuthEvent; | ||||
| import com.telecominfraproject.wlan.client.models.events.utils.WlanStatusCode; | ||||
| import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface; | ||||
| import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationCloud; | ||||
| import com.telecominfraproject.wlan.profile.ProfileServiceInterface; | ||||
|  | ||||
| import sts.OpensyncStats.EventReport.DhcpNakEvent; | ||||
| import sts.OpensyncStats.EventReport.DhcpOfferEvent; | ||||
| import sts.OpensyncStats.EventReport.DhcpRequestEvent; | ||||
| import sts.OpensyncStats; | ||||
| import sts.OpensyncStats.EventReport.DhcpAckEvent; | ||||
|  | ||||
| import sts.OpensyncStats.EventReport.DhcpCommonData; | ||||
| import sts.OpensyncStats.EventReport.DhcpDeclineEvent; | ||||
| import sts.OpensyncStats.EventReport.DhcpDiscoverEvent; | ||||
| import sts.OpensyncStats.EventReport.DhcpInformEvent; | ||||
| import sts.OpensyncStats.EventReport.DhcpTransaction; | ||||
| import sts.OpensyncStats.RadioBandType; | ||||
| import sts.OpensyncStats.Report; | ||||
|  | ||||
| @RunWith(SpringRunner.class) | ||||
| @ActiveProfiles(profiles = { "integration_test", }) | ||||
| @SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = RealtimeEventPublisherTest.class) | ||||
| @Import(value = { OpensyncExternalIntegrationCloud.class, RealtimeEventPublisherTest.Config.class, | ||||
|  | ||||
| }) | ||||
| public class RealtimeEventPublisherTest { | ||||
|  | ||||
|     @MockBean | ||||
|     private CloudEventDispatcherInterface cloudEventDispatcherInterface; | ||||
|  | ||||
|     @MockBean | ||||
|     private EquipmentServiceInterface equipmentServiceInterface; | ||||
|      | ||||
|     @MockBean | ||||
|     private ProfileServiceInterface  profileServiceInterface; | ||||
|  | ||||
|     @Autowired | ||||
|     RealtimeEventPublisher realtimeEventPublisher; | ||||
|     MockitoSession mockito; | ||||
|  | ||||
|     @Configuration | ||||
|     static class Config { | ||||
|  | ||||
|         @Bean | ||||
|         public RealtimeEventPublisher realtimeEventPublisher() { | ||||
|             return new RealtimeEventPublisher(); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Before | ||||
|     public void setUp() throws Exception { | ||||
|  | ||||
|         mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @After | ||||
|     public void tearDown() throws Exception { | ||||
|         mockito.finishMocking(); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
|     public void testPublishChannelHopEvents() { | ||||
|         // TODO: implement | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
|     public void testPublishClientConnectSuccessEvent() { | ||||
|         // TODO: implement | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
|     public void testPublishClientDisconnectEvent() { | ||||
|         // TODO: implement | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testPublishClientAuthSystemEvent() throws Exception { | ||||
|  | ||||
|         OpensyncStats.EventReport.ClientAuthEvent clientAuthEvent = OpensyncStats.EventReport.ClientAuthEvent | ||||
|                 .newBuilder().setBand(RadioBandType.BAND5GL).setSsid("TipWlan-cloud-3-radios") | ||||
|                 .setStaMac("c0:9a:d0:76:a9:69").setSessionId(Long.parseUnsignedLong("12377998144488079334")) | ||||
|                 .setAuthStatus(WlanStatusCode.WLAN_STATUS_SUCCESS.getId()).setTimestampMs(1610050309).build(); | ||||
|  | ||||
|         realtimeEventPublisher.publishClientAuthSystemEvent(2, 1L, 0L, clientAuthEvent); | ||||
|  | ||||
|         Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1)) | ||||
|                 .publishEvent(Mockito.any(ClientAuthEvent.class)); | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testPublishClientAssocEvent() throws Exception { | ||||
|  | ||||
|         OpensyncStats.EventReport.ClientAssocEvent clientAssocEvent = OpensyncStats.EventReport.ClientAssocEvent | ||||
|                 .newBuilder().setBand(RadioBandType.BAND5GL).setRssi(-37).setSsid("TipWlan-cloud-3-radios") | ||||
|                 .setStaMac("c0:9a:d0:76:a9:69").setSessionId(Long.parseUnsignedLong("12377998144488079334")) | ||||
|                 .setUsing11K(true).setUsing11V(true).setStatus(WlanStatusCode.WLAN_STATUS_SUCCESS.getId()) | ||||
|                 .setTimestampMs(1610050309).build(); | ||||
|  | ||||
|         realtimeEventPublisher.publishClientAssocEvent(2, 1L, 0L, clientAssocEvent); | ||||
|  | ||||
|         Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1)) | ||||
|                 .publishEvent(Mockito.any(ClientAssocEvent.class)); | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
|     public void testPublishClientFailureEvent() { | ||||
|         // TODO: implement | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
|     public void testPublishClientFirstDataEvent() { | ||||
|         // TODO: implement | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
|     public void testPublishClientIdEvent() { | ||||
|         // TODO: implement | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
|     public void testPublishClientIpEvent() { | ||||
|         // TODO: implement | ||||
|     } | ||||
|  | ||||
|     @Ignore | ||||
|     public void testPublishClientTimeoutEvent() { | ||||
|         // TODO: implement | ||||
|     } | ||||
|  | ||||
|     @Test | ||||
|     public void testPublishSipCallEvents() throws Exception { | ||||
|  | ||||
|         OpensyncStats.VideoVoiceReport.Builder callStartVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder() | ||||
|                 .setCallStart(getDefaultCallStart()); | ||||
|         OpensyncStats.VideoVoiceReport.Builder callReportGotPublishVoiceReportBuilder = OpensyncStats.VideoVoiceReport | ||||
|                 .newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.GOT_PUBLISH, | ||||
|                         121, 1028, 1316, 1888, 298, 2, 100, 200)); | ||||
|         OpensyncStats.VideoVoiceReport.Builder callReportRoamedToVoiceReportBuilder = OpensyncStats.VideoVoiceReport | ||||
|                 .newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_TO, | ||||
|                         123, 1020, 1116, 1345, 223, 0, 102, 203)); | ||||
|         OpensyncStats.VideoVoiceReport.Builder callReportRoamedFromVoiceReportBuilder = OpensyncStats.VideoVoiceReport | ||||
|                 .newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_FROM, | ||||
|                         122, 1029, 1300, 1234, 111, 3, 101, 201)); | ||||
|         OpensyncStats.VideoVoiceReport.Builder callStopVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder() | ||||
|                 .setCallStop(getDefaultCallStop()); | ||||
|         // Create report with multiple voiceReports in one | ||||
|         Report multipleVoiceReportsInOneReport = Report.newBuilder().addVideoVoiceReport(callStartVoiceReportBuilder) | ||||
|                 .addVideoVoiceReport(callReportGotPublishVoiceReportBuilder) | ||||
|                 .addVideoVoiceReport(callReportRoamedFromVoiceReportBuilder) | ||||
|                 .addVideoVoiceReport(callReportRoamedToVoiceReportBuilder) | ||||
|                 .addVideoVoiceReport(callStopVoiceReportBuilder).setNodeID("1").build(); | ||||
|  | ||||
|         realtimeEventPublisher.publishSipCallEvents(1, 2L, 0L, multipleVoiceReportsInOneReport.getVideoVoiceReportList()); | ||||
|  | ||||
|         Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1)).publishEventsBulk(Mockito.anyList()); | ||||
|     } | ||||
|  | ||||
|     private OpensyncStats.CallStart getDefaultCallStart() { | ||||
|         OpensyncStats.CallStart.Builder callStartBuilder = OpensyncStats.CallStart.newBuilder(); | ||||
|         callStartBuilder.setBand(RadioBandType.BAND5G); | ||||
|         callStartBuilder.setChannel(40); | ||||
|         callStartBuilder.addCodecs("110 opus/48000/2"); | ||||
|         callStartBuilder.addCodecs("102 iLBC/8000"); | ||||
|         callStartBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes())); | ||||
|         callStartBuilder.setDeviceInfo("Test Device"); | ||||
|         callStartBuilder.setProviderDomain("skype"); | ||||
|         callStartBuilder.setSessionId(123L); | ||||
|         callStartBuilder.setWifiSessionId(1234L); | ||||
|  | ||||
|         return callStartBuilder.build(); | ||||
|     } | ||||
|  | ||||
|     private OpensyncStats.CallStop getDefaultCallStop() { | ||||
|         OpensyncStats.CallStop.Builder callStopBuilder = OpensyncStats.CallStop.newBuilder(); | ||||
|         callStopBuilder.setBand(RadioBandType.BAND5G); | ||||
|         callStopBuilder.setChannel(40); | ||||
|         callStopBuilder.addCodecs("110 opus/48000/2"); | ||||
|         callStopBuilder.addCodecs("102 iLBC/8000"); | ||||
|         callStopBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes())); | ||||
|         callStopBuilder.setCallDuration(1230); | ||||
|         callStopBuilder.setProviderDomain("skype"); | ||||
|         callStopBuilder.setSessionId(123L); | ||||
|         callStopBuilder.setWifiSessionId(1234L); | ||||
|         callStopBuilder.setReason(OpensyncStats.CallStop.CallStopReason.BYE_OK); | ||||
|         callStopBuilder.addStats(getRtpFlowStats(121, 1380, 1400, 3000, 119, 3, 205, 350)); | ||||
|  | ||||
|         return callStopBuilder.build(); | ||||
|     } | ||||
|  | ||||
|     private OpensyncStats.RtpFlowStats getRtpFlowStats(int codec, int jitter, int latency, int totalPackets, | ||||
|             int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) { | ||||
|         OpensyncStats.RtpFlowStats.Builder rtpFlowStatsBuilder = OpensyncStats.RtpFlowStats.newBuilder(); | ||||
|         rtpFlowStatsBuilder.setCodec(codec); | ||||
|         rtpFlowStatsBuilder.setBlockCodecs(ByteString.copyFrom(new byte[] { (byte) 0xe6, 0x1 })); | ||||
|         rtpFlowStatsBuilder.setDirection(OpensyncStats.RtpFlowStats.RtpFlowDirection.RTP_DOWNSTREAM); | ||||
|         rtpFlowStatsBuilder.setRtpFlowType(OpensyncStats.RtpFlowStats.RtpFlowType.RTP_VOICE); | ||||
|         rtpFlowStatsBuilder.setJitter(jitter); | ||||
|         rtpFlowStatsBuilder.setLatency(latency); | ||||
|         rtpFlowStatsBuilder.setTotalPacketsSent(totalPackets); | ||||
|         rtpFlowStatsBuilder.setTotalPacketsLost(totalPacketsLost); | ||||
|         rtpFlowStatsBuilder.setMosx100(mos); | ||||
|         rtpFlowStatsBuilder.setRtpSeqFirst(firstRtpSeq); | ||||
|         rtpFlowStatsBuilder.setRtpSeqLast(lastRtpSeq); | ||||
|  | ||||
|         return rtpFlowStatsBuilder.build(); | ||||
|     } | ||||
|  | ||||
|     private OpensyncStats.CallReport getDefaultCallReport(OpensyncStats.CallReport.CallReportReason reason, int codec, | ||||
|             int jitter, int latency, int totalPackets, int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) { | ||||
|         OpensyncStats.CallReport.Builder callReportBuilder = OpensyncStats.CallReport.newBuilder(); | ||||
|         callReportBuilder.setBand(RadioBandType.BAND5G); | ||||
|         callReportBuilder.setChannel(40); | ||||
|         callReportBuilder.addCodecs("110 opus/48000/2"); | ||||
|         callReportBuilder.addCodecs("102 iLBC/8000"); | ||||
|         callReportBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes())); | ||||
|         callReportBuilder.setProviderDomain("skype"); | ||||
|         callReportBuilder.setSessionId(123L); | ||||
|         callReportBuilder.setWifiSessionId(1234L); | ||||
|         callReportBuilder.setReason(reason); | ||||
|         callReportBuilder.addStats( | ||||
|                 getRtpFlowStats(codec, jitter, latency, totalPackets, totalPacketsLost, mos, firstRtpSeq, lastRtpSeq)); | ||||
|  | ||||
|         return callReportBuilder.build(); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -1,9 +1,11 @@ | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | ||||
| 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
| 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
| 	<modelVersion>4.0.0</modelVersion> | ||||
| 	<parent> | ||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||
| 		<version>1.2.0-SNAPSHOT</version> | ||||
| 		<version>0.0.1-SNAPSHOT</version> | ||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | ||||
| 	</parent> | ||||
| 	<artifactId>opensync-ext-interface</artifactId> | ||||
| @@ -13,33 +15,33 @@ | ||||
| 		<dependency> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<artifactId>base-models</artifactId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<artifactId>tip-wlan-opensync-protobuf</artifactId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
| 		 | ||||
| 		<dependency> | ||||
| 			<artifactId>equipment-models</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<artifactId>profile-models</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<artifactId>location-models</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<artifactId>routing-models</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
| 		 | ||||
|  | ||||
|   | ||||
| @@ -35,29 +35,20 @@ public interface OpensyncExternalIntegrationInterface { | ||||
|     void wifiInetStateDbTableUpdate(List<OpensyncAPInetState> inetStateTables, String apId); | ||||
|  | ||||
|     void wifiInetStateDbTableDelete(List<OpensyncAPInetState> inetStateTables, String apId); | ||||
|      | ||||
|     void processMqttMessage(String topic, Report report); | ||||
|  | ||||
|     void processMqttMessage(String topic, FlowReport flowReport); | ||||
|  | ||||
|     void processMqttMessage(String topic, WCStatsReport wcStatsReport); | ||||
|  | ||||
|     void wifiAssociatedClientsDbTableUpdate(List<OpensyncWifiAssociatedClients> wifiAssociatedClients, String apId); | ||||
|  | ||||
|     void wifiAssociatedClientsDbTableDelete(String deletedClientMac, String apId); | ||||
|  | ||||
|     void awlanNodeDbTableUpdate(OpensyncAWLANNode opensyncAPState, String apId); | ||||
|  | ||||
|     void dhcpLeasedIpDbTableUpdate(List<Map<String, String>> dhcpAttributes, String apId, | ||||
|             RowUpdateOperation rowUpdateOperation); | ||||
|  | ||||
|     void commandStateDbTableUpdate(List<Map<String, String>> commandStateAttributes, String apId, | ||||
|             RowUpdateOperation rowUpdateOperation); | ||||
|  | ||||
|     void apcStateDbTableUpdate(Map<String, String> apcStateAttributes, String apId, | ||||
|             RowUpdateOperation rowUpdateOperation); | ||||
|      | ||||
|     void nodeStateDbTableUpdate(List<Map<String, String>> nodeStateAttributes, String apId); | ||||
|     void dhcpLeasedIpDbTableUpdate(List<Map<String,String>> dhcpAttributes, String apId, RowUpdateOperation rowUpdateOperation); | ||||
|  | ||||
|     void clearEquipmentStatus(String apId); | ||||
|      | ||||
|     void processMqttMessage(String topic, Report report); | ||||
|  | ||||
|     long getConfigVersionFromStatus(String apId); | ||||
|  | ||||
|     void updateConfigVersionInStatus(String apId, long configVersionFromProfiles); | ||||
|     void commandStateDbTableUpdate(List<Map<String,String>> commandStateAttributes, String apId, RowUpdateOperation rowUpdateOperation); | ||||
| } | ||||
|   | ||||
| @@ -4,10 +4,8 @@ import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Set; | ||||
|  | ||||
| import com.telecominfraproject.wlan.core.model.equipment.LedStatus; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||
| import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes; | ||||
|  | ||||
| public interface OvsdbClientInterface { | ||||
|  | ||||
| @@ -18,14 +16,13 @@ public interface OvsdbClientInterface { | ||||
|     String startDebugEngine(String apId, String gatewayHostname, Integer gatewayPort); | ||||
|  | ||||
|     String stopDebugEngine(String apId); | ||||
|      | ||||
|     String processBlinkRequest(String apId, boolean blinkAllLEDs); | ||||
|  | ||||
|     void processConfigChanged(String apId); | ||||
|  | ||||
|     void processClientBlocklistChange(String apId, List<MacAddress> blockList); | ||||
|  | ||||
|     String processFirmwareDownload(String apId, String firmwareUrl, String firmwareVersion, String username); | ||||
|     String processFirmwareDownload(String apId, String firmwareUrl, String firmwareVersion, String username, | ||||
|             String validationCode); | ||||
|  | ||||
|     String closeSession(String apId); | ||||
|  | ||||
| @@ -35,8 +32,6 @@ public interface OvsdbClientInterface { | ||||
|      | ||||
|     String processFactoryResetRequest(String apId); | ||||
|      | ||||
|     String processNewChannelsRequest(String apId, Map<RadioType,Integer> backupChannelMap, Map<RadioType,Integer> primaryChannelMap); | ||||
|  | ||||
|     String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap); | ||||
|     String processNewChannelsRequest(String apId, Map<RadioType,Integer> channelMap); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -7,6 +7,7 @@ public class OvsdbSession { | ||||
|     private String apId; | ||||
|     private long routingId; | ||||
|     private long equipmentId; | ||||
|     private int customerId; | ||||
|      | ||||
|     public OvsdbClient getOvsdbClient() { | ||||
|         return ovsdbClient; | ||||
| @@ -32,5 +33,12 @@ public class OvsdbSession { | ||||
|     public void setEquipmentId(long equipmentId) { | ||||
|         this.equipmentId = equipmentId; | ||||
|     } | ||||
|   | ||||
|     public int getCustomerId() { | ||||
|         return customerId; | ||||
|     } | ||||
|     public void setCustomerId(int customerId) { | ||||
|         this.customerId = customerId; | ||||
|     } | ||||
|      | ||||
|      | ||||
| } | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
|  | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.models; | ||||
|  | ||||
| import java.util.HashMap; | ||||
| @@ -7,8 +6,6 @@ import java.util.Objects; | ||||
|  | ||||
| public class ConnectNodeInfo implements Cloneable { | ||||
|  | ||||
|     public static String CONFIG_VERSION_PROPERTY_NAME = "tip/reportedCfgDataVersion"; | ||||
|      | ||||
|     public Map<String, String> mqttSettings = new HashMap<>(); | ||||
|     public Map<String, String> versionMatrix = new HashMap<>(); | ||||
|     public Map<String, String> wifiRadioStates = new HashMap<>(); | ||||
| @@ -29,26 +26,7 @@ public class ConnectNodeInfo implements Cloneable { | ||||
|     public String lanIfName; | ||||
|     public String lanIfType; | ||||
|     public String lanMacAddress; | ||||
|     public String referenceDesign; | ||||
|     public Map<String, String> qrCode; | ||||
|     public String modelDescription; | ||||
|     public String manufacturerUrl; | ||||
|     public String manufacturerName; | ||||
|     public String manufacturerDate; | ||||
|     public String certificationRegion; | ||||
|  | ||||
|     public long getConfigVersion() { | ||||
|          | ||||
|         long ret = 0; | ||||
|         try { | ||||
|             ret = Long.parseLong(versionMatrix.get(CONFIG_VERSION_PROPERTY_NAME)); | ||||
|         } catch(Exception e) { | ||||
|             //do nothing | ||||
|         } | ||||
|  | ||||
|         return ret; | ||||
|     } | ||||
|      | ||||
|     @Override | ||||
|     public ConnectNodeInfo clone() { | ||||
|         try { | ||||
| @@ -62,9 +40,6 @@ public class ConnectNodeInfo implements Cloneable { | ||||
|             if (this.versionMatrix != null) { | ||||
|                 ret.versionMatrix = new HashMap<>(this.versionMatrix); | ||||
|             } | ||||
|             if (this.qrCode != null) { | ||||
|                 ret.qrCode = new HashMap<>(this.qrCode); | ||||
|             } | ||||
|             return ret; | ||||
|         } catch (CloneNotSupportedException e) { | ||||
|             throw new IllegalStateException("Cannot clone ", e); | ||||
| @@ -73,44 +48,44 @@ public class ConnectNodeInfo implements Cloneable { | ||||
|  | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         return Objects.hash(certificationRegion, country, firmwareVersion, ifName, ifType, ipV4Address, lanIfName, lanIfType, lanIpV4Address, lanMacAddress, | ||||
|                 macAddress, managerAddr, manufacturerDate, manufacturerName, manufacturerUrl, model, modelDescription, mqttSettings, platformVersion, qrCode, | ||||
|                 redirectorAddr, referenceDesign, revision, serialNumber, skuNumber, versionMatrix, wifiRadioStates); | ||||
|         return Objects.hash(country, firmwareVersion, ifName, ifType, ipV4Address, lanIfName, lanIfType, lanIpV4Address, | ||||
|                 lanMacAddress, macAddress, managerAddr, model, mqttSettings, platformVersion, redirectorAddr, revision, | ||||
|                 serialNumber, skuNumber, versionMatrix, wifiRadioStates); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean equals(Object obj) { | ||||
|         if (this == obj) | ||||
|         if (this == obj) { | ||||
|             return true; | ||||
|         if (obj == null) | ||||
|             return false; | ||||
|         if (getClass() != obj.getClass()) | ||||
|         } | ||||
|         if (!(obj instanceof ConnectNodeInfo)) { | ||||
|             return false; | ||||
|         } | ||||
|         ConnectNodeInfo other = (ConnectNodeInfo) obj; | ||||
|         return Objects.equals(certificationRegion, other.certificationRegion) && Objects.equals(country, other.country) | ||||
|                 && Objects.equals(firmwareVersion, other.firmwareVersion) && Objects.equals(ifName, other.ifName) && Objects.equals(ifType, other.ifType) | ||||
|                 && Objects.equals(ipV4Address, other.ipV4Address) && Objects.equals(lanIfName, other.lanIfName) && Objects.equals(lanIfType, other.lanIfType) | ||||
|                 && Objects.equals(lanIpV4Address, other.lanIpV4Address) && Objects.equals(lanMacAddress, other.lanMacAddress) | ||||
|                 && Objects.equals(macAddress, other.macAddress) && Objects.equals(managerAddr, other.managerAddr) | ||||
|                 && Objects.equals(manufacturerDate, other.manufacturerDate) && Objects.equals(manufacturerName, other.manufacturerName) | ||||
|                 && Objects.equals(manufacturerUrl, other.manufacturerUrl) && Objects.equals(model, other.model) | ||||
|                 && Objects.equals(modelDescription, other.modelDescription) && Objects.equals(mqttSettings, other.mqttSettings) | ||||
|                 && Objects.equals(platformVersion, other.platformVersion) && Objects.equals(qrCode, other.qrCode) | ||||
|                 && Objects.equals(redirectorAddr, other.redirectorAddr) && Objects.equals(referenceDesign, other.referenceDesign) | ||||
|                 && Objects.equals(revision, other.revision) && Objects.equals(serialNumber, other.serialNumber) && Objects.equals(skuNumber, other.skuNumber) | ||||
|                 && Objects.equals(versionMatrix, other.versionMatrix) && Objects.equals(wifiRadioStates, other.wifiRadioStates); | ||||
|         return Objects.equals(country, other.country) && Objects.equals(firmwareVersion, other.firmwareVersion) | ||||
|                 && Objects.equals(ifName, other.ifName) && Objects.equals(ifType, other.ifType) | ||||
|                 && Objects.equals(ipV4Address, other.ipV4Address) && Objects.equals(lanIfName, other.lanIfName) | ||||
|                 && Objects.equals(lanIfType, other.lanIfType) && Objects.equals(lanIpV4Address, other.lanIpV4Address) | ||||
|                 && Objects.equals(lanMacAddress, other.lanMacAddress) && Objects.equals(macAddress, other.macAddress) | ||||
|                 && Objects.equals(managerAddr, other.managerAddr) && Objects.equals(model, other.model) | ||||
|                 && Objects.equals(mqttSettings, other.mqttSettings) | ||||
|                 && Objects.equals(platformVersion, other.platformVersion) | ||||
|                 && Objects.equals(redirectorAddr, other.redirectorAddr) && Objects.equals(revision, other.revision) | ||||
|                 && Objects.equals(serialNumber, other.serialNumber) && Objects.equals(skuNumber, other.skuNumber) | ||||
|                 && Objects.equals(versionMatrix, other.versionMatrix) | ||||
|                 && Objects.equals(wifiRadioStates, other.wifiRadioStates); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "ConnectNodeInfo [mqttSettings=" + mqttSettings + ", versionMatrix=" + versionMatrix + ", wifiRadioStates=" + wifiRadioStates | ||||
|                 + ", redirectorAddr=" + redirectorAddr + ", managerAddr=" + managerAddr + ", skuNumber=" + skuNumber + ", serialNumber=" + serialNumber | ||||
|                 + ", macAddress=" + macAddress + ", ipV4Address=" + ipV4Address + ", platformVersion=" + platformVersion + ", firmwareVersion=" | ||||
|                 + firmwareVersion + ", revision=" + revision + ", model=" + model + ", ifName=" + ifName + ", ifType=" + ifType + ", country=" + country | ||||
|                 + ", lanIpV4Address=" + lanIpV4Address + ", lanIfName=" + lanIfName + ", lanIfType=" + lanIfType + ", lanMacAddress=" + lanMacAddress | ||||
|                 + ", referenceDesign=" + referenceDesign + ", qrCode=" + qrCode + ", modelDescription=" + modelDescription + ", manufacturerUrl=" | ||||
|                 + manufacturerUrl + ", manufacturerName=" + manufacturerName + ", manufacturerDate=" + manufacturerDate + ", certificationRegion=" | ||||
|                 + certificationRegion + "]"; | ||||
|         return "ConnectNodeInfo [mqttSettings=" + mqttSettings + ", versionMatrix=" + versionMatrix | ||||
|                 + ", wifiRadioStates=" + wifiRadioStates + ", redirectorAddr=" + redirectorAddr + ", managerAddr=" | ||||
|                 + managerAddr + ", skuNumber=" + skuNumber + ", serialNumber=" + serialNumber + ", macAddress=" | ||||
|                 + macAddress + ", ipV4Address=" + ipV4Address + ", platformVersion=" + platformVersion | ||||
|                 + ", firmwareVersion=" + firmwareVersion + ", revision=" + revision + ", model=" + model + ", ifName=" | ||||
|                 + ifName + ", ifType=" + ifType + ", country=" + country + ", lanIpV4Address=" + lanIpV4Address | ||||
|                 + ", lanIfName=" + lanIfName + ", lanIfType=" + lanIfType + ", lanMacAddress=" + lanMacAddress + "]"; | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,30 +0,0 @@ | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.models; | ||||
|  | ||||
| import java.util.Set; | ||||
|  | ||||
| import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Row; | ||||
|  | ||||
| public abstract class OpensyncAPBase extends BaseJsonModel { | ||||
|  | ||||
|     private static final long serialVersionUID = -68509242520818671L; | ||||
|  | ||||
|     public static <T> T getSingleValueFromSet(Row row, String columnName) { | ||||
|  | ||||
|         Set<T> set = row != null ? row.getSetColumn(columnName) : null; | ||||
|         T ret = (set != null) && !set.isEmpty() ? set.iterator().next() : null; | ||||
|  | ||||
|         return ret; | ||||
|     } | ||||
|  | ||||
|     public OpensyncAPBase() { | ||||
|     } | ||||
|  | ||||
|     public <T> Set<T> getSet(Row row, String columnName) { | ||||
|  | ||||
|         Set<T> set = row != null ? row.getSetColumn(columnName) : null; | ||||
|  | ||||
|         return set; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -1,7 +1,6 @@ | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.models; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.Collection; | ||||
| import java.util.HashSet; | ||||
| import java.util.List; | ||||
| import java.util.Objects; | ||||
| @@ -11,6 +10,7 @@ import com.telecominfraproject.wlan.core.model.entity.CountryCode; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.EquipmentType; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.MacAddress; | ||||
| import com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||
| import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; | ||||
| import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration; | ||||
| import com.telecominfraproject.wlan.equipment.models.Equipment; | ||||
| import com.telecominfraproject.wlan.equipment.models.StateSetting; | ||||
| @@ -24,14 +24,10 @@ import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration.Secure | ||||
| import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord; | ||||
| import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord; | ||||
|  | ||||
| public class OpensyncAPConfig extends OpensyncAPBase { | ||||
| public class OpensyncAPConfig extends BaseJsonModel { | ||||
|  | ||||
|     private static final long serialVersionUID = 3917975477206236668L; | ||||
|  | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
|  | ||||
|     private Equipment customerEquipment; | ||||
|     private OpensyncAPHotspot20Config hotspotConfig; | ||||
|     private Profile apProfile; | ||||
| @@ -39,274 +35,13 @@ public class OpensyncAPConfig extends OpensyncAPBase { | ||||
|     private List<Profile> ssidProfile; | ||||
|     private List<Profile> metricsProfile; | ||||
|     private List<Profile> radiusProfiles; | ||||
|     private Profile wiredEthernetPortProfile; | ||||
|     private Location equipmentLocation; | ||||
|     private EquipmentRoutingRecord equipmentRouting; | ||||
|     private EquipmentGatewayRecord equipmentGateway; | ||||
|     private List<Profile> captiveProfiles; | ||||
|     private List<Profile> bonjourGatewayProfiles; | ||||
|      | ||||
|     private long configVersion; | ||||
|  | ||||
|     private List<MacAddress> blockedClients; | ||||
|  | ||||
|     public long getConfigVersion() { | ||||
|         //go through all child objects and get the most recent lastModifiedTimestamp from them | ||||
|         configVersion = 0; | ||||
|          | ||||
|         if(customerEquipment!=null && customerEquipment.getLastModifiedTimestamp()> configVersion) { | ||||
|             configVersion = customerEquipment.getLastModifiedTimestamp(); | ||||
|         } | ||||
|          | ||||
|         if(hotspotConfig!=null) { | ||||
|             configVersion = getLatestLastMod(configVersion, hotspotConfig.getHotspot20OperatorSet()); | ||||
|             configVersion = getLatestLastMod(configVersion, hotspotConfig.getHotspot20ProfileSet()); | ||||
|             configVersion = getLatestLastMod(configVersion, hotspotConfig.getHotspot20ProviderSet()); | ||||
|             configVersion = getLatestLastMod(configVersion, hotspotConfig.getHotspot20VenueSet()); | ||||
|         } | ||||
|  | ||||
|         configVersion = getLatestLastMod(configVersion, apProfile); | ||||
|         configVersion = getLatestLastMod(configVersion, rfProfile); | ||||
|         configVersion = getLatestLastMod(configVersion, ssidProfile); | ||||
|         configVersion = getLatestLastMod(configVersion, metricsProfile); | ||||
|         configVersion = getLatestLastMod(configVersion, radiusProfiles); | ||||
|         configVersion = getLatestLastMod(configVersion, wiredEthernetPortProfile); | ||||
|  | ||||
|         if(equipmentLocation!=null && equipmentLocation.getLastModifiedTimestamp()> configVersion) { | ||||
|             configVersion = equipmentLocation.getLastModifiedTimestamp(); | ||||
|         } | ||||
|  | ||||
|         configVersion = getLatestLastMod(configVersion, captiveProfiles); | ||||
|         configVersion = getLatestLastMod(configVersion, bonjourGatewayProfiles); | ||||
|          | ||||
|         return configVersion; | ||||
|     } | ||||
|      | ||||
|     private long getLatestLastMod(long incomingLastMod, Collection<Profile> profiles) { | ||||
|          | ||||
|         if(profiles!=null) { | ||||
|             for(Profile p: profiles) { | ||||
|                 if(incomingLastMod < p.getLastModifiedTimestamp()) { | ||||
|                     incomingLastMod = p.getLastModifiedTimestamp(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         return incomingLastMod; | ||||
|     } | ||||
|  | ||||
|     private long getLatestLastMod(long incomingLastMod, Profile profile) { | ||||
|          | ||||
|         if(profile!=null) { | ||||
|             if(incomingLastMod < profile.getLastModifiedTimestamp()) { | ||||
|                 incomingLastMod = profile.getLastModifiedTimestamp(); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         return incomingLastMod; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public OpensyncAPConfig clone() { | ||||
|         OpensyncAPConfig ret = (OpensyncAPConfig) super.clone(); | ||||
|  | ||||
|         if (customerEquipment != null) { | ||||
|             ret.customerEquipment = customerEquipment.clone(); | ||||
|         } | ||||
|         if (hotspotConfig != null) { | ||||
|             ret.hotspotConfig = hotspotConfig.clone(); | ||||
|         } | ||||
|         if (equipmentLocation != null) { | ||||
|             ret.equipmentLocation = equipmentLocation.clone(); | ||||
|         } | ||||
|         if (ssidProfile != null) { | ||||
|             List<Profile> ssidList = new ArrayList<Profile>(); | ||||
|             for (Profile profile : ssidProfile) { | ||||
|                 ssidList.add(profile.clone()); | ||||
|             } | ||||
|             ret.ssidProfile = ssidList; | ||||
|         } | ||||
|         if (metricsProfile != null) { | ||||
|             List<Profile> metricsList = new ArrayList<Profile>(); | ||||
|             for (Profile profile : metricsProfile) { | ||||
|                 metricsList.add(profile.clone()); | ||||
|             } | ||||
|             ret.metricsProfile = metricsList; | ||||
|         } | ||||
|         if (bonjourGatewayProfiles != null) { | ||||
|             List<Profile> bonjourGatewayProfilesList = new ArrayList<Profile>(); | ||||
|             for (Profile profile : bonjourGatewayProfiles) { | ||||
|                 bonjourGatewayProfilesList.add(profile.clone()); | ||||
|             } | ||||
|             ret.bonjourGatewayProfiles = bonjourGatewayProfilesList; | ||||
|         } | ||||
|         if (apProfile != null) { | ||||
|             ret.apProfile = apProfile.clone(); | ||||
|         } | ||||
|         if (rfProfile != null) { | ||||
|             ret.rfProfile = rfProfile.clone(); | ||||
|         } | ||||
|         if (equipmentRouting != null) { | ||||
|             ret.equipmentRouting = equipmentRouting.clone(); | ||||
|         } | ||||
|         if (equipmentGateway != null) { | ||||
|             ret.equipmentGateway = equipmentGateway.clone(); | ||||
|         } | ||||
|         if (radiusProfiles != null) { | ||||
|             ret.radiusProfiles = new ArrayList<>(); | ||||
|             for (Profile radiusProfile : this.radiusProfiles) { | ||||
|                 ret.radiusProfiles.add(radiusProfile); | ||||
|             } | ||||
|         } | ||||
|         if (captiveProfiles != null) { | ||||
|             ret.captiveProfiles = new ArrayList<>(); | ||||
|             for (Profile cpConfig : this.captiveProfiles) { | ||||
|                 ret.captiveProfiles.add(cpConfig); | ||||
|             } | ||||
|         } | ||||
|         if (blockedClients != null) { | ||||
|             ret.blockedClients = new ArrayList<MacAddress>(); | ||||
|             for (MacAddress blockedClient : this.blockedClients) { | ||||
|                 ret.blockedClients.add(blockedClient); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return ret; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean equals(Object obj) { | ||||
|         if (this == obj) { | ||||
|             return true; | ||||
|         } | ||||
|         if (obj == null) { | ||||
|             return false; | ||||
|         } | ||||
|         if (getClass() != obj.getClass()) { | ||||
|             return false; | ||||
|         } | ||||
|         OpensyncAPConfig other = (OpensyncAPConfig) obj; | ||||
|         return Objects.equals(apProfile, other.apProfile) && Objects.equals(blockedClients, other.blockedClients) | ||||
|                 && Objects.equals(bonjourGatewayProfiles, other.bonjourGatewayProfiles) | ||||
|                 && Objects.equals(captiveProfiles, other.captiveProfiles) | ||||
|                 && Objects.equals(customerEquipment, other.customerEquipment) | ||||
|                 && Objects.equals(equipmentGateway, other.equipmentGateway) | ||||
|                 && Objects.equals(equipmentLocation, other.equipmentLocation) | ||||
|                 && Objects.equals(equipmentRouting, other.equipmentRouting) | ||||
|                 && Objects.equals(hotspotConfig, other.hotspotConfig) | ||||
|                 && Objects.equals(metricsProfile, other.metricsProfile) | ||||
|                 && Objects.equals(radiusProfiles, other.radiusProfiles) && Objects.equals(rfProfile, other.rfProfile) | ||||
|                 && Objects.equals(ssidProfile, other.ssidProfile) | ||||
|                 && Objects.equals(wiredEthernetPortProfile, other.wiredEthernetPortProfile); | ||||
|     } | ||||
|  | ||||
|     public Profile getApProfile() { | ||||
|         return apProfile; | ||||
|     } | ||||
|  | ||||
|     public List<MacAddress> getBlockedClients() { | ||||
|         return blockedClients; | ||||
|     } | ||||
|  | ||||
|     public List<Profile> getBonjourGatewayProfiles() { | ||||
|         return bonjourGatewayProfiles; | ||||
|     } | ||||
|  | ||||
|     public List<Profile> getCaptiveProfiles() { | ||||
|         return captiveProfiles; | ||||
|     } | ||||
|  | ||||
|     public String getCountryCode() { | ||||
|         return Location.getCountryCode(this.equipmentLocation).toString(); | ||||
|     } | ||||
|  | ||||
|     public Equipment getCustomerEquipment() { | ||||
|         return customerEquipment; | ||||
|     } | ||||
|  | ||||
|     public EquipmentGatewayRecord getEquipmentGateway() { | ||||
|         return equipmentGateway; | ||||
|     } | ||||
|  | ||||
|     public Location getEquipmentLocation() { | ||||
|         return equipmentLocation; | ||||
|     } | ||||
|  | ||||
|     public EquipmentRoutingRecord getEquipmentRouting() { | ||||
|         return equipmentRouting; | ||||
|     } | ||||
|  | ||||
|     public OpensyncAPHotspot20Config getHotspotConfig() { | ||||
|         return hotspotConfig; | ||||
|     } | ||||
|  | ||||
|     public List<Profile> getMetricsProfiles() { | ||||
|         return metricsProfile; | ||||
|     } | ||||
|  | ||||
|     public List<Profile> getRadiusProfiles() { | ||||
|         return radiusProfiles; | ||||
|     } | ||||
|  | ||||
|     public Profile getRfProfile() { | ||||
|         return rfProfile; | ||||
|     } | ||||
|  | ||||
|     public List<Profile> getSsidProfile() { | ||||
|         return ssidProfile; | ||||
|     } | ||||
|  | ||||
| 	public Profile getWiredEthernetPortProfile() { | ||||
| 		return wiredEthernetPortProfile; | ||||
| 	} | ||||
| 	 | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         return Objects.hash(apProfile, blockedClients, bonjourGatewayProfiles, captiveProfiles, customerEquipment, | ||||
|                 equipmentGateway, equipmentLocation, equipmentRouting, hotspotConfig, metricsProfile, radiusProfiles, | ||||
|                 rfProfile, ssidProfile, wiredEthernetPortProfile); | ||||
|     } | ||||
|  | ||||
|     public void setApProfile(Profile apProfile) { | ||||
|         this.apProfile = apProfile; | ||||
|     } | ||||
|  | ||||
|     public void setBlockedClients(List<MacAddress> blockedClients) { | ||||
|         this.blockedClients = blockedClients; | ||||
|     } | ||||
|  | ||||
|     public void setBonjourGatewayProfiles(List<Profile> bonjourGatewayProfiles) { | ||||
|         this.bonjourGatewayProfiles = bonjourGatewayProfiles; | ||||
|     } | ||||
|  | ||||
|     public void setCaptiveProfiles(List<Profile> captiveProfiles) { | ||||
|         this.captiveProfiles = captiveProfiles; | ||||
|     } | ||||
|  | ||||
|     public void setCustomerEquipment(Equipment customerEquipment) { | ||||
|         this.customerEquipment = customerEquipment; | ||||
|     } | ||||
|  | ||||
|     public void setEquipmentGateway(EquipmentGatewayRecord equipmentGateway) { | ||||
|         this.equipmentGateway = equipmentGateway; | ||||
|     } | ||||
|  | ||||
|     public void setEquipmentLocation(Location equipmentLocation) { | ||||
|         this.equipmentLocation = equipmentLocation; | ||||
|     } | ||||
|  | ||||
|     public void setEquipmentRouting(EquipmentRoutingRecord equipmentRouting) { | ||||
|         this.equipmentRouting = equipmentRouting; | ||||
|     } | ||||
|  | ||||
|     public void setHotspotConfig(OpensyncAPHotspot20Config hotspotConfig) { | ||||
|         this.hotspotConfig = hotspotConfig; | ||||
|     } | ||||
|  | ||||
|     public void setMetricsProfiles(List<Profile> metricsProfileList) { | ||||
|         metricsProfile = metricsProfileList; | ||||
|     } | ||||
|  | ||||
|     // Handle Legacy Config Support | ||||
|     public void setRadioConfig(OpensyncAPRadioConfig radioConfig) { | ||||
|  | ||||
| @@ -326,21 +61,13 @@ public class OpensyncAPConfig extends OpensyncAPBase { | ||||
|             equipmentLocation = new Location(); | ||||
|             equipmentLocation.setId(1); | ||||
|             equipmentLocation.setDetails(LocationDetails.createWithDefaults()); | ||||
|             equipmentLocation.getDetails() | ||||
|             ((LocationDetails) equipmentLocation.getDetails()) | ||||
|                     .setCountryCode(CountryCode.getByName(radioConfig.getCountry().toLowerCase())); | ||||
|             customerEquipment.setLocationId(equipmentLocation.getId()); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public void setRadiusProfiles(List<Profile> radiusProfiles) { | ||||
|         this.radiusProfiles = radiusProfiles; | ||||
|     } | ||||
|  | ||||
|     public void setRfProfile(Profile rfProfile) { | ||||
|         this.rfProfile = rfProfile; | ||||
|     } | ||||
|  | ||||
|     // Handle Legacy Config Support | ||||
|     public void setSsidConfigs(List<OpensyncAPSsidConfig> ssidConfigs) { | ||||
|  | ||||
| @@ -362,18 +89,16 @@ public class OpensyncAPConfig extends OpensyncAPBase { | ||||
|             appliedRadios.add(ssidConfig.getRadioType()); | ||||
|             cfg.setAppliedRadios(appliedRadios); | ||||
|             cfg.setSsid(ssidConfig.getSsid()); | ||||
|             if (ssidConfig.getEncryption().equals("WPA-PSK") && ssidConfig.getMode().equals("1")) { | ||||
|             if (ssidConfig.getEncryption().equals("WPA-PSK") && ssidConfig.getMode().equals("1")) | ||||
|                 cfg.setSecureMode(SecureMode.wpaPSK); | ||||
|             } else { | ||||
|             else | ||||
|                 cfg.setSecureMode(SecureMode.wpa2PSK); | ||||
|             } | ||||
|             cfg.setBroadcastSsid(ssidConfig.isBroadcast() ? StateSetting.enabled : StateSetting.disabled); | ||||
|  | ||||
|             profile.setDetails(cfg); | ||||
|             profile.setId(ssidProfileId); | ||||
|             if (this.ssidProfile == null) { | ||||
|             if (this.ssidProfile == null) | ||||
|                 this.ssidProfile = new ArrayList<Profile>(); | ||||
|             } | ||||
|             this.ssidProfile.add(profile); | ||||
|             apProfile.getChildProfileIds().add(ssidProfileId); | ||||
|             ssidProfileId++; | ||||
| @@ -386,12 +111,206 @@ public class OpensyncAPConfig extends OpensyncAPBase { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public EquipmentGatewayRecord getEquipmentGateway() { | ||||
|         return equipmentGateway; | ||||
|     } | ||||
|  | ||||
|     public void setEquipmentGateway(EquipmentGatewayRecord equipmentGateway) { | ||||
|         this.equipmentGateway = equipmentGateway; | ||||
|     } | ||||
|  | ||||
|     public EquipmentRoutingRecord getEquipmentRouting() { | ||||
|         return equipmentRouting; | ||||
|     } | ||||
|  | ||||
|     public void setEquipmentRouting(EquipmentRoutingRecord equipmentRouting) { | ||||
|         this.equipmentRouting = equipmentRouting; | ||||
|     } | ||||
|  | ||||
|     public Equipment getCustomerEquipment() { | ||||
|         return customerEquipment; | ||||
|     } | ||||
|  | ||||
|     public void setCustomerEquipment(Equipment customerEquipment) { | ||||
|         this.customerEquipment = customerEquipment; | ||||
|     } | ||||
|  | ||||
|     public OpensyncAPHotspot20Config getHotspotConfig() { | ||||
|         return hotspotConfig; | ||||
|     } | ||||
|  | ||||
|     public void setHotspotConfig(OpensyncAPHotspot20Config hotspotConfig) { | ||||
|         this.hotspotConfig = hotspotConfig; | ||||
|     } | ||||
|  | ||||
|     public Profile getApProfile() { | ||||
|         return apProfile; | ||||
|     } | ||||
|  | ||||
|     public void setApProfile(Profile apProfile) { | ||||
|         this.apProfile = apProfile; | ||||
|     } | ||||
|      | ||||
|     public Profile getRfProfile() { | ||||
|     	return rfProfile; | ||||
|     } | ||||
|      | ||||
|     public void setRfProfile(Profile rfProfile) { | ||||
|     	this.rfProfile = rfProfile; | ||||
|     } | ||||
|  | ||||
|     public List<Profile> getSsidProfile() { | ||||
|         return ssidProfile; | ||||
|     } | ||||
|  | ||||
|     public void setSsidProfile(List<Profile> ssidProfile) { | ||||
|         this.ssidProfile = ssidProfile; | ||||
|     } | ||||
|  | ||||
| 	public void setWiredEthernetPortProfile(Profile wiredEthernetPortProfile) { | ||||
| 		this.wiredEthernetPortProfile = wiredEthernetPortProfile; | ||||
| 	} | ||||
|     public List<Profile> getBonjourGatewayProfiles() { | ||||
|         return bonjourGatewayProfiles; | ||||
|     } | ||||
|  | ||||
|     public void setBonjourGatewayProfiles(List<Profile> bonjourGatewayProfiles) { | ||||
|         this.bonjourGatewayProfiles = bonjourGatewayProfiles; | ||||
|     } | ||||
|  | ||||
|     public Location getEquipmentLocation() { | ||||
|         return equipmentLocation; | ||||
|     } | ||||
|  | ||||
|     public void setEquipmentLocation(Location equipmentLocation) { | ||||
|         this.equipmentLocation = equipmentLocation; | ||||
|     } | ||||
|  | ||||
|     public String getCountryCode() { | ||||
|         return Location.getCountryCode(this.equipmentLocation).toString(); | ||||
|     } | ||||
|  | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public OpensyncAPConfig clone() { | ||||
|         OpensyncAPConfig ret = (OpensyncAPConfig) super.clone(); | ||||
|  | ||||
|         if (customerEquipment != null) | ||||
|             ret.customerEquipment = customerEquipment.clone(); | ||||
|         if (hotspotConfig != null) | ||||
|             ret.hotspotConfig = hotspotConfig.clone(); | ||||
|         if (equipmentLocation != null) | ||||
|             ret.equipmentLocation = equipmentLocation.clone(); | ||||
|         if (ssidProfile != null) { | ||||
|             List<Profile> ssidList = new ArrayList<Profile>(); | ||||
|             for (Profile profile : ssidProfile) { | ||||
|                 ssidList.add(profile.clone()); | ||||
|             } | ||||
|             ret.ssidProfile = ssidList; | ||||
|         } | ||||
|         if (metricsProfile != null) { | ||||
|             List<Profile> metricsList = new ArrayList<Profile>(); | ||||
|             for (Profile profile : metricsProfile) { | ||||
|                 metricsList.add(profile.clone()); | ||||
|             } | ||||
|             ret.metricsProfile = metricsList; | ||||
|         } | ||||
|         if (bonjourGatewayProfiles != null) { | ||||
|             List<Profile> bonjourGatewayProfilesList = new ArrayList<Profile>(); | ||||
|             for (Profile profile : bonjourGatewayProfiles) { | ||||
|                 bonjourGatewayProfilesList.add(profile.clone()); | ||||
|             } | ||||
|             ret.bonjourGatewayProfiles = bonjourGatewayProfilesList; | ||||
|         } | ||||
|         if (apProfile != null) | ||||
|             ret.apProfile = apProfile.clone(); | ||||
|         if (rfProfile != null) | ||||
|         	ret.rfProfile = rfProfile.clone(); | ||||
|         if (equipmentRouting != null) | ||||
|             ret.equipmentRouting = equipmentRouting.clone(); | ||||
|         if (equipmentGateway != null) | ||||
|             ret.equipmentGateway = equipmentGateway.clone(); | ||||
|         if (radiusProfiles != null) { | ||||
|             ret.radiusProfiles = new ArrayList<>(); | ||||
|             for (Profile radiusProfile : this.radiusProfiles) { | ||||
|                 ret.radiusProfiles.add(radiusProfile); | ||||
|             } | ||||
|         } | ||||
|         if (captiveProfiles != null) { | ||||
|             ret.captiveProfiles = new ArrayList<>(); | ||||
|             for (Profile cpConfig : this.captiveProfiles) { | ||||
|                 ret.captiveProfiles.add(cpConfig); | ||||
|             } | ||||
|         } | ||||
|         if (blockedClients != null) { | ||||
|             ret.blockedClients = new ArrayList<MacAddress>(); | ||||
|             for (MacAddress blockedClient : this.blockedClients) { | ||||
|                 ret.blockedClients.add(blockedClient); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return ret; | ||||
|     } | ||||
|  | ||||
|     public List<Profile> getRadiusProfiles() { | ||||
|         return radiusProfiles; | ||||
|     } | ||||
|  | ||||
|     public void setRadiusProfiles(List<Profile> radiusProfiles) { | ||||
|         this.radiusProfiles = radiusProfiles; | ||||
|     } | ||||
|  | ||||
|     public List<Profile> getCaptiveProfiles() { | ||||
|         return captiveProfiles; | ||||
|     } | ||||
|  | ||||
|     public void setCaptiveProfiles(List<Profile> captiveProfiles) { | ||||
|         this.captiveProfiles = captiveProfiles; | ||||
|     } | ||||
|  | ||||
|     public List<MacAddress> getBlockedClients() { | ||||
|         return blockedClients; | ||||
|     } | ||||
|  | ||||
|     public void setBlockedClients(List<MacAddress> blockedClients) { | ||||
|         this.blockedClients = blockedClients; | ||||
|     } | ||||
|  | ||||
|     public void setMetricsProfiles(List<Profile> metricsProfileList) { | ||||
|         metricsProfile = metricsProfileList;        | ||||
|     } | ||||
|      | ||||
|     public List<Profile> getMetricsProfiles() { | ||||
|         return metricsProfile;        | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         return Objects.hash(apProfile, blockedClients, bonjourGatewayProfiles, captiveProfiles, customerEquipment, | ||||
|                 equipmentGateway, equipmentLocation, equipmentRouting, hotspotConfig, metricsProfile, | ||||
|                 radiusProfiles, rfProfile, ssidProfile); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean equals(Object obj) { | ||||
|         if (this == obj) { | ||||
|             return true; | ||||
|         } | ||||
|         if (!(obj instanceof OpensyncAPConfig)) { | ||||
|             return false; | ||||
|         } | ||||
|         OpensyncAPConfig other = (OpensyncAPConfig) obj; | ||||
|         return Objects.equals(apProfile, other.apProfile) && Objects.equals(blockedClients, other.blockedClients) | ||||
|                 && Objects.equals(bonjourGatewayProfiles, other.bonjourGatewayProfiles) | ||||
|                 && Objects.equals(captiveProfiles, other.captiveProfiles) | ||||
|                 && Objects.equals(customerEquipment, other.customerEquipment) | ||||
|                 && Objects.equals(equipmentGateway, other.equipmentGateway) | ||||
|                 && Objects.equals(equipmentLocation, other.equipmentLocation) | ||||
|                 && Objects.equals(equipmentRouting, other.equipmentRouting) | ||||
|                 && Objects.equals(hotspotConfig, other.hotspotConfig) | ||||
|                 && Objects.equals(metricsProfile, other.metricsProfile) | ||||
|                 && Objects.equals(radiusProfiles, other.radiusProfiles) && Objects.equals(rfProfile, other.rfProfile) | ||||
|                 && Objects.equals(ssidProfile, other.ssidProfile); | ||||
|     } | ||||
|      | ||||
| } | ||||
|   | ||||
| @@ -4,12 +4,13 @@ import java.util.HashSet; | ||||
| import java.util.Objects; | ||||
| import java.util.Set; | ||||
|  | ||||
| import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; | ||||
| import com.telecominfraproject.wlan.profile.models.Profile; | ||||
|  | ||||
| public class OpensyncAPHotspot20Config extends OpensyncAPBase { | ||||
| public class OpensyncAPHotspot20Config extends BaseJsonModel { | ||||
|  | ||||
|     private static final long serialVersionUID = -8495473152523219578L; | ||||
|  | ||||
|      | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
| @@ -19,6 +20,40 @@ public class OpensyncAPHotspot20Config extends OpensyncAPBase { | ||||
|     private Set<Profile> hotspot20VenueSet; | ||||
|     private Set<Profile> hotspot20ProviderSet; | ||||
|  | ||||
|  | ||||
|      | ||||
|     public Set<Profile> getHotspot20ProfileSet() { | ||||
|         return hotspot20ProfileSet; | ||||
|     } | ||||
|      | ||||
|     public void setHotspot20ProfileSet(Set<Profile> hotspot20ProfileSet) { | ||||
|         this.hotspot20ProfileSet = hotspot20ProfileSet; | ||||
|     } | ||||
|  | ||||
|     public Set<Profile> getHotspot20OperatorSet() { | ||||
|         return hotspot20OperatorSet; | ||||
|     } | ||||
|      | ||||
|     public void setHotspot20OperatorSet(Set<Profile> hotspot20OperatorSet) { | ||||
|         this.hotspot20OperatorSet = hotspot20OperatorSet; | ||||
|     } | ||||
|      | ||||
|     public Set<Profile> getHotspot20VenueSet() { | ||||
|         return hotspot20VenueSet; | ||||
|     } | ||||
|      | ||||
|     public void setHotspot20VenueSet(Set<Profile> hotspot20VenueSet) { | ||||
|         this.hotspot20VenueSet = hotspot20VenueSet; | ||||
|     } | ||||
|  | ||||
|     public Set<Profile> getHotspot20ProviderSet() { | ||||
|         return hotspot20ProviderSet; | ||||
|     } | ||||
|      | ||||
|     public void setHotspot20ProviderSet(Set<Profile> hotspot20ProviderSet) { | ||||
|         this.hotspot20ProviderSet = hotspot20ProviderSet; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public OpensyncAPHotspot20Config clone() { | ||||
|         OpensyncAPHotspot20Config ret = (OpensyncAPHotspot20Config) super.clone(); | ||||
| @@ -42,15 +77,17 @@ public class OpensyncAPHotspot20Config extends OpensyncAPBase { | ||||
|         return ret; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         return Objects.hash(hotspot20OperatorSet, hotspot20ProfileSet, hotspot20ProviderSet, hotspot20VenueSet); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean equals(Object obj) { | ||||
|         if (this == obj) { | ||||
|             return true; | ||||
|         } | ||||
|         if (obj == null) { | ||||
|             return false; | ||||
|         } | ||||
|         if (getClass() != obj.getClass()) { | ||||
|         if (!(obj instanceof OpensyncAPHotspot20Config)) { | ||||
|             return false; | ||||
|         } | ||||
|         OpensyncAPHotspot20Config other = (OpensyncAPHotspot20Config) obj; | ||||
| @@ -60,41 +97,4 @@ public class OpensyncAPHotspot20Config extends OpensyncAPBase { | ||||
|                 && Objects.equals(hotspot20VenueSet, other.hotspot20VenueSet); | ||||
|     } | ||||
|  | ||||
|     public Set<Profile> getHotspot20OperatorSet() { | ||||
|         return hotspot20OperatorSet; | ||||
|     } | ||||
|  | ||||
|     public Set<Profile> getHotspot20ProfileSet() { | ||||
|         return hotspot20ProfileSet; | ||||
|     } | ||||
|  | ||||
|     public Set<Profile> getHotspot20ProviderSet() { | ||||
|         return hotspot20ProviderSet; | ||||
|     } | ||||
|  | ||||
|     public Set<Profile> getHotspot20VenueSet() { | ||||
|         return hotspot20VenueSet; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         return Objects.hash(hotspot20OperatorSet, hotspot20ProfileSet, hotspot20ProviderSet, hotspot20VenueSet); | ||||
|     } | ||||
|  | ||||
|     public void setHotspot20OperatorSet(Set<Profile> hotspot20OperatorSet) { | ||||
|         this.hotspot20OperatorSet = hotspot20OperatorSet; | ||||
|     } | ||||
|  | ||||
|     public void setHotspot20ProfileSet(Set<Profile> hotspot20ProfileSet) { | ||||
|         this.hotspot20ProfileSet = hotspot20ProfileSet; | ||||
|     } | ||||
|  | ||||
|     public void setHotspot20ProviderSet(Set<Profile> hotspot20ProviderSet) { | ||||
|         this.hotspot20ProviderSet = hotspot20ProviderSet; | ||||
|     } | ||||
|  | ||||
|     public void setHotspot20VenueSet(Set<Profile> hotspot20VenueSet) { | ||||
|         this.hotspot20VenueSet = hotspot20VenueSet; | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -2,513 +2,457 @@ package com.telecominfraproject.wlan.opensync.external.integration.models; | ||||
|  | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
| import java.util.Objects; | ||||
|  | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Row; | ||||
| import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Uuid; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Value; | ||||
|  | ||||
| public class OpensyncAPInetState extends OpensyncAPBase { | ||||
|  | ||||
|     private static final long serialVersionUID = 1707053648715030173L; | ||||
|  | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
|  | ||||
|     public String ifName; | ||||
|     public Map<String, String> dhcpd; | ||||
|     public String unpnpMode; | ||||
|     public String ifType; | ||||
|     public String softwdsMacAddr; | ||||
|     public boolean enabled; | ||||
|     public Map<String, String> ethPorts; | ||||
|     public boolean sofwdsWrap; | ||||
|     public int vlanId; | ||||
|     public Map<String, String> vlanTrunk; | ||||
|     public String netmask; | ||||
|     public boolean nat; | ||||
|     public String greRemoteInetAddr; | ||||
|     public String ifUuid; | ||||
|     public String inetAddr; | ||||
|     public String hwAddr; | ||||
|     public int mtw; | ||||
|     public boolean network; | ||||
|     public Map<String, String> dns; | ||||
|     public String parentIfName; | ||||
|     public String greIfName; | ||||
|     public String broadcast; | ||||
|     public Map<String, String> dhcpc; | ||||
|     public String gateway; | ||||
|     public String ipAssignScheme; | ||||
|     public String inetConfig; | ||||
|     public Uuid _uuid; | ||||
|     public Uuid version; | ||||
|     public String greLocalInetAddr; | ||||
|     // the following attribute is in inetC but not in inetS | ||||
|     public String greRemoteMacAddr; | ||||
|  | ||||
|     public OpensyncAPInetState() { | ||||
|         dns = new HashMap<>(); | ||||
|         dhcpc = new HashMap<>(); | ||||
|         ethPorts = new HashMap<>(); | ||||
|         vlanTrunk = new HashMap<>(); | ||||
|     } | ||||
|  | ||||
|     public OpensyncAPInetState(Row row) { | ||||
|         dns = new HashMap<>(); | ||||
|         dhcpc = new HashMap<>(); | ||||
|         ethPorts = new HashMap<>(); | ||||
|         vlanTrunk = new HashMap<>(); | ||||
|  | ||||
|         Map<String, Value> map = row.getColumns(); | ||||
|  | ||||
|         if ((map.get("NAT") != null) | ||||
|                 && map.get("NAT").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setNat(row.getBooleanColumn("NAT")); | ||||
|         } | ||||
|         if ((map.get("enabled") != null) | ||||
|                 && map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setEnabled(row.getBooleanColumn("enabled")); | ||||
|         } | ||||
|         if ((map.get("if_name") != null) | ||||
|                 && map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setIfName(row.getStringColumn("if_name")); | ||||
|         } | ||||
|         if ((map.get("if_type") != null) | ||||
|                 && map.get("if_type").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setIfType(row.getStringColumn("if_type")); | ||||
|         } | ||||
|  | ||||
|         if (map.containsKey("dhcpc")) { | ||||
|             this.setDhcpc(row.getMapColumn("dhcpc")); | ||||
|         } | ||||
|         if (map.containsKey("dhcpd")) { | ||||
|             this.setDhcpd(row.getMapColumn("dhcpd")); | ||||
|         } | ||||
|         if (map.containsKey("dns")) { | ||||
|             this.setDns(row.getMapColumn("dns")); | ||||
|         } | ||||
|         if (map.containsKey("eth_ports")) { | ||||
|         	this.setEthPorts(row.getMapColumn("eth_ports")); | ||||
|         } | ||||
|         if (map.containsKey("vlan_trunk")) { | ||||
|         	this.setVlanTrunk(row.getMapColumn("vlan_trunk")); | ||||
|         } | ||||
|         if (map.get("inet_addr") != null | ||||
|                 && map.get("inet_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setInetAddr(row.getStringColumn("inet_addr")); | ||||
|         } | ||||
|         if (map.containsKey("netmask")) { | ||||
|             this.setNetmask(getSingleValueFromSet(row, "netmask")); | ||||
|         } | ||||
|         if (map.get("vlan_id") != null | ||||
|                 && map.get("vlan_id").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVlanId(row.getIntegerColumn("vlan_id").intValue()); | ||||
|         } | ||||
|         if (map.get("gre_ifname") != null | ||||
|                 && map.get("gre_ifname").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setGreIfName(row.getStringColumn("gre_ifname")); | ||||
|         } | ||||
|         if (map.get("gre_remote_inet_addr") != null && map.get("gre_remote_inet_addr").getClass() | ||||
|                 .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setGreRemoteInetAddr(row.getStringColumn("gre_remote_inet_addr")); | ||||
|         } | ||||
|         if (map.get("gre_local_inet_addr") != null && map.get("gre_local_inet_addr").getClass() | ||||
|                 .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setGreLocalInetAddr(row.getStringColumn("gre_local_inet_addr")); | ||||
|         } | ||||
|         if (map.get("gre_remote_mac_addr") != null && map.get("gre_remote_mac_addr").getClass() | ||||
|                 .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setGreRemoteMacAddr(row.getStringColumn("gre_remote_mac_addr")); | ||||
|         } | ||||
|  | ||||
|         if ((map.get("ip_assign_scheme") != null) && map.get("ip_assign_scheme").getClass() | ||||
|                 .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setIpAssignScheme(row.getStringColumn("ip_assign_scheme")); | ||||
|         } | ||||
|         if ((map.get("network") != null) | ||||
|                 && map.get("network").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setNetwork(row.getBooleanColumn("network")); | ||||
|         } | ||||
|         if ((map.get("hwaddr") != null) | ||||
|                 && map.get("hwaddr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setHwAddr(row.getStringColumn("hwaddr")); | ||||
|         } | ||||
|         if ((map.get("_version") != null) | ||||
|                 && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVersion(row.getUuidColumn("_version")); | ||||
|         } | ||||
|         if ((map.get("_uuid") != null) | ||||
|                 && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVersion(row.getUuidColumn("_uuid")); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean equals(Object obj) { | ||||
|         if (this == obj) { | ||||
|             return true; | ||||
|         } | ||||
|         if (obj == null) { | ||||
|             return false; | ||||
|         } | ||||
|         if (getClass() != obj.getClass()) { | ||||
|             return false; | ||||
|         } | ||||
|         OpensyncAPInetState other = (OpensyncAPInetState) obj; | ||||
|         if (!Objects.equals(_uuid, other._uuid)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(broadcast, other.broadcast)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(dhcpc, other.dhcpc)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(dhcpd, other.dhcpd)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(ethPorts, other.ethPorts)) { | ||||
|         	return false; | ||||
|         } | ||||
|         if (!Objects.equals(vlanTrunk, other.vlanTrunk)) { | ||||
|         	return false; | ||||
|         } | ||||
|         if (!Objects.equals(dns, other.dns)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (enabled != other.enabled) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(gateway, other.gateway)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(greIfName, other.greIfName)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(greLocalInetAddr, other.greLocalInetAddr)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(greRemoteInetAddr, other.greRemoteInetAddr)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(hwAddr, other.hwAddr)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(ifName, other.ifName)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(ifType, other.ifType)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(ifUuid, other.ifUuid)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(inetAddr, other.inetAddr)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(inetConfig, other.inetConfig)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(ipAssignScheme, other.ipAssignScheme)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (mtw != other.mtw) { | ||||
|             return false; | ||||
|         } | ||||
|         if (nat != other.nat) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(netmask, other.netmask)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (network != other.network) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(parentIfName, other.parentIfName)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(greRemoteMacAddr, other.greRemoteMacAddr)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(softwdsMacAddr, other.softwdsMacAddr)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (sofwdsWrap != other.sofwdsWrap) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(unpnpMode, other.unpnpMode)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (!Objects.equals(version, other.version)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (vlanId != other.vlanId) { | ||||
|             return false; | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     public Uuid get_uuid() { | ||||
|         return _uuid; | ||||
|     } | ||||
|  | ||||
|     public String getBroadcast() { | ||||
|         return broadcast; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getDhcpc() { | ||||
|         return dhcpc; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getDhcpd() { | ||||
|         return dhcpd; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getDns() { | ||||
|         return dns; | ||||
|     } | ||||
|      | ||||
|     public Map<String, String> getEthPorts() { | ||||
|     	return ethPorts; | ||||
|     } | ||||
|      | ||||
|     public Map<String, String> getVlanTrunk() { | ||||
|     	return vlanTrunk; | ||||
|     } | ||||
|  | ||||
|     public String getGateway() { | ||||
|         return gateway; | ||||
|     } | ||||
|  | ||||
|     public String getGreIfName() { | ||||
|         return greIfName; | ||||
|     } | ||||
|  | ||||
|     public String getGreLocalInetAddr() { | ||||
|         return greLocalInetAddr; | ||||
|     } | ||||
|  | ||||
|     public String getGreRemoteInetAddr() { | ||||
|         return greRemoteInetAddr; | ||||
|     } | ||||
|  | ||||
|     public String getGreRemoteMacAddr() { | ||||
|         return this.greRemoteMacAddr; | ||||
|     } | ||||
|  | ||||
|     public String getHwAddr() { | ||||
|         return hwAddr; | ||||
|     } | ||||
|  | ||||
|     public String getIfName() { | ||||
|         return ifName; | ||||
|     } | ||||
|  | ||||
|     public String getIfType() { | ||||
|         return ifType; | ||||
|     } | ||||
|  | ||||
|     public String getIfUuid() { | ||||
|         return ifUuid; | ||||
|     } | ||||
|  | ||||
|     public String getInetAddr() { | ||||
|         return inetAddr; | ||||
|     } | ||||
|  | ||||
|     public String getInetConfig() { | ||||
|         return inetConfig; | ||||
|     } | ||||
|  | ||||
|     public String getIpAssignScheme() { | ||||
|         return ipAssignScheme; | ||||
|     } | ||||
|  | ||||
|     public int getMtw() { | ||||
|         return mtw; | ||||
|     } | ||||
|  | ||||
|     public String getNetmask() { | ||||
|         return netmask; | ||||
|     } | ||||
|  | ||||
|     public String getParentIfName() { | ||||
|         return parentIfName; | ||||
|     } | ||||
|  | ||||
|     public String getSoftwdsMacAddr() { | ||||
|         return softwdsMacAddr; | ||||
|     } | ||||
|  | ||||
|     public String getUnpnpMode() { | ||||
|         return unpnpMode; | ||||
|     } | ||||
|  | ||||
|     public Uuid getVersion() { | ||||
|         return version; | ||||
|     } | ||||
|  | ||||
|     public int getVlanId() { | ||||
|         return vlanId; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public int hashCode() { | ||||
|         return Objects.hash(_uuid, broadcast, dhcpc, dhcpd, dns, ethPorts, enabled, gateway, greIfName, greLocalInetAddr, greRemoteInetAddr, | ||||
|                 hwAddr, ifName, ifType, ifUuid, inetAddr, inetConfig, ipAssignScheme, mtw, nat, netmask, network, | ||||
|                 parentIfName, greRemoteMacAddr, softwdsMacAddr, sofwdsWrap, unpnpMode, version, vlanId, vlanTrunk); | ||||
|     } | ||||
|  | ||||
|     public boolean isEnabled() { | ||||
|         return enabled; | ||||
|     } | ||||
|  | ||||
|     public boolean isNat() { | ||||
|         return nat; | ||||
|     } | ||||
|  | ||||
|     public boolean isNetwork() { | ||||
|         return network; | ||||
|     } | ||||
|  | ||||
|     public boolean isSofwdsWrap() { | ||||
|         return sofwdsWrap; | ||||
|     } | ||||
|  | ||||
|     public void set_uuid(Uuid _uuid) { | ||||
|         this._uuid = _uuid; | ||||
|     } | ||||
|  | ||||
|     public void setBroadcast(String broadcast) { | ||||
|         this.broadcast = broadcast; | ||||
|     } | ||||
|  | ||||
|     public void setDhcpc(Map<String, String> dhcpc) { | ||||
|         this.dhcpc = dhcpc; | ||||
|     } | ||||
|  | ||||
|     public void setDhcpd(Map<String, String> dhcpd) { | ||||
|         this.dhcpd = dhcpd; | ||||
|     } | ||||
|  | ||||
|     public void setDns(Map<String, String> dns) { | ||||
|         this.dns = dns; | ||||
|     } | ||||
|      | ||||
|     public void setEthPorts(Map<String, String> ethPorts) { | ||||
|     	this.ethPorts = ethPorts; | ||||
|     } | ||||
|      | ||||
|     public void setVlanTrunk(Map<String, String> vlanTrunk) { | ||||
|     	this.vlanTrunk = vlanTrunk; | ||||
|     } | ||||
|  | ||||
|     public void setEnabled(boolean enabled) { | ||||
|         this.enabled = enabled; | ||||
|     } | ||||
|  | ||||
|     public void setGateway(String gateway) { | ||||
|         this.gateway = gateway; | ||||
|     } | ||||
|  | ||||
|     public void setGreIfName(String greIfName) { | ||||
|         this.greIfName = greIfName; | ||||
|     } | ||||
|  | ||||
|     public void setGreLocalInetAddr(String greLocalInetAddr) { | ||||
|         this.greLocalInetAddr = greLocalInetAddr; | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public void setGreRemoteInetAddr(String greRemoteInetAddr) { | ||||
|         this.greRemoteInetAddr = greRemoteInetAddr; | ||||
|     } | ||||
|  | ||||
|     public void setGreRemoteMacAddr(String greRemoteMacAddr) { | ||||
|         this.greRemoteMacAddr = greRemoteMacAddr; | ||||
|     } | ||||
|  | ||||
|     public void setHwAddr(String hwAddr) { | ||||
|         this.hwAddr = hwAddr; | ||||
|     } | ||||
|  | ||||
|     public void setIfName(String ifName) { | ||||
|         this.ifName = ifName; | ||||
|     } | ||||
|  | ||||
|     public void setIfType(String ifType) { | ||||
|         this.ifType = ifType; | ||||
|     } | ||||
|  | ||||
|     public void setIfUuid(String ifUuid) { | ||||
|         this.ifUuid = ifUuid; | ||||
|     } | ||||
|  | ||||
|     public void setInetAddr(String inetAddr) { | ||||
|         this.inetAddr = inetAddr; | ||||
|     } | ||||
|  | ||||
|     public void setInetConfig(String inetConfig) { | ||||
|         this.inetConfig = inetConfig; | ||||
|     } | ||||
|  | ||||
|     public void setIpAssignScheme(String ipAssignScheme) { | ||||
|         this.ipAssignScheme = ipAssignScheme; | ||||
|     } | ||||
|  | ||||
|     public void setMtw(int mtw) { | ||||
|         this.mtw = mtw; | ||||
|     } | ||||
|  | ||||
|     public void setNat(boolean nat) { | ||||
|         this.nat = nat; | ||||
|     } | ||||
|  | ||||
|     public void setNetmask(String netmask) { | ||||
|         this.netmask = netmask; | ||||
|     } | ||||
|  | ||||
|     public void setNetwork(boolean network) { | ||||
|         this.network = network; | ||||
|     } | ||||
|  | ||||
|     public void setParentIfName(String parentIfName) { | ||||
|         this.parentIfName = parentIfName; | ||||
|     } | ||||
|  | ||||
|     public void setSoftwdsMacAddr(String softwdsMacAddr) { | ||||
|         this.softwdsMacAddr = softwdsMacAddr; | ||||
|     } | ||||
|  | ||||
|     public void setSofwdsWrap(boolean sofwdsWrap) { | ||||
|         this.sofwdsWrap = sofwdsWrap; | ||||
|     } | ||||
|  | ||||
|     public void setUnpnpMode(String unpnpMode) { | ||||
|         this.unpnpMode = unpnpMode; | ||||
|     } | ||||
|  | ||||
|     public void setVersion(Uuid version) { | ||||
|         this.version = version; | ||||
|     } | ||||
|  | ||||
|     public void setVlanId(int vlanId) { | ||||
|         this.vlanId = vlanId; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "OpensyncAPInetState [ifName=" + ifName + ", dhcpd=" + dhcpd + ", ethPorts=" + ethPorts + ", unpnpMode=" + unpnpMode + ", ifType=" | ||||
|                 + ifType + ", softwdsMacAddr=" + softwdsMacAddr + ", enabled=" + enabled + ", sofwdsWrap=" + sofwdsWrap | ||||
|                 + ", vlanId=" + vlanId + ", vlanTrunk=" + vlanTrunk + ", netmask=" + netmask + ", nat=" + nat + ", greRemoteInetAddr=" | ||||
|                 + greRemoteInetAddr + ", ifUuid=" + ifUuid + ", inetAddr=" + inetAddr + ", hwAddr=" + hwAddr + ", mtw=" | ||||
|                 + mtw + ", network=" + network + ", dns=" + dns + ", parentIfName=" + parentIfName + ", greIfName=" | ||||
|                 + greIfName + ", broadcast=" + broadcast + ", dhcpc=" + dhcpc + ", gateway=" + gateway | ||||
|                 + ", ipAssignScheme=" + ipAssignScheme + ", inetConfig=" + inetConfig + ", _uuid=" + _uuid | ||||
|                 + ", version=" + version + ", greLocalInetAddr=" + greLocalInetAddr + ", greRemoteMacAddr=" | ||||
|                 + greRemoteMacAddr + "]"; | ||||
|     } | ||||
|  | ||||
| public class OpensyncAPInetState extends BaseJsonModel { | ||||
|  | ||||
| 	private static final long serialVersionUID = 1707053648715030173L; | ||||
|  | ||||
| 	public String ifName; | ||||
| 	public Map<String, String> dhcpd; | ||||
| 	public String unpnpMode; | ||||
| 	public String ifType; | ||||
| 	public String softwdsMacAddr; | ||||
| 	public boolean enabled; | ||||
| 	public boolean sofwdsWrap; | ||||
| 	public int vlanId; | ||||
| 	public String netmask; | ||||
| 	public boolean nat; | ||||
| 	public String greRemoteInetAddr; | ||||
| 	public String ifUuid; | ||||
| 	public String inetAddr; | ||||
| 	public String hwAddr; | ||||
| 	public int mtw; | ||||
| 	public boolean network; | ||||
| 	public Map<String, String> dns; | ||||
| 	public String parentIfName; | ||||
| 	public String greIfName; | ||||
| 	public String broadcast; | ||||
| 	public Map<String, String> dhcpc; | ||||
| 	public String gateway; | ||||
| 	public String ipAssignScheme; | ||||
| 	public String inetConfig; | ||||
| 	public Uuid _uuid; | ||||
| 	public Uuid version; | ||||
| 	public String greLocalInetAddr; | ||||
| 	public String greRemoteMacAddr; | ||||
|  | ||||
| 	public OpensyncAPInetState() { | ||||
| 		super(); | ||||
| 		dns = new HashMap<>(); | ||||
| 		dhcpc = new HashMap<>(); | ||||
| 	} | ||||
|  | ||||
| 	public String getIfName() { | ||||
| 		return ifName; | ||||
| 	} | ||||
|  | ||||
| 	public void setIfName(String ifName) { | ||||
| 		this.ifName = ifName; | ||||
| 	} | ||||
|  | ||||
| 	public Map<String, String> getDhcpd() { | ||||
| 		return dhcpd; | ||||
| 	} | ||||
|  | ||||
| 	public void setDhcpd(Map<String, String> dhcpd) { | ||||
| 		this.dhcpd = dhcpd; | ||||
| 	} | ||||
|  | ||||
| 	public String getUnpnpMode() { | ||||
| 		return unpnpMode; | ||||
| 	} | ||||
|  | ||||
| 	public void setUnpnpMode(String unpnpMode) { | ||||
| 		this.unpnpMode = unpnpMode; | ||||
| 	} | ||||
|  | ||||
| 	public String getIfType() { | ||||
| 		return ifType; | ||||
| 	} | ||||
|  | ||||
| 	public void setIfType(String ifType) { | ||||
| 		this.ifType = ifType; | ||||
| 	} | ||||
|  | ||||
| 	public String getSoftwdsMacAddr() { | ||||
| 		return softwdsMacAddr; | ||||
| 	} | ||||
|  | ||||
| 	public void setSoftwdsMacAddr(String softwdsMacAddr) { | ||||
| 		this.softwdsMacAddr = softwdsMacAddr; | ||||
| 	} | ||||
|  | ||||
| 	public boolean isEnabled() { | ||||
| 		return enabled; | ||||
| 	} | ||||
|  | ||||
| 	public void setEnabled(boolean enabled) { | ||||
| 		this.enabled = enabled; | ||||
| 	} | ||||
|  | ||||
| 	public boolean isSofwdsWrap() { | ||||
| 		return sofwdsWrap; | ||||
| 	} | ||||
|  | ||||
| 	public void setSofwdsWrap(boolean sofwdsWrap) { | ||||
| 		this.sofwdsWrap = sofwdsWrap; | ||||
| 	} | ||||
|  | ||||
| 	public int getVlanId() { | ||||
| 		return vlanId; | ||||
| 	} | ||||
|  | ||||
| 	public void setVlanId(int vlanId) { | ||||
| 		this.vlanId = vlanId; | ||||
| 	} | ||||
|  | ||||
| 	public String getNetmask() { | ||||
| 		return netmask; | ||||
| 	} | ||||
|  | ||||
| 	public void setNetmask(String netmask) { | ||||
| 		this.netmask = netmask; | ||||
| 	} | ||||
|  | ||||
| 	public boolean isNat() { | ||||
| 		return nat; | ||||
| 	} | ||||
|  | ||||
| 	public void setNat(boolean nat) { | ||||
| 		this.nat = nat; | ||||
| 	} | ||||
|  | ||||
| 	public String getGreRemoteInetAddr() { | ||||
| 		return greRemoteInetAddr; | ||||
| 	} | ||||
|  | ||||
| 	public void setGreRemoteInetAddr(String greRemoteInetAddr) { | ||||
| 		this.greRemoteInetAddr = greRemoteInetAddr; | ||||
| 	} | ||||
|  | ||||
| 	public String getIfUuid() { | ||||
| 		return ifUuid; | ||||
| 	} | ||||
|  | ||||
| 	public void setIfUuid(String ifUuid) { | ||||
| 		this.ifUuid = ifUuid; | ||||
| 	} | ||||
|  | ||||
| 	public String getInetAddr() { | ||||
| 		return inetAddr; | ||||
| 	} | ||||
|  | ||||
| 	public void setInetAddr(String inetAddr) { | ||||
| 		this.inetAddr = inetAddr; | ||||
| 	} | ||||
|  | ||||
| 	public String getHwAddr() { | ||||
| 		return hwAddr; | ||||
| 	} | ||||
|  | ||||
| 	public void setHwAddr(String hwAddr) { | ||||
| 		this.hwAddr = hwAddr; | ||||
| 	} | ||||
|  | ||||
| 	public int getMtw() { | ||||
| 		return mtw; | ||||
| 	} | ||||
|  | ||||
| 	public void setMtw(int mtw) { | ||||
| 		this.mtw = mtw; | ||||
| 	} | ||||
|  | ||||
| 	public boolean isNetwork() { | ||||
| 		return network; | ||||
| 	} | ||||
|  | ||||
| 	public void setNetwork(boolean network) { | ||||
| 		this.network = network; | ||||
| 	} | ||||
|  | ||||
| 	public Map<String, String> getDns() { | ||||
| 		return dns; | ||||
| 	} | ||||
|  | ||||
| 	public void setDns(Map<String, String> dns) { | ||||
| 		this.dns = dns; | ||||
| 	} | ||||
|  | ||||
| 	public String getParentIfName() { | ||||
| 		return parentIfName; | ||||
| 	} | ||||
|  | ||||
| 	public void setParentIfName(String parentIfName) { | ||||
| 		this.parentIfName = parentIfName; | ||||
| 	} | ||||
|  | ||||
| 	public String getGreIfName() { | ||||
| 		return greIfName; | ||||
| 	} | ||||
|  | ||||
| 	public void setGreIfName(String greIfName) { | ||||
| 		this.greIfName = greIfName; | ||||
| 	} | ||||
|  | ||||
| 	public String getBroadcast() { | ||||
| 		return broadcast; | ||||
| 	} | ||||
|  | ||||
| 	public void setBroadcast(String broadcast) { | ||||
| 		this.broadcast = broadcast; | ||||
| 	} | ||||
|  | ||||
| 	public Map<String, String> getDhcpc() { | ||||
| 		return dhcpc; | ||||
| 	} | ||||
|  | ||||
| 	public void setDhcpc(Map<String, String> dhcpc) { | ||||
| 		this.dhcpc = dhcpc; | ||||
| 	} | ||||
|  | ||||
| 	public String getGateway() { | ||||
| 		return gateway; | ||||
| 	} | ||||
|  | ||||
| 	public void setGateway(String gateway) { | ||||
| 		this.gateway = gateway; | ||||
| 	} | ||||
|  | ||||
| 	public String getIpAssignScheme() { | ||||
| 		return ipAssignScheme; | ||||
| 	} | ||||
|  | ||||
| 	public void setIpAssignScheme(String ipAssignScheme) { | ||||
| 		this.ipAssignScheme = ipAssignScheme; | ||||
| 	} | ||||
|  | ||||
| 	public String getInetConfig() { | ||||
| 		return inetConfig; | ||||
| 	} | ||||
|  | ||||
| 	public void setInetConfig(String inetConfig) { | ||||
| 		this.inetConfig = inetConfig; | ||||
| 	} | ||||
|  | ||||
| 	public static long getSerialversionuid() { | ||||
| 		return serialVersionUID; | ||||
| 	} | ||||
|  | ||||
| 	public Uuid get_uuid() { | ||||
| 		return _uuid; | ||||
| 	} | ||||
|  | ||||
| 	public void set_uuid(Uuid _uuid) { | ||||
| 		this._uuid = _uuid; | ||||
| 	} | ||||
|  | ||||
| 	public Uuid getVersion() { | ||||
| 		return version; | ||||
| 	} | ||||
|  | ||||
| 	public void setVersion(Uuid version) { | ||||
| 		this.version = version; | ||||
| 	} | ||||
|  | ||||
| 	public void setGreLocalInetAddr(String greLocalInetAddr) { | ||||
| 		this.greLocalInetAddr = greLocalInetAddr; | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	public String getGreLocalInetAddr() { | ||||
| 		return greLocalInetAddr; | ||||
| 	} | ||||
|  | ||||
| 	public void setGreRemoteMacAddr(String greRemoteMacAddr) { | ||||
| 		this.greRemoteMacAddr = greRemoteMacAddr; | ||||
| 	} | ||||
|  | ||||
| 	public String getGreRemoteMacAddr(){ | ||||
| 		return this.greRemoteMacAddr; | ||||
| 	} | ||||
| 	@Override | ||||
| 	public int hashCode() { | ||||
| 		final int prime = 31; | ||||
| 		int result = 1; | ||||
| 		result = prime * result + ((_uuid == null) ? 0 : _uuid.hashCode()); | ||||
| 		result = prime * result + ((broadcast == null) ? 0 : broadcast.hashCode()); | ||||
| 		result = prime * result + ((dhcpc == null) ? 0 : dhcpc.hashCode()); | ||||
| 		result = prime * result + ((dhcpd == null) ? 0 : dhcpd.hashCode()); | ||||
| 		result = prime * result + ((dns == null) ? 0 : dns.hashCode()); | ||||
| 		result = prime * result + (enabled ? 1231 : 1237); | ||||
| 		result = prime * result + ((gateway == null) ? 0 : gateway.hashCode()); | ||||
| 		result = prime * result + ((greIfName == null) ? 0 : greIfName.hashCode()); | ||||
| 		result = prime * result + ((greLocalInetAddr == null) ? 0 : greLocalInetAddr.hashCode()); | ||||
| 		result = prime * result + ((greRemoteInetAddr == null) ? 0 : greRemoteInetAddr.hashCode()); | ||||
| 		result = prime * result + ((hwAddr == null) ? 0 : hwAddr.hashCode()); | ||||
| 		result = prime * result + ((ifName == null) ? 0 : ifName.hashCode()); | ||||
| 		result = prime * result + ((ifType == null) ? 0 : ifType.hashCode()); | ||||
| 		result = prime * result + ((ifUuid == null) ? 0 : ifUuid.hashCode()); | ||||
| 		result = prime * result + ((inetAddr == null) ? 0 : inetAddr.hashCode()); | ||||
| 		result = prime * result + ((inetConfig == null) ? 0 : inetConfig.hashCode()); | ||||
| 		result = prime * result + ((ipAssignScheme == null) ? 0 : ipAssignScheme.hashCode()); | ||||
| 		result = prime * result + mtw; | ||||
| 		result = prime * result + (nat ? 1231 : 1237); | ||||
| 		result = prime * result + ((netmask == null) ? 0 : netmask.hashCode()); | ||||
| 		result = prime * result + (network ? 1231 : 1237); | ||||
| 		result = prime * result + ((parentIfName == null) ? 0 : parentIfName.hashCode()); | ||||
| 		result = prime * result + ((greRemoteMacAddr == null) ? 0 : greRemoteMacAddr.hashCode()); | ||||
| 		result = prime * result + ((softwdsMacAddr == null) ? 0 : softwdsMacAddr.hashCode()); | ||||
| 		result = prime * result + (sofwdsWrap ? 1231 : 1237); | ||||
| 		result = prime * result + ((unpnpMode == null) ? 0 : unpnpMode.hashCode()); | ||||
| 		result = prime * result + ((version == null) ? 0 : version.hashCode()); | ||||
| 		result = prime * result + vlanId; | ||||
| 		return result; | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public boolean equals(Object obj) { | ||||
| 		if (this == obj) | ||||
| 			return true; | ||||
| 		if (obj == null) | ||||
| 			return false; | ||||
| 		if (getClass() != obj.getClass()) | ||||
| 			return false; | ||||
| 		OpensyncAPInetState other = (OpensyncAPInetState) obj; | ||||
| 		if (_uuid == null) { | ||||
| 			if (other._uuid != null) | ||||
| 				return false; | ||||
| 		} else if (!_uuid.equals(other._uuid)) | ||||
| 			return false; | ||||
| 		if (broadcast == null) { | ||||
| 			if (other.broadcast != null) | ||||
| 				return false; | ||||
| 		} else if (!broadcast.equals(other.broadcast)) | ||||
| 			return false; | ||||
| 		if (dhcpc == null) { | ||||
| 			if (other.dhcpc != null) | ||||
| 				return false; | ||||
| 		} else if (!dhcpc.equals(other.dhcpc)) | ||||
| 			return false; | ||||
| 		if (dhcpd == null) { | ||||
| 			if (other.dhcpd != null) | ||||
| 				return false; | ||||
| 		} else if (!dhcpd.equals(other.dhcpd)) | ||||
| 			return false; | ||||
| 		if (dns == null) { | ||||
| 			if (other.dns != null) | ||||
| 				return false; | ||||
| 		} else if (!dns.equals(other.dns)) | ||||
| 			return false; | ||||
| 		if (enabled != other.enabled) | ||||
| 			return false; | ||||
| 		if (gateway == null) { | ||||
| 			if (other.gateway != null) | ||||
| 				return false; | ||||
| 		} else if (!gateway.equals(other.gateway)) | ||||
| 			return false; | ||||
| 		if (greIfName == null) { | ||||
| 			if (other.greIfName != null) | ||||
| 				return false; | ||||
| 		} else if (!greIfName.equals(other.greIfName)) | ||||
| 			return false; | ||||
| 		if (greLocalInetAddr == null) { | ||||
| 			if (other.greLocalInetAddr != null) | ||||
| 				return false; | ||||
| 		} else if (!greLocalInetAddr.equals(other.greLocalInetAddr)) | ||||
| 			return false; | ||||
| 		if (greRemoteInetAddr == null) { | ||||
| 			if (other.greRemoteInetAddr != null) | ||||
| 				return false; | ||||
| 		} else if (!greRemoteInetAddr.equals(other.greRemoteInetAddr)) | ||||
| 			return false; | ||||
| 		if (hwAddr == null) { | ||||
| 			if (other.hwAddr != null) | ||||
| 				return false; | ||||
| 		} else if (!hwAddr.equals(other.hwAddr)) | ||||
| 			return false; | ||||
| 		if (ifName == null) { | ||||
| 			if (other.ifName != null) | ||||
| 				return false; | ||||
| 		} else if (!ifName.equals(other.ifName)) | ||||
| 			return false; | ||||
| 		if (ifType == null) { | ||||
| 			if (other.ifType != null) | ||||
| 				return false; | ||||
| 		} else if (!ifType.equals(other.ifType)) | ||||
| 			return false; | ||||
| 		if (ifUuid == null) { | ||||
| 			if (other.ifUuid != null) | ||||
| 				return false; | ||||
| 		} else if (!ifUuid.equals(other.ifUuid)) | ||||
| 			return false; | ||||
| 		if (inetAddr == null) { | ||||
| 			if (other.inetAddr != null) | ||||
| 				return false; | ||||
| 		} else if (!inetAddr.equals(other.inetAddr)) | ||||
| 			return false; | ||||
| 		if (inetConfig == null) { | ||||
| 			if (other.inetConfig != null) | ||||
| 				return false; | ||||
| 		} else if (!inetConfig.equals(other.inetConfig)) | ||||
| 			return false; | ||||
| 		if (ipAssignScheme == null) { | ||||
| 			if (other.ipAssignScheme != null) | ||||
| 				return false; | ||||
| 		} else if (!ipAssignScheme.equals(other.ipAssignScheme)) | ||||
| 			return false; | ||||
| 		if (mtw != other.mtw) | ||||
| 			return false; | ||||
| 		if (nat != other.nat) | ||||
| 			return false; | ||||
| 		if (netmask == null) { | ||||
| 			if (other.netmask != null) | ||||
| 				return false; | ||||
| 		} else if (!netmask.equals(other.netmask)) | ||||
| 			return false; | ||||
| 		if (network != other.network) | ||||
| 			return false; | ||||
| 		if (parentIfName == null) { | ||||
| 			if (other.parentIfName != null) | ||||
| 				return false; | ||||
| 		} else if (!parentIfName.equals(other.parentIfName)) | ||||
| 			return false; | ||||
| 		if (greRemoteMacAddr == null) { | ||||
| 			if (other.greRemoteMacAddr != null) | ||||
| 				return false; | ||||
| 		} else if (!greRemoteMacAddr.equals(other.greRemoteMacAddr)) | ||||
| 			return false; | ||||
| 		if (softwdsMacAddr == null) { | ||||
| 			if (other.softwdsMacAddr != null) | ||||
| 				return false; | ||||
| 		} else if (!softwdsMacAddr.equals(other.softwdsMacAddr)) | ||||
| 			return false; | ||||
| 		if (sofwdsWrap != other.sofwdsWrap) | ||||
| 			return false; | ||||
| 		if (unpnpMode == null) { | ||||
| 			if (other.unpnpMode != null) | ||||
| 				return false; | ||||
| 		} else if (!unpnpMode.equals(other.unpnpMode)) | ||||
| 			return false; | ||||
| 		if (version == null) { | ||||
| 			if (other.version != null) | ||||
| 				return false; | ||||
| 		} else if (!version.equals(other.version)) | ||||
| 			return false; | ||||
| 		if (vlanId != other.vlanId) | ||||
| 			return false; | ||||
| 		return true; | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	public String toString() { | ||||
| 		return "OpensyncAPInetState [ifName=" + ifName + ", dhcpd=" + dhcpd + ", unpnpMode=" + unpnpMode + ", ifType=" | ||||
| 				+ ifType + ", softwdsMacAddr=" + softwdsMacAddr + ", enabled=" + enabled + ", sofwdsWrap=" + sofwdsWrap | ||||
| 				+ ", vlanId=" + vlanId + ", netmask=" + netmask + ", nat=" + nat + ", greRemoteInetAddr=" | ||||
| 				+ greRemoteInetAddr + ", ifUuid=" + ifUuid + ", inetAddr=" + inetAddr + ", hwAddr=" + hwAddr + ", mtw=" | ||||
| 				+ mtw + ", network=" + network + ", dns=" + dns + ", parentIfName=" + parentIfName + ", greIfName=" | ||||
| 				+ greIfName + ", broadcast=" + broadcast + ", dhcpc=" + dhcpc + ", gateway=" + gateway | ||||
| 				+ ", ipAssignScheme=" + ipAssignScheme + ", inetConfig=" + inetConfig + ", _uuid=" + _uuid | ||||
| 				+ ", version=" + version + ", greLocalInetAddr=" + greLocalInetAddr + ", greRemoteMacAddr=" | ||||
| 				+ greRemoteMacAddr + "]"; | ||||
| 	} | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,6 +1,8 @@ | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.models; | ||||
|  | ||||
| public class OpensyncAPRadioConfig extends OpensyncAPBase { | ||||
| import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; | ||||
|  | ||||
| public class OpensyncAPRadioConfig extends BaseJsonModel { | ||||
|  | ||||
|     private static final long serialVersionUID = 5683558403622855381L; | ||||
|  | ||||
| @@ -8,41 +10,41 @@ public class OpensyncAPRadioConfig extends OpensyncAPBase { | ||||
|     private int radioChannel24G; | ||||
|     private int radioChannel5LG; | ||||
|     private int radioChannel5HG; | ||||
|  | ||||
|     @Override | ||||
|     public OpensyncAPRadioConfig clone() { | ||||
|         return (OpensyncAPRadioConfig) super.clone(); | ||||
|     } | ||||
|  | ||||
|     public String getCountry() { | ||||
|         return country; | ||||
|     } | ||||
|  | ||||
|      | ||||
|     public int getRadioChannel24G() { | ||||
|         return radioChannel24G; | ||||
|     } | ||||
|  | ||||
|     public int getRadioChannel5HG() { | ||||
|         return radioChannel5HG; | ||||
|     } | ||||
|  | ||||
|     public int getRadioChannel5LG() { | ||||
|         return radioChannel5LG; | ||||
|     } | ||||
|  | ||||
|     public void setCountry(String country) { | ||||
|         this.country = country; | ||||
|     } | ||||
|  | ||||
|     public void setRadioChannel24G(int radioChannel24G) { | ||||
|         this.radioChannel24G = radioChannel24G; | ||||
|     } | ||||
|  | ||||
|     public void setRadioChannel5HG(int radioChannel5HG) { | ||||
|         this.radioChannel5HG = radioChannel5HG; | ||||
|     public int getRadioChannel5LG() { | ||||
|         return radioChannel5LG; | ||||
|     } | ||||
|  | ||||
|     public void setRadioChannel5LG(int radioChannel5LG) { | ||||
|         this.radioChannel5LG = radioChannel5LG; | ||||
|     } | ||||
|  | ||||
|     public int getRadioChannel5HG() { | ||||
|         return radioChannel5HG; | ||||
|     } | ||||
|  | ||||
|     public void setRadioChannel5HG(int radioChannel5HG) { | ||||
|         this.radioChannel5HG = radioChannel5HG; | ||||
|     } | ||||
|  | ||||
|     public String getCountry() { | ||||
|         return country; | ||||
|     } | ||||
|  | ||||
|     public void setCountry(String country) { | ||||
|         this.country = country; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public OpensyncAPRadioConfig clone() { | ||||
|         return (OpensyncAPRadioConfig)super.clone(); | ||||
|     } | ||||
| } | ||||
| @@ -1,30 +1,27 @@ | ||||
| /** | ||||
|  * | ||||
|  *  | ||||
|  */ | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.models; | ||||
|  | ||||
| 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 com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Row; | ||||
| import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Uuid; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Value; | ||||
|  | ||||
| /** | ||||
|  * @author mikehansen | ||||
|  * | ||||
|  */ | ||||
| public class OpensyncAPRadioState extends OpensyncAPBase { | ||||
| public class OpensyncAPRadioState extends BaseJsonModel { | ||||
|  | ||||
|     private static final long serialVersionUID = 5003143778489404219L; | ||||
|  | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
|  | ||||
|     public int temperatureControl; | ||||
|     public boolean thermalDowngraded; | ||||
|     public boolean dfsDemo; | ||||
| @@ -42,7 +39,7 @@ public class OpensyncAPRadioState extends OpensyncAPBase { | ||||
|     public Map<String, String> hwConfig; | ||||
|     public int channel; | ||||
|     public int txPower; | ||||
|     public String htMode; // used in channel bandwidth | ||||
|     public String htMode; | ||||
|     public int thermalDowngradeTemp; | ||||
|     public String hwMode; | ||||
|     public boolean enabled; | ||||
| @@ -51,15 +48,10 @@ public class OpensyncAPRadioState extends OpensyncAPBase { | ||||
|     public Map<String, String> hwParams; | ||||
|     public RadioType freqBand; | ||||
|     public int thermalIntegration; | ||||
|  | ||||
|     public Set<Uuid> vifStates; | ||||
|  | ||||
|     public String channelMode; | ||||
|  | ||||
|     public Uuid _uuid; | ||||
|     public Uuid version; | ||||
|  | ||||
|     public OpensyncAPRadioState() { | ||||
|         super(); | ||||
|         allowedChannels = new HashSet<>(); | ||||
|         hwConfig = new HashMap<>(); | ||||
|         channels = new HashMap<>(); | ||||
| @@ -67,334 +59,252 @@ public class OpensyncAPRadioState extends OpensyncAPBase { | ||||
|         vifStates = new HashSet<>(); | ||||
|     } | ||||
|  | ||||
|     public OpensyncAPRadioState(Row row) { | ||||
|         this(); | ||||
|  | ||||
|         Map<String, Value> map = row.getColumns(); | ||||
|  | ||||
|         if ((map.get("mac") != null) | ||||
|                 && map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setMac(row.getStringColumn("mac")); | ||||
|         } | ||||
|         if ((map.get("channel") != null) | ||||
|                 && map.get("channel").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setChannel(row.getIntegerColumn("channel").intValue()); | ||||
|         } | ||||
|         if ((map.get("freq_band") != null) | ||||
|                 && map.get("freq_band").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             String frequencyBand = row.getStringColumn("freq_band"); | ||||
|             switch (frequencyBand) { | ||||
|             case "2.4G": | ||||
|                 this.setFreqBand(RadioType.is2dot4GHz); | ||||
|                 break; | ||||
|             case "5G": | ||||
|                 this.setFreqBand(RadioType.is5GHz); | ||||
|                 break; | ||||
|             case "5GL": | ||||
|                 this.setFreqBand(RadioType.is5GHzL); | ||||
|                 break; | ||||
|             case "5GU": | ||||
|                 this.setFreqBand(RadioType.is5GHzU); | ||||
|                 break; | ||||
|             default: | ||||
|                 this.setFreqBand(RadioType.UNSUPPORTED); | ||||
|             } | ||||
|         } | ||||
|         if ((map.get("if_name") != null) | ||||
|                 && map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setIfName(row.getStringColumn("if_name")); | ||||
|         } | ||||
|         if ((map.get("channel_mode") != null) | ||||
|                 && map.get("channel_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setChannelMode(row.getStringColumn("channel_mode")); | ||||
|         } | ||||
|         if ((map.get("country") != null) | ||||
|                 && map.get("country").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setCountry(row.getStringColumn("country").toUpperCase()); | ||||
|         } | ||||
|         if ((map.get("enabled") != null) | ||||
|                 && map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setEnabled(row.getBooleanColumn("enabled")); | ||||
|         } | ||||
|         if ((map.get("ht_mode") != null) | ||||
|                 && map.get("ht_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setHtMode(row.getStringColumn("ht_mode")); | ||||
|         } | ||||
|         if ((map.get("tx_power") != null) | ||||
|                 && map.get("tx_power").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setTxPower(row.getIntegerColumn("tx_power").intValue()); | ||||
|         } | ||||
|         if ((map.get("hw_config") != null) | ||||
|                 && map.get("hw_config").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Map.class)) { | ||||
|             this.setHwConfig(row.getMapColumn("hw_config")); | ||||
|         } | ||||
|         if ((map.get("_version") != null) | ||||
|                 && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVersion(row.getUuidColumn("_version")); | ||||
|         } | ||||
|         if ((map.get("_uuid") != null) | ||||
|                 && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVersion(row.getUuidColumn("_uuid")); | ||||
|         } | ||||
|         if (map.get("allowed_channels") != null) { | ||||
|  | ||||
|             Set<Long> allowedChannels = getSet(row, "allowed_channels"); | ||||
|  | ||||
|             Set<Integer> allowed = new HashSet<>(); | ||||
|             for (Long channel : allowedChannels) { | ||||
|                 allowed.add(channel.intValue()); | ||||
|             } | ||||
|             this.setAllowedChannels(allowed); | ||||
|         } | ||||
|         if (map.get("channels") != null) { | ||||
|  | ||||
|             Map<String, String> channels = row.getMapColumn("channels"); | ||||
|             this.setChannels(channels); | ||||
|         } | ||||
|  | ||||
|         Set<Uuid> vifStates = row.getSetColumn("vif_states"); | ||||
|         this.setVifStates(vifStates); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public Uuid get_uuid() { | ||||
|         return _uuid; | ||||
|     } | ||||
|  | ||||
|     public Set<Integer> getAllowedChannels() { | ||||
|         return allowedChannels; | ||||
|     } | ||||
|  | ||||
|     public int getBcnInt() { | ||||
|         return bcnInt; | ||||
|     } | ||||
|  | ||||
|     public int getChannel() { | ||||
|         return channel; | ||||
|     } | ||||
|  | ||||
|     public String getChannelMode() { | ||||
|         return channelMode; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getChannels() { | ||||
|         return channels; | ||||
|     } | ||||
|  | ||||
|     public int getChannelSync() { | ||||
|         return channelSync; | ||||
|     } | ||||
|  | ||||
|     public String getCountry() { | ||||
|         return country; | ||||
|     } | ||||
|  | ||||
|     public RadioType getFreqBand() { | ||||
|         return freqBand; | ||||
|     } | ||||
|  | ||||
|     public String getHtMode() { | ||||
|         return htMode; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getHwConfig() { | ||||
|         return hwConfig; | ||||
|     } | ||||
|  | ||||
|     public String getHwMode() { | ||||
|         return hwMode; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getHwParams() { | ||||
|         return hwParams; | ||||
|     } | ||||
|  | ||||
|     public int getHwType() { | ||||
|         return hwType; | ||||
|     } | ||||
|  | ||||
|     public String getIfName() { | ||||
|         return ifName; | ||||
|     } | ||||
|  | ||||
|     public String getMac() { | ||||
|         return mac; | ||||
|     } | ||||
|  | ||||
|     public String getRadar() { | ||||
|         return radar; | ||||
|     } | ||||
|     public String channelMode; | ||||
|     public Uuid _uuid; | ||||
|     public Uuid version; | ||||
|  | ||||
|     public int getTemperatureControl() { | ||||
|         return temperatureControl; | ||||
|     } | ||||
|  | ||||
|     public int getThermalDowngradeTemp() { | ||||
|         return thermalDowngradeTemp; | ||||
|     } | ||||
|  | ||||
|     public int getThermalIntegration() { | ||||
|         return thermalIntegration; | ||||
|     } | ||||
|  | ||||
|     public int getThermalShutdown() { | ||||
|         return thermalShutdown; | ||||
|     } | ||||
|  | ||||
|     public int getThermalTxChainmask() { | ||||
|         return thermalTxChainmask; | ||||
|     } | ||||
|  | ||||
|     public int getThermalUpgradeTemp() { | ||||
|         return thermalUpgradeTemp; | ||||
|     } | ||||
|  | ||||
|     public int getTxChainmask() { | ||||
|         return txChainmask; | ||||
|     } | ||||
|  | ||||
|     public int getTxPower() { | ||||
|         return txPower; | ||||
|     } | ||||
|  | ||||
|     public Uuid getVersion() { | ||||
|         return version; | ||||
|     } | ||||
|  | ||||
|     public Set<Uuid> getVifStates() { | ||||
|         return vifStates; | ||||
|     } | ||||
|  | ||||
|     public boolean isDfsDemo() { | ||||
|         return dfsDemo; | ||||
|     } | ||||
|  | ||||
|     public boolean isEnabled() { | ||||
|         return enabled; | ||||
|     } | ||||
|  | ||||
|     public boolean isThermalDowngraded() { | ||||
|         return thermalDowngraded; | ||||
|     } | ||||
|  | ||||
|     public void set_uuid(Uuid _uuid) { | ||||
|         this._uuid = _uuid; | ||||
|     } | ||||
|  | ||||
|     public void setAllowedChannels(Set<Integer> allowedChannels) { | ||||
|         this.allowedChannels = allowedChannels; | ||||
|     } | ||||
|  | ||||
|     public void setBcnInt(int bcnInt) { | ||||
|         this.bcnInt = bcnInt; | ||||
|     } | ||||
|  | ||||
|     public void setChannel(int channel) { | ||||
|         this.channel = channel; | ||||
|     } | ||||
|  | ||||
|     public void setChannelMode(String channelMode) { | ||||
|         this.channelMode = channelMode; | ||||
|     } | ||||
|  | ||||
|     public void setChannels(Map<String, String> channels) { | ||||
|         this.channels = channels; | ||||
|     } | ||||
|  | ||||
|     public void setChannelSync(int channelSync) { | ||||
|         this.channelSync = channelSync; | ||||
|     } | ||||
|  | ||||
|     public void setCountry(String country) { | ||||
|         this.country = country; | ||||
|     } | ||||
|  | ||||
|     public void setDfsDemo(boolean dfsDemo) { | ||||
|         this.dfsDemo = dfsDemo; | ||||
|     } | ||||
|  | ||||
|     public void setEnabled(boolean enabled) { | ||||
|         this.enabled = enabled; | ||||
|     } | ||||
|  | ||||
|     public void setFreqBand(RadioType freqBand) { | ||||
|         this.freqBand = freqBand; | ||||
|     } | ||||
|  | ||||
|     public void setHtMode(String htMode) { | ||||
|         this.htMode = htMode; | ||||
|     } | ||||
|  | ||||
|     public void setHwConfig(Map<String, String> hwConfig) { | ||||
|         this.hwConfig = hwConfig; | ||||
|     } | ||||
|  | ||||
|     public void setHwMode(String hwMode) { | ||||
|         this.hwMode = hwMode; | ||||
|     } | ||||
|  | ||||
|     public void setHwParams(Map<String, String> hwParams) { | ||||
|         this.hwParams = hwParams; | ||||
|     } | ||||
|  | ||||
|     public void setHwType(int hwType) { | ||||
|         this.hwType = hwType; | ||||
|     } | ||||
|  | ||||
|     public void setIfName(String ifName) { | ||||
|         this.ifName = ifName; | ||||
|     } | ||||
|  | ||||
|     public void setMac(String mac) { | ||||
|         this.mac = mac; | ||||
|     } | ||||
|  | ||||
|     public void setRadar(String radar) { | ||||
|         this.radar = radar; | ||||
|     } | ||||
|  | ||||
|     public void setTemperatureControl(int temperatureControl) { | ||||
|         this.temperatureControl = temperatureControl; | ||||
|     } | ||||
|  | ||||
|     public boolean isThermalDowngraded() { | ||||
|         return thermalDowngraded; | ||||
|     } | ||||
|  | ||||
|     public void setThermalDowngraded(boolean thermalDowngraded) { | ||||
|         this.thermalDowngraded = thermalDowngraded; | ||||
|     } | ||||
|  | ||||
|     public void setThermalDowngradeTemp(int thermalDowngradeTemp) { | ||||
|         this.thermalDowngradeTemp = thermalDowngradeTemp; | ||||
|     public boolean isDfsDemo() { | ||||
|         return dfsDemo; | ||||
|     } | ||||
|  | ||||
|     public void setThermalIntegration(int thermalIntegration) { | ||||
|         this.thermalIntegration = thermalIntegration; | ||||
|     public void setDfsDemo(boolean dfsDemo) { | ||||
|         this.dfsDemo = dfsDemo; | ||||
|     } | ||||
|  | ||||
|     public void setThermalShutdown(int thermalShutdown) { | ||||
|         this.thermalShutdown = thermalShutdown; | ||||
|     public String getIfName() { | ||||
|         return ifName; | ||||
|     } | ||||
|  | ||||
|     public void setThermalTxChainmask(int thermalTxChainmask) { | ||||
|         this.thermalTxChainmask = thermalTxChainmask; | ||||
|     public void setIfName(String ifName) { | ||||
|         this.ifName = ifName; | ||||
|     } | ||||
|  | ||||
|     public void setThermalUpgradeTemp(int thermalUpgradeTemp) { | ||||
|         this.thermalUpgradeTemp = thermalUpgradeTemp; | ||||
|     public String getMac() { | ||||
|         return mac; | ||||
|     } | ||||
|  | ||||
|     public void setTxChainmask(int txChainmask) { | ||||
|         this.txChainmask = txChainmask; | ||||
|     public void setMac(String mac) { | ||||
|         this.mac = mac; | ||||
|     } | ||||
|  | ||||
|     public void setTxPower(int txPower) { | ||||
|         this.txPower = txPower; | ||||
|     } | ||||
|  | ||||
|     public void setVersion(Uuid version) { | ||||
|         this.version = version; | ||||
|     public Set<Uuid> getVifStates() { | ||||
|         return vifStates; | ||||
|     } | ||||
|  | ||||
|     public void setVifStates(Set<Uuid> vifStates) { | ||||
|         this.vifStates = vifStates; | ||||
|     } | ||||
|  | ||||
|     public int getBcnInt() { | ||||
|         return bcnInt; | ||||
|     } | ||||
|  | ||||
|     public void setBcnInt(int bcnInt) { | ||||
|         this.bcnInt = bcnInt; | ||||
|     } | ||||
|  | ||||
|     public int getThermalTxChainmask() { | ||||
|         return thermalTxChainmask; | ||||
|     } | ||||
|  | ||||
|     public void setThermalTxChainmask(int thermalTxChainmask) { | ||||
|         this.thermalTxChainmask = thermalTxChainmask; | ||||
|     } | ||||
|  | ||||
|     public Set<Integer> getAllowedChannels() { | ||||
|         return allowedChannels; | ||||
|     } | ||||
|  | ||||
|     public void setAllowedChannels(Set<Integer> allowedChannels) { | ||||
|         this.allowedChannels = allowedChannels; | ||||
|     } | ||||
|  | ||||
|     public int getThermalShutdown() { | ||||
|         return thermalShutdown; | ||||
|     } | ||||
|  | ||||
|     public void setThermalShutdown(int thermalShutdown) { | ||||
|         this.thermalShutdown = thermalShutdown; | ||||
|     } | ||||
|  | ||||
|     public int getChannelSync() { | ||||
|         return channelSync; | ||||
|     } | ||||
|  | ||||
|     public void setChannelSync(int channelSync) { | ||||
|         this.channelSync = channelSync; | ||||
|     } | ||||
|  | ||||
|     public int getHwType() { | ||||
|         return hwType; | ||||
|     } | ||||
|  | ||||
|     public void setHwType(int hwType) { | ||||
|         this.hwType = hwType; | ||||
|     } | ||||
|  | ||||
|     public int getTxChainmask() { | ||||
|         return txChainmask; | ||||
|     } | ||||
|  | ||||
|     public void setTxChainmask(int txChainmask) { | ||||
|         this.txChainmask = txChainmask; | ||||
|     } | ||||
|  | ||||
|     public String getRadar() { | ||||
|         return radar; | ||||
|     } | ||||
|  | ||||
|     public void setRadar(String radar) { | ||||
|         this.radar = radar; | ||||
|     } | ||||
|  | ||||
|     public String getCountry() { | ||||
|         return country; | ||||
|     } | ||||
|  | ||||
|     public void setCountry(String country) { | ||||
|         this.country = country; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getHwConfig() { | ||||
|         return hwConfig; | ||||
|     } | ||||
|  | ||||
|     public void setHwConfig(Map<String, String> hwConfig) { | ||||
|         this.hwConfig = hwConfig; | ||||
|     } | ||||
|  | ||||
|     public int getChannel() { | ||||
|         return channel; | ||||
|     } | ||||
|  | ||||
|     public void setChannel(int channel) { | ||||
|         this.channel = channel; | ||||
|     } | ||||
|  | ||||
|     public int getTxPower() { | ||||
|         return txPower; | ||||
|     } | ||||
|  | ||||
|     public void setTxPower(int txPower) { | ||||
|         this.txPower = txPower; | ||||
|     } | ||||
|  | ||||
|     public String getHtMode() { | ||||
|         return htMode; | ||||
|     } | ||||
|  | ||||
|     public void setHtMode(String htMode) { | ||||
|         this.htMode = htMode; | ||||
|     } | ||||
|  | ||||
|     public int getThermalDowngradeTemp() { | ||||
|         return thermalDowngradeTemp; | ||||
|     } | ||||
|  | ||||
|     public void setThermalDowngradeTemp(int thermalDowngradeTemp) { | ||||
|         this.thermalDowngradeTemp = thermalDowngradeTemp; | ||||
|     } | ||||
|  | ||||
|     public String getHwMode() { | ||||
|         return hwMode; | ||||
|     } | ||||
|  | ||||
|     public void setHwMode(String hwMode) { | ||||
|         this.hwMode = hwMode; | ||||
|     } | ||||
|  | ||||
|     public boolean isEnabled() { | ||||
|         return enabled; | ||||
|     } | ||||
|  | ||||
|     public void setEnabled(boolean enabled) { | ||||
|         this.enabled = enabled; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getChannels() { | ||||
|         return channels; | ||||
|     } | ||||
|  | ||||
|     public void setChannels(Map<String, String> channels) { | ||||
|         this.channels = channels; | ||||
|     } | ||||
|  | ||||
|     public int getThermalUpgradeTemp() { | ||||
|         return thermalUpgradeTemp; | ||||
|     } | ||||
|  | ||||
|     public void setThermalUpgradeTemp(int thermalUpgradeTemp) { | ||||
|         this.thermalUpgradeTemp = thermalUpgradeTemp; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getHwParams() { | ||||
|         return hwParams; | ||||
|     } | ||||
|  | ||||
|     public void setHwParams(Map<String, String> hwParams) { | ||||
|         this.hwParams = hwParams; | ||||
|     } | ||||
|  | ||||
|     public RadioType getFreqBand() { | ||||
|         return freqBand; | ||||
|     } | ||||
|  | ||||
|     public void setFreqBand(RadioType freqBand) { | ||||
|         this.freqBand = freqBand; | ||||
|     } | ||||
|  | ||||
|     public int getThermalIntegration() { | ||||
|         return thermalIntegration; | ||||
|     } | ||||
|  | ||||
|     public void setThermalIntegration(int thermalIntegration) { | ||||
|         this.thermalIntegration = thermalIntegration; | ||||
|     } | ||||
|  | ||||
|     public String getChannelMode() { | ||||
|         return channelMode; | ||||
|     } | ||||
|  | ||||
|     public void setChannelMode(String channelMode) { | ||||
|         this.channelMode = channelMode; | ||||
|     } | ||||
|  | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
|  | ||||
|     public Uuid get_uuid() { | ||||
|         return _uuid; | ||||
|     } | ||||
|  | ||||
|     public void set_uuid(Uuid _uuid) { | ||||
|         this._uuid = _uuid; | ||||
|     } | ||||
|  | ||||
|     public Uuid getVersion() { | ||||
|         return version; | ||||
|     } | ||||
|  | ||||
|     public void setVersion(Uuid version) { | ||||
|         this.version = version; | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,8 +1,9 @@ | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.models; | ||||
|  | ||||
| import com.telecominfraproject.wlan.core.model.equipment.RadioType; | ||||
| import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; | ||||
|  | ||||
| public class OpensyncAPSsidConfig extends OpensyncAPBase { | ||||
| public class OpensyncAPSsidConfig extends BaseJsonModel { | ||||
|  | ||||
|     private static final long serialVersionUID = -8540144450360788799L; | ||||
|  | ||||
| @@ -12,30 +13,45 @@ public class OpensyncAPSsidConfig extends OpensyncAPBase { | ||||
|     private String key; | ||||
|     private String mode; | ||||
|     private boolean broadcast; | ||||
|      | ||||
|     public RadioType getRadioType() { | ||||
|         return radioType; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public OpensyncAPSsidConfig clone() { | ||||
|         return (OpensyncAPSsidConfig) super.clone(); | ||||
|     public void setRadioType(RadioType radioType) { | ||||
|         this.radioType = radioType; | ||||
|     } | ||||
|  | ||||
|     public String getSsid() { | ||||
|         return ssid; | ||||
|     } | ||||
|  | ||||
|     public void setSsid(String ssid) { | ||||
|         this.ssid = ssid; | ||||
|     } | ||||
|  | ||||
|     public String getEncryption() { | ||||
|         return encryption; | ||||
|     } | ||||
|  | ||||
|     public void setEncryption(String encryption) { | ||||
|         this.encryption = encryption; | ||||
|     } | ||||
|  | ||||
|     public String getKey() { | ||||
|         return key; | ||||
|     } | ||||
|  | ||||
|     public void setKey(String key) { | ||||
|         this.key = key; | ||||
|     } | ||||
|  | ||||
|     public String getMode() { | ||||
|         return mode; | ||||
|     } | ||||
|  | ||||
|     public RadioType getRadioType() { | ||||
|         return radioType; | ||||
|     } | ||||
|  | ||||
|     public String getSsid() { | ||||
|         return ssid; | ||||
|     public void setMode(String mode) { | ||||
|         this.mode = mode; | ||||
|     } | ||||
|  | ||||
|     public boolean isBroadcast() { | ||||
| @@ -46,24 +62,9 @@ public class OpensyncAPSsidConfig extends OpensyncAPBase { | ||||
|         this.broadcast = broadcast; | ||||
|     } | ||||
|  | ||||
|     public void setEncryption(String encryption) { | ||||
|         this.encryption = encryption; | ||||
|     } | ||||
|  | ||||
|     public void setKey(String key) { | ||||
|         this.key = key; | ||||
|     } | ||||
|  | ||||
|     public void setMode(String mode) { | ||||
|         this.mode = mode; | ||||
|     } | ||||
|  | ||||
|     public void setRadioType(RadioType radioType) { | ||||
|         this.radioType = radioType; | ||||
|     } | ||||
|  | ||||
|     public void setSsid(String ssid) { | ||||
|         this.ssid = ssid; | ||||
|     @Override | ||||
|     public OpensyncAPSsidConfig clone() { | ||||
|         return (OpensyncAPSsidConfig)super.clone(); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -6,18 +6,13 @@ import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Set; | ||||
|  | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Row; | ||||
| import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Uuid; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Value; | ||||
|  | ||||
| public class OpensyncAPVIFState extends OpensyncAPBase { | ||||
| public class OpensyncAPVIFState extends BaseJsonModel { | ||||
|  | ||||
|     private static final long serialVersionUID = -4916251246542770881L; | ||||
|  | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
|  | ||||
|     public String ifName; | ||||
|     public int vifRadioIdx; | ||||
|     public String parent; | ||||
| @@ -29,8 +24,8 @@ public class OpensyncAPVIFState extends OpensyncAPBase { | ||||
|     public String ssid; | ||||
|     public Map<String, String> security; | ||||
|     public String macList; | ||||
|  | ||||
|     public List<Uuid> associatedClients; | ||||
|  | ||||
|     public boolean enabled; | ||||
|     public int vlanId; | ||||
|     public int btm; | ||||
| @@ -45,321 +40,232 @@ public class OpensyncAPVIFState extends OpensyncAPBase { | ||||
|     public boolean dynamicBeacon; | ||||
|     public int channel; | ||||
|     public Uuid _uuid; | ||||
|  | ||||
|     public Uuid version; | ||||
|  | ||||
|     public OpensyncAPVIFState() { | ||||
|         security = new HashMap<>(); | ||||
|         associatedClients = new ArrayList<>(); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public OpensyncAPVIFState(Row row) { | ||||
|         Map<String, Value> map = row.getColumns(); | ||||
|  | ||||
|         if ((map.get("mac") != null) | ||||
|                 && map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setMac(row.getStringColumn("mac")); | ||||
|         } | ||||
|         if ((map.get("bridge") != null) | ||||
|                 && map.get("bridge").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setBridge(row.getStringColumn("bridge")); | ||||
|         } | ||||
|         if ((map.get("btm") != null) | ||||
|                 && map.get("btm").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setBtm(row.getIntegerColumn("btm").intValue()); | ||||
|         } | ||||
|  | ||||
|         if ((map.get("channel") != null) | ||||
|                 && map.get("channel").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setChannel(row.getIntegerColumn("channel").intValue()); | ||||
|         } | ||||
|  | ||||
|         if ((map.get("enabled") != null) | ||||
|                 && map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setEnabled(row.getBooleanColumn("enabled")); | ||||
|         } | ||||
|  | ||||
|         Long ftPsk = getSingleValueFromSet(row, "ft_psk"); | ||||
|         if (ftPsk != null) { | ||||
|             this.setFtPsk(ftPsk.intValue()); | ||||
|         } | ||||
|  | ||||
|         Long ftMobilityDomain = getSingleValueFromSet(row, "ft_mobility_domain"); | ||||
|         if (ftMobilityDomain != null) { | ||||
|             this.setFtMobilityDomain(ftMobilityDomain.intValue()); | ||||
|         } | ||||
|  | ||||
|         if ((map.get("group_rekey") != null) | ||||
|                 && map.get("group_rekey").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setGroupRekey(row.getIntegerColumn("group_rekey").intValue()); | ||||
|         } | ||||
|         if ((map.get("if_name") != null) | ||||
|                 && map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setIfName(row.getStringColumn("if_name")); | ||||
|         } | ||||
|  | ||||
|         if ((map.get("mode") != null) | ||||
|                 && map.get("mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setMode(row.getStringColumn("mode")); | ||||
|         } | ||||
|  | ||||
|         if ((map.get("rrm") != null) | ||||
|                 && map.get("rrm").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setRrm(row.getIntegerColumn("rrm").intValue()); | ||||
|         } | ||||
|         if ((map.get("ssid") != null) | ||||
|                 && map.get("ssid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setSsid(row.getStringColumn("ssid")); | ||||
|         } | ||||
|  | ||||
|         if ((map.get("ssid_broadcast") != null) && map.get("ssid_broadcast").getClass() | ||||
|                 .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setSsidBroadcast(row.getStringColumn("ssid_broadcast")); | ||||
|         } | ||||
|         if ((map.get("uapsd_enable") != null) | ||||
|                 && map.get("uapsd_enable").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setUapsdEnable(row.getBooleanColumn("uapsd_enable")); | ||||
|         } | ||||
|         if ((map.get("vif_radio_idx") != null) && map.get("vif_radio_idx").getClass() | ||||
|                 .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVifRadioIdx(row.getIntegerColumn("vif_radio_idx").intValue()); | ||||
|         } | ||||
|  | ||||
|         List<Uuid> associatedClientsList = new ArrayList<>(); | ||||
|  | ||||
|         Set<Uuid> clients = row.getSetColumn("associated_clients"); | ||||
|         associatedClientsList.addAll(clients); | ||||
|  | ||||
|         this.setAssociatedClients(associatedClientsList); | ||||
|  | ||||
|         if (map.get("security") != null) { | ||||
|             this.setSecurity(row.getMapColumn("security")); | ||||
|         } | ||||
|  | ||||
|         if ((map.get("_version") != null) | ||||
|                 && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVersion(row.getUuidColumn("_version")); | ||||
|         } | ||||
|         if ((map.get("_uuid") != null) | ||||
|                 && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVersion(row.getUuidColumn("_uuid")); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public Uuid get_uuid() { | ||||
|         return _uuid; | ||||
|     } | ||||
|  | ||||
|     public List<Uuid> getAssociatedClients() { | ||||
|         return associatedClients; | ||||
|     } | ||||
|  | ||||
|     public String getBridge() { | ||||
|         return bridge; | ||||
|     } | ||||
|  | ||||
|     public int getBtm() { | ||||
|         return btm; | ||||
|     } | ||||
|  | ||||
|     public int getChannel() { | ||||
|         return channel; | ||||
|     } | ||||
|  | ||||
|     public int getFtMobilityDomain() { | ||||
|         return ftMobilityDomain; | ||||
|     } | ||||
|  | ||||
|     public int getFtPsk() { | ||||
|         return ftPsk; | ||||
|     } | ||||
|  | ||||
|     public int getGroupRekey() { | ||||
|         return groupRekey; | ||||
|     } | ||||
|  | ||||
|     public String getIfName() { | ||||
|         return ifName; | ||||
|     } | ||||
|  | ||||
|     public String getMac() { | ||||
|         return mac; | ||||
|     } | ||||
|     public OpensyncAPVIFState() { | ||||
|         super(); | ||||
|         security = new HashMap<>(); | ||||
|         associatedClients = new ArrayList<>(); | ||||
|  | ||||
|     public String getMacList() { | ||||
|         return macList; | ||||
|     } | ||||
|  | ||||
|     public String getMinHwMode() { | ||||
|         return minHwMode; | ||||
|     } | ||||
|  | ||||
|     public String getMode() { | ||||
|         return mode; | ||||
|     } | ||||
|  | ||||
|     public String getParent() { | ||||
|         return parent; | ||||
|     } | ||||
|  | ||||
|     public int getRrm() { | ||||
|         return rrm; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getSecurity() { | ||||
|         return security; | ||||
|     } | ||||
|  | ||||
|     public String getSsid() { | ||||
|         return ssid; | ||||
|     } | ||||
|  | ||||
|     public String getSsidBroadcast() { | ||||
|         return ssidBroadcast; | ||||
|     } | ||||
|  | ||||
|     public String getState() { | ||||
|         return state; | ||||
|     } | ||||
|  | ||||
|     public Uuid getVersion() { | ||||
|         return version; | ||||
|     } | ||||
|  | ||||
|     public int getVifRadioIdx() { | ||||
|         return vifRadioIdx; | ||||
|     } | ||||
|  | ||||
|     public int getVlanId() { | ||||
|         return vlanId; | ||||
|     } | ||||
|  | ||||
|     public boolean isApBridge() { | ||||
|         return apBridge; | ||||
|     } | ||||
|  | ||||
|     public boolean isDynamicBeacon() { | ||||
|         return dynamicBeacon; | ||||
|     } | ||||
|  | ||||
|     public boolean isEnabled() { | ||||
|         return enabled; | ||||
|     } | ||||
|  | ||||
|     public boolean isUapsdEnable() { | ||||
|         return uapsdEnable; | ||||
|     } | ||||
|  | ||||
|     public boolean isWds() { | ||||
|         return wds; | ||||
|     } | ||||
|  | ||||
|     public void set_uuid(Uuid _uuid) { | ||||
|         this._uuid = _uuid; | ||||
|     } | ||||
|  | ||||
|     public void setApBridge(boolean apBridge) { | ||||
|         this.apBridge = apBridge; | ||||
|     } | ||||
|  | ||||
|     public void setAssociatedClients(List<Uuid> list) { | ||||
|         this.associatedClients = list; | ||||
|     } | ||||
|  | ||||
|     public void setBridge(String bridge) { | ||||
|         this.bridge = bridge; | ||||
|     } | ||||
|  | ||||
|     public void setBtm(int btm) { | ||||
|         this.btm = btm; | ||||
|     } | ||||
|  | ||||
|     public void setChannel(int channel) { | ||||
|         this.channel = channel; | ||||
|     } | ||||
|  | ||||
|     public void setDynamicBeacon(boolean dynamicBeacon) { | ||||
|         this.dynamicBeacon = dynamicBeacon; | ||||
|     } | ||||
|  | ||||
|     public void setEnabled(boolean enabled) { | ||||
|         this.enabled = enabled; | ||||
|     } | ||||
|  | ||||
|     public void setFtMobilityDomain(int ftMobilityDomain) { | ||||
|         this.ftMobilityDomain = ftMobilityDomain; | ||||
|     } | ||||
|  | ||||
|     public void setFtPsk(int ftPsk) { | ||||
|         this.ftPsk = ftPsk; | ||||
|     } | ||||
|  | ||||
|     public void setGroupRekey(int groupRekey) { | ||||
|         this.groupRekey = groupRekey; | ||||
|     } | ||||
|  | ||||
|     public void setIfName(String ifName) { | ||||
|         this.ifName = ifName; | ||||
|     } | ||||
|  | ||||
|     public void setMac(String mac) { | ||||
|         this.mac = mac; | ||||
|     } | ||||
|  | ||||
|     public void setMacList(String macList) { | ||||
|         this.macList = macList; | ||||
|     } | ||||
|  | ||||
|     public void setMinHwMode(String minHwMode) { | ||||
|         this.minHwMode = minHwMode; | ||||
|     } | ||||
|  | ||||
|     public void setMode(String mode) { | ||||
|         this.mode = mode; | ||||
|     } | ||||
|  | ||||
|     public void setParent(String parent) { | ||||
|         this.parent = parent; | ||||
|     } | ||||
|  | ||||
|     public void setRrm(int rrm) { | ||||
|         this.rrm = rrm; | ||||
|     } | ||||
|  | ||||
|     public void setSecurity(Map<String, String> security) { | ||||
|         this.security = security; | ||||
|     } | ||||
|  | ||||
|     public void setSsid(String ssid) { | ||||
|         this.ssid = ssid; | ||||
|     } | ||||
|  | ||||
|     public void setSsidBroadcast(String ssidBroadcast) { | ||||
|         this.ssidBroadcast = ssidBroadcast; | ||||
|     } | ||||
|  | ||||
|     public void setState(String state) { | ||||
|         this.state = state; | ||||
|     } | ||||
|  | ||||
|     public void setUapsdEnable(boolean uapsdEnable) { | ||||
|         this.uapsdEnable = uapsdEnable; | ||||
|     } | ||||
|  | ||||
|     public void setVersion(Uuid version) { | ||||
|         this.version = version; | ||||
|     public int getVifRadioIdx() { | ||||
|         return vifRadioIdx; | ||||
|     } | ||||
|  | ||||
|     public void setVifRadioIdx(int vifRadioIdx) { | ||||
|         this.vifRadioIdx = vifRadioIdx; | ||||
|     } | ||||
|  | ||||
|     public void setVlanId(int vlanId) { | ||||
|         this.vlanId = vlanId; | ||||
|     public String getParent() { | ||||
|         return parent; | ||||
|     } | ||||
|  | ||||
|     public void setParent(String parent) { | ||||
|         this.parent = parent; | ||||
|     } | ||||
|  | ||||
|     public String getState() { | ||||
|         return state; | ||||
|     } | ||||
|  | ||||
|     public void setState(String state) { | ||||
|         this.state = state; | ||||
|     } | ||||
|  | ||||
|     public String getMac() { | ||||
|         return mac; | ||||
|     } | ||||
|  | ||||
|     public void setMac(String mac) { | ||||
|         this.mac = mac; | ||||
|     } | ||||
|  | ||||
|     public boolean isApBridge() { | ||||
|         return apBridge; | ||||
|     } | ||||
|  | ||||
|     public void setApBridge(boolean apBridge) { | ||||
|         this.apBridge = apBridge; | ||||
|     } | ||||
|  | ||||
|     public boolean isUapsdEnable() { | ||||
|         return uapsdEnable; | ||||
|     } | ||||
|  | ||||
|     public void setUapsdEnable(boolean uapsdEnable) { | ||||
|         this.uapsdEnable = uapsdEnable; | ||||
|     } | ||||
|  | ||||
|     public boolean isWds() { | ||||
|         return wds; | ||||
|     } | ||||
|  | ||||
|     public void setWds(boolean wds) { | ||||
|         this.wds = wds; | ||||
|     } | ||||
|  | ||||
|     public String getSsid() { | ||||
|         return ssid; | ||||
|     } | ||||
|  | ||||
|     public void setSsid(String ssid) { | ||||
|         this.ssid = ssid; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getSecurity() { | ||||
|         return security; | ||||
|     } | ||||
|  | ||||
|     public void setSecurity(Map<String, String> security) { | ||||
|         this.security = security; | ||||
|     } | ||||
|  | ||||
|     public String getMacList() { | ||||
|         return macList; | ||||
|     } | ||||
|  | ||||
|     public void setMacList(String macList) { | ||||
|         this.macList = macList; | ||||
|     } | ||||
|  | ||||
|     public List<Uuid> getAssociatedClients() { | ||||
|         return associatedClients; | ||||
|     } | ||||
|  | ||||
|     public void setAssociatedClients(List<Uuid> list) { | ||||
|         this.associatedClients = list; | ||||
|     } | ||||
|  | ||||
|     public boolean isEnabled() { | ||||
|         return enabled; | ||||
|     } | ||||
|  | ||||
|     public void setEnabled(boolean enabled) { | ||||
|         this.enabled = enabled; | ||||
|     } | ||||
|  | ||||
|     public int getVlanId() { | ||||
|         return vlanId; | ||||
|     } | ||||
|  | ||||
|     public void setVlanId(int vlanId) { | ||||
|         this.vlanId = vlanId; | ||||
|     } | ||||
|  | ||||
|     public int getBtm() { | ||||
|         return btm; | ||||
|     } | ||||
|  | ||||
|     public void setBtm(int btm) { | ||||
|         this.btm = btm; | ||||
|     } | ||||
|  | ||||
|     public String getMinHwMode() { | ||||
|         return minHwMode; | ||||
|     } | ||||
|  | ||||
|     public void setMinHwMode(String minHwMode) { | ||||
|         this.minHwMode = minHwMode; | ||||
|     } | ||||
|  | ||||
|     public String getSsidBroadcast() { | ||||
|         return ssidBroadcast; | ||||
|     } | ||||
|  | ||||
|     public void setSsidBroadcast(String ssidBroadcast) { | ||||
|         this.ssidBroadcast = ssidBroadcast; | ||||
|     } | ||||
|  | ||||
|     public String getMode() { | ||||
|         return mode; | ||||
|     } | ||||
|  | ||||
|     public void setMode(String mode) { | ||||
|         this.mode = mode; | ||||
|     } | ||||
|  | ||||
|     public String getBridge() { | ||||
|         return bridge; | ||||
|     } | ||||
|  | ||||
|     public void setBridge(String bridge) { | ||||
|         this.bridge = bridge; | ||||
|     } | ||||
|  | ||||
|     public int getGroupRekey() { | ||||
|         return groupRekey; | ||||
|     } | ||||
|  | ||||
|     public void setGroupRekey(int groupRekey) { | ||||
|         this.groupRekey = groupRekey; | ||||
|     } | ||||
|  | ||||
|     public int getFtMobilityDomain() { | ||||
|         return ftMobilityDomain; | ||||
|     } | ||||
|  | ||||
|     public void setFtMobilityDomain(int ftMobilityDomain) { | ||||
|         this.ftMobilityDomain = ftMobilityDomain; | ||||
|     } | ||||
|  | ||||
|     public int getFtPsk() { | ||||
|         return ftPsk; | ||||
|     } | ||||
|  | ||||
|     public void setFtPsk(int ftPsk) { | ||||
|         this.ftPsk = ftPsk; | ||||
|     } | ||||
|  | ||||
|     public int getRrm() { | ||||
|         return rrm; | ||||
|     } | ||||
|  | ||||
|     public void setRrm(int rrm) { | ||||
|         this.rrm = rrm; | ||||
|     } | ||||
|  | ||||
|     public boolean isDynamicBeacon() { | ||||
|         return dynamicBeacon; | ||||
|     } | ||||
|  | ||||
|     public void setDynamicBeacon(boolean dynamicBeacon) { | ||||
|         this.dynamicBeacon = dynamicBeacon; | ||||
|     } | ||||
|  | ||||
|     public int getChannel() { | ||||
|         return channel; | ||||
|     } | ||||
|  | ||||
|     public void setChannel(int channel) { | ||||
|         this.channel = channel; | ||||
|     } | ||||
|  | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
|  | ||||
|     public Uuid get_uuid() { | ||||
|         return _uuid; | ||||
|     } | ||||
|  | ||||
|     public void set_uuid(Uuid _uuid) { | ||||
|         this._uuid = _uuid; | ||||
|     } | ||||
|  | ||||
|     public Uuid getVersion() { | ||||
|         return version; | ||||
|     } | ||||
|  | ||||
|     public void setVersion(Uuid version) { | ||||
|         this.version = version; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,28 +1,22 @@ | ||||
| /** | ||||
|  * | ||||
|  *  | ||||
|  */ | ||||
|  | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.models; | ||||
|  | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
|  | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Row; | ||||
| import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Uuid; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Value; | ||||
|  | ||||
| /** | ||||
|  * @author mikehansen | ||||
|  * | ||||
|  */ | ||||
| public class OpensyncAWLANNode extends OpensyncAPBase { | ||||
| public class OpensyncAWLANNode extends BaseJsonModel { | ||||
|  | ||||
|     private static final long serialVersionUID = -6172956297643126710L; | ||||
|  | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
|  | ||||
|     public Map<Object, Object> mqttSettings; | ||||
|     public String model; | ||||
|     public String skuNumber; | ||||
| @@ -46,19 +40,11 @@ public class OpensyncAWLANNode extends OpensyncAPBase { | ||||
|     public String revision; | ||||
|     public String managerAddr; | ||||
|     public boolean factoryReset; | ||||
|     public String referenceDesign; | ||||
|     public Map<String, String> qrCode; | ||||
|     public String modelDescription; | ||||
|     public String manufacturerUrl; | ||||
|     public String manufacturerName; | ||||
|     public String manufacturerDate; | ||||
|     public String certificationRegion; | ||||
|  | ||||
|     public Uuid _uuid; | ||||
|  | ||||
|     public Uuid version; | ||||
|  | ||||
|     public OpensyncAWLANNode() { | ||||
|         super(); | ||||
|         mqttSettings = new HashMap<>(); | ||||
|         versionMatrix = new HashMap<>(); | ||||
|         ledConfig = new HashMap<>(); | ||||
| @@ -66,391 +52,208 @@ public class OpensyncAWLANNode extends OpensyncAPBase { | ||||
|         mqttTopics = new HashMap<>(); | ||||
|     } | ||||
|  | ||||
|     public OpensyncAWLANNode(Row row) { | ||||
|         this(); | ||||
|          | ||||
| //        mqtt_settings        {"key":"string","max":"unlimited","min":0,"value":"string"} | ||||
| //        model                {"key":"string","min":0} | ||||
| //        sku_number           {"key":"string","min":0} | ||||
| //        version_matrix       {"key":"string","max":"unlimited","min":0,"value":{"maxLength":128,"type":"string"}} | ||||
| //        model_description    "string" | ||||
| //        certification_region "string" | ||||
| //        id                   "string" | ||||
| //        firmware_version     "string" | ||||
| //        firmware_url         {"key":{"maxLength":256,"type":"string"}} | ||||
| //        _uuid                "uuid" | ||||
| //        upgrade_dl_timer     "integer" | ||||
| //        reference_design     "string" | ||||
| //        platform_version     "string" | ||||
| //        firmware_pass        {"key":{"maxLength":256,"type":"string"}} | ||||
| //        upgrade_timer        "integer" | ||||
| //        redirector_addr      "string" | ||||
| //        led_config           {"key":"string","max":"unlimited","min":0,"value":"string"} | ||||
| //        max_backoff          "integer" | ||||
| //        mqtt_headers         {"key":"string","max":"unlimited","min":0,"value":"string"} | ||||
| //        serial_number        {"key":"string","min":0} | ||||
| //        _version             "uuid" | ||||
| //        upgrade_status       "integer" | ||||
| //        device_mode          {"key":{"enum":["set",["battery","cloud","custom","monitor"]],"type":"string"},"min":0} | ||||
| //        min_backoff          "integer" | ||||
| //        manufacturer_date    "string" | ||||
| //        mqtt_topics          {"key":"string","max":"unlimited","min":0,"value":{"maxLength":128,"type":"string"}} | ||||
| //        revision             "string" | ||||
| //        manufacturer_name    "string" | ||||
| //        manufacturer_url     "string" | ||||
| //        manager_addr         "string" | ||||
| //        factory_reset        {"key":"boolean","min":0} | ||||
|         Map<String, Value> map = row.getColumns(); | ||||
|         if (map.get("mqtt_settings") != null) { | ||||
|             this.setMqttSettings(row.getMapColumn("mqtt_settings")); | ||||
|         } | ||||
|         if (map.get("mqtt_headers") != null) { | ||||
|             this.setMqttHeaders(row.getMapColumn("mqtt_headers")); | ||||
|         } | ||||
|         if (map.get("mqtt_topics") != null) { | ||||
|             this.setMqttHeaders(row.getMapColumn("mqtt_topics")); | ||||
|         } | ||||
|         if ((map.get("model") != null) && map.get("model").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setModel(row.getStringColumn("model")); | ||||
|         } | ||||
|         if ((map.get("sku_number") != null) && map.get("sku_number").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setSkuNumber(row.getStringColumn("sku_number")); | ||||
|         } | ||||
|         if (map.get("id") != null) { | ||||
|             this.setId(getSingleValueFromSet(row, "id")); | ||||
|         } | ||||
|         if (map.get("reference_design") != null) { | ||||
|             this.setReferenceDesign(row.getStringColumn("reference_design")); | ||||
|         } | ||||
|         if (map.get("qr_code") != null) { | ||||
|             this.setQrCode(row.getMapColumn("qr_code")); | ||||
|         } | ||||
|         if ((map.get("model_description") != null)) { | ||||
|             this.setModelDescription(row.getStringColumn("model_description")); | ||||
|         } | ||||
|         if ((map.get("manufacturer_url") != null)) { | ||||
|             this.setManufacturerUrl(row.getStringColumn("manufacturer_url")); | ||||
|         } | ||||
|         if ((map.get("manufacturer_name") != null)) { | ||||
|             this.setManufacturerName(row.getStringColumn("manufacturer_name")); | ||||
|         } | ||||
|         if ((map.get("manufacturer_date") != null)) { | ||||
|             this.setManufacturerDate(row.getStringColumn("manufacturer_date")); | ||||
|         } | ||||
|         if (map.get("certification_region") != null) { | ||||
|             this.setCertificationRegion(row.getStringColumn("certification_region")); | ||||
|         } | ||||
|         if (map.get("version_matrix") != null) { | ||||
|             this.setVersionMatrix(row.getMapColumn("version_matrix")); | ||||
|         } | ||||
|         if ((map.get("firmware_version") != null) && map.get("firmware_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setFirmwareVersion(row.getStringColumn("firmware_version")); | ||||
|         } | ||||
|         if ((map.get("firmware_url") != null) && map.get("firmware_url").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setFirmwareUrl(row.getStringColumn("firmware_url")); | ||||
|         } | ||||
|         if ((map.get("_uuid") != null) && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVersion(row.getUuidColumn("_uuid")); | ||||
|         } | ||||
|         if ((map.get("upgrade_dl_timer") != null) && map.get("upgrade_dl_timer").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setUpgradeDlTimer(row.getIntegerColumn("upgrade_dl_timer").intValue()); | ||||
|         } | ||||
|         if ((map.get("platform_version") != null) && map.get("platform_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setPlatformVersion(row.getStringColumn("platform_version")); | ||||
|         } | ||||
|         if ((map.get("firmware_pass") != null) && map.get("firmware_pass").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setFirmwarePass(row.getStringColumn("firmware_pass")); | ||||
|         } | ||||
|         if ((map.get("upgrade_timer") != null) && map.get("upgrade_timer").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setUpgradeTimer(row.getIntegerColumn("upgrade_timer").intValue()); | ||||
|         } | ||||
|         if ((map.get("max_backoff") != null) && map.get("max_backoff").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setMaxBackoff(row.getIntegerColumn("max_backoff").intValue()); | ||||
|         } | ||||
|         if (map.get("led_config") != null) { | ||||
|             this.setLedConfig(row.getMapColumn("led_config")); | ||||
|         } | ||||
|         if ((map.get("redirector_addr") != null) && map.get("redirector_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setRedirectorAddr(row.getStringColumn("redirector_addr")); | ||||
|         } | ||||
|         if ((map.get("serial_number") != null) && map.get("serial_number").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setSerialNumber(row.getStringColumn("serial_number")); | ||||
|         } | ||||
|         if ((map.get("_version") != null) && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVersion(row.getUuidColumn("_version")); | ||||
|         } | ||||
|         this.setUpgradeStatus(row.getIntegerColumn("upgrade_status").intValue()); | ||||
|         if ((map.get("device_mode") != null) && map.get("device_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setDeviceMode(row.getStringColumn("device_mode")); | ||||
|         } | ||||
|         if ((map.get("min_backoff") != null) && map.get("min_backoff").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setMinBackoff(row.getIntegerColumn("min_backoff").intValue()); | ||||
|         } | ||||
|         if ((map.get("revision") != null) && map.get("revision").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setRevision(row.getStringColumn("revision")); | ||||
|         } | ||||
|         if ((map.get("manager_addr") != null) && map.get("manager_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setManagerAddr(row.getStringColumn("manager_addr")); | ||||
|         } | ||||
|         if ((map.get("factory_reset") != null) && map.get("factory_reset").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setFactoryReset(row.getBooleanColumn("factory_reset")); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public Uuid get_uuid() { | ||||
|         return _uuid; | ||||
|     } | ||||
|  | ||||
|     public String getDeviceMode() { | ||||
|         return deviceMode; | ||||
|     } | ||||
|  | ||||
|     public String getFirmwarePass() { | ||||
|         return firmwarePass; | ||||
|     } | ||||
|  | ||||
|     public String getFirmwareUrl() { | ||||
|         return firmwareUrl; | ||||
|     } | ||||
|  | ||||
|     public String getFirmwareVersion() { | ||||
|         return firmwareVersion; | ||||
|     } | ||||
|  | ||||
|     public String getId() { | ||||
|         return id; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getLedConfig() { | ||||
|         return ledConfig; | ||||
|     } | ||||
|  | ||||
|     public String getManagerAddr() { | ||||
|         return managerAddr; | ||||
|     } | ||||
|  | ||||
|     public int getMaxBackoff() { | ||||
|         return maxBackoff; | ||||
|     } | ||||
|  | ||||
|     public int getMinBackoff() { | ||||
|         return minBackoff; | ||||
|     } | ||||
|  | ||||
|     public String getModel() { | ||||
|         return model; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getMqttHeaders() { | ||||
|         return mqttHeaders; | ||||
|     } | ||||
|  | ||||
|     public Map<Object, Object> getMqttSettings() { | ||||
|         return mqttSettings; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getMqttTopics() { | ||||
|         return mqttTopics; | ||||
|     } | ||||
|  | ||||
|     public String getPlatformVersion() { | ||||
|         return platformVersion; | ||||
|     } | ||||
|  | ||||
|     public String getRedirectorAddr() { | ||||
|         return redirectorAddr; | ||||
|     } | ||||
|  | ||||
|     public String getRevision() { | ||||
|         return revision; | ||||
|     } | ||||
|  | ||||
|     public String getSerialNumber() { | ||||
|         return serialNumber; | ||||
|     } | ||||
|  | ||||
|     public String getSkuNumber() { | ||||
|         return skuNumber; | ||||
|     } | ||||
|  | ||||
|     public int getUpgradeDlTimer() { | ||||
|         return upgradeDlTimer; | ||||
|     } | ||||
|  | ||||
|     public int getUpgradeStatus() { | ||||
|         return upgradeStatus; | ||||
|     } | ||||
|  | ||||
|     public int getUpgradeTimer() { | ||||
|         return upgradeTimer; | ||||
|     } | ||||
|  | ||||
|     public Uuid getVersion() { | ||||
|         return version; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getVersionMatrix() { | ||||
|         return versionMatrix; | ||||
|     } | ||||
|  | ||||
|     public boolean isFactoryReset() { | ||||
|         return factoryReset; | ||||
|     } | ||||
|  | ||||
|     public String getReferenceDesign() { | ||||
|         return referenceDesign; | ||||
|     } | ||||
|  | ||||
|     public void setReferenceDesign(String referenceDesign) { | ||||
|         this.referenceDesign = referenceDesign; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getQrCode() { | ||||
|         return qrCode; | ||||
|     } | ||||
|  | ||||
|     public void setQrCode(Map<String, String> qrCode) { | ||||
|         this.qrCode = qrCode; | ||||
|     } | ||||
|  | ||||
|     public String getModelDescription() { | ||||
|         return modelDescription; | ||||
|     } | ||||
|  | ||||
|     public void setModelDescription(String modelDescription) { | ||||
|         this.modelDescription = modelDescription; | ||||
|     } | ||||
|  | ||||
|     public String getManufacturerUrl() { | ||||
|         return manufacturerUrl; | ||||
|     } | ||||
|  | ||||
|     public void setManufacturerUrl(String manufacturerUrl) { | ||||
|         this.manufacturerUrl = manufacturerUrl; | ||||
|     } | ||||
|  | ||||
|     public String getManufacturerName() { | ||||
|         return manufacturerName; | ||||
|     } | ||||
|  | ||||
|     public void setManufacturerName(String manufacturerName) { | ||||
|         this.manufacturerName = manufacturerName; | ||||
|     } | ||||
|  | ||||
|     public String getManufacturerDate() { | ||||
|         return manufacturerDate; | ||||
|     } | ||||
|  | ||||
|     public void setManufacturerDate(String manufacturerDate) { | ||||
|         this.manufacturerDate = manufacturerDate; | ||||
|     } | ||||
|  | ||||
|     public String getCertificationRegion() { | ||||
|         return certificationRegion; | ||||
|     } | ||||
|  | ||||
|     public void setCertificationRegion(String certificationRegion) { | ||||
|         this.certificationRegion = certificationRegion; | ||||
|     } | ||||
|  | ||||
|     public void set_uuid(Uuid _uuid) { | ||||
|         this._uuid = _uuid; | ||||
|     } | ||||
|  | ||||
|     public void setDeviceMode(String deviceMode) { | ||||
|         this.deviceMode = deviceMode; | ||||
|     } | ||||
|  | ||||
|     public void setFactoryReset(boolean factoryReset) { | ||||
|         this.factoryReset = factoryReset; | ||||
|     } | ||||
|  | ||||
|     public void setFirmwarePass(String firmwarePass) { | ||||
|         this.firmwarePass = firmwarePass; | ||||
|     } | ||||
|  | ||||
|     public void setFirmwareUrl(String firmwareUrl) { | ||||
|         this.firmwareUrl = firmwareUrl; | ||||
|     } | ||||
|  | ||||
|     public void setFirmwareVersion(String firmwareVersion) { | ||||
|         this.firmwareVersion = firmwareVersion; | ||||
|     } | ||||
|  | ||||
|     public void setId(String id) { | ||||
|         this.id = id; | ||||
|     } | ||||
|  | ||||
|     public void setLedConfig(Map<String, String> ledConfig) { | ||||
|         this.ledConfig = ledConfig; | ||||
|     } | ||||
|  | ||||
|     public void setManagerAddr(String managerAddr) { | ||||
|         this.managerAddr = managerAddr; | ||||
|     } | ||||
|  | ||||
|     public void setMaxBackoff(int maxBackoff) { | ||||
|         this.maxBackoff = maxBackoff; | ||||
|     } | ||||
|  | ||||
|     public void setMinBackoff(int minBackoff) { | ||||
|         this.minBackoff = minBackoff; | ||||
|     } | ||||
|  | ||||
|     public void setModel(String model) { | ||||
|         this.model = model; | ||||
|     } | ||||
|  | ||||
|     public void setMqttHeaders(Map<String, String> mqttHeaders) { | ||||
|         this.mqttHeaders = mqttHeaders; | ||||
|     } | ||||
|  | ||||
|     public void setMqttSettings(Map<Object, Object> map) { | ||||
|         this.mqttSettings = map; | ||||
|     } | ||||
|  | ||||
|     public void setMqttTopics(Map<String, String> mqttTopics) { | ||||
|         this.mqttTopics = mqttTopics; | ||||
|     public String getModel() { | ||||
|         return model; | ||||
|     } | ||||
|  | ||||
|     public void setPlatformVersion(String platformVersion) { | ||||
|         this.platformVersion = platformVersion; | ||||
|     public void setModel(String model) { | ||||
|         this.model = model; | ||||
|     } | ||||
|  | ||||
|     public void setRedirectorAddr(String redirectorAddr) { | ||||
|         this.redirectorAddr = redirectorAddr; | ||||
|     } | ||||
|  | ||||
|     public void setRevision(String revision) { | ||||
|         this.revision = revision; | ||||
|     } | ||||
|  | ||||
|     public void setSerialNumber(String serialNumber) { | ||||
|         this.serialNumber = serialNumber; | ||||
|     public String getSkuNumber() { | ||||
|         return skuNumber; | ||||
|     } | ||||
|  | ||||
|     public void setSkuNumber(String skuNumber) { | ||||
|         this.skuNumber = skuNumber; | ||||
|     } | ||||
|  | ||||
|     public void setUpgradeDlTimer(int upgradeDlTimer) { | ||||
|         this.upgradeDlTimer = upgradeDlTimer; | ||||
|     public String getId() { | ||||
|         return id; | ||||
|     } | ||||
|  | ||||
|     public void setUpgradeStatus(int upgradeStatus) { | ||||
|         this.upgradeStatus = upgradeStatus; | ||||
|     public void setId(String id) { | ||||
|         this.id = id; | ||||
|     } | ||||
|  | ||||
|     public void setUpgradeTimer(int upgradeTimer) { | ||||
|         this.upgradeTimer = upgradeTimer; | ||||
|     } | ||||
|  | ||||
|     public void setVersion(Uuid version) { | ||||
|         this.version = version; | ||||
|     public Map<String, String> getVersionMatrix() { | ||||
|         return versionMatrix; | ||||
|     } | ||||
|  | ||||
|     public void setVersionMatrix(Map<String, String> versionMatrix) { | ||||
|         this.versionMatrix = versionMatrix; | ||||
|     } | ||||
|  | ||||
|     public String getFirmwareVersion() { | ||||
|         return firmwareVersion; | ||||
|     } | ||||
|  | ||||
|     public void setFirmwareVersion(String firmwareVersion) { | ||||
|         this.firmwareVersion = firmwareVersion; | ||||
|     } | ||||
|  | ||||
|     public String getFirmwareUrl() { | ||||
|         return firmwareUrl; | ||||
|     } | ||||
|  | ||||
|     public void setFirmwareUrl(String firmwareUrl) { | ||||
|         this.firmwareUrl = firmwareUrl; | ||||
|     } | ||||
|  | ||||
|     public int getUpgradeDlTimer() { | ||||
|         return upgradeDlTimer; | ||||
|     } | ||||
|  | ||||
|     public void setUpgradeDlTimer(int upgradeDlTimer) { | ||||
|         this.upgradeDlTimer = upgradeDlTimer; | ||||
|     } | ||||
|  | ||||
|     public String getPlatformVersion() { | ||||
|         return platformVersion; | ||||
|     } | ||||
|  | ||||
|     public void setPlatformVersion(String platformVersion) { | ||||
|         this.platformVersion = platformVersion; | ||||
|     } | ||||
|  | ||||
|     public String getFirmwarePass() { | ||||
|         return firmwarePass; | ||||
|     } | ||||
|  | ||||
|     public void setFirmwarePass(String firmwarePass) { | ||||
|         this.firmwarePass = firmwarePass; | ||||
|     } | ||||
|  | ||||
|     public int getUpgradeTimer() { | ||||
|         return upgradeTimer; | ||||
|     } | ||||
|  | ||||
|     public void setUpgradeTimer(int upgradeTimer) { | ||||
|         this.upgradeTimer = upgradeTimer; | ||||
|     } | ||||
|  | ||||
|     public int getMaxBackoff() { | ||||
|         return maxBackoff; | ||||
|     } | ||||
|  | ||||
|     public void setMaxBackoff(int maxBackoff) { | ||||
|         this.maxBackoff = maxBackoff; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getLedConfig() { | ||||
|         return ledConfig; | ||||
|     } | ||||
|  | ||||
|     public void setLedConfig(Map<String, String> ledConfig) { | ||||
|         this.ledConfig = ledConfig; | ||||
|     } | ||||
|  | ||||
|     public String getRedirectorAddr() { | ||||
|         return redirectorAddr; | ||||
|     } | ||||
|  | ||||
|     public void setRedirectorAddr(String redirectorAddr) { | ||||
|         this.redirectorAddr = redirectorAddr; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getMqttHeaders() { | ||||
|         return mqttHeaders; | ||||
|     } | ||||
|  | ||||
|     public void setMqttHeaders(Map<String, String> mqttHeaders) { | ||||
|         this.mqttHeaders = mqttHeaders; | ||||
|     } | ||||
|  | ||||
|     public String getSerialNumber() { | ||||
|         return serialNumber; | ||||
|     } | ||||
|  | ||||
|     public void setSerialNumber(String serialNumber) { | ||||
|         this.serialNumber = serialNumber; | ||||
|     } | ||||
|  | ||||
|     public int getUpgradeStatus() { | ||||
|         return upgradeStatus; | ||||
|     } | ||||
|  | ||||
|     public void setUpgradeStatus(int upgradeStatus) { | ||||
|         this.upgradeStatus = upgradeStatus; | ||||
|     } | ||||
|  | ||||
|     public String getDeviceMode() { | ||||
|         return deviceMode; | ||||
|     } | ||||
|  | ||||
|     public void setDeviceMode(String deviceMode) { | ||||
|         this.deviceMode = deviceMode; | ||||
|     } | ||||
|  | ||||
|     public int getMinBackoff() { | ||||
|         return minBackoff; | ||||
|     } | ||||
|  | ||||
|     public void setMinBackoff(int minBackoff) { | ||||
|         this.minBackoff = minBackoff; | ||||
|     } | ||||
|  | ||||
|     public Map<String, String> getMqttTopics() { | ||||
|         return mqttTopics; | ||||
|     } | ||||
|  | ||||
|     public void setMqttTopics(Map<String, String> mqttTopics) { | ||||
|         this.mqttTopics = mqttTopics; | ||||
|     } | ||||
|  | ||||
|     public String getRevision() { | ||||
|         return revision; | ||||
|     } | ||||
|  | ||||
|     public void setRevision(String revision) { | ||||
|         this.revision = revision; | ||||
|     } | ||||
|  | ||||
|     public String getManagerAddr() { | ||||
|         return managerAddr; | ||||
|     } | ||||
|  | ||||
|     public void setManagerAddr(String managerAddr) { | ||||
|         this.managerAddr = managerAddr; | ||||
|     } | ||||
|  | ||||
|     public boolean isFactoryReset() { | ||||
|         return factoryReset; | ||||
|     } | ||||
|  | ||||
|     public void setFactoryReset(boolean factoryReset) { | ||||
|         this.factoryReset = factoryReset; | ||||
|     } | ||||
|  | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
|  | ||||
|     public Uuid get_uuid() { | ||||
|         return _uuid; | ||||
|     } | ||||
|  | ||||
|     public void set_uuid(Uuid _uuid) { | ||||
|         this._uuid = _uuid; | ||||
|     } | ||||
|  | ||||
|     public Uuid getVersion() { | ||||
|         return version; | ||||
|     } | ||||
|  | ||||
|     public void setVersion(Uuid version) { | ||||
|         this.version = version; | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,28 +1,22 @@ | ||||
| /** | ||||
|  * | ||||
|  *  | ||||
|  */ | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.models; | ||||
|  | ||||
| import java.util.HashSet; | ||||
| import java.util.Map; | ||||
| import java.util.Set; | ||||
|  | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Row; | ||||
| import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Uuid; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Value; | ||||
|  | ||||
| /** | ||||
|  * @author mikehansen | ||||
|  * | ||||
|  */ | ||||
| public class OpensyncWifiAssociatedClients extends OpensyncAPBase { | ||||
| public class OpensyncWifiAssociatedClients extends BaseJsonModel { | ||||
|  | ||||
|     private static final long serialVersionUID = -7088651136971662138L; | ||||
|  | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
|  | ||||
|     public String keyId; | ||||
|     public String mac; | ||||
|     public String state; | ||||
| @@ -31,105 +25,83 @@ public class OpensyncWifiAssociatedClients extends OpensyncAPBase { | ||||
|     public String kick; | ||||
|     public String oftag; | ||||
|     public Uuid _uuid; | ||||
|  | ||||
|     public Uuid version; | ||||
|  | ||||
|     public OpensyncWifiAssociatedClients() { | ||||
|         super(); | ||||
|         capabilities = new HashSet<>(); | ||||
|     } | ||||
|  | ||||
|     public OpensyncWifiAssociatedClients(Row row) { | ||||
|         this(); | ||||
|  | ||||
|         Map<String, Value> map = row.getColumns(); | ||||
|  | ||||
|         if ((map.get("mac") != null) | ||||
|                 && map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setMac(row.getStringColumn("mac")); | ||||
|         } | ||||
|         if (row.getSetColumn("capabilities") != null) { | ||||
|             this.setCapabilities(row.getSetColumn("capabilities")); | ||||
|         } | ||||
|         if ((map.get("state") != null) | ||||
|                 && map.get("state").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setState(row.getStringColumn("state")); | ||||
|         } | ||||
|         if ((map.get("_version") != null) | ||||
|                 && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVersion(row.getUuidColumn("_version")); | ||||
|         } | ||||
|         if ((map.get("_uuid") != null) | ||||
|                 && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) { | ||||
|             this.setVersion(row.getUuidColumn("_uuid")); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public Uuid get_uuid() { | ||||
|         return _uuid; | ||||
|     } | ||||
|  | ||||
|     public Set<String> getCapabilities() { | ||||
|         return capabilities; | ||||
|     } | ||||
|  | ||||
|     public String getKeyId() { | ||||
|         return keyId; | ||||
|     } | ||||
|  | ||||
|     public String getKick() { | ||||
|         return kick; | ||||
|     public void setKeyId(String keyId) { | ||||
|         this.keyId = keyId; | ||||
|     } | ||||
|  | ||||
|     public String getMac() { | ||||
|         return mac; | ||||
|     } | ||||
|  | ||||
|     public String getOftag() { | ||||
|         return oftag; | ||||
|     public void setMac(String mac) { | ||||
|         this.mac = mac; | ||||
|     } | ||||
|  | ||||
|     public String getState() { | ||||
|         return state; | ||||
|     } | ||||
|  | ||||
|     public int getUapsd() { | ||||
|         return uapsd; | ||||
|     public void setState(String state) { | ||||
|         this.state = state; | ||||
|     } | ||||
|  | ||||
|     public Uuid getVersion() { | ||||
|         return version; | ||||
|     } | ||||
|  | ||||
|     public void set_uuid(Uuid _uuid) { | ||||
|         this._uuid = _uuid; | ||||
|     public Set<String> getCapabilities() { | ||||
|         return capabilities; | ||||
|     } | ||||
|  | ||||
|     public void setCapabilities(Set<String> set) { | ||||
|         this.capabilities = set; | ||||
|     } | ||||
|  | ||||
|     public void setKeyId(String keyId) { | ||||
|         this.keyId = keyId; | ||||
|     public int getUapsd() { | ||||
|         return uapsd; | ||||
|     } | ||||
|  | ||||
|     public void setUapsd(int uapsd) { | ||||
|         this.uapsd = uapsd; | ||||
|     } | ||||
|  | ||||
|     public String getKick() { | ||||
|         return kick; | ||||
|     } | ||||
|  | ||||
|     public void setKick(String kick) { | ||||
|         this.kick = kick; | ||||
|     } | ||||
|  | ||||
|     public void setMac(String mac) { | ||||
|         this.mac = mac; | ||||
|     public String getOftag() { | ||||
|         return oftag; | ||||
|     } | ||||
|  | ||||
|     public void setOftag(String oftag) { | ||||
|         this.oftag = oftag; | ||||
|     } | ||||
|  | ||||
|     public void setState(String state) { | ||||
|         this.state = state; | ||||
|     public static long getSerialversionuid() { | ||||
|         return serialVersionUID; | ||||
|     } | ||||
|  | ||||
|     public void setUapsd(int uapsd) { | ||||
|         this.uapsd = uapsd; | ||||
|     public Uuid get_uuid() { | ||||
|         return _uuid; | ||||
|     } | ||||
|  | ||||
|     public void set_uuid(Uuid _uuid) { | ||||
|         this._uuid = _uuid; | ||||
|     } | ||||
|  | ||||
|     public Uuid getVersion() { | ||||
|         return version; | ||||
|     } | ||||
|  | ||||
|     public void setVersion(Uuid version) { | ||||
|   | ||||
| @@ -1,14 +0,0 @@ | ||||
|  | ||||
| package com.telecominfraproject.wlan.opensync.external.integration.utils; | ||||
|  | ||||
| import com.telecominfraproject.wlan.systemevent.models.SystemEvent; | ||||
|  | ||||
| import sts.OpensyncStats.Report; | ||||
|  | ||||
| public interface StatsPublisherInterface { | ||||
|  | ||||
|     void processMqttMessage(String topic, Report report); | ||||
|  | ||||
|     void publishSystemEventFromTableStateMonitor(SystemEvent event); | ||||
|  | ||||
| } | ||||
| @@ -3,7 +3,7 @@ | ||||
|   <parent> | ||||
|     <groupId>com.telecominfraproject.wlan</groupId> | ||||
|     <artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||
|     <version>1.2.0-SNAPSHOT</version> | ||||
|     <version>0.0.1-SNAPSHOT</version> | ||||
|     <relativePath>../../wlan-cloud-root</relativePath> | ||||
|   </parent> | ||||
|   <artifactId>opensync-ext-static</artifactId> | ||||
| @@ -13,7 +13,7 @@ | ||||
|   	<dependency> | ||||
|   		<groupId>com.telecominfraproject.wlan</groupId> | ||||
|   		<artifactId>opensync-gateway</artifactId> | ||||
|   		<version>1.2.0-SNAPSHOT</version> | ||||
|   		<version>${tip-wlan-cloud.release.version}</version> | ||||
|   	</dependency> | ||||
|   </dependencies> | ||||
| </project> | ||||
|   | ||||
| @@ -2,6 +2,7 @@ package com.telecominfraproject.wlan.opensync.external.integration; | ||||
|  | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.util.HashSet; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| @@ -17,6 +18,7 @@ import com.telecominfraproject.wlan.equipment.models.Equipment; | ||||
| import com.telecominfraproject.wlan.location.models.Location; | ||||
| 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.OpensyncAPHotspot20Config; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState; | ||||
| @@ -45,9 +47,30 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr | ||||
|     @Value("${tip.wlan.ovsdb.ssidProfileFileName:/app/config/ProfileSsid.json}") | ||||
|     private String ssidProfileFileName; | ||||
|  | ||||
|     @Value("${tip.wlan.ovsdb.metricsProfileFileName:/app/config/ProfileMetrics.json}") | ||||
|     private String metricsProfileFileName; | ||||
|  | ||||
|     @Value("${tip.wlan.ovsdb.venueProfileFileName:/app/config/ProfileVenue.json}") | ||||
|     private String venueProfileFileName; | ||||
|  | ||||
|     @Value("${tip.wlan.ovsdb.operatorProfileFileName:/app/config/ProfileOperator.json}") | ||||
|     private String operatorProfileFileName; | ||||
|  | ||||
|     @Value("${tip.wlan.ovsdb.hotspot20ProfileFileName:/app/config/ProfileHotspot20.json}") | ||||
|     private String hotspot20ProfileFileName; | ||||
|  | ||||
|     @Value("${tip.wlan.ovsdb.idProviderProfileFileName:/app/config/ProfileIdProvider.json}") | ||||
|     private String idProviderProfileFileName; | ||||
|  | ||||
|     @Value("${tip.wlan.ovsdb.radiusProfileFileName:/app/config/ProfileRadius.json}") | ||||
|     private String radiusProfileFileName; | ||||
|  | ||||
|     @Value("${tip.wlan.ovsdb.captiveProfileFileName:/app/config/ProfileCaptive.json}") | ||||
|     private String captiveProfileFileName; | ||||
|  | ||||
|     @Value("${tip.wlan.ovsdb.bonjourProfileFileName:/app/config/ProfileBonjour.json}") | ||||
|     private String bonjourProfileFileName; | ||||
|  | ||||
|     @Value("${tip.wlan.ovsdb.locationFileName:/app/config/LocationBuildingExample.json}") | ||||
|     private String locationFileName; | ||||
|  | ||||
| @@ -62,6 +85,7 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr | ||||
|         serialNumber = connectNodeInfo.serialNumber; | ||||
|         LOG.info("AP {} got connected to the gateway", apId); | ||||
|         LOG.info("ConnectNodeInfo {}", connectNodeInfo); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public void apDisconnected(String apId) { | ||||
| @@ -71,41 +95,97 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr | ||||
|     public OpensyncAPConfig getApConfig(String apId) { | ||||
|         LOG.info("Retrieving config for AP {}", apId); | ||||
|         OpensyncAPConfig ret = null; | ||||
|  | ||||
|         try { | ||||
|  | ||||
|             Equipment equipment = Equipment.fromFile(customerEquipmentFileName, Equipment.class); | ||||
|             equipment.setInventoryId(apId); | ||||
|             equipment.setName(apId); | ||||
|             equipment.setSerial(serialNumber); | ||||
|  | ||||
|             com.telecominfraproject.wlan.profile.models.Profile apProfile = com.telecominfraproject.wlan.profile.models.Profile | ||||
|                     .fromFile(apProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|  | ||||
|             com.telecominfraproject.wlan.profile.models.Profile rfProfile = com.telecominfraproject.wlan.profile.models.Profile | ||||
|                     .fromFile(rfProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|  | ||||
|             apProfile.getChildProfileIds().add(rfProfile.getId()); | ||||
|  | ||||
|             List<com.telecominfraproject.wlan.profile.models.Profile> ssidProfiles = com.telecominfraproject.wlan.profile.models.Profile | ||||
|                     .listFromFile(ssidProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|  | ||||
|             List<com.telecominfraproject.wlan.profile.models.Profile> hotspot20Profiles = com.telecominfraproject.wlan.profile.models.Profile | ||||
|                     .listFromFile(hotspot20ProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|             List<com.telecominfraproject.wlan.profile.models.Profile> operatorProfiles = com.telecominfraproject.wlan.profile.models.Profile | ||||
|                     .listFromFile(operatorProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|             List<com.telecominfraproject.wlan.profile.models.Profile> venueProfiles = com.telecominfraproject.wlan.profile.models.Profile | ||||
|                     .listFromFile(venueProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|             List<com.telecominfraproject.wlan.profile.models.Profile> providerProfiles = com.telecominfraproject.wlan.profile.models.Profile | ||||
|                     .listFromFile(idProviderProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|  | ||||
|  | ||||
|             ssidProfiles.stream().forEach(p -> apProfile.getChildProfileIds().add(p.getId())); | ||||
|  | ||||
|             List<com.telecominfraproject.wlan.profile.models.Profile> metricsProfiles = com.telecominfraproject.wlan.profile.models.Profile | ||||
|                     .listFromFile(metricsProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|  | ||||
|             List<com.telecominfraproject.wlan.profile.models.Profile> radiusProfiles = com.telecominfraproject.wlan.profile.models.Profile | ||||
|                     .listFromFile(radiusProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|  | ||||
|  | ||||
|             List<com.telecominfraproject.wlan.profile.models.Profile> captiveProfiles = null; | ||||
|             File captiveFile = new File(captiveProfileFileName); | ||||
|             if (captiveFile.exists()) { | ||||
|                 captiveProfiles = com.telecominfraproject.wlan.profile.models.Profile.listFromFile( | ||||
|                         captiveProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|             } else { | ||||
|                 LOG.info("Captive file is not provided"); | ||||
|             } | ||||
|  | ||||
|             List<com.telecominfraproject.wlan.profile.models.Profile> bonjourProfiles = null; | ||||
|             File bonjourFile = new File(bonjourProfileFileName); | ||||
|             if (bonjourFile.exists()) { | ||||
|                 bonjourProfiles = com.telecominfraproject.wlan.profile.models.Profile.listFromFile( | ||||
|                         bonjourProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|             } else { | ||||
|                 LOG.info("Bonjour file is not provided"); | ||||
|             } | ||||
|  | ||||
|             equipment.setProfileId(apProfile.getId()); | ||||
|  | ||||
|             Location location = Location.fromFile(locationFileName, Location.class); | ||||
|  | ||||
|             equipment.setLocationId(location.getId()); | ||||
|  | ||||
|             OpensyncAPHotspot20Config hotspotConfig = new OpensyncAPHotspot20Config(); | ||||
|  | ||||
|             hotspotConfig.setHotspot20ProfileSet( | ||||
|                     new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(hotspot20Profiles)); | ||||
|             hotspotConfig.setHotspot20OperatorSet( | ||||
|                     new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(operatorProfiles)); | ||||
|             hotspotConfig.setHotspot20VenueSet( | ||||
|                     new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(venueProfiles)); | ||||
|             hotspotConfig.setHotspot20ProviderSet( | ||||
|                     new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(providerProfiles)); | ||||
|  | ||||
|             ret = new OpensyncAPConfig(); | ||||
|             ret.setCustomerEquipment(equipment); | ||||
|             ret.setApProfile(apProfile); | ||||
|             ret.setRfProfile(rfProfile); | ||||
|             ret.setMetricsProfiles(metricsProfiles); | ||||
|             ret.setSsidProfile(ssidProfiles); | ||||
|             File radiusFile = new File(radiusProfileFileName); | ||||
|             if (radiusFile.exists()) { | ||||
|                 List<com.telecominfraproject.wlan.profile.models.Profile> radiusProfiles = com.telecominfraproject.wlan.profile.models.Profile | ||||
|                         .listFromFile(radiusProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); | ||||
|                 ret.setRadiusProfiles(radiusProfiles); | ||||
|             } else { | ||||
|                 LOG.debug("No radius file present at {}", radiusFile.getAbsolutePath()); | ||||
|             } | ||||
|             ret.setRadiusProfiles(radiusProfiles); | ||||
|             ret.setEquipmentLocation(location); | ||||
|             ret.setCaptiveProfiles(captiveProfiles); | ||||
|             ret.setBonjourGatewayProfiles(bonjourProfiles); | ||||
|             ret.setHotspotConfig(hotspotConfig); | ||||
|  | ||||
|         } catch (IOException e) { | ||||
|             LOG.error("Cannot read config file", e); | ||||
|         } | ||||
|  | ||||
|         LOG.debug("Config content : {}", ret); | ||||
|  | ||||
|         return ret; | ||||
|     } | ||||
|  | ||||
| @@ -119,6 +199,7 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr | ||||
|             LOG.info("Received EventReport {}", e); | ||||
|         }); | ||||
|  | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public void processMqttMessage(String topic, FlowReport flowReport) { | ||||
| @@ -194,32 +275,4 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void clearEquipmentStatus(String apId) { | ||||
|         LOG.info("Received clearEquipmentStatus for ap {}", apId); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void apcStateDbTableUpdate(Map<String, String> apcStateAttributes, String apId, | ||||
|             RowUpdateOperation rowUpdateOperation) { | ||||
|         LOG.info("Received APC_State {} for operation {}", apcStateAttributes, rowUpdateOperation); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void nodeStateDbTableUpdate(List<Map<String, String>> nodeStateAttributes, String apId) { | ||||
|         LOG.info("nodeStateDbTableUpdate for AP {}", apId); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public long getConfigVersionFromStatus(String inventoryId) { | ||||
|         //0 means always push config to ap, do not do the version check for the configuration before pushing it | ||||
|         return 0; | ||||
|     } | ||||
|      | ||||
|     @Override | ||||
|     public void updateConfigVersionInStatus(String apId, long configVersionFromProfiles) { | ||||
|         // do nothing here | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,472 +1,221 @@ | ||||
| { | ||||
|     "model_type": "Equipment", | ||||
|     "id": 1, | ||||
|     "customerId": 2, | ||||
|     "profileId": 8, | ||||
|     "locationId": 8, | ||||
|   "model_type": "Equipment", | ||||
|   "id": 51, | ||||
|   "customerId": 2, | ||||
|   "profileId": 5, | ||||
|   "locationId": 8, | ||||
|   "equipmentType": "AP", | ||||
|   "inventoryId": "Test_Client_21P10C68818122", | ||||
|   "name": "Test_Client_21P10C68818122", | ||||
|   "details": { | ||||
|     "model_type": "ApElementConfiguration", | ||||
|     "equipmentModel": "EA8300-CA", | ||||
|     "elementConfigVersion": "AP-V1", | ||||
|     "equipmentType": "AP", | ||||
|     "inventoryId": "Open_AP_21P10C68818122", | ||||
|     "name": "Open_AP_21P10C68818122", | ||||
|     "details": { | ||||
|         "model_type": "ApElementConfiguration", | ||||
|         "equipmentModel": "EA8300-CA", | ||||
|         "elementConfigVersion": "AP-V1", | ||||
|         "equipmentType": "AP", | ||||
|         "deviceMode": "standaloneAP", | ||||
|         "gettingIP": "dhcp", | ||||
|         "staticIP": null, | ||||
|         "staticIpMaskCidr": null, | ||||
|         "staticIpGw": null, | ||||
|         "gettingDNS": "dhcp", | ||||
|         "staticDnsIp1": null, | ||||
|         "staticDnsIp2": null, | ||||
|         "peerInfoList": [], | ||||
|         "deviceName": "Open_AP_21P10C68818122", | ||||
|         "locationData": null, | ||||
|         "locallyConfiguredMgmtVlan": 0, | ||||
|         "locallyConfigured": false, | ||||
|         "deploymentType": "CEILING", | ||||
|         "syntheticClientEnabled": null, | ||||
|         "frameReportThrottleEnabled": true, | ||||
|         "antennaType": "OMNI", | ||||
|         "costSavingEventsEnabled": true, | ||||
|         "forwardMode": "BRIDGE", | ||||
|         "radioMap": { | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "channelNumber": 149, | ||||
|                 "manualChannelNumber": 149, | ||||
|                 "backupChannelNumber": 157, | ||||
|                 "manualBackupChannelNumber": 157, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 161, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 100, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 132, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 165, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 104, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 136, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 108, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 140, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 112, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 144, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 116, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 149, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 153, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 157, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     } | ||||
|                 ] | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "channelNumber": 6, | ||||
|                 "manualChannelNumber": 6, | ||||
|                 "backupChannelNumber": 11, | ||||
|                 "manualBackupChannelNumber": 11, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 1, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 2, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 3, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 4, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 5, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 6, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 7, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 8, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 9, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 10, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 11, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     } | ||||
|                 ] | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "channelNumber": 36, | ||||
|                 "manualChannelNumber": 36, | ||||
|                 "backupChannelNumber": 44, | ||||
|                 "manualBackupChannelNumber": 44, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 52, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 36, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 56, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 40, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 60, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 44, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 64, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 48, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     } | ||||
|                 ] | ||||
|             } | ||||
|     "deviceMode": "standaloneAP", | ||||
|     "gettingIP": "dhcp", | ||||
|     "staticIP": null, | ||||
|     "staticIpMaskCidr": null, | ||||
|     "staticIpGw": null, | ||||
|     "gettingDNS": "dhcp", | ||||
|     "staticDnsIp1": null, | ||||
|     "staticDnsIp2": null, | ||||
|     "peerInfoList": [], | ||||
|     "deviceName": "Default Device Name", | ||||
|     "locationData": null, | ||||
|     "locallyConfiguredMgmtVlan": 0, | ||||
|     "locallyConfigured": false, | ||||
|     "deploymentType": "CEILING", | ||||
|     "syntheticClientEnabled": null, | ||||
|     "frameReportThrottleEnabled": true, | ||||
|     "antennaType": "OMNI", | ||||
|     "costSavingEventsEnabled": true, | ||||
|     "forwardMode": "BRIDGE", | ||||
|     "radioMap": { | ||||
|       "is2dot4GHz": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is2dot4GHz", | ||||
|         "channelNumber": 6, | ||||
|         "manualChannelNumber": 6, | ||||
|         "backupChannelNumber": 11, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "advancedRadioMap": { | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 20, | ||||
|                         "minLoadFactor": 50 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 30, | ||||
|                         "minLoadFactor": 40 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 30, | ||||
|                         "minLoadFactor": 40 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             } | ||||
|         } | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 6 | ||||
|       }, | ||||
|       "is5GHzU": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is5GHzU", | ||||
|         "channelNumber": 149, | ||||
|         "manualChannelNumber": 149, | ||||
|         "backupChannelNumber": 154, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 149 | ||||
|       }, | ||||
|       "is5GHzL": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is5GHzL", | ||||
|         "channelNumber": 36, | ||||
|         "manualChannelNumber": 36, | ||||
|         "backupChannelNumber": 44, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 36 | ||||
|       } | ||||
|     }, | ||||
|     "latitude": null, | ||||
|     "longitude": null, | ||||
|     "baseMacAddress": { | ||||
|         "model_type": "MacAddress", | ||||
|         "address": "JPWi7y5T", | ||||
|         "addressAsString": "24:f5:a2:ef:2e:53" | ||||
|     }, | ||||
|     "serial": "21P10C68818122", | ||||
|     "createdTimestamp": 1612285288821, | ||||
|     "lastModifiedTimestamp": 1612285293922 | ||||
| } | ||||
|     "advancedRadioMap": { | ||||
|       "is2dot4GHz": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is2dot4GHz", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       }, | ||||
|       "is5GHzU": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is5GHzU", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       }, | ||||
|       "is5GHzL": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is5GHzL", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "latitude": null, | ||||
|   "longitude": null, | ||||
|   "serial": "21P10C68818122", | ||||
|   "createdTimestamp": 1591653239821, | ||||
|   "lastModifiedTimestamp": 1591653241398 | ||||
| } | ||||
|   | ||||
| @@ -1,61 +1,60 @@ | ||||
| { | ||||
|     "model_type": "Location", | ||||
|     "id": 8, | ||||
|     "parentId": 0, | ||||
|     "locationType": "SITE", | ||||
|     "customerId": 2, | ||||
|     "name": "Ottawa", | ||||
|     "details": { | ||||
|         "model_type": "LocationDetails", | ||||
|         "countryCode": "CA", | ||||
|         "dailyActivityDetails": { | ||||
|             "SUNDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "MONDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "TUESDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "WEDNESDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "THURSDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "FRIDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "SATURDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             } | ||||
|         }, | ||||
|         "maintenanceWindow": null, | ||||
|         "rrmEnabled": true, | ||||
|         "timezone": "US/Eastern" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285243534, | ||||
|     "lastModifiedTimestamp": 1612285243534 | ||||
|   "model_type" : "Location", | ||||
|   "id" : 8, | ||||
|   "parentId" : 0, | ||||
|   "locationType" : "SITE", | ||||
|   "customerId" : 2, | ||||
|   "name" : "Ottawa", | ||||
|   "details" : { | ||||
|     "model_type" : "LocationDetails", | ||||
|     "countryCode" : "ca", | ||||
|     "maintenanceWindow" : null, | ||||
|     "rrmEnabled" : true, | ||||
|     "dailyActivityDetails" : { | ||||
|       "SUNDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "MONDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "TUESDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "WEDNESDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "THURSDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "FRIDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "SATURDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "createdTimestamp" : 1590607043540, | ||||
|   "lastModifiedTimestamp" : 1590607043540 | ||||
| } | ||||
| @@ -1,58 +1,55 @@ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 8, | ||||
|     "customerId": 2, | ||||
|     "profileType": "equipment_ap", | ||||
|     "name": "ApProfile-3-radios", | ||||
|     "details": { | ||||
|         "model_type": "ApNetworkConfiguration", | ||||
|         "networkConfigVersion": "AP-1", | ||||
|         "equipmentType": "AP", | ||||
|         "vlanNative": true, | ||||
|         "vlan": 0, | ||||
|         "ntpServer": { | ||||
|             "model_type": "AutoOrManualString", | ||||
|             "auto": true, | ||||
|             "value": "pool.ntp.org" | ||||
|         }, | ||||
|         "syslogRelay": null, | ||||
|         "rtlsSettings": null, | ||||
|         "syntheticClientEnabled": true, | ||||
|         "ledControlEnabled": true, | ||||
|         "equipmentDiscovery": false, | ||||
|         "radioMap": { | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             } | ||||
|         }, | ||||
|         "greTunnelConfigurations": [ | ||||
|             { | ||||
|                 "model_type": "GreTunnelConfiguration", | ||||
|                 "greTunnelName": "gre1", | ||||
|                 "greRemoteInetAddr": "192.168.1.101", | ||||
|                 "vlanIdsInGreTunnel": [ | ||||
|                     100 | ||||
|                 ] | ||||
|             } | ||||
|         ], | ||||
|         "profileType": "equipment_ap" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248925, | ||||
|     "lastModifiedTimestamp": 1612285628377, | ||||
|     "childProfileIds": [ | ||||
|         2, | ||||
|         4 | ||||
|     ] | ||||
| } | ||||
| 	"model_type": "Profile", | ||||
| 	"id": 23, | ||||
| 	"customerId": 2, | ||||
| 	"profileType": "equipment_ap", | ||||
| 	"name": "ApProfile-3-radios-passpoint", | ||||
| 	"details": { | ||||
| 		"model_type": "ApNetworkConfiguration", | ||||
| 		"networkConfigVersion": "AP-1", | ||||
| 		"equipmentType": "AP", | ||||
| 		"vlanNative": true, | ||||
| 		"vlan": 0, | ||||
| 		"ntpServer": { | ||||
| 			"model_type": "AutoOrManualString", | ||||
| 			"auto": true, | ||||
| 			"value": "pool.ntp.org" | ||||
| 		}, | ||||
| 		"syslogRelay": null, | ||||
| 		"rtlsSettings": null, | ||||
| 		"syntheticClientEnabled": true, | ||||
| 		"ledControlEnabled": true, | ||||
| 		"equipmentDiscovery": false, | ||||
| 		"greTunnelName": null, | ||||
| 		"greParentIfName": null, | ||||
| 		"greLocalInetAddr": null, | ||||
| 		"greRemoteInetAddr": null, | ||||
| 		"greRemoteMacAddr": null, | ||||
| 		"radioMap": { | ||||
| 			"is2dot4GHz": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			}, | ||||
| 			"is5GHzU": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			}, | ||||
| 			"is5GHzL": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			} | ||||
| 		}, | ||||
| 		"profileType": "equipment_ap" | ||||
| 	}, | ||||
| 	"createdTimestamp": 1605711197140, | ||||
| 	"lastModifiedTimestamp": 1605711197140, | ||||
| 	"childProfileIds": [ | ||||
| 		16, | ||||
| 		21, | ||||
| 		22, | ||||
| 		15 | ||||
| 	] | ||||
| } | ||||
|   | ||||
							
								
								
									
										29
									
								
								opensync-ext-static/src/main/resources/ProfileBonjour.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								opensync-ext-static/src/main/resources/ProfileBonjour.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 100, | ||||
|     "customerId": 2, | ||||
|     "profileType": "bonjour", | ||||
|     "name": "Bonjour-gateway", | ||||
|     "details": { | ||||
|         "model_type": "BonjourGatewayProfile", | ||||
|         "profileDescription": "Bonjour Gateway Configuration for Design Testing", | ||||
|         "profileType": "bonjour", | ||||
|         "bonjourServices": [ | ||||
|             { | ||||
|                 "model_type": "BonjourServiceSet", | ||||
|                 "vlanId": 1, | ||||
|                 "supportAllServices": false, | ||||
|                 "serviceNames": [ | ||||
|                     "AirPort", | ||||
|                     "SFTP", | ||||
|                     "SSH" | ||||
|                 ] | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     "createdTimestamp": 1599234550774, | ||||
|     "lastModifiedTimestamp": 1599234550774, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| ] | ||||
| @@ -1,58 +1,135 @@ | ||||
| [ | ||||
|   { | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 5, | ||||
|     "id": 14, | ||||
|     "customerId": 2, | ||||
|     "profileType": "captive_portal", | ||||
|     "name": "Captive-portal", | ||||
|     "details": { | ||||
|       "model_type": "CaptivePortalConfiguration", | ||||
|       "name": "Default", | ||||
|       "browserTitle": "Captive-portal", | ||||
|       "headerContent": "Captive Portal", | ||||
|       "userAcceptancePolicy": "Please agree to the following terms for using this network:", | ||||
|       "successPageMarkdownText": "You are now authorized and connected to the network.", | ||||
|       "redirectURL": "https://www.google.com", | ||||
|       "externalCaptivePortalURL": null, | ||||
|       "sessionTimeoutInMinutes": 10, | ||||
|       "logoFile": { | ||||
|         "model_type": "ManagedFileInfo", | ||||
|         "md5checksum": null, | ||||
|         "lastModifiedTimestamp": null, | ||||
|         "apExportUrl": "/filestore/tip-logo-mobile", | ||||
|         "fileCategory": "CaptivePortalLogo", | ||||
|         "fileType": "PNG", | ||||
|         "altSlot": false | ||||
|       }, | ||||
|       "backgroundFile": { | ||||
|         "model_type": "ManagedFileInfo", | ||||
|         "md5checksum": null, | ||||
|         "lastModifiedTimestamp": null, | ||||
|         "apExportUrl": "/filestore/tip-logo", | ||||
|         "fileCategory": "CaptivePortalBackground", | ||||
|         "fileType": "PNG", | ||||
|         "altSlot": false | ||||
|       }, | ||||
|       "walledGardenAllowlist": [ | ||||
|       ], | ||||
|       "usernamePasswordFile": null, | ||||
|       "authenticationType": "guest", | ||||
|       "radiusAuthMethod": "CHAP", | ||||
|       "maxUsersWithSameCredentials": 3, | ||||
|       "externalPolicyFile": null, | ||||
|       "backgroundPosition": "left_top", | ||||
|       "backgroundRepeat": "no_repeat", | ||||
|       "radiusServiceId": 0, | ||||
|       "expiryType": "time_limited", | ||||
|       "userList": [ | ||||
|       ], | ||||
|       "macAllowList": [ | ||||
|       ], | ||||
|       "profileType": "captive_portal" | ||||
|         "model_type": "CaptivePortalConfiguration", | ||||
|         "name": "Captive-portal", | ||||
|         "browserTitle": "Access the network as Guest", | ||||
|         "headerContent": "Captive Portal", | ||||
|         "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.", | ||||
|         "successPageMarkdownText": "Welcome to the network", | ||||
|         "redirectURL": "", | ||||
|         "externalCaptivePortalURL": null, | ||||
|         "sessionTimeoutInMinutes": 60, | ||||
|         "logoFile": null, | ||||
|         "backgroundFile": null, | ||||
|         "walledGardenAllowlist": [], | ||||
|         "usernamePasswordFile": { | ||||
|             "model_type": "ManagedFileInfo", | ||||
|             "md5checksum": null, | ||||
|             "lastModifiedTimestamp": null, | ||||
|             "apExportUrl": "userList", | ||||
|             "fileCategory": "UsernamePasswordList", | ||||
|             "fileType": "TEXT", | ||||
|             "altSlot": true | ||||
|         }, | ||||
|         "authenticationType": "guest", | ||||
|         "radiusAuthMethod": "CHAP", | ||||
|         "maxUsersWithSameCredentials": 42, | ||||
|         "externalPolicyFile": null, | ||||
|         "backgroundPosition": "left_top", | ||||
|         "backgroundRepeat": "no_repeat", | ||||
|         "radiusServiceName": null, | ||||
|         "expiryType": "unlimited", | ||||
|         "userList": [ | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer", | ||||
|                 "password": "testing123", | ||||
|                 "activationTime": 1602183994956, | ||||
|                 "expirationTime": 1602212794956, | ||||
|                 "numDevices": 1, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Pac", | ||||
|                     "lastName": "Man", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "fKtg5upO", | ||||
|                         "addressAsString": "7c:ab:60:e6:ea:4e" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer", | ||||
|                 "password": "testing123", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602187594957, | ||||
|                 "numDevices": 0, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Q", | ||||
|                     "lastName": "Bert", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "wJrQdqho", | ||||
|                         "addressAsString": "c0:9a:d0:76:a8:68" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer2", | ||||
|                 "password": "testing1234", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602788794957, | ||||
|                 "numDevices": 1, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Duke", | ||||
|                     "lastName": "Nukem", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "fKtg5upN", | ||||
|                         "addressAsString": "7c:ab:60:e6:ea:4d" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer2", | ||||
|                 "password": "testing1234", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602270394957, | ||||
|                 "numDevices": 0, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Missile", | ||||
|                     "lastName": "Commander", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "wJrQdqhj", | ||||
|                         "addressAsString": "c0:9a:d0:76:a8:63" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             } | ||||
|         ], | ||||
|         "macAllowList": [], | ||||
|         "profileType": "captive_portal" | ||||
|     }, | ||||
|     "createdTimestamp": 1611857459118, | ||||
|     "lastModifiedTimestamp": 1611857459118, | ||||
|     "childProfileIds": [ | ||||
|     ] | ||||
|   } | ||||
| ] | ||||
|     "createdTimestamp": 1602183994959, | ||||
|     "lastModifiedTimestamp": 1602183994959, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| ] | ||||
							
								
								
									
										72
									
								
								opensync-ext-static/src/main/resources/ProfileHotspot20.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								opensync-ext-static/src/main/resources/ProfileHotspot20.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| [ | ||||
| { | ||||
|         "model_type": "Profile", | ||||
|         "id": 24, | ||||
|         "customerId": 2, | ||||
|         "profileType": "passpoint", | ||||
|         "name": "TipWlan-Hotspot20-Config", | ||||
|         "details": { | ||||
|             "model_type": "PasspointProfile", | ||||
|             "enableInterworkingAndHs20": true, | ||||
|             "hessid": null, | ||||
|             "additionalStepsRequiredForAccess": 0, | ||||
|             "deauthRequestTimeout": 0, | ||||
|             "operatingClass": 0, | ||||
|             "termsAndConditionsFile": { | ||||
|                 "model_type": "ManagedFileInfo", | ||||
|                 "md5checksum": null, | ||||
|                 "lastModifiedTimestamp": null, | ||||
|                 "apExportUrl": "https://localhost:9091/filestore/termsAndConditions", | ||||
|                 "fileCategory": "ExternalPolicyConfiguration", | ||||
|                 "fileType": "TEXT", | ||||
|                 "altSlot": false | ||||
|             }, | ||||
|             "whitelistDomain": null, | ||||
|             "emergencyServicesReachable": true, | ||||
|             "unauthenticatedEmergencyServiceAccessible": false, | ||||
|             "internetConnectivity": true, | ||||
|             "connectionCapabilitySet": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointConnectionCapability", | ||||
|                     "connectionCapabilitiesPortNumber": 8888, | ||||
|                     "connectionCapabilitiesIpProtocol": "TCP", | ||||
|                     "connectionCapabilitiesStatus": "open" | ||||
|                 } | ||||
|             ], | ||||
|             "ipAddressTypeAvailability": "public_IPv4_address_available", | ||||
|             "qosMapSetConfiguration": null, | ||||
|             "apGeospatialLocation": null, | ||||
|             "apCivicLocation": null, | ||||
|             "apPublicLocationIdUri": null, | ||||
|             "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", | ||||
|             "anqpDomainId": 1234, | ||||
|             "disableDownstreamGroupAddressedForwarding": false, | ||||
|             "enable2pt4GHz": true, | ||||
|             "enable5GHz": true, | ||||
|             "associatedAccessSsidNames": [ | ||||
|                 "TipWlan-cloud-hotspot-access" | ||||
|             ], | ||||
|             "osuSsidName": "TipWlan-cloud-hotspot-osu", | ||||
|             "operatorProfileName": "TipWlan-Hotspot20-Operator", | ||||
|             "venueProfileName": "TipWlan-Hotspot20-Venue", | ||||
|             "idProviderProfileNames": [ | ||||
|                 "TipWlan-Hotspot20-OSU-Provider-2", | ||||
|                 "TipWlan-Hotspot20-OSU-Provider" | ||||
|             ], | ||||
|             "accessNetworkType": "free_public_network", | ||||
|             "networkAuthenticationType": "acceptance_of_terms_and_conditions", | ||||
|             "associatedSsids": [ | ||||
|                 "TipWlan-cloud-hotspot-access" | ||||
|             ], | ||||
|             "profileType": "passpoint" | ||||
|         }, | ||||
|         "createdTimestamp": 1605711223339, | ||||
|         "lastModifiedTimestamp": 1605711223339, | ||||
|         "childProfileIds": [ | ||||
|             17, | ||||
|             18, | ||||
|             19, | ||||
|             20 | ||||
|         ] | ||||
|     } | ||||
| ] | ||||
							
								
								
									
										270
									
								
								opensync-ext-static/src/main/resources/ProfileIdProvider.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										270
									
								
								opensync-ext-static/src/main/resources/ProfileIdProvider.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,270 @@ | ||||
| [ | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 19, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_osu_id_provider", | ||||
| 		"name": "TipWlan-Hotspot20-OSU-Provider", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOsuProviderProfile", | ||||
| 			"domainName": "rogers.com", | ||||
| 			"mccMncList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointMccMnc", | ||||
| 					"mcc": 302, | ||||
| 					"mnc": 720, | ||||
| 					"iso": "ca", | ||||
| 					"country": "Canada", | ||||
| 					"countryCode": 1, | ||||
| 					"network": "Rogers AT&T Wireless", | ||||
| 					"mccMncPairing": "302,720" | ||||
| 				} | ||||
| 			], | ||||
| 			"naiRealmList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointNaiRealmInformation", | ||||
| 					"naiRealms": [ | ||||
| 						"rogers.com" | ||||
| 					], | ||||
| 					"encoding": 0, | ||||
| 					"eapMethods": [ | ||||
| 						"EAP-TTLS with username/password", | ||||
| 						"EAP-TLS with certificate" | ||||
| 					], | ||||
| 					"eapMap": { | ||||
| 						"EAP-TTLS with username/password": [ | ||||
| 							"Credential Type:username/password", | ||||
| 							"Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
| 						], | ||||
| 						"EAP-TLS with certificate": [ | ||||
| 							"Credential Type:Certificate" | ||||
| 						] | ||||
| 					} | ||||
| 				} | ||||
| 			], | ||||
| 			"osuIconList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_CA", | ||||
| 					"iconName": "icon32eng", | ||||
| 					"filePath": "/tmp/icon32eng.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32eng.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "fra", | ||||
| 					"iconLocale": "fr_CA", | ||||
| 					"iconName": "icon32fra", | ||||
| 					"filePath": "/tmp/icon32fra.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32fra.png", | ||||
| 					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_US", | ||||
| 					"iconName": "icon32usa", | ||||
| 					"filePath": "/tmp/icon32usa.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32usa.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuServerUri": "https://example.com/osu/rogers", | ||||
| 			"osuFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example provider rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example provider rogers" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de fournisseur rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemple de fournisseur rogers" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuNaiStandalone": "anonymous@rogers.com", | ||||
| 			"osuNaiShared": "anonymous@rogers.com", | ||||
| 			"osuMethodList": [ | ||||
| 				1, | ||||
| 				0 | ||||
| 			], | ||||
| 			"osuServiceDescription": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example services rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example services rogers" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemples de services rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemples de services rogers" | ||||
| 				} | ||||
| 			], | ||||
| 			"roamingOi": [ | ||||
| 				1, | ||||
| 				2, | ||||
| 				3, | ||||
| 				4 | ||||
| 			], | ||||
| 			"profileType": "passpoint_osu_id_provider" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711165325, | ||||
| 		"lastModifiedTimestamp": 1605711165325, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 20, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_osu_id_provider", | ||||
| 		"name": "TipWlan-Hotspot20-OSU-Provider-2", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOsuProviderProfile", | ||||
| 			"domainName": "telus.com", | ||||
| 			"mccMncList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointMccMnc", | ||||
| 					"mcc": 302, | ||||
| 					"mnc": 220, | ||||
| 					"iso": "ca", | ||||
| 					"country": "Canada", | ||||
| 					"countryCode": 1, | ||||
| 					"network": "Telus Mobility", | ||||
| 					"mccMncPairing": "302,220" | ||||
| 				} | ||||
| 			], | ||||
| 			"naiRealmList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointNaiRealmInformation", | ||||
| 					"naiRealms": [ | ||||
| 						"telus.com" | ||||
| 					], | ||||
| 					"encoding": 0, | ||||
| 					"eapMethods": [ | ||||
| 						"EAP-TTLS with username/password", | ||||
| 						"EAP-TLS with certificate" | ||||
| 					], | ||||
| 					"eapMap": { | ||||
| 						"EAP-TTLS with username/password": [ | ||||
| 							"Credential Type:username/password", | ||||
| 							"Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
| 						], | ||||
| 						"EAP-TLS with certificate": [ | ||||
| 							"Credential Type:Certificate" | ||||
| 						] | ||||
| 					} | ||||
| 				} | ||||
| 			], | ||||
| 			"osuIconList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_CA", | ||||
| 					"iconName": "icon32eng", | ||||
| 					"filePath": "/tmp/icon32eng.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32eng.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "fra", | ||||
| 					"iconLocale": "fr_CA", | ||||
| 					"iconName": "icon32fra", | ||||
| 					"filePath": "/tmp/icon32fra.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32fra.png", | ||||
| 					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_US", | ||||
| 					"iconName": "icon32usa", | ||||
| 					"filePath": "/tmp/icon32usa.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32usa.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuServerUri": "https://example.com/osu/telus", | ||||
| 			"osuFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example provider telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example provider telus" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de fournisseur telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemple de fournisseur telus" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuNaiStandalone": "anonymous@telus.com", | ||||
| 			"osuNaiShared": "anonymous@telus.com", | ||||
| 			"osuMethodList": [ | ||||
| 				1, | ||||
| 				0 | ||||
| 			], | ||||
| 			"osuServiceDescription": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example services telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example services telus" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemples de services telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemples de services telus" | ||||
| 				} | ||||
| 			], | ||||
| 			"roamingOi": [ | ||||
| 				1, | ||||
| 				2, | ||||
| 				3, | ||||
| 				4 | ||||
| 			], | ||||
| 			"profileType": "passpoint_osu_id_provider" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711165330, | ||||
| 		"lastModifiedTimestamp": 1605711165330, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
							
								
								
									
										299
									
								
								opensync-ext-static/src/main/resources/ProfileMetrics.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										299
									
								
								opensync-ext-static/src/main/resources/ProfileMetrics.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,299 @@ | ||||
| [ | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 22, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "service_metrics_collection_config", | ||||
| 		"name": "Metrics-Profile-Passpoint", | ||||
| 		"details": { | ||||
| 			"model_type": "ServiceMetricsCollectionConfigProfile", | ||||
| 			"radioTypes": [ | ||||
| 				"is5GHzL", | ||||
| 				"is2dot4GHz", | ||||
| 				"is5GHzU" | ||||
| 			], | ||||
| 			"serviceMetricDataTypes": [ | ||||
| 				"ApNode", | ||||
| 				"ApSsid", | ||||
| 				"Client", | ||||
| 				"Channel", | ||||
| 				"Neighbour" | ||||
| 			], | ||||
| 			"metricConfigParameterMap": { | ||||
| 				"ApNode": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				], | ||||
| 				"ApSsid": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					} | ||||
| 				], | ||||
| 				"Client": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "Client" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Client" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Client" | ||||
| 					} | ||||
| 				], | ||||
| 				"Channel": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				], | ||||
| 				"Neighbour": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"profileType": "service_metrics_collection_config" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711195528, | ||||
| 		"lastModifiedTimestamp": 1605711195528, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
							
								
								
									
										37
									
								
								opensync-ext-static/src/main/resources/ProfileOperator.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								opensync-ext-static/src/main/resources/ProfileOperator.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| [ | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 17, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_operator", | ||||
| 		"name": "TipWlan-Hotspot20-Operator", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOperatorProfile", | ||||
| 			"serverOnlyAuthenticatedL2EncryptionNetwork": false, | ||||
| 			"x509CertificateLocation": "/etc/ca.pem", | ||||
| 			"operatorFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Default friendly passpoint_operator name", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Default friendly passpoint_operator name" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Nom de l'opérateur convivial par défaut", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Nom de l'opérateur convivial par défaut" | ||||
| 				} | ||||
| 			], | ||||
| 			"profileType": "passpoint_operator" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164952, | ||||
| 		"lastModifiedTimestamp": 1605711164952, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
							
								
								
									
										34
									
								
								opensync-ext-static/src/main/resources/ProfileRadius.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								opensync-ext-static/src/main/resources/ProfileRadius.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| [ | ||||
|         { | ||||
|             "model_type": "Profile", | ||||
|             "id": 1, | ||||
|             "customerId": 2, | ||||
|             "profileType": "radius", | ||||
|             "name": "Radius-Profile", | ||||
|             "details": { | ||||
|                 "model_type": "RadiusProfile", | ||||
|                 "subnetConfiguration": null, | ||||
|                 "serviceRegionMap": { | ||||
|                     "Ottawa": { | ||||
|                         "model_type": "RadiusServiceRegion", | ||||
|                         "serverMap": { | ||||
|                             "Radius-Profile": [ | ||||
|                                 { | ||||
|                                     "model_type": "RadiusServer", | ||||
|                                     "ipAddress": "192.168.0.1", | ||||
|                                     "secret": "testing123", | ||||
|                                     "authPort": 1812, | ||||
|                                     "timeout": null | ||||
|                                 } | ||||
|                             ] | ||||
|                         }, | ||||
|                         "regionName": "Ottawa" | ||||
|                     } | ||||
|                 }, | ||||
|                 "profileType": "radius" | ||||
|             }, | ||||
|             "createdTimestamp": 1601961451668, | ||||
|             "lastModifiedTimestamp": 1601961451668, | ||||
|             "childProfileIds": [] | ||||
|         } | ||||
| ] | ||||
| @@ -1,204 +1,205 @@ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 4, | ||||
|     "customerId": 2, | ||||
|     "profileType": "rf", | ||||
|     "name": "TipWlan-rf", | ||||
|     "details": { | ||||
|         "model_type": "RfConfiguration", | ||||
|         "rfConfigMap": { | ||||
|             "is5GHz": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHz", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "radioMode": "modeN", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is20MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 20, | ||||
|                     "minLoadFactor": 50 | ||||
|                 } | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "profileType": "rf" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248650, | ||||
|     "lastModifiedTimestamp": 1612285248650, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| 	"model_type": "Profile", | ||||
| 	"id": 21, | ||||
| 	"customerId": 2, | ||||
| 	"profileType": "rf", | ||||
| 	"name": "TipWlan-rf-passpoint", | ||||
| 	"details": { | ||||
| 		"model_type": "RfConfiguration", | ||||
| 		"rfConfigMap": { | ||||
| 			"is5GHz": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHz", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is2dot4GHz": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is2dot4GHz", | ||||
| 				"radioMode": "modeN", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is20MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 20, | ||||
| 					"minLoadFactor": 50 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is5GHzU": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHzU", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is5GHzL": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHzL", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		"profileType": "rf" | ||||
| 	}, | ||||
| 	"createdTimestamp": 1605711191976, | ||||
| 	"lastModifiedTimestamp": 1605711191976, | ||||
| 	"childProfileIds": [ | ||||
| 	] | ||||
| } | ||||
|   | ||||
| @@ -1,75 +1,134 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 2, | ||||
|     "customerId": 2, | ||||
|     "profileType": "ssid", | ||||
|     "name": "TipWlan-cloud-3-radios", | ||||
|     "details": { | ||||
|         "model_type": "SsidConfiguration", | ||||
|         "ssid": "TipWlan-cloud-3-radios", | ||||
|         "appliedRadios": [ | ||||
|             "is5GHzU", | ||||
|             "is2dot4GHz", | ||||
|             "is5GHzL" | ||||
|         ], | ||||
|         "ssidAdminState": "enabled", | ||||
|         "secureMode": "wpa2OnlyPSK", | ||||
|         "vlanId": 1, | ||||
|         "keyStr": "openwifi", | ||||
|         "broadcastSsid": "enabled", | ||||
|         "keyRefresh": 0, | ||||
|         "noLocalSubnets": false, | ||||
|         "radiusServiceId": 0, | ||||
|         "radiusAcountingServiceInterval": 60, | ||||
|         "captivePortalId": null, | ||||
|         "bandwidthLimitDown": 0, | ||||
|         "bandwidthLimitUp": 0, | ||||
|         "clientBandwidthLimitDown": 0, | ||||
|         "clientBandwidthLimitUp": 0, | ||||
|         "videoTrafficOnly": false, | ||||
|         "radioBasedConfigs": { | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is5GHz": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             } | ||||
|         }, | ||||
|         "bonjourGatewayProfileId": null, | ||||
|         "enable80211w": null, | ||||
|         "wepConfig": null, | ||||
|         "forwardMode": "BRIDGE", | ||||
|         "profileType": "ssid", | ||||
|         "radiusClientConfiguration": { | ||||
|             "model_type": "RadiusNasConfiguration", | ||||
|             "nasClientId": "DEFAULT", | ||||
|             "nasClientIp": "WAN_IP", | ||||
|             "userDefinedNasId": null, | ||||
|             "userDefinedNasIp": null, | ||||
|             "operatorId": null | ||||
|         } | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248638, | ||||
|     "lastModifiedTimestamp": 1612285248638, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 15, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "ssid", | ||||
| 		"name": "TipWlan-cloud-hotspot-access", | ||||
| 		"details": { | ||||
| 			"model_type": "SsidConfiguration", | ||||
| 			"ssid": "TipWlan-cloud-hotspot-access", | ||||
| 			"appliedRadios": [ | ||||
| 				"is5GHzL", | ||||
| 				"is5GHzU" | ||||
| 			], | ||||
| 			"ssidAdminState": "enabled", | ||||
| 			"secureMode": "wpa2PSK", | ||||
| 			"vlanId": 1, | ||||
| 			"keyStr": "testing123", | ||||
| 			"broadcastSsid": "enabled", | ||||
| 			"keyRefresh": 0, | ||||
| 			"noLocalSubnets": false, | ||||
| 			"radiusServiceName": null, | ||||
| 			"radiusAccountingServiceName": null, | ||||
| 			"captivePortalId": null, | ||||
| 			"bandwidthLimitDown": 0, | ||||
| 			"bandwidthLimitUp": 0, | ||||
| 			"clientBandwidthLimitDown": 0, | ||||
| 			"clientBandwidthLimitUp": 0, | ||||
| 			"videoTrafficOnly": false, | ||||
| 			"radioBasedConfigs": { | ||||
| 				"is5GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is2dot4GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzU": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzL": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				} | ||||
| 			}, | ||||
| 			"bonjourGatewayProfileId": null, | ||||
| 			"enable80211w": null, | ||||
| 			"wepConfig": null, | ||||
| 			"forwardMode": null, | ||||
| 			"profileType": "ssid" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164949, | ||||
| 		"lastModifiedTimestamp": 1605711223372, | ||||
| 		"childProfileIds": [ | ||||
| 			24 | ||||
| 		] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 16, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "ssid", | ||||
| 		"name": "TipWlan-cloud-hotspot-osu", | ||||
| 		"details": { | ||||
| 			"model_type": "SsidConfiguration", | ||||
| 			"ssid": "TipWlan-cloud-hotspot-osu", | ||||
| 			"appliedRadios": [ | ||||
| 				"is2dot4GHz" | ||||
| 			], | ||||
| 			"ssidAdminState": "enabled", | ||||
| 			"secureMode": "open", | ||||
| 			"vlanId": 1, | ||||
| 			"keyStr": null, | ||||
| 			"broadcastSsid": "enabled", | ||||
| 			"keyRefresh": 0, | ||||
| 			"noLocalSubnets": false, | ||||
| 			"radiusServiceName": null, | ||||
| 			"radiusAccountingServiceName": null, | ||||
| 			"captivePortalId": null, | ||||
| 			"bandwidthLimitDown": 0, | ||||
| 			"bandwidthLimitUp": 0, | ||||
| 			"clientBandwidthLimitDown": 0, | ||||
| 			"clientBandwidthLimitUp": 0, | ||||
| 			"videoTrafficOnly": false, | ||||
| 			"radioBasedConfigs": { | ||||
| 				"is5GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is2dot4GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzU": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzL": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				} | ||||
| 			}, | ||||
| 			"bonjourGatewayProfileId": null, | ||||
| 			"enable80211w": null, | ||||
| 			"wepConfig": null, | ||||
| 			"forwardMode": null, | ||||
| 			"profileType": "ssid" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164950, | ||||
| 		"lastModifiedTimestamp": 1605711171732, | ||||
| 		"childProfileIds": [ | ||||
| 			19, | ||||
| 			20 | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
							
								
								
									
										43
									
								
								opensync-ext-static/src/main/resources/ProfileVenue.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								opensync-ext-static/src/main/resources/ProfileVenue.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| [ | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 18, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_venue", | ||||
| 		"name": "TipWlan-Hotspot20-Venue", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointVenueProfile", | ||||
| 			"venueNameSet": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointVenueName", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de lieu", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"venueUrl": "http://www.example.com/info-fra", | ||||
| 					"asDuple": "fra:Exemple de lieu" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointVenueName", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example passpoint_venue", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"venueUrl": "http://www.example.com/info-eng", | ||||
| 					"asDuple": "eng:Example passpoint_venue" | ||||
| 				} | ||||
| 			], | ||||
| 			"venueTypeAssignment": { | ||||
| 				"model_type": "ProfileVenueTypeAssignment", | ||||
| 				"venueDescription": "Research and Development Facility", | ||||
| 				"venueGroupId": 2, | ||||
| 				"venueTypeId": 8 | ||||
| 			}, | ||||
| 			"profileType": "passpoint_venue" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164956, | ||||
| 		"lastModifiedTimestamp": 1605711164956, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
| @@ -3,7 +3,7 @@ | ||||
|   <parent> | ||||
|     <groupId>com.telecominfraproject.wlan</groupId> | ||||
|     <artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||
|     <version>1.2.0-SNAPSHOT</version> | ||||
|     <version>0.0.1-SNAPSHOT</version> | ||||
|     <relativePath>../../wlan-cloud-root</relativePath> | ||||
|   </parent> | ||||
|   <artifactId>opensync-gateway-build</artifactId> | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| 	<parent> | ||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||
| 		<version>1.2.0-SNAPSHOT</version> | ||||
| 		<version>0.0.1-SNAPSHOT</version> | ||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | ||||
| 	</parent> | ||||
| 	<artifactId>opensync-gateway-cloud-docker</artifactId> | ||||
| @@ -22,7 +22,7 @@ | ||||
| 		<dependency> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<artifactId>opensync-gateway-cloud-process</artifactId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 	</dependencies> | ||||
|   | ||||
| @@ -30,22 +30,6 @@ | ||||
|     </triggeringPolicy> | ||||
|   </appender> | ||||
|    | ||||
|     <appender name="mqttMsgTracer" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||
|     <file>/app/logs/mqttMsgTracer.log</file> | ||||
|     <append>true</append> | ||||
|     <encoder> | ||||
|       <pattern>%date %msg%n</pattern> | ||||
|     </encoder> | ||||
|     <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> | ||||
|       <fileNamePattern>/app/logs/mqttMsgTracer.%i.log.gz</fileNamePattern> | ||||
|       <minIndex>1</minIndex> | ||||
|       <maxIndex>3</maxIndex> | ||||
|     </rollingPolicy> | ||||
|     <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> | ||||
|       <maxFileSize>20MB</maxFileSize> | ||||
|     </triggeringPolicy> | ||||
|   </appender> | ||||
|    | ||||
|   <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||||
|     <file>/app/logs/opensyncgw.log</file> | ||||
|     <append>true</append> | ||||
| @@ -83,7 +67,7 @@ | ||||
|   <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/> | ||||
|   <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/> | ||||
|  | ||||
|   <logger name="MQTT_DATA" level="INFO" additivity="false"> | ||||
|   <logger name="MQTT_DATA" level="DEBUG" additivity="false"> | ||||
|     <appender-ref ref="mqttDataFile"/> | ||||
|   </logger> | ||||
|  | ||||
|   | ||||
| @@ -22,8 +22,6 @@ FILE_STORE_DIRECTORY="${FILE_STORE_DIRECTORY_INTERNAL:=/tmp/filestore}" | ||||
| FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}" | ||||
| MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_EXTERNAL_PORT}" | ||||
| OVSDB_EXTERNAL_PORT="${OVSDB_EXTERNAL_PORT}" | ||||
| OFF_CHANNEL_REPORTING_INTERVAL_SECONDS="${OFF_CHANNEL_REPORTING_INTERVAL_SECONDS:=120}" | ||||
| REPORTING_INTERVAL_SECONDS="${REPORTING_INTERVAL_SECONDS:=60}" | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -108,8 +106,6 @@ PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$DEFAULT_WAN_TYPE" | ||||
| PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$DEFAULT_WAN_NAME" | ||||
| PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$DEFAULT_LAN_TYPE" | ||||
| PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$DEFAULT_LAN_NAME" | ||||
| PROV_PROPS+=" -Dtip.wlan.defaultOffChannelReportingIntervalSeconds=$OFF_CHANNEL_REPORTING_INTERVAL_SECONDS" | ||||
| PROV_PROPS+=" -Dtip.wlan.defaultReportingIntervalSeconds=$REPORTING_INTERVAL_SECONDS" | ||||
|  | ||||
| PROV_PROPS+=" -Dtip.wlan.ovsdb.autoProvisionedCustomerId=$AUTO_PROV_CUSTOMER_ID" | ||||
|  | ||||
| @@ -117,16 +113,9 @@ FILE_STORE_PROPS=" " | ||||
| FILE_STORE_PROPS+=" -Dtip.wlan.fileStoreDirectory=$FILE_STORE_DIRECTORY" | ||||
| FILE_STORE_PROPS+=" -Dtip.wlan.externalFileStoreURL=$FILE_STORE_EXTERNAL_URL" | ||||
|  | ||||
| REMOTE_DEBUG_PORT=${REMOTE_DEBUG_PORT:-'5005'} | ||||
| if [ "x$REMOTE_DEBUG_ENABLE" == "xtrue" ] | ||||
| then | ||||
|   REMOTE_DEBUG=" -agentlib:jdwp=transport=dt_socket,server=y,address=*:$REMOTE_DEBUG_PORT,suspend=n" | ||||
| else | ||||
|   REMOTE_DEBUG=" " | ||||
| fi | ||||
| REMOTE_DEBUG_PORT=5005 | ||||
| REMOTE_DEBUG=" -agentlib:jdwp=transport=dt_socket,server=y,address=*:$REMOTE_DEBUG_PORT,suspend=n" | ||||
|  | ||||
| JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } " | ||||
|  | ||||
| export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS $HOST_PROPS $PROV_PROPS $FILE_STORE_PROPS $REMOTE_DEBUG" | ||||
| export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS $HOST_PROPS $PROV_PROPS $FILE_STORE_PROPS $REMOTE_DEBUG" | ||||
|  | ||||
| java $ALL_PROPS -jar app.jar | ||||
|   | ||||
| @@ -1,9 +1,11 @@ | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | ||||
| 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
| 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
| 	<modelVersion>4.0.0</modelVersion> | ||||
| 	<parent> | ||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||
| 		<version>1.2.0-SNAPSHOT</version> | ||||
| 		<version>0.0.1-SNAPSHOT</version> | ||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | ||||
| 	</parent> | ||||
| 	<artifactId>opensync-gateway-cloud-process</artifactId> | ||||
| @@ -16,99 +18,99 @@ | ||||
|  | ||||
| 	<dependencies> | ||||
| 		<!-- <dependency> <groupId>com.telecominfraproject.wlan</groupId> <artifactId>opensync-gateway</artifactId>  | ||||
| 			<version>0.0.1-SNAPSHOT</version> </dependency> --> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> </dependency> --> | ||||
| 		<dependency> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<artifactId>opensync-ext-cloud</artifactId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|         <dependency> | ||||
|             <artifactId>filestore-service</artifactId> | ||||
|             <groupId>com.telecominfraproject.wlan</groupId> | ||||
|             <version>1.2.0-SNAPSHOT</version> | ||||
|             <version>${tip-wlan-cloud.release.version}</version> | ||||
|         </dependency> | ||||
| 		<dependency> | ||||
| 			<artifactId>customer-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>location-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>equipment-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>profile-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>portal-user-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>service-metric-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>system-event-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>alarm-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>status-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>client-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>routing-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>firmware-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>manufacturer-service-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>cloud-event-dispatcher-remote</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 	</dependencies> | ||||
|   | ||||
| @@ -136,7 +136,7 @@ tip.wlan.manufacturerServiceBaseUrl=https://localhost:9092 | ||||
| tip.wlan.portalUserServiceBaseUrl=https://localhost:9092 | ||||
|  | ||||
| tip.wlan.fileStoreDirectory=/tmp/tip-wlan-filestore | ||||
| tip.wlan.externalFileStoreURL=https://localhost:9092 | ||||
| tip.wlan.externalFileStoreURL=https://localhost:9096 | ||||
|  | ||||
| #server.session-timeout= # session timeout in seconds | ||||
| #server.tomcat.max-threads = 0 # number of threads in protocol handler | ||||
|   | ||||
| @@ -7,7 +7,6 @@ | ||||
|         <listEntry value="1"/> | ||||
|     </listAttribute> | ||||
|     <booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/> | ||||
|     <booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/> | ||||
|     <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/> | ||||
|     <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> | ||||
|     <listAttribute key="org.eclipse.jdt.launching.CLASSPATH"> | ||||
|   | ||||
| @@ -63,7 +63,7 @@ | ||||
|   <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/> | ||||
|   <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/> | ||||
|    | ||||
|   <logger name="MQTT_DATA" level="INFO"/> | ||||
|   <logger name="MQTT_DATA" level="DEBUG"/> | ||||
|  | ||||
|   <!--    | ||||
|   <logger name="org.springframework.security.web.authentication.preauth" level="DEBUG"/> | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| 	<parent> | ||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||
| 		<version>1.2.0-SNAPSHOT</version> | ||||
| 		<version>0.0.1-SNAPSHOT</version> | ||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | ||||
| 	</parent> | ||||
| 	<artifactId>opensync-gateway-static-docker</artifactId> | ||||
| @@ -22,7 +22,7 @@ | ||||
| 		<dependency> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<artifactId>opensync-gateway-static-process</artifactId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 	</dependencies> | ||||
|   | ||||
| @@ -1,472 +1,221 @@ | ||||
| { | ||||
|     "model_type": "Equipment", | ||||
|     "id": 1, | ||||
|     "customerId": 2, | ||||
|     "profileId": 8, | ||||
|     "locationId": 8, | ||||
|   "model_type": "Equipment", | ||||
|   "id": 51, | ||||
|   "customerId": 2, | ||||
|   "profileId": 5, | ||||
|   "locationId": 8, | ||||
|   "equipmentType": "AP", | ||||
|   "inventoryId": "Test_Client_21P10C68818122", | ||||
|   "name": "Test_Client_21P10C68818122", | ||||
|   "details": { | ||||
|     "model_type": "ApElementConfiguration", | ||||
|     "equipmentModel": "EA8300-CA", | ||||
|     "elementConfigVersion": "AP-V1", | ||||
|     "equipmentType": "AP", | ||||
|     "inventoryId": "Open_AP_21P10C68818122", | ||||
|     "name": "Open_AP_21P10C68818122", | ||||
|     "details": { | ||||
|         "model_type": "ApElementConfiguration", | ||||
|         "equipmentModel": "EA8300-CA", | ||||
|         "elementConfigVersion": "AP-V1", | ||||
|         "equipmentType": "AP", | ||||
|         "deviceMode": "standaloneAP", | ||||
|         "gettingIP": "dhcp", | ||||
|         "staticIP": null, | ||||
|         "staticIpMaskCidr": null, | ||||
|         "staticIpGw": null, | ||||
|         "gettingDNS": "dhcp", | ||||
|         "staticDnsIp1": null, | ||||
|         "staticDnsIp2": null, | ||||
|         "peerInfoList": [], | ||||
|         "deviceName": "Open_AP_21P10C68818122", | ||||
|         "locationData": null, | ||||
|         "locallyConfiguredMgmtVlan": 0, | ||||
|         "locallyConfigured": false, | ||||
|         "deploymentType": "CEILING", | ||||
|         "syntheticClientEnabled": null, | ||||
|         "frameReportThrottleEnabled": true, | ||||
|         "antennaType": "OMNI", | ||||
|         "costSavingEventsEnabled": true, | ||||
|         "forwardMode": "BRIDGE", | ||||
|         "radioMap": { | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "channelNumber": 149, | ||||
|                 "manualChannelNumber": 149, | ||||
|                 "backupChannelNumber": 157, | ||||
|                 "manualBackupChannelNumber": 157, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 161, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 100, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 132, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 165, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 104, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 136, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 108, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 140, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 112, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 144, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 116, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 149, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 153, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 157, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     } | ||||
|                 ] | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "channelNumber": 6, | ||||
|                 "manualChannelNumber": 6, | ||||
|                 "backupChannelNumber": 11, | ||||
|                 "manualBackupChannelNumber": 11, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 1, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 2, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 3, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 4, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 5, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 6, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 7, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 8, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 9, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 10, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 11, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     } | ||||
|                 ] | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "channelNumber": 36, | ||||
|                 "manualChannelNumber": 36, | ||||
|                 "backupChannelNumber": 44, | ||||
|                 "manualBackupChannelNumber": 44, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 52, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 36, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 56, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 40, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 60, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 44, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 64, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 48, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     } | ||||
|                 ] | ||||
|             } | ||||
|     "deviceMode": "standaloneAP", | ||||
|     "gettingIP": "dhcp", | ||||
|     "staticIP": null, | ||||
|     "staticIpMaskCidr": null, | ||||
|     "staticIpGw": null, | ||||
|     "gettingDNS": "dhcp", | ||||
|     "staticDnsIp1": null, | ||||
|     "staticDnsIp2": null, | ||||
|     "peerInfoList": [], | ||||
|     "deviceName": "Default Device Name", | ||||
|     "locationData": null, | ||||
|     "locallyConfiguredMgmtVlan": 0, | ||||
|     "locallyConfigured": false, | ||||
|     "deploymentType": "CEILING", | ||||
|     "syntheticClientEnabled": null, | ||||
|     "frameReportThrottleEnabled": true, | ||||
|     "antennaType": "OMNI", | ||||
|     "costSavingEventsEnabled": true, | ||||
|     "forwardMode": "BRIDGE", | ||||
|     "radioMap": { | ||||
|       "is2dot4GHz": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is2dot4GHz", | ||||
|         "channelNumber": 6, | ||||
|         "manualChannelNumber": 6, | ||||
|         "backupChannelNumber": 11, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "advancedRadioMap": { | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 20, | ||||
|                         "minLoadFactor": 50 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 30, | ||||
|                         "minLoadFactor": 40 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 30, | ||||
|                         "minLoadFactor": 40 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             } | ||||
|         } | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 6 | ||||
|       }, | ||||
|       "is5GHzU": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is5GHzU", | ||||
|         "channelNumber": 149, | ||||
|         "manualChannelNumber": 149, | ||||
|         "backupChannelNumber": 154, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 149 | ||||
|       }, | ||||
|       "is5GHzL": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is5GHzL", | ||||
|         "channelNumber": 36, | ||||
|         "manualChannelNumber": 36, | ||||
|         "backupChannelNumber": 44, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 36 | ||||
|       } | ||||
|     }, | ||||
|     "latitude": null, | ||||
|     "longitude": null, | ||||
|     "baseMacAddress": { | ||||
|         "model_type": "MacAddress", | ||||
|         "address": "JPWi7y5T", | ||||
|         "addressAsString": "24:f5:a2:ef:2e:53" | ||||
|     }, | ||||
|     "serial": "21P10C68818122", | ||||
|     "createdTimestamp": 1612285288821, | ||||
|     "lastModifiedTimestamp": 1612285293922 | ||||
| } | ||||
|     "advancedRadioMap": { | ||||
|       "is2dot4GHz": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is2dot4GHz", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       }, | ||||
|       "is5GHzU": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is5GHzU", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       }, | ||||
|       "is5GHzL": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is5GHzL", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "latitude": null, | ||||
|   "longitude": null, | ||||
|   "serial": "21P10C68818122", | ||||
|   "createdTimestamp": 1591653239821, | ||||
|   "lastModifiedTimestamp": 1591653241398 | ||||
| } | ||||
|   | ||||
| @@ -1,61 +1,60 @@ | ||||
| { | ||||
|     "model_type": "Location", | ||||
|     "id": 8, | ||||
|     "parentId": 0, | ||||
|     "locationType": "SITE", | ||||
|     "customerId": 2, | ||||
|     "name": "Ottawa", | ||||
|     "details": { | ||||
|         "model_type": "LocationDetails", | ||||
|         "countryCode": "CA", | ||||
|         "dailyActivityDetails": { | ||||
|             "SUNDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "MONDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "TUESDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "WEDNESDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "THURSDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "FRIDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "SATURDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             } | ||||
|         }, | ||||
|         "maintenanceWindow": null, | ||||
|         "rrmEnabled": true, | ||||
|         "timezone": "US/Eastern" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285243534, | ||||
|     "lastModifiedTimestamp": 1612285243534 | ||||
|   "model_type" : "Location", | ||||
|   "id" : 8, | ||||
|   "parentId" : 0, | ||||
|   "locationType" : "SITE", | ||||
|   "customerId" : 2, | ||||
|   "name" : "Ottawa", | ||||
|   "details" : { | ||||
|     "model_type" : "LocationDetails", | ||||
|     "countryCode" : "ca", | ||||
|     "maintenanceWindow" : null, | ||||
|     "rrmEnabled" : true, | ||||
|     "dailyActivityDetails" : { | ||||
|       "SUNDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "MONDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "TUESDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "WEDNESDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "THURSDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "FRIDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "SATURDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "createdTimestamp" : 1590607043540, | ||||
|   "lastModifiedTimestamp" : 1590607043540 | ||||
| } | ||||
| @@ -1,58 +1,55 @@ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 8, | ||||
|     "customerId": 2, | ||||
|     "profileType": "equipment_ap", | ||||
|     "name": "ApProfile-3-radios", | ||||
|     "details": { | ||||
|         "model_type": "ApNetworkConfiguration", | ||||
|         "networkConfigVersion": "AP-1", | ||||
|         "equipmentType": "AP", | ||||
|         "vlanNative": true, | ||||
|         "vlan": 0, | ||||
|         "ntpServer": { | ||||
|             "model_type": "AutoOrManualString", | ||||
|             "auto": true, | ||||
|             "value": "pool.ntp.org" | ||||
|         }, | ||||
|         "syslogRelay": null, | ||||
|         "rtlsSettings": null, | ||||
|         "syntheticClientEnabled": true, | ||||
|         "ledControlEnabled": true, | ||||
|         "equipmentDiscovery": false, | ||||
|         "radioMap": { | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             } | ||||
|         }, | ||||
|         "greTunnelConfigurations": [ | ||||
|             { | ||||
|                 "model_type": "GreTunnelConfiguration", | ||||
|                 "greTunnelName": "gre1", | ||||
|                 "greRemoteInetAddr": "192.168.1.101", | ||||
|                 "vlanIdsInGreTunnel": [ | ||||
|                     100 | ||||
|                 ] | ||||
|             } | ||||
|         ], | ||||
|         "profileType": "equipment_ap" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248925, | ||||
|     "lastModifiedTimestamp": 1612285628377, | ||||
|     "childProfileIds": [ | ||||
|         2, | ||||
|         4 | ||||
|     ] | ||||
| } | ||||
| 	"model_type": "Profile", | ||||
| 	"id": 23, | ||||
| 	"customerId": 2, | ||||
| 	"profileType": "equipment_ap", | ||||
| 	"name": "ApProfile-3-radios-passpoint", | ||||
| 	"details": { | ||||
| 		"model_type": "ApNetworkConfiguration", | ||||
| 		"networkConfigVersion": "AP-1", | ||||
| 		"equipmentType": "AP", | ||||
| 		"vlanNative": true, | ||||
| 		"vlan": 0, | ||||
| 		"ntpServer": { | ||||
| 			"model_type": "AutoOrManualString", | ||||
| 			"auto": true, | ||||
| 			"value": "pool.ntp.org" | ||||
| 		}, | ||||
| 		"syslogRelay": null, | ||||
| 		"rtlsSettings": null, | ||||
| 		"syntheticClientEnabled": true, | ||||
| 		"ledControlEnabled": true, | ||||
| 		"equipmentDiscovery": false, | ||||
| 		"greTunnelName": null, | ||||
| 		"greParentIfName": null, | ||||
| 		"greLocalInetAddr": null, | ||||
| 		"greRemoteInetAddr": null, | ||||
| 		"greRemoteMacAddr": null, | ||||
| 		"radioMap": { | ||||
| 			"is2dot4GHz": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			}, | ||||
| 			"is5GHzU": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			}, | ||||
| 			"is5GHzL": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			} | ||||
| 		}, | ||||
| 		"profileType": "equipment_ap" | ||||
| 	}, | ||||
| 	"createdTimestamp": 1605711197140, | ||||
| 	"lastModifiedTimestamp": 1605711197140, | ||||
| 	"childProfileIds": [ | ||||
| 		16, | ||||
| 		21, | ||||
| 		22, | ||||
| 		15 | ||||
| 	] | ||||
| } | ||||
|   | ||||
| @@ -1,58 +1,135 @@ | ||||
| [ | ||||
|   { | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 5, | ||||
|     "id": 14, | ||||
|     "customerId": 2, | ||||
|     "profileType": "captive_portal", | ||||
|     "name": "Captive-portal", | ||||
|     "details": { | ||||
|       "model_type": "CaptivePortalConfiguration", | ||||
|       "name": "Default", | ||||
|       "browserTitle": "Captive-portal", | ||||
|       "headerContent": "Captive Portal", | ||||
|       "userAcceptancePolicy": "Please agree to the following terms for using this network:", | ||||
|       "successPageMarkdownText": "You are now authorized and connected to the network.", | ||||
|       "redirectURL": "https://www.google.com", | ||||
|       "externalCaptivePortalURL": null, | ||||
|       "sessionTimeoutInMinutes": 10, | ||||
|       "logoFile": { | ||||
|         "model_type": "ManagedFileInfo", | ||||
|         "md5checksum": null, | ||||
|         "lastModifiedTimestamp": null, | ||||
|         "apExportUrl": "/filestore/tip-logo-mobile", | ||||
|         "fileCategory": "CaptivePortalLogo", | ||||
|         "fileType": "PNG", | ||||
|         "altSlot": false | ||||
|       }, | ||||
|       "backgroundFile": { | ||||
|         "model_type": "ManagedFileInfo", | ||||
|         "md5checksum": null, | ||||
|         "lastModifiedTimestamp": null, | ||||
|         "apExportUrl": "/filestore/tip-logo", | ||||
|         "fileCategory": "CaptivePortalBackground", | ||||
|         "fileType": "PNG", | ||||
|         "altSlot": false | ||||
|       }, | ||||
|       "walledGardenAllowlist": [ | ||||
|       ], | ||||
|       "usernamePasswordFile": null, | ||||
|       "authenticationType": "guest", | ||||
|       "radiusAuthMethod": "CHAP", | ||||
|       "maxUsersWithSameCredentials": 3, | ||||
|       "externalPolicyFile": null, | ||||
|       "backgroundPosition": "left_top", | ||||
|       "backgroundRepeat": "no_repeat", | ||||
|       "radiusServiceId": 0, | ||||
|       "expiryType": "time_limited", | ||||
|       "userList": [ | ||||
|       ], | ||||
|       "macAllowList": [ | ||||
|       ], | ||||
|       "profileType": "captive_portal" | ||||
|         "model_type": "CaptivePortalConfiguration", | ||||
|         "name": "Captive-portal", | ||||
|         "browserTitle": "Access the network as Guest", | ||||
|         "headerContent": "Captive Portal", | ||||
|         "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.", | ||||
|         "successPageMarkdownText": "Welcome to the network", | ||||
|         "redirectURL": "", | ||||
|         "externalCaptivePortalURL": null, | ||||
|         "sessionTimeoutInMinutes": 60, | ||||
|         "logoFile": null, | ||||
|         "backgroundFile": null, | ||||
|         "walledGardenAllowlist": [], | ||||
|         "usernamePasswordFile": { | ||||
|             "model_type": "ManagedFileInfo", | ||||
|             "md5checksum": null, | ||||
|             "lastModifiedTimestamp": null, | ||||
|             "apExportUrl": "userList", | ||||
|             "fileCategory": "UsernamePasswordList", | ||||
|             "fileType": "TEXT", | ||||
|             "altSlot": true | ||||
|         }, | ||||
|         "authenticationType": "guest", | ||||
|         "radiusAuthMethod": "CHAP", | ||||
|         "maxUsersWithSameCredentials": 42, | ||||
|         "externalPolicyFile": null, | ||||
|         "backgroundPosition": "left_top", | ||||
|         "backgroundRepeat": "no_repeat", | ||||
|         "radiusServiceName": null, | ||||
|         "expiryType": "unlimited", | ||||
|         "userList": [ | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer", | ||||
|                 "password": "testing123", | ||||
|                 "activationTime": 1602183994956, | ||||
|                 "expirationTime": 1602212794956, | ||||
|                 "numDevices": 1, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Pac", | ||||
|                     "lastName": "Man", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "fKtg5upO", | ||||
|                         "addressAsString": "7c:ab:60:e6:ea:4e" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer", | ||||
|                 "password": "testing123", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602187594957, | ||||
|                 "numDevices": 0, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Q", | ||||
|                     "lastName": "Bert", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "wJrQdqho", | ||||
|                         "addressAsString": "c0:9a:d0:76:a8:68" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer2", | ||||
|                 "password": "testing1234", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602788794957, | ||||
|                 "numDevices": 1, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Duke", | ||||
|                     "lastName": "Nukem", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "fKtg5upN", | ||||
|                         "addressAsString": "7c:ab:60:e6:ea:4d" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer2", | ||||
|                 "password": "testing1234", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602270394957, | ||||
|                 "numDevices": 0, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Missile", | ||||
|                     "lastName": "Commander", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "wJrQdqhj", | ||||
|                         "addressAsString": "c0:9a:d0:76:a8:63" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             } | ||||
|         ], | ||||
|         "macAllowList": [], | ||||
|         "profileType": "captive_portal" | ||||
|     }, | ||||
|     "createdTimestamp": 1611857459118, | ||||
|     "lastModifiedTimestamp": 1611857459118, | ||||
|     "childProfileIds": [ | ||||
|     ] | ||||
|   } | ||||
| ] | ||||
|     "createdTimestamp": 1602183994959, | ||||
|     "lastModifiedTimestamp": 1602183994959, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| ] | ||||
| @@ -1,71 +1,72 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 37, | ||||
|     "customerId": 2, | ||||
|     "profileType": "passpoint", | ||||
|     "name": "hotspot20-profile-2021-01-21T21:28:59.171Z", | ||||
|     "details": { | ||||
|         "model_type": "PasspointProfile", | ||||
|         "enableInterworkingAndHs20": true, | ||||
|         "hessid": null, | ||||
|         "passpointAccessNetworkType": "free_public_network", | ||||
|         "passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions", | ||||
|         "additionalStepsRequiredForAccess": 0, | ||||
|         "deauthRequestTimeout": 0, | ||||
|         "operatingClass": 0, | ||||
|         "termsAndConditionsFile": { | ||||
|             "model_type": "ManagedFileInfo", | ||||
|             "md5checksum": null, | ||||
|             "lastModifiedTimestamp": null, | ||||
|             "apExportUrl": "https://localhost:9091/filestore/termsAndConditions", | ||||
|             "fileCategory": "ExternalPolicyConfiguration", | ||||
|             "fileType": "TEXT", | ||||
|             "altSlot": false | ||||
|         "model_type": "Profile", | ||||
|         "id": 24, | ||||
|         "customerId": 2, | ||||
|         "profileType": "passpoint", | ||||
|         "name": "TipWlan-Hotspot20-Config", | ||||
|         "details": { | ||||
|             "model_type": "PasspointProfile", | ||||
|             "enableInterworkingAndHs20": true, | ||||
|             "hessid": null, | ||||
|             "additionalStepsRequiredForAccess": 0, | ||||
|             "deauthRequestTimeout": 0, | ||||
|             "operatingClass": 0, | ||||
|             "termsAndConditionsFile": { | ||||
|                 "model_type": "ManagedFileInfo", | ||||
|                 "md5checksum": null, | ||||
|                 "lastModifiedTimestamp": null, | ||||
|                 "apExportUrl": "https://localhost:9091/filestore/termsAndConditions", | ||||
|                 "fileCategory": "ExternalPolicyConfiguration", | ||||
|                 "fileType": "TEXT", | ||||
|                 "altSlot": false | ||||
|             }, | ||||
|             "whitelistDomain": null, | ||||
|             "emergencyServicesReachable": true, | ||||
|             "unauthenticatedEmergencyServiceAccessible": false, | ||||
|             "internetConnectivity": true, | ||||
|             "connectionCapabilitySet": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointConnectionCapability", | ||||
|                     "connectionCapabilitiesPortNumber": 8888, | ||||
|                     "connectionCapabilitiesIpProtocol": "TCP", | ||||
|                     "connectionCapabilitiesStatus": "open" | ||||
|                 } | ||||
|             ], | ||||
|             "ipAddressTypeAvailability": "public_IPv4_address_available", | ||||
|             "qosMapSetConfiguration": null, | ||||
|             "apGeospatialLocation": null, | ||||
|             "apCivicLocation": null, | ||||
|             "apPublicLocationIdUri": null, | ||||
|             "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", | ||||
|             "anqpDomainId": 1234, | ||||
|             "disableDownstreamGroupAddressedForwarding": false, | ||||
|             "enable2pt4GHz": true, | ||||
|             "enable5GHz": true, | ||||
|             "associatedAccessSsidNames": [ | ||||
|                 "TipWlan-cloud-hotspot-access" | ||||
|             ], | ||||
|             "osuSsidName": "TipWlan-cloud-hotspot-osu", | ||||
|             "operatorProfileName": "TipWlan-Hotspot20-Operator", | ||||
|             "venueProfileName": "TipWlan-Hotspot20-Venue", | ||||
|             "idProviderProfileNames": [ | ||||
|                 "TipWlan-Hotspot20-OSU-Provider-2", | ||||
|                 "TipWlan-Hotspot20-OSU-Provider" | ||||
|             ], | ||||
|             "accessNetworkType": "free_public_network", | ||||
|             "networkAuthenticationType": "acceptance_of_terms_and_conditions", | ||||
|             "associatedSsids": [ | ||||
|                 "TipWlan-cloud-hotspot-access" | ||||
|             ], | ||||
|             "profileType": "passpoint" | ||||
|         }, | ||||
|         "whitelistDomain": null, | ||||
|         "emergencyServicesReachable": true, | ||||
|         "unauthenticatedEmergencyServiceAccessible": false, | ||||
|         "internetConnectivity": true, | ||||
|         "connectionCapabilitySet": [ | ||||
|             { | ||||
|                 "model_type": "PasspointConnectionCapability", | ||||
|                 "connectionCapabilitiesPortNumber": 8888, | ||||
|                 "connectionCapabilitiesIpProtocol": "TCP", | ||||
|                 "connectionCapabilitiesStatus": "open" | ||||
|             } | ||||
|         ], | ||||
|         "ipAddressTypeAvailability": "public_IPv4_address_available", | ||||
|         "qosMapSetConfiguration": null, | ||||
|         "apGeospatialLocation": null, | ||||
|         "apCivicLocation": null, | ||||
|         "apPublicLocationIdUri": null, | ||||
|         "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", | ||||
|         "anqpDomainId": 1234, | ||||
|         "disableDownstreamGroupAddressedForwarding": false, | ||||
|         "enable2pt4GHz": true, | ||||
|         "enable5GHz": true, | ||||
|         "associatedAccessSsidProfileIds": [ | ||||
|             32 | ||||
|         ], | ||||
|         "osuSsidProfileId": 31, | ||||
|         "passpointOperatorProfileId": 34, | ||||
|         "passpointVenueProfileId": 33, | ||||
|         "passpointOsuProviderProfileIds": [ | ||||
|             35, | ||||
|             36 | ||||
|         ], | ||||
|         "accessNetworkType": "free_public_network", | ||||
|         "networkAuthenticationType": "acceptance_of_terms_and_conditions", | ||||
|         "profileType": "passpoint" | ||||
|     }, | ||||
|     "createdTimestamp": 0, | ||||
|     "lastModifiedTimestamp": 1611264539331, | ||||
|     "childProfileIds": [ | ||||
|         33, | ||||
|         34, | ||||
|         35, | ||||
|         36 | ||||
|     ] | ||||
| } | ||||
|         "createdTimestamp": 1605711223339, | ||||
|         "lastModifiedTimestamp": 1605711223339, | ||||
|         "childProfileIds": [ | ||||
|             17, | ||||
|             18, | ||||
|             19, | ||||
|             20 | ||||
|         ] | ||||
|     } | ||||
| ] | ||||
|   | ||||
| @@ -1,263 +1,270 @@ | ||||
| [ | ||||
|     { | ||||
|         "model_type": "Profile", | ||||
|         "id": 35, | ||||
|         "customerId": 2, | ||||
|         "profileType": "passpoint_osu_id_provider", | ||||
|         "name": "provider1-profile-2021-01-21T21:28:59.057Z", | ||||
|         "details": { | ||||
|             "model_type": "PasspointOsuProviderProfile", | ||||
|             "mccMncList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointMccMnc", | ||||
|                     "mcc": 302, | ||||
|                     "mnc": 720, | ||||
|                     "iso": "ca", | ||||
|                     "country": "Canada", | ||||
|                     "countryCode": 1, | ||||
|                     "network": "Rogers AT&T Wireless", | ||||
|                     "mccMncPairing": "302,720" | ||||
|                 } | ||||
|             ], | ||||
|             "naiRealmList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointNaiRealmInformation", | ||||
|                     "naiRealms": [ | ||||
|                         "rogers.com" | ||||
|                     ], | ||||
|                     "encoding": 0, | ||||
|                     "eapMethods": [ | ||||
|                         "EAP-TTLS with username/password", | ||||
|                         "EAP-TLS with certificate" | ||||
|                     ], | ||||
|                     "eapMap": { | ||||
|                         "EAP-TTLS with username/password": [ | ||||
|                             "Credential Type:username/password", | ||||
|                             "Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
|                         ], | ||||
|                         "EAP-TLS with certificate": [ | ||||
|                             "Credential Type:Certificate" | ||||
|                         ] | ||||
|                     } | ||||
|                 } | ||||
|             ], | ||||
|             "osuIconList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_CA", | ||||
|                     "iconName": "icon32eng", | ||||
|                     "filePath": "/tmp/icon32eng.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32eng.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "fra", | ||||
|                     "iconLocale": "fr_CA", | ||||
|                     "iconName": "icon32fra", | ||||
|                     "filePath": "/tmp/icon32fra.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32fra.png", | ||||
|                     "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_US", | ||||
|                     "iconName": "icon32usa", | ||||
|                     "filePath": "/tmp/icon32usa.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32usa.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
|                 } | ||||
|             ], | ||||
|             "osuServerUri": "https://example.com/osu/rogers", | ||||
|             "osuFriendlyName": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example provider rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example provider rogers" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemple de fournisseur rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemple de fournisseur rogers" | ||||
|                 } | ||||
|             ], | ||||
|             "osuNaiStandalone": "anonymous@rogers.com", | ||||
|             "osuNaiShared": "anonymous@rogers.com", | ||||
|             "osuMethodList": [ | ||||
|                 1, | ||||
|                 0 | ||||
|             ], | ||||
|             "osuServiceDescription": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example services rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example services rogers" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemples de services rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemples de services rogers" | ||||
|                 } | ||||
|             ], | ||||
|             "roamingOi": [ | ||||
|                 "BAA2D00100", | ||||
|                 "BAA2D00000" | ||||
|             ], | ||||
|             "profileType": "passpoint_osu_id_provider" | ||||
|         }, | ||||
|         "createdTimestamp": 1611264539070, | ||||
|         "lastModifiedTimestamp": 1611264539070, | ||||
|         "childProfileIds": [] | ||||
|     }, | ||||
|     { | ||||
|         "model_type": "Profile", | ||||
|         "id": 36, | ||||
|         "customerId": 2, | ||||
|         "profileType": "passpoint_osu_id_provider", | ||||
|         "name": "provider2-profile-2021-01-21T21:28:59.118Z", | ||||
|         "details": { | ||||
|             "model_type": "PasspointOsuProviderProfile", | ||||
|             "mccMncList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointMccMnc", | ||||
|                     "mcc": 302, | ||||
|                     "mnc": 220, | ||||
|                     "iso": "ca", | ||||
|                     "country": "Canada", | ||||
|                     "countryCode": 1, | ||||
|                     "network": "Telus Mobility", | ||||
|                     "mccMncPairing": "302,220" | ||||
|                 } | ||||
|             ], | ||||
|             "naiRealmList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointNaiRealmInformation", | ||||
|                     "naiRealms": [ | ||||
|                         "telus.com" | ||||
|                     ], | ||||
|                     "encoding": 0, | ||||
|                     "eapMethods": [ | ||||
|                         "EAP-TTLS with username/password", | ||||
|                         "EAP-TLS with certificate" | ||||
|                     ], | ||||
|                     "eapMap": { | ||||
|                         "EAP-TTLS with username/password": [ | ||||
|                             "Credential Type:username/password", | ||||
|                             "Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
|                         ], | ||||
|                         "EAP-TLS with certificate": [ | ||||
|                             "Credential Type:Certificate" | ||||
|                         ] | ||||
|                     } | ||||
|                 } | ||||
|             ], | ||||
|             "osuIconList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_CA", | ||||
|                     "iconName": "icon32eng", | ||||
|                     "filePath": "/tmp/icon32eng.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32eng.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "fra", | ||||
|                     "iconLocale": "fr_CA", | ||||
|                     "iconName": "icon32fra", | ||||
|                     "filePath": "/tmp/icon32fra.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32fra.png", | ||||
|                     "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_US", | ||||
|                     "iconName": "icon32usa", | ||||
|                     "filePath": "/tmp/icon32usa.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32usa.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
|                 } | ||||
|             ], | ||||
|             "osuServerUri": "https://example.com/osu/telus", | ||||
|             "osuFriendlyName": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example provider telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example provider telus" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemple de fournisseur telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemple de fournisseur telus" | ||||
|                 } | ||||
|             ], | ||||
|             "osuNaiStandalone": "anonymous@telus.com", | ||||
|             "osuNaiShared": "anonymous@telus.com", | ||||
|             "osuMethodList": [ | ||||
|                 1, | ||||
|                 0 | ||||
|             ], | ||||
|             "osuServiceDescription": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example services telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example services telus" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemples de services telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemples de services telus" | ||||
|                 } | ||||
|             ], | ||||
|             "roamingOi": [ | ||||
|                 "004096", | ||||
|                 "005014", | ||||
|                 "F4F5E8F5F4" | ||||
|             ], | ||||
|             "profileType": "passpoint_osu_id_provider" | ||||
|         }, | ||||
|         "createdTimestamp": 1611264539131, | ||||
|         "lastModifiedTimestamp": 1611264539131, | ||||
|         "childProfileIds": [] | ||||
|     } | ||||
| ] | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 19, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_osu_id_provider", | ||||
| 		"name": "TipWlan-Hotspot20-OSU-Provider", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOsuProviderProfile", | ||||
| 			"domainName": "rogers.com", | ||||
| 			"mccMncList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointMccMnc", | ||||
| 					"mcc": 302, | ||||
| 					"mnc": 720, | ||||
| 					"iso": "ca", | ||||
| 					"country": "Canada", | ||||
| 					"countryCode": 1, | ||||
| 					"network": "Rogers AT&T Wireless", | ||||
| 					"mccMncPairing": "302,720" | ||||
| 				} | ||||
| 			], | ||||
| 			"naiRealmList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointNaiRealmInformation", | ||||
| 					"naiRealms": [ | ||||
| 						"rogers.com" | ||||
| 					], | ||||
| 					"encoding": 0, | ||||
| 					"eapMethods": [ | ||||
| 						"EAP-TTLS with username/password", | ||||
| 						"EAP-TLS with certificate" | ||||
| 					], | ||||
| 					"eapMap": { | ||||
| 						"EAP-TTLS with username/password": [ | ||||
| 							"Credential Type:username/password", | ||||
| 							"Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
| 						], | ||||
| 						"EAP-TLS with certificate": [ | ||||
| 							"Credential Type:Certificate" | ||||
| 						] | ||||
| 					} | ||||
| 				} | ||||
| 			], | ||||
| 			"osuIconList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_CA", | ||||
| 					"iconName": "icon32eng", | ||||
| 					"filePath": "/tmp/icon32eng.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32eng.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "fra", | ||||
| 					"iconLocale": "fr_CA", | ||||
| 					"iconName": "icon32fra", | ||||
| 					"filePath": "/tmp/icon32fra.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32fra.png", | ||||
| 					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_US", | ||||
| 					"iconName": "icon32usa", | ||||
| 					"filePath": "/tmp/icon32usa.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32usa.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuServerUri": "https://example.com/osu/rogers", | ||||
| 			"osuFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example provider rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example provider rogers" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de fournisseur rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemple de fournisseur rogers" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuNaiStandalone": "anonymous@rogers.com", | ||||
| 			"osuNaiShared": "anonymous@rogers.com", | ||||
| 			"osuMethodList": [ | ||||
| 				1, | ||||
| 				0 | ||||
| 			], | ||||
| 			"osuServiceDescription": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example services rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example services rogers" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemples de services rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemples de services rogers" | ||||
| 				} | ||||
| 			], | ||||
| 			"roamingOi": [ | ||||
| 				1, | ||||
| 				2, | ||||
| 				3, | ||||
| 				4 | ||||
| 			], | ||||
| 			"profileType": "passpoint_osu_id_provider" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711165325, | ||||
| 		"lastModifiedTimestamp": 1605711165325, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 20, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_osu_id_provider", | ||||
| 		"name": "TipWlan-Hotspot20-OSU-Provider-2", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOsuProviderProfile", | ||||
| 			"domainName": "telus.com", | ||||
| 			"mccMncList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointMccMnc", | ||||
| 					"mcc": 302, | ||||
| 					"mnc": 220, | ||||
| 					"iso": "ca", | ||||
| 					"country": "Canada", | ||||
| 					"countryCode": 1, | ||||
| 					"network": "Telus Mobility", | ||||
| 					"mccMncPairing": "302,220" | ||||
| 				} | ||||
| 			], | ||||
| 			"naiRealmList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointNaiRealmInformation", | ||||
| 					"naiRealms": [ | ||||
| 						"telus.com" | ||||
| 					], | ||||
| 					"encoding": 0, | ||||
| 					"eapMethods": [ | ||||
| 						"EAP-TTLS with username/password", | ||||
| 						"EAP-TLS with certificate" | ||||
| 					], | ||||
| 					"eapMap": { | ||||
| 						"EAP-TTLS with username/password": [ | ||||
| 							"Credential Type:username/password", | ||||
| 							"Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
| 						], | ||||
| 						"EAP-TLS with certificate": [ | ||||
| 							"Credential Type:Certificate" | ||||
| 						] | ||||
| 					} | ||||
| 				} | ||||
| 			], | ||||
| 			"osuIconList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_CA", | ||||
| 					"iconName": "icon32eng", | ||||
| 					"filePath": "/tmp/icon32eng.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32eng.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "fra", | ||||
| 					"iconLocale": "fr_CA", | ||||
| 					"iconName": "icon32fra", | ||||
| 					"filePath": "/tmp/icon32fra.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32fra.png", | ||||
| 					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_US", | ||||
| 					"iconName": "icon32usa", | ||||
| 					"filePath": "/tmp/icon32usa.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32usa.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuServerUri": "https://example.com/osu/telus", | ||||
| 			"osuFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example provider telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example provider telus" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de fournisseur telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemple de fournisseur telus" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuNaiStandalone": "anonymous@telus.com", | ||||
| 			"osuNaiShared": "anonymous@telus.com", | ||||
| 			"osuMethodList": [ | ||||
| 				1, | ||||
| 				0 | ||||
| 			], | ||||
| 			"osuServiceDescription": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example services telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example services telus" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemples de services telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemples de services telus" | ||||
| 				} | ||||
| 			], | ||||
| 			"roamingOi": [ | ||||
| 				1, | ||||
| 				2, | ||||
| 				3, | ||||
| 				4 | ||||
| 			], | ||||
| 			"profileType": "passpoint_osu_id_provider" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711165330, | ||||
| 		"lastModifiedTimestamp": 1605711165330, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| [ | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 10, | ||||
| 		"id": 22, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "service_metrics_collection_config", | ||||
| 		"name": "Metrics-Profile-3-Radios", | ||||
| 		"name": "Metrics-Profile-Passpoint", | ||||
| 		"details": { | ||||
| 			"model_type": "ServiceMetricsCollectionConfigProfile", | ||||
| 			"radioTypes": [ | ||||
| @@ -21,6 +21,30 @@ | ||||
| 			], | ||||
| 			"metricConfigParameterMap": { | ||||
| 				"ApNode": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -45,42 +69,6 @@ | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -92,16 +80,21 @@ | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				], | ||||
| 				"ApSsid": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -115,6 +108,13 @@ | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					} | ||||
| 				], | ||||
| 				"Client": [ | ||||
| @@ -144,12 +144,12 @@ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| @@ -168,12 +168,12 @@ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| @@ -192,29 +192,41 @@ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				], | ||||
| 				"Neighbour": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -239,6 +251,18 @@ | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -262,37 +286,13 @@ | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"profileType": "service_metrics_collection_config" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1606778369931, | ||||
| 		"lastModifiedTimestamp": 1606778369931, | ||||
| 		"createdTimestamp": 1605711195528, | ||||
| 		"lastModifiedTimestamp": 1605711195528, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
|   | ||||
| @@ -1,41 +1,37 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 34, | ||||
|     "customerId": 2, | ||||
|     "profileType": "passpoint_operator", | ||||
|     "name": "operator-profile-2021-01-21T21:28:58.994Z", | ||||
|     "details": { | ||||
|         "model_type": "PasspointOperatorProfile", | ||||
|         "serverOnlyAuthenticatedL2EncryptionNetwork": false, | ||||
|         "x509CertificateLocation": "/etc/ca.pem", | ||||
|         "operatorFriendlyName": [ | ||||
|             { | ||||
|                 "model_type": "PasspointDuple", | ||||
|                 "locale": "fra", | ||||
|                 "dupleIso3Language": "fra", | ||||
|                 "dupleName": "Nom de l'opérateur convivial par défaut", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "asDuple": "fra:Nom de l'opérateur convivial par défaut" | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "PasspointDuple", | ||||
|                 "locale": "eng", | ||||
|                 "dupleIso3Language": "eng", | ||||
|                 "dupleName": "Default friendly passpoint_operator name", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "asDuple": "eng:Default friendly passpoint_operator name" | ||||
|             } | ||||
|         ], | ||||
|         "domainNameList": [ | ||||
|             "bell.ca", | ||||
|             "telus.com", | ||||
|             "rogers.com" | ||||
|         ], | ||||
|         "profileType": "passpoint_operator" | ||||
|     }, | ||||
|     "createdTimestamp": 1611264539004, | ||||
|     "lastModifiedTimestamp": 1611264539004, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| ] | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 17, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_operator", | ||||
| 		"name": "TipWlan-Hotspot20-Operator", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOperatorProfile", | ||||
| 			"serverOnlyAuthenticatedL2EncryptionNetwork": false, | ||||
| 			"x509CertificateLocation": "/etc/ca.pem", | ||||
| 			"operatorFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Default friendly passpoint_operator name", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Default friendly passpoint_operator name" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Nom de l'opérateur convivial par défaut", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Nom de l'opérateur convivial par défaut" | ||||
| 				} | ||||
| 			], | ||||
| 			"profileType": "passpoint_operator" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164952, | ||||
| 		"lastModifiedTimestamp": 1605711164952, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -1,24 +1,34 @@ | ||||
| [ | ||||
|   { | ||||
|     "model_type": "Profile", | ||||
|     "id": 1, | ||||
|     "customerId": 2, | ||||
|     "profileType": "radius", | ||||
|     "name": "Radius-Profile", | ||||
|     "details": { | ||||
|       "model_type": "RadiusProfile", | ||||
|       "primaryRadiusAuthServer": { | ||||
|         "model_type": "RadiusServer", | ||||
|         "ipAddress": "192.168.0.1", | ||||
|         "secret": "testing123", | ||||
|         "port": 1812, | ||||
|         "timeout": null | ||||
|       }, | ||||
|       "profileType": "radius" | ||||
|     }, | ||||
|     "createdTimestamp": 1611262628767, | ||||
|     "lastModifiedTimestamp": 1611262628767, | ||||
|     "childProfileIds": [ | ||||
|     ] | ||||
|   } | ||||
| ] | ||||
|         { | ||||
|             "model_type": "Profile", | ||||
|             "id": 1, | ||||
|             "customerId": 2, | ||||
|             "profileType": "radius", | ||||
|             "name": "Radius-Profile", | ||||
|             "details": { | ||||
|                 "model_type": "RadiusProfile", | ||||
|                 "subnetConfiguration": null, | ||||
|                 "serviceRegionMap": { | ||||
|                     "Ottawa": { | ||||
|                         "model_type": "RadiusServiceRegion", | ||||
|                         "serverMap": { | ||||
|                             "Radius-Profile": [ | ||||
|                                 { | ||||
|                                     "model_type": "RadiusServer", | ||||
|                                     "ipAddress": "192.168.0.1", | ||||
|                                     "secret": "testing123", | ||||
|                                     "authPort": 1812, | ||||
|                                     "timeout": null | ||||
|                                 } | ||||
|                             ] | ||||
|                         }, | ||||
|                         "regionName": "Ottawa" | ||||
|                     } | ||||
|                 }, | ||||
|                 "profileType": "radius" | ||||
|             }, | ||||
|             "createdTimestamp": 1601961451668, | ||||
|             "lastModifiedTimestamp": 1601961451668, | ||||
|             "childProfileIds": [] | ||||
|         } | ||||
| ] | ||||
| @@ -1,204 +1,205 @@ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 4, | ||||
|     "customerId": 2, | ||||
|     "profileType": "rf", | ||||
|     "name": "TipWlan-rf", | ||||
|     "details": { | ||||
|         "model_type": "RfConfiguration", | ||||
|         "rfConfigMap": { | ||||
|             "is5GHz": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHz", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "radioMode": "modeN", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is20MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 20, | ||||
|                     "minLoadFactor": 50 | ||||
|                 } | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "profileType": "rf" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248650, | ||||
|     "lastModifiedTimestamp": 1612285248650, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| 	"model_type": "Profile", | ||||
| 	"id": 21, | ||||
| 	"customerId": 2, | ||||
| 	"profileType": "rf", | ||||
| 	"name": "TipWlan-rf-passpoint", | ||||
| 	"details": { | ||||
| 		"model_type": "RfConfiguration", | ||||
| 		"rfConfigMap": { | ||||
| 			"is5GHz": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHz", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is2dot4GHz": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is2dot4GHz", | ||||
| 				"radioMode": "modeN", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is20MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 20, | ||||
| 					"minLoadFactor": 50 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is5GHzU": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHzU", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is5GHzL": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHzL", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		"profileType": "rf" | ||||
| 	}, | ||||
| 	"createdTimestamp": 1605711191976, | ||||
| 	"lastModifiedTimestamp": 1605711191976, | ||||
| 	"childProfileIds": [ | ||||
| 	] | ||||
| } | ||||
|   | ||||
| @@ -1,75 +1,134 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 2, | ||||
|     "customerId": 2, | ||||
|     "profileType": "ssid", | ||||
|     "name": "TipWlan-cloud-3-radios", | ||||
|     "details": { | ||||
|         "model_type": "SsidConfiguration", | ||||
|         "ssid": "TipWlan-cloud-3-radios", | ||||
|         "appliedRadios": [ | ||||
|             "is5GHzU", | ||||
|             "is2dot4GHz", | ||||
|             "is5GHzL" | ||||
|         ], | ||||
|         "ssidAdminState": "enabled", | ||||
|         "secureMode": "wpa2OnlyPSK", | ||||
|         "vlanId": 1, | ||||
|         "keyStr": "openwifi", | ||||
|         "broadcastSsid": "enabled", | ||||
|         "keyRefresh": 0, | ||||
|         "noLocalSubnets": false, | ||||
|         "radiusServiceId": 0, | ||||
|         "radiusAcountingServiceInterval": 60, | ||||
|         "captivePortalId": null, | ||||
|         "bandwidthLimitDown": 0, | ||||
|         "bandwidthLimitUp": 0, | ||||
|         "clientBandwidthLimitDown": 0, | ||||
|         "clientBandwidthLimitUp": 0, | ||||
|         "videoTrafficOnly": false, | ||||
|         "radioBasedConfigs": { | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is5GHz": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             } | ||||
|         }, | ||||
|         "bonjourGatewayProfileId": null, | ||||
|         "enable80211w": null, | ||||
|         "wepConfig": null, | ||||
|         "forwardMode": "BRIDGE", | ||||
|         "profileType": "ssid", | ||||
|         "radiusClientConfiguration": { | ||||
|             "model_type": "RadiusNasConfiguration", | ||||
|             "nasClientId": "DEFAULT", | ||||
|             "nasClientIp": "WAN_IP", | ||||
|             "userDefinedNasId": null, | ||||
|             "userDefinedNasIp": null, | ||||
|             "operatorId": null | ||||
|         } | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248638, | ||||
|     "lastModifiedTimestamp": 1612285248638, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 15, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "ssid", | ||||
| 		"name": "TipWlan-cloud-hotspot-access", | ||||
| 		"details": { | ||||
| 			"model_type": "SsidConfiguration", | ||||
| 			"ssid": "TipWlan-cloud-hotspot-access", | ||||
| 			"appliedRadios": [ | ||||
| 				"is5GHzL", | ||||
| 				"is5GHzU" | ||||
| 			], | ||||
| 			"ssidAdminState": "enabled", | ||||
| 			"secureMode": "wpa2PSK", | ||||
| 			"vlanId": 1, | ||||
| 			"keyStr": "testing123", | ||||
| 			"broadcastSsid": "enabled", | ||||
| 			"keyRefresh": 0, | ||||
| 			"noLocalSubnets": false, | ||||
| 			"radiusServiceName": null, | ||||
| 			"radiusAccountingServiceName": null, | ||||
| 			"captivePortalId": null, | ||||
| 			"bandwidthLimitDown": 0, | ||||
| 			"bandwidthLimitUp": 0, | ||||
| 			"clientBandwidthLimitDown": 0, | ||||
| 			"clientBandwidthLimitUp": 0, | ||||
| 			"videoTrafficOnly": false, | ||||
| 			"radioBasedConfigs": { | ||||
| 				"is5GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is2dot4GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzU": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzL": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				} | ||||
| 			}, | ||||
| 			"bonjourGatewayProfileId": null, | ||||
| 			"enable80211w": null, | ||||
| 			"wepConfig": null, | ||||
| 			"forwardMode": null, | ||||
| 			"profileType": "ssid" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164949, | ||||
| 		"lastModifiedTimestamp": 1605711223372, | ||||
| 		"childProfileIds": [ | ||||
| 			24 | ||||
| 		] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 16, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "ssid", | ||||
| 		"name": "TipWlan-cloud-hotspot-osu", | ||||
| 		"details": { | ||||
| 			"model_type": "SsidConfiguration", | ||||
| 			"ssid": "TipWlan-cloud-hotspot-osu", | ||||
| 			"appliedRadios": [ | ||||
| 				"is2dot4GHz" | ||||
| 			], | ||||
| 			"ssidAdminState": "enabled", | ||||
| 			"secureMode": "open", | ||||
| 			"vlanId": 1, | ||||
| 			"keyStr": null, | ||||
| 			"broadcastSsid": "enabled", | ||||
| 			"keyRefresh": 0, | ||||
| 			"noLocalSubnets": false, | ||||
| 			"radiusServiceName": null, | ||||
| 			"radiusAccountingServiceName": null, | ||||
| 			"captivePortalId": null, | ||||
| 			"bandwidthLimitDown": 0, | ||||
| 			"bandwidthLimitUp": 0, | ||||
| 			"clientBandwidthLimitDown": 0, | ||||
| 			"clientBandwidthLimitUp": 0, | ||||
| 			"videoTrafficOnly": false, | ||||
| 			"radioBasedConfigs": { | ||||
| 				"is5GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is2dot4GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzU": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzL": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				} | ||||
| 			}, | ||||
| 			"bonjourGatewayProfileId": null, | ||||
| 			"enable80211w": null, | ||||
| 			"wepConfig": null, | ||||
| 			"forwardMode": null, | ||||
| 			"profileType": "ssid" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164950, | ||||
| 		"lastModifiedTimestamp": 1605711171732, | ||||
| 		"childProfileIds": [ | ||||
| 			19, | ||||
| 			20 | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -1,42 +1,43 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 33, | ||||
|     "customerId": 2, | ||||
|     "profileType": "passpoint_venue", | ||||
|     "name": "venue-profile-2021-01-21T21:28:58.934Z", | ||||
|     "details": { | ||||
|         "model_type": "PasspointVenueProfile", | ||||
|         "venueNameSet": [ | ||||
|             { | ||||
|                 "model_type": "PasspointVenueName", | ||||
|                 "locale": "fra", | ||||
|                 "dupleIso3Language": "fra", | ||||
|                 "dupleName": "Exemple de lieu", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "venueUrl": "http://www.example.com/info-fra", | ||||
|                 "asDuple": "fra:Exemple de lieu" | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "PasspointVenueName", | ||||
|                 "locale": "eng", | ||||
|                 "dupleIso3Language": "eng", | ||||
|                 "dupleName": "Example passpoint_venue", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "venueUrl": "http://www.example.com/info-eng", | ||||
|                 "asDuple": "eng:Example passpoint_venue" | ||||
|             } | ||||
|         ], | ||||
|         "venueTypeAssignment": { | ||||
|             "model_type": "PasspointVenueTypeAssignment", | ||||
|             "venueDescription": "Research and Development Facility", | ||||
|             "venueGroupId": 2, | ||||
|             "venueTypeId": 8 | ||||
|         }, | ||||
|         "profileType": "passpoint_venue" | ||||
|     }, | ||||
|     "createdTimestamp": 1611264538947, | ||||
|     "lastModifiedTimestamp": 1611264538947, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| ] | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 18, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_venue", | ||||
| 		"name": "TipWlan-Hotspot20-Venue", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointVenueProfile", | ||||
| 			"venueNameSet": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointVenueName", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de lieu", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"venueUrl": "http://www.example.com/info-fra", | ||||
| 					"asDuple": "fra:Exemple de lieu" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointVenueName", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example passpoint_venue", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"venueUrl": "http://www.example.com/info-eng", | ||||
| 					"asDuple": "eng:Example passpoint_venue" | ||||
| 				} | ||||
| 			], | ||||
| 			"venueTypeAssignment": { | ||||
| 				"model_type": "ProfileVenueTypeAssignment", | ||||
| 				"venueDescription": "Research and Development Facility", | ||||
| 				"venueGroupId": 2, | ||||
| 				"venueTypeId": 8 | ||||
| 			}, | ||||
| 			"profileType": "passpoint_venue" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164956, | ||||
| 		"lastModifiedTimestamp": 1605711164956, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -174,9 +174,7 @@ RESTAPI_PROPS="$RESTAPI_PROPS -Dserver.port=4043" | ||||
|  | ||||
| SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED" | ||||
|  | ||||
| JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } " | ||||
|  | ||||
| export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS " | ||||
| export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS " | ||||
|  | ||||
| echo Starting opensync wifi controller | ||||
|  | ||||
|   | ||||
| @@ -1,472 +1,221 @@ | ||||
| { | ||||
|     "model_type": "Equipment", | ||||
|     "id": 1, | ||||
|     "customerId": 2, | ||||
|     "profileId": 8, | ||||
|     "locationId": 8, | ||||
|   "model_type": "Equipment", | ||||
|   "id": 51, | ||||
|   "customerId": 2, | ||||
|   "profileId": 5, | ||||
|   "locationId": 8, | ||||
|   "equipmentType": "AP", | ||||
|   "inventoryId": "Test_Client_21P10C68818122", | ||||
|   "name": "Test_Client_21P10C68818122", | ||||
|   "details": { | ||||
|     "model_type": "ApElementConfiguration", | ||||
|     "equipmentModel": "EA8300-CA", | ||||
|     "elementConfigVersion": "AP-V1", | ||||
|     "equipmentType": "AP", | ||||
|     "inventoryId": "Open_AP_21P10C68818122", | ||||
|     "name": "Open_AP_21P10C68818122", | ||||
|     "details": { | ||||
|         "model_type": "ApElementConfiguration", | ||||
|         "equipmentModel": "EA8300-CA", | ||||
|         "elementConfigVersion": "AP-V1", | ||||
|         "equipmentType": "AP", | ||||
|         "deviceMode": "standaloneAP", | ||||
|         "gettingIP": "dhcp", | ||||
|         "staticIP": null, | ||||
|         "staticIpMaskCidr": null, | ||||
|         "staticIpGw": null, | ||||
|         "gettingDNS": "dhcp", | ||||
|         "staticDnsIp1": null, | ||||
|         "staticDnsIp2": null, | ||||
|         "peerInfoList": [], | ||||
|         "deviceName": "Open_AP_21P10C68818122", | ||||
|         "locationData": null, | ||||
|         "locallyConfiguredMgmtVlan": 0, | ||||
|         "locallyConfigured": false, | ||||
|         "deploymentType": "CEILING", | ||||
|         "syntheticClientEnabled": null, | ||||
|         "frameReportThrottleEnabled": true, | ||||
|         "antennaType": "OMNI", | ||||
|         "costSavingEventsEnabled": true, | ||||
|         "forwardMode": "BRIDGE", | ||||
|         "radioMap": { | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "channelNumber": 149, | ||||
|                 "manualChannelNumber": 149, | ||||
|                 "backupChannelNumber": 157, | ||||
|                 "manualBackupChannelNumber": 157, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 161, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 100, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 132, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 165, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 104, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 136, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 108, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 140, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 112, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 144, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 116, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 149, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 153, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 157, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     } | ||||
|                 ] | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "channelNumber": 6, | ||||
|                 "manualChannelNumber": 6, | ||||
|                 "backupChannelNumber": 11, | ||||
|                 "manualBackupChannelNumber": 11, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 1, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 2, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 3, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 4, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 5, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 6, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 7, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 8, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 9, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 10, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 11, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     } | ||||
|                 ] | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "channelNumber": 36, | ||||
|                 "manualChannelNumber": 36, | ||||
|                 "backupChannelNumber": 44, | ||||
|                 "manualBackupChannelNumber": 44, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 52, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 36, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 56, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 40, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 60, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 44, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 64, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 48, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     } | ||||
|                 ] | ||||
|             } | ||||
|     "deviceMode": "standaloneAP", | ||||
|     "gettingIP": "dhcp", | ||||
|     "staticIP": null, | ||||
|     "staticIpMaskCidr": null, | ||||
|     "staticIpGw": null, | ||||
|     "gettingDNS": "dhcp", | ||||
|     "staticDnsIp1": null, | ||||
|     "staticDnsIp2": null, | ||||
|     "peerInfoList": [], | ||||
|     "deviceName": "Default Device Name", | ||||
|     "locationData": null, | ||||
|     "locallyConfiguredMgmtVlan": 0, | ||||
|     "locallyConfigured": false, | ||||
|     "deploymentType": "CEILING", | ||||
|     "syntheticClientEnabled": null, | ||||
|     "frameReportThrottleEnabled": true, | ||||
|     "antennaType": "OMNI", | ||||
|     "costSavingEventsEnabled": true, | ||||
|     "forwardMode": "BRIDGE", | ||||
|     "radioMap": { | ||||
|       "is2dot4GHz": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is2dot4GHz", | ||||
|         "channelNumber": 6, | ||||
|         "manualChannelNumber": 6, | ||||
|         "backupChannelNumber": 11, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "advancedRadioMap": { | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 20, | ||||
|                         "minLoadFactor": 50 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 30, | ||||
|                         "minLoadFactor": 40 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 30, | ||||
|                         "minLoadFactor": 40 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             } | ||||
|         } | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 6 | ||||
|       }, | ||||
|       "is5GHzU": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is5GHzU", | ||||
|         "channelNumber": 149, | ||||
|         "manualChannelNumber": 149, | ||||
|         "backupChannelNumber": 154, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 149 | ||||
|       }, | ||||
|       "is5GHzL": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is5GHzL", | ||||
|         "channelNumber": 36, | ||||
|         "manualChannelNumber": 36, | ||||
|         "backupChannelNumber": 44, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 36 | ||||
|       } | ||||
|     }, | ||||
|     "latitude": null, | ||||
|     "longitude": null, | ||||
|     "baseMacAddress": { | ||||
|         "model_type": "MacAddress", | ||||
|         "address": "JPWi7y5T", | ||||
|         "addressAsString": "24:f5:a2:ef:2e:53" | ||||
|     }, | ||||
|     "serial": "21P10C68818122", | ||||
|     "createdTimestamp": 1612285288821, | ||||
|     "lastModifiedTimestamp": 1612285293922 | ||||
| } | ||||
|     "advancedRadioMap": { | ||||
|       "is2dot4GHz": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is2dot4GHz", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       }, | ||||
|       "is5GHzU": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is5GHzU", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       }, | ||||
|       "is5GHzL": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is5GHzL", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "latitude": null, | ||||
|   "longitude": null, | ||||
|   "serial": "21P10C68818122", | ||||
|   "createdTimestamp": 1591653239821, | ||||
|   "lastModifiedTimestamp": 1591653241398 | ||||
| } | ||||
|   | ||||
| @@ -1,61 +1,60 @@ | ||||
| { | ||||
|     "model_type": "Location", | ||||
|     "id": 8, | ||||
|     "parentId": 0, | ||||
|     "locationType": "SITE", | ||||
|     "customerId": 2, | ||||
|     "name": "Ottawa", | ||||
|     "details": { | ||||
|         "model_type": "LocationDetails", | ||||
|         "countryCode": "CA", | ||||
|         "dailyActivityDetails": { | ||||
|             "SUNDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "MONDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "TUESDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "WEDNESDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "THURSDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "FRIDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "SATURDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             } | ||||
|         }, | ||||
|         "maintenanceWindow": null, | ||||
|         "rrmEnabled": true, | ||||
|         "timezone": "US/Eastern" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285243534, | ||||
|     "lastModifiedTimestamp": 1612285243534 | ||||
|   "model_type" : "Location", | ||||
|   "id" : 8, | ||||
|   "parentId" : 0, | ||||
|   "locationType" : "SITE", | ||||
|   "customerId" : 2, | ||||
|   "name" : "Ottawa", | ||||
|   "details" : { | ||||
|     "model_type" : "LocationDetails", | ||||
|     "countryCode" : "ca", | ||||
|     "maintenanceWindow" : null, | ||||
|     "rrmEnabled" : true, | ||||
|     "dailyActivityDetails" : { | ||||
|       "SUNDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "MONDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "TUESDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "WEDNESDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "THURSDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "FRIDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "SATURDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "createdTimestamp" : 1590607043540, | ||||
|   "lastModifiedTimestamp" : 1590607043540 | ||||
| } | ||||
| @@ -1,58 +1,55 @@ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 8, | ||||
|     "customerId": 2, | ||||
|     "profileType": "equipment_ap", | ||||
|     "name": "ApProfile-3-radios", | ||||
|     "details": { | ||||
|         "model_type": "ApNetworkConfiguration", | ||||
|         "networkConfigVersion": "AP-1", | ||||
|         "equipmentType": "AP", | ||||
|         "vlanNative": true, | ||||
|         "vlan": 0, | ||||
|         "ntpServer": { | ||||
|             "model_type": "AutoOrManualString", | ||||
|             "auto": true, | ||||
|             "value": "pool.ntp.org" | ||||
|         }, | ||||
|         "syslogRelay": null, | ||||
|         "rtlsSettings": null, | ||||
|         "syntheticClientEnabled": true, | ||||
|         "ledControlEnabled": true, | ||||
|         "equipmentDiscovery": false, | ||||
|         "radioMap": { | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             } | ||||
|         }, | ||||
|         "greTunnelConfigurations": [ | ||||
|             { | ||||
|                 "model_type": "GreTunnelConfiguration", | ||||
|                 "greTunnelName": "gre1", | ||||
|                 "greRemoteInetAddr": "192.168.1.101", | ||||
|                 "vlanIdsInGreTunnel": [ | ||||
|                     100 | ||||
|                 ] | ||||
|             } | ||||
|         ], | ||||
|         "profileType": "equipment_ap" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248925, | ||||
|     "lastModifiedTimestamp": 1612285628377, | ||||
|     "childProfileIds": [ | ||||
|         2, | ||||
|         4 | ||||
|     ] | ||||
| } | ||||
| 	"model_type": "Profile", | ||||
| 	"id": 23, | ||||
| 	"customerId": 2, | ||||
| 	"profileType": "equipment_ap", | ||||
| 	"name": "ApProfile-3-radios-passpoint", | ||||
| 	"details": { | ||||
| 		"model_type": "ApNetworkConfiguration", | ||||
| 		"networkConfigVersion": "AP-1", | ||||
| 		"equipmentType": "AP", | ||||
| 		"vlanNative": true, | ||||
| 		"vlan": 0, | ||||
| 		"ntpServer": { | ||||
| 			"model_type": "AutoOrManualString", | ||||
| 			"auto": true, | ||||
| 			"value": "pool.ntp.org" | ||||
| 		}, | ||||
| 		"syslogRelay": null, | ||||
| 		"rtlsSettings": null, | ||||
| 		"syntheticClientEnabled": true, | ||||
| 		"ledControlEnabled": true, | ||||
| 		"equipmentDiscovery": false, | ||||
| 		"greTunnelName": null, | ||||
| 		"greParentIfName": null, | ||||
| 		"greLocalInetAddr": null, | ||||
| 		"greRemoteInetAddr": null, | ||||
| 		"greRemoteMacAddr": null, | ||||
| 		"radioMap": { | ||||
| 			"is2dot4GHz": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			}, | ||||
| 			"is5GHzU": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			}, | ||||
| 			"is5GHzL": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			} | ||||
| 		}, | ||||
| 		"profileType": "equipment_ap" | ||||
| 	}, | ||||
| 	"createdTimestamp": 1605711197140, | ||||
| 	"lastModifiedTimestamp": 1605711197140, | ||||
| 	"childProfileIds": [ | ||||
| 		16, | ||||
| 		21, | ||||
| 		22, | ||||
| 		15 | ||||
| 	] | ||||
| } | ||||
|   | ||||
| @@ -1,58 +1,135 @@ | ||||
| [ | ||||
|   { | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 5, | ||||
|     "id": 14, | ||||
|     "customerId": 2, | ||||
|     "profileType": "captive_portal", | ||||
|     "name": "Captive-portal", | ||||
|     "details": { | ||||
|       "model_type": "CaptivePortalConfiguration", | ||||
|       "name": "Default", | ||||
|       "browserTitle": "Captive-portal", | ||||
|       "headerContent": "Captive Portal", | ||||
|       "userAcceptancePolicy": "Please agree to the following terms for using this network:", | ||||
|       "successPageMarkdownText": "You are now authorized and connected to the network.", | ||||
|       "redirectURL": "https://www.google.com", | ||||
|       "externalCaptivePortalURL": null, | ||||
|       "sessionTimeoutInMinutes": 10, | ||||
|       "logoFile": { | ||||
|         "model_type": "ManagedFileInfo", | ||||
|         "md5checksum": null, | ||||
|         "lastModifiedTimestamp": null, | ||||
|         "apExportUrl": "/filestore/tip-logo-mobile", | ||||
|         "fileCategory": "CaptivePortalLogo", | ||||
|         "fileType": "PNG", | ||||
|         "altSlot": false | ||||
|       }, | ||||
|       "backgroundFile": { | ||||
|         "model_type": "ManagedFileInfo", | ||||
|         "md5checksum": null, | ||||
|         "lastModifiedTimestamp": null, | ||||
|         "apExportUrl": "/filestore/tip-logo", | ||||
|         "fileCategory": "CaptivePortalBackground", | ||||
|         "fileType": "PNG", | ||||
|         "altSlot": false | ||||
|       }, | ||||
|       "walledGardenAllowlist": [ | ||||
|       ], | ||||
|       "usernamePasswordFile": null, | ||||
|       "authenticationType": "guest", | ||||
|       "radiusAuthMethod": "CHAP", | ||||
|       "maxUsersWithSameCredentials": 3, | ||||
|       "externalPolicyFile": null, | ||||
|       "backgroundPosition": "left_top", | ||||
|       "backgroundRepeat": "no_repeat", | ||||
|       "radiusServiceId": 0, | ||||
|       "expiryType": "time_limited", | ||||
|       "userList": [ | ||||
|       ], | ||||
|       "macAllowList": [ | ||||
|       ], | ||||
|       "profileType": "captive_portal" | ||||
|         "model_type": "CaptivePortalConfiguration", | ||||
|         "name": "Captive-portal", | ||||
|         "browserTitle": "Access the network as Guest", | ||||
|         "headerContent": "Captive Portal", | ||||
|         "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.", | ||||
|         "successPageMarkdownText": "Welcome to the network", | ||||
|         "redirectURL": "", | ||||
|         "externalCaptivePortalURL": null, | ||||
|         "sessionTimeoutInMinutes": 60, | ||||
|         "logoFile": null, | ||||
|         "backgroundFile": null, | ||||
|         "walledGardenAllowlist": [], | ||||
|         "usernamePasswordFile": { | ||||
|             "model_type": "ManagedFileInfo", | ||||
|             "md5checksum": null, | ||||
|             "lastModifiedTimestamp": null, | ||||
|             "apExportUrl": "userList", | ||||
|             "fileCategory": "UsernamePasswordList", | ||||
|             "fileType": "TEXT", | ||||
|             "altSlot": true | ||||
|         }, | ||||
|         "authenticationType": "guest", | ||||
|         "radiusAuthMethod": "CHAP", | ||||
|         "maxUsersWithSameCredentials": 42, | ||||
|         "externalPolicyFile": null, | ||||
|         "backgroundPosition": "left_top", | ||||
|         "backgroundRepeat": "no_repeat", | ||||
|         "radiusServiceName": null, | ||||
|         "expiryType": "unlimited", | ||||
|         "userList": [ | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer", | ||||
|                 "password": "testing123", | ||||
|                 "activationTime": 1602183994956, | ||||
|                 "expirationTime": 1602212794956, | ||||
|                 "numDevices": 1, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Pac", | ||||
|                     "lastName": "Man", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "fKtg5upO", | ||||
|                         "addressAsString": "7c:ab:60:e6:ea:4e" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer", | ||||
|                 "password": "testing123", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602187594957, | ||||
|                 "numDevices": 0, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Q", | ||||
|                     "lastName": "Bert", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "wJrQdqho", | ||||
|                         "addressAsString": "c0:9a:d0:76:a8:68" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer2", | ||||
|                 "password": "testing1234", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602788794957, | ||||
|                 "numDevices": 1, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Duke", | ||||
|                     "lastName": "Nukem", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "fKtg5upN", | ||||
|                         "addressAsString": "7c:ab:60:e6:ea:4d" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer2", | ||||
|                 "password": "testing1234", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602270394957, | ||||
|                 "numDevices": 0, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Missile", | ||||
|                     "lastName": "Commander", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "wJrQdqhj", | ||||
|                         "addressAsString": "c0:9a:d0:76:a8:63" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             } | ||||
|         ], | ||||
|         "macAllowList": [], | ||||
|         "profileType": "captive_portal" | ||||
|     }, | ||||
|     "createdTimestamp": 1611857459118, | ||||
|     "lastModifiedTimestamp": 1611857459118, | ||||
|     "childProfileIds": [ | ||||
|     ] | ||||
|   } | ||||
| ] | ||||
|     "createdTimestamp": 1602183994959, | ||||
|     "lastModifiedTimestamp": 1602183994959, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| ] | ||||
| @@ -1,71 +1,72 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 37, | ||||
|     "customerId": 2, | ||||
|     "profileType": "passpoint", | ||||
|     "name": "hotspot20-profile-2021-01-21T21:28:59.171Z", | ||||
|     "details": { | ||||
|         "model_type": "PasspointProfile", | ||||
|         "enableInterworkingAndHs20": true, | ||||
|         "hessid": null, | ||||
|         "passpointAccessNetworkType": "free_public_network", | ||||
|         "passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions", | ||||
|         "additionalStepsRequiredForAccess": 0, | ||||
|         "deauthRequestTimeout": 0, | ||||
|         "operatingClass": 0, | ||||
|         "termsAndConditionsFile": { | ||||
|             "model_type": "ManagedFileInfo", | ||||
|             "md5checksum": null, | ||||
|             "lastModifiedTimestamp": null, | ||||
|             "apExportUrl": "https://localhost:9091/filestore/termsAndConditions", | ||||
|             "fileCategory": "ExternalPolicyConfiguration", | ||||
|             "fileType": "TEXT", | ||||
|             "altSlot": false | ||||
|         "model_type": "Profile", | ||||
|         "id": 24, | ||||
|         "customerId": 2, | ||||
|         "profileType": "passpoint", | ||||
|         "name": "TipWlan-Hotspot20-Config", | ||||
|         "details": { | ||||
|             "model_type": "PasspointProfile", | ||||
|             "enableInterworkingAndHs20": true, | ||||
|             "hessid": null, | ||||
|             "additionalStepsRequiredForAccess": 0, | ||||
|             "deauthRequestTimeout": 0, | ||||
|             "operatingClass": 0, | ||||
|             "termsAndConditionsFile": { | ||||
|                 "model_type": "ManagedFileInfo", | ||||
|                 "md5checksum": null, | ||||
|                 "lastModifiedTimestamp": null, | ||||
|                 "apExportUrl": "https://localhost:9091/filestore/termsAndConditions", | ||||
|                 "fileCategory": "ExternalPolicyConfiguration", | ||||
|                 "fileType": "TEXT", | ||||
|                 "altSlot": false | ||||
|             }, | ||||
|             "whitelistDomain": null, | ||||
|             "emergencyServicesReachable": true, | ||||
|             "unauthenticatedEmergencyServiceAccessible": false, | ||||
|             "internetConnectivity": true, | ||||
|             "connectionCapabilitySet": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointConnectionCapability", | ||||
|                     "connectionCapabilitiesPortNumber": 8888, | ||||
|                     "connectionCapabilitiesIpProtocol": "TCP", | ||||
|                     "connectionCapabilitiesStatus": "open" | ||||
|                 } | ||||
|             ], | ||||
|             "ipAddressTypeAvailability": "public_IPv4_address_available", | ||||
|             "qosMapSetConfiguration": null, | ||||
|             "apGeospatialLocation": null, | ||||
|             "apCivicLocation": null, | ||||
|             "apPublicLocationIdUri": null, | ||||
|             "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", | ||||
|             "anqpDomainId": 1234, | ||||
|             "disableDownstreamGroupAddressedForwarding": false, | ||||
|             "enable2pt4GHz": true, | ||||
|             "enable5GHz": true, | ||||
|             "associatedAccessSsidNames": [ | ||||
|                 "TipWlan-cloud-hotspot-access" | ||||
|             ], | ||||
|             "osuSsidName": "TipWlan-cloud-hotspot-osu", | ||||
|             "operatorProfileName": "TipWlan-Hotspot20-Operator", | ||||
|             "venueProfileName": "TipWlan-Hotspot20-Venue", | ||||
|             "idProviderProfileNames": [ | ||||
|                 "TipWlan-Hotspot20-OSU-Provider-2", | ||||
|                 "TipWlan-Hotspot20-OSU-Provider" | ||||
|             ], | ||||
|             "accessNetworkType": "free_public_network", | ||||
|             "networkAuthenticationType": "acceptance_of_terms_and_conditions", | ||||
|             "associatedSsids": [ | ||||
|                 "TipWlan-cloud-hotspot-access" | ||||
|             ], | ||||
|             "profileType": "passpoint" | ||||
|         }, | ||||
|         "whitelistDomain": null, | ||||
|         "emergencyServicesReachable": true, | ||||
|         "unauthenticatedEmergencyServiceAccessible": false, | ||||
|         "internetConnectivity": true, | ||||
|         "connectionCapabilitySet": [ | ||||
|             { | ||||
|                 "model_type": "PasspointConnectionCapability", | ||||
|                 "connectionCapabilitiesPortNumber": 8888, | ||||
|                 "connectionCapabilitiesIpProtocol": "TCP", | ||||
|                 "connectionCapabilitiesStatus": "open" | ||||
|             } | ||||
|         ], | ||||
|         "ipAddressTypeAvailability": "public_IPv4_address_available", | ||||
|         "qosMapSetConfiguration": null, | ||||
|         "apGeospatialLocation": null, | ||||
|         "apCivicLocation": null, | ||||
|         "apPublicLocationIdUri": null, | ||||
|         "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", | ||||
|         "anqpDomainId": 1234, | ||||
|         "disableDownstreamGroupAddressedForwarding": false, | ||||
|         "enable2pt4GHz": true, | ||||
|         "enable5GHz": true, | ||||
|         "associatedAccessSsidProfileIds": [ | ||||
|             32 | ||||
|         ], | ||||
|         "osuSsidProfileId": 31, | ||||
|         "passpointOperatorProfileId": 34, | ||||
|         "passpointVenueProfileId": 33, | ||||
|         "passpointOsuProviderProfileIds": [ | ||||
|             35, | ||||
|             36 | ||||
|         ], | ||||
|         "accessNetworkType": "free_public_network", | ||||
|         "networkAuthenticationType": "acceptance_of_terms_and_conditions", | ||||
|         "profileType": "passpoint" | ||||
|     }, | ||||
|     "createdTimestamp": 0, | ||||
|     "lastModifiedTimestamp": 1611264539331, | ||||
|     "childProfileIds": [ | ||||
|         33, | ||||
|         34, | ||||
|         35, | ||||
|         36 | ||||
|     ] | ||||
| } | ||||
|         "createdTimestamp": 1605711223339, | ||||
|         "lastModifiedTimestamp": 1605711223339, | ||||
|         "childProfileIds": [ | ||||
|             17, | ||||
|             18, | ||||
|             19, | ||||
|             20 | ||||
|         ] | ||||
|     } | ||||
| ] | ||||
|   | ||||
| @@ -1,263 +1,270 @@ | ||||
| [ | ||||
|     { | ||||
|         "model_type": "Profile", | ||||
|         "id": 35, | ||||
|         "customerId": 2, | ||||
|         "profileType": "passpoint_osu_id_provider", | ||||
|         "name": "provider1-profile-2021-01-21T21:28:59.057Z", | ||||
|         "details": { | ||||
|             "model_type": "PasspointOsuProviderProfile", | ||||
|             "mccMncList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointMccMnc", | ||||
|                     "mcc": 302, | ||||
|                     "mnc": 720, | ||||
|                     "iso": "ca", | ||||
|                     "country": "Canada", | ||||
|                     "countryCode": 1, | ||||
|                     "network": "Rogers AT&T Wireless", | ||||
|                     "mccMncPairing": "302,720" | ||||
|                 } | ||||
|             ], | ||||
|             "naiRealmList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointNaiRealmInformation", | ||||
|                     "naiRealms": [ | ||||
|                         "rogers.com" | ||||
|                     ], | ||||
|                     "encoding": 0, | ||||
|                     "eapMethods": [ | ||||
|                         "EAP-TTLS with username/password", | ||||
|                         "EAP-TLS with certificate" | ||||
|                     ], | ||||
|                     "eapMap": { | ||||
|                         "EAP-TTLS with username/password": [ | ||||
|                             "Credential Type:username/password", | ||||
|                             "Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
|                         ], | ||||
|                         "EAP-TLS with certificate": [ | ||||
|                             "Credential Type:Certificate" | ||||
|                         ] | ||||
|                     } | ||||
|                 } | ||||
|             ], | ||||
|             "osuIconList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_CA", | ||||
|                     "iconName": "icon32eng", | ||||
|                     "filePath": "/tmp/icon32eng.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32eng.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "fra", | ||||
|                     "iconLocale": "fr_CA", | ||||
|                     "iconName": "icon32fra", | ||||
|                     "filePath": "/tmp/icon32fra.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32fra.png", | ||||
|                     "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_US", | ||||
|                     "iconName": "icon32usa", | ||||
|                     "filePath": "/tmp/icon32usa.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32usa.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
|                 } | ||||
|             ], | ||||
|             "osuServerUri": "https://example.com/osu/rogers", | ||||
|             "osuFriendlyName": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example provider rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example provider rogers" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemple de fournisseur rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemple de fournisseur rogers" | ||||
|                 } | ||||
|             ], | ||||
|             "osuNaiStandalone": "anonymous@rogers.com", | ||||
|             "osuNaiShared": "anonymous@rogers.com", | ||||
|             "osuMethodList": [ | ||||
|                 1, | ||||
|                 0 | ||||
|             ], | ||||
|             "osuServiceDescription": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example services rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example services rogers" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemples de services rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemples de services rogers" | ||||
|                 } | ||||
|             ], | ||||
|             "roamingOi": [ | ||||
|                 "BAA2D00100", | ||||
|                 "BAA2D00000" | ||||
|             ], | ||||
|             "profileType": "passpoint_osu_id_provider" | ||||
|         }, | ||||
|         "createdTimestamp": 1611264539070, | ||||
|         "lastModifiedTimestamp": 1611264539070, | ||||
|         "childProfileIds": [] | ||||
|     }, | ||||
|     { | ||||
|         "model_type": "Profile", | ||||
|         "id": 36, | ||||
|         "customerId": 2, | ||||
|         "profileType": "passpoint_osu_id_provider", | ||||
|         "name": "provider2-profile-2021-01-21T21:28:59.118Z", | ||||
|         "details": { | ||||
|             "model_type": "PasspointOsuProviderProfile", | ||||
|             "mccMncList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointMccMnc", | ||||
|                     "mcc": 302, | ||||
|                     "mnc": 220, | ||||
|                     "iso": "ca", | ||||
|                     "country": "Canada", | ||||
|                     "countryCode": 1, | ||||
|                     "network": "Telus Mobility", | ||||
|                     "mccMncPairing": "302,220" | ||||
|                 } | ||||
|             ], | ||||
|             "naiRealmList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointNaiRealmInformation", | ||||
|                     "naiRealms": [ | ||||
|                         "telus.com" | ||||
|                     ], | ||||
|                     "encoding": 0, | ||||
|                     "eapMethods": [ | ||||
|                         "EAP-TTLS with username/password", | ||||
|                         "EAP-TLS with certificate" | ||||
|                     ], | ||||
|                     "eapMap": { | ||||
|                         "EAP-TTLS with username/password": [ | ||||
|                             "Credential Type:username/password", | ||||
|                             "Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
|                         ], | ||||
|                         "EAP-TLS with certificate": [ | ||||
|                             "Credential Type:Certificate" | ||||
|                         ] | ||||
|                     } | ||||
|                 } | ||||
|             ], | ||||
|             "osuIconList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_CA", | ||||
|                     "iconName": "icon32eng", | ||||
|                     "filePath": "/tmp/icon32eng.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32eng.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "fra", | ||||
|                     "iconLocale": "fr_CA", | ||||
|                     "iconName": "icon32fra", | ||||
|                     "filePath": "/tmp/icon32fra.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32fra.png", | ||||
|                     "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_US", | ||||
|                     "iconName": "icon32usa", | ||||
|                     "filePath": "/tmp/icon32usa.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32usa.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
|                 } | ||||
|             ], | ||||
|             "osuServerUri": "https://example.com/osu/telus", | ||||
|             "osuFriendlyName": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example provider telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example provider telus" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemple de fournisseur telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemple de fournisseur telus" | ||||
|                 } | ||||
|             ], | ||||
|             "osuNaiStandalone": "anonymous@telus.com", | ||||
|             "osuNaiShared": "anonymous@telus.com", | ||||
|             "osuMethodList": [ | ||||
|                 1, | ||||
|                 0 | ||||
|             ], | ||||
|             "osuServiceDescription": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example services telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example services telus" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemples de services telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemples de services telus" | ||||
|                 } | ||||
|             ], | ||||
|             "roamingOi": [ | ||||
|                 "004096", | ||||
|                 "005014", | ||||
|                 "F4F5E8F5F4" | ||||
|             ], | ||||
|             "profileType": "passpoint_osu_id_provider" | ||||
|         }, | ||||
|         "createdTimestamp": 1611264539131, | ||||
|         "lastModifiedTimestamp": 1611264539131, | ||||
|         "childProfileIds": [] | ||||
|     } | ||||
| ] | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 19, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_osu_id_provider", | ||||
| 		"name": "TipWlan-Hotspot20-OSU-Provider", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOsuProviderProfile", | ||||
| 			"domainName": "rogers.com", | ||||
| 			"mccMncList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointMccMnc", | ||||
| 					"mcc": 302, | ||||
| 					"mnc": 720, | ||||
| 					"iso": "ca", | ||||
| 					"country": "Canada", | ||||
| 					"countryCode": 1, | ||||
| 					"network": "Rogers AT&T Wireless", | ||||
| 					"mccMncPairing": "302,720" | ||||
| 				} | ||||
| 			], | ||||
| 			"naiRealmList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointNaiRealmInformation", | ||||
| 					"naiRealms": [ | ||||
| 						"rogers.com" | ||||
| 					], | ||||
| 					"encoding": 0, | ||||
| 					"eapMethods": [ | ||||
| 						"EAP-TTLS with username/password", | ||||
| 						"EAP-TLS with certificate" | ||||
| 					], | ||||
| 					"eapMap": { | ||||
| 						"EAP-TTLS with username/password": [ | ||||
| 							"Credential Type:username/password", | ||||
| 							"Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
| 						], | ||||
| 						"EAP-TLS with certificate": [ | ||||
| 							"Credential Type:Certificate" | ||||
| 						] | ||||
| 					} | ||||
| 				} | ||||
| 			], | ||||
| 			"osuIconList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_CA", | ||||
| 					"iconName": "icon32eng", | ||||
| 					"filePath": "/tmp/icon32eng.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32eng.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "fra", | ||||
| 					"iconLocale": "fr_CA", | ||||
| 					"iconName": "icon32fra", | ||||
| 					"filePath": "/tmp/icon32fra.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32fra.png", | ||||
| 					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_US", | ||||
| 					"iconName": "icon32usa", | ||||
| 					"filePath": "/tmp/icon32usa.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32usa.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuServerUri": "https://example.com/osu/rogers", | ||||
| 			"osuFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example provider rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example provider rogers" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de fournisseur rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemple de fournisseur rogers" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuNaiStandalone": "anonymous@rogers.com", | ||||
| 			"osuNaiShared": "anonymous@rogers.com", | ||||
| 			"osuMethodList": [ | ||||
| 				1, | ||||
| 				0 | ||||
| 			], | ||||
| 			"osuServiceDescription": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example services rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example services rogers" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemples de services rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemples de services rogers" | ||||
| 				} | ||||
| 			], | ||||
| 			"roamingOi": [ | ||||
| 				1, | ||||
| 				2, | ||||
| 				3, | ||||
| 				4 | ||||
| 			], | ||||
| 			"profileType": "passpoint_osu_id_provider" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711165325, | ||||
| 		"lastModifiedTimestamp": 1605711165325, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 20, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_osu_id_provider", | ||||
| 		"name": "TipWlan-Hotspot20-OSU-Provider-2", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOsuProviderProfile", | ||||
| 			"domainName": "telus.com", | ||||
| 			"mccMncList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointMccMnc", | ||||
| 					"mcc": 302, | ||||
| 					"mnc": 220, | ||||
| 					"iso": "ca", | ||||
| 					"country": "Canada", | ||||
| 					"countryCode": 1, | ||||
| 					"network": "Telus Mobility", | ||||
| 					"mccMncPairing": "302,220" | ||||
| 				} | ||||
| 			], | ||||
| 			"naiRealmList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointNaiRealmInformation", | ||||
| 					"naiRealms": [ | ||||
| 						"telus.com" | ||||
| 					], | ||||
| 					"encoding": 0, | ||||
| 					"eapMethods": [ | ||||
| 						"EAP-TTLS with username/password", | ||||
| 						"EAP-TLS with certificate" | ||||
| 					], | ||||
| 					"eapMap": { | ||||
| 						"EAP-TTLS with username/password": [ | ||||
| 							"Credential Type:username/password", | ||||
| 							"Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
| 						], | ||||
| 						"EAP-TLS with certificate": [ | ||||
| 							"Credential Type:Certificate" | ||||
| 						] | ||||
| 					} | ||||
| 				} | ||||
| 			], | ||||
| 			"osuIconList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_CA", | ||||
| 					"iconName": "icon32eng", | ||||
| 					"filePath": "/tmp/icon32eng.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32eng.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "fra", | ||||
| 					"iconLocale": "fr_CA", | ||||
| 					"iconName": "icon32fra", | ||||
| 					"filePath": "/tmp/icon32fra.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32fra.png", | ||||
| 					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_US", | ||||
| 					"iconName": "icon32usa", | ||||
| 					"filePath": "/tmp/icon32usa.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32usa.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuServerUri": "https://example.com/osu/telus", | ||||
| 			"osuFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example provider telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example provider telus" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de fournisseur telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemple de fournisseur telus" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuNaiStandalone": "anonymous@telus.com", | ||||
| 			"osuNaiShared": "anonymous@telus.com", | ||||
| 			"osuMethodList": [ | ||||
| 				1, | ||||
| 				0 | ||||
| 			], | ||||
| 			"osuServiceDescription": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example services telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example services telus" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemples de services telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemples de services telus" | ||||
| 				} | ||||
| 			], | ||||
| 			"roamingOi": [ | ||||
| 				1, | ||||
| 				2, | ||||
| 				3, | ||||
| 				4 | ||||
| 			], | ||||
| 			"profileType": "passpoint_osu_id_provider" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711165330, | ||||
| 		"lastModifiedTimestamp": 1605711165330, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| [ | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 10, | ||||
| 		"id": 22, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "service_metrics_collection_config", | ||||
| 		"name": "Metrics-Profile-3-Radios", | ||||
| 		"name": "Metrics-Profile-Passpoint", | ||||
| 		"details": { | ||||
| 			"model_type": "ServiceMetricsCollectionConfigProfile", | ||||
| 			"radioTypes": [ | ||||
| @@ -21,6 +21,30 @@ | ||||
| 			], | ||||
| 			"metricConfigParameterMap": { | ||||
| 				"ApNode": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -45,42 +69,6 @@ | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -92,16 +80,21 @@ | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				], | ||||
| 				"ApSsid": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -115,6 +108,13 @@ | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					} | ||||
| 				], | ||||
| 				"Client": [ | ||||
| @@ -144,12 +144,12 @@ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| @@ -168,12 +168,12 @@ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| @@ -192,29 +192,41 @@ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				], | ||||
| 				"Neighbour": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -239,6 +251,18 @@ | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -262,37 +286,13 @@ | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"profileType": "service_metrics_collection_config" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1606778369931, | ||||
| 		"lastModifiedTimestamp": 1606778369931, | ||||
| 		"createdTimestamp": 1605711195528, | ||||
| 		"lastModifiedTimestamp": 1605711195528, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
|   | ||||
| @@ -1,41 +1,37 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 34, | ||||
|     "customerId": 2, | ||||
|     "profileType": "passpoint_operator", | ||||
|     "name": "operator-profile-2021-01-21T21:28:58.994Z", | ||||
|     "details": { | ||||
|         "model_type": "PasspointOperatorProfile", | ||||
|         "serverOnlyAuthenticatedL2EncryptionNetwork": false, | ||||
|         "x509CertificateLocation": "/etc/ca.pem", | ||||
|         "operatorFriendlyName": [ | ||||
|             { | ||||
|                 "model_type": "PasspointDuple", | ||||
|                 "locale": "fra", | ||||
|                 "dupleIso3Language": "fra", | ||||
|                 "dupleName": "Nom de l'opérateur convivial par défaut", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "asDuple": "fra:Nom de l'opérateur convivial par défaut" | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "PasspointDuple", | ||||
|                 "locale": "eng", | ||||
|                 "dupleIso3Language": "eng", | ||||
|                 "dupleName": "Default friendly passpoint_operator name", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "asDuple": "eng:Default friendly passpoint_operator name" | ||||
|             } | ||||
|         ], | ||||
|         "domainNameList": [ | ||||
|             "bell.ca", | ||||
|             "telus.com", | ||||
|             "rogers.com" | ||||
|         ], | ||||
|         "profileType": "passpoint_operator" | ||||
|     }, | ||||
|     "createdTimestamp": 1611264539004, | ||||
|     "lastModifiedTimestamp": 1611264539004, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| ] | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 17, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_operator", | ||||
| 		"name": "TipWlan-Hotspot20-Operator", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOperatorProfile", | ||||
| 			"serverOnlyAuthenticatedL2EncryptionNetwork": false, | ||||
| 			"x509CertificateLocation": "/etc/ca.pem", | ||||
| 			"operatorFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Default friendly passpoint_operator name", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Default friendly passpoint_operator name" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Nom de l'opérateur convivial par défaut", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Nom de l'opérateur convivial par défaut" | ||||
| 				} | ||||
| 			], | ||||
| 			"profileType": "passpoint_operator" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164952, | ||||
| 		"lastModifiedTimestamp": 1605711164952, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -1,24 +1,34 @@ | ||||
| [ | ||||
|   { | ||||
|     "model_type": "Profile", | ||||
|     "id": 1, | ||||
|     "customerId": 2, | ||||
|     "profileType": "radius", | ||||
|     "name": "Radius-Profile", | ||||
|     "details": { | ||||
|       "model_type": "RadiusProfile", | ||||
|       "primaryRadiusAuthServer": { | ||||
|         "model_type": "RadiusServer", | ||||
|         "ipAddress": "192.168.0.1", | ||||
|         "secret": "testing123", | ||||
|         "port": 1812, | ||||
|         "timeout": null | ||||
|       }, | ||||
|       "profileType": "radius" | ||||
|     }, | ||||
|     "createdTimestamp": 1611262628767, | ||||
|     "lastModifiedTimestamp": 1611262628767, | ||||
|     "childProfileIds": [ | ||||
|     ] | ||||
|   } | ||||
| ] | ||||
|         { | ||||
|             "model_type": "Profile", | ||||
|             "id": 1, | ||||
|             "customerId": 2, | ||||
|             "profileType": "radius", | ||||
|             "name": "Radius-Profile", | ||||
|             "details": { | ||||
|                 "model_type": "RadiusProfile", | ||||
|                 "subnetConfiguration": null, | ||||
|                 "serviceRegionMap": { | ||||
|                     "Ottawa": { | ||||
|                         "model_type": "RadiusServiceRegion", | ||||
|                         "serverMap": { | ||||
|                             "Radius-Profile": [ | ||||
|                                 { | ||||
|                                     "model_type": "RadiusServer", | ||||
|                                     "ipAddress": "192.168.0.1", | ||||
|                                     "secret": "testing123", | ||||
|                                     "authPort": 1812, | ||||
|                                     "timeout": null | ||||
|                                 } | ||||
|                             ] | ||||
|                         }, | ||||
|                         "regionName": "Ottawa" | ||||
|                     } | ||||
|                 }, | ||||
|                 "profileType": "radius" | ||||
|             }, | ||||
|             "createdTimestamp": 1601961451668, | ||||
|             "lastModifiedTimestamp": 1601961451668, | ||||
|             "childProfileIds": [] | ||||
|         } | ||||
| ] | ||||
| @@ -1,204 +1,205 @@ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 4, | ||||
|     "customerId": 2, | ||||
|     "profileType": "rf", | ||||
|     "name": "TipWlan-rf", | ||||
|     "details": { | ||||
|         "model_type": "RfConfiguration", | ||||
|         "rfConfigMap": { | ||||
|             "is5GHz": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHz", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "radioMode": "modeN", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is20MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 20, | ||||
|                     "minLoadFactor": 50 | ||||
|                 } | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "profileType": "rf" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248650, | ||||
|     "lastModifiedTimestamp": 1612285248650, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| 	"model_type": "Profile", | ||||
| 	"id": 21, | ||||
| 	"customerId": 2, | ||||
| 	"profileType": "rf", | ||||
| 	"name": "TipWlan-rf-passpoint", | ||||
| 	"details": { | ||||
| 		"model_type": "RfConfiguration", | ||||
| 		"rfConfigMap": { | ||||
| 			"is5GHz": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHz", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is2dot4GHz": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is2dot4GHz", | ||||
| 				"radioMode": "modeN", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is20MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 20, | ||||
| 					"minLoadFactor": 50 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is5GHzU": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHzU", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is5GHzL": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHzL", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		"profileType": "rf" | ||||
| 	}, | ||||
| 	"createdTimestamp": 1605711191976, | ||||
| 	"lastModifiedTimestamp": 1605711191976, | ||||
| 	"childProfileIds": [ | ||||
| 	] | ||||
| } | ||||
|   | ||||
| @@ -1,75 +1,134 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 2, | ||||
|     "customerId": 2, | ||||
|     "profileType": "ssid", | ||||
|     "name": "TipWlan-cloud-3-radios", | ||||
|     "details": { | ||||
|         "model_type": "SsidConfiguration", | ||||
|         "ssid": "TipWlan-cloud-3-radios", | ||||
|         "appliedRadios": [ | ||||
|             "is5GHzU", | ||||
|             "is2dot4GHz", | ||||
|             "is5GHzL" | ||||
|         ], | ||||
|         "ssidAdminState": "enabled", | ||||
|         "secureMode": "wpa2OnlyPSK", | ||||
|         "vlanId": 1, | ||||
|         "keyStr": "openwifi", | ||||
|         "broadcastSsid": "enabled", | ||||
|         "keyRefresh": 0, | ||||
|         "noLocalSubnets": false, | ||||
|         "radiusServiceId": 0, | ||||
|         "radiusAcountingServiceInterval": 60, | ||||
|         "captivePortalId": null, | ||||
|         "bandwidthLimitDown": 0, | ||||
|         "bandwidthLimitUp": 0, | ||||
|         "clientBandwidthLimitDown": 0, | ||||
|         "clientBandwidthLimitUp": 0, | ||||
|         "videoTrafficOnly": false, | ||||
|         "radioBasedConfigs": { | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is5GHz": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             } | ||||
|         }, | ||||
|         "bonjourGatewayProfileId": null, | ||||
|         "enable80211w": null, | ||||
|         "wepConfig": null, | ||||
|         "forwardMode": "BRIDGE", | ||||
|         "profileType": "ssid", | ||||
|         "radiusClientConfiguration": { | ||||
|             "model_type": "RadiusNasConfiguration", | ||||
|             "nasClientId": "DEFAULT", | ||||
|             "nasClientIp": "WAN_IP", | ||||
|             "userDefinedNasId": null, | ||||
|             "userDefinedNasIp": null, | ||||
|             "operatorId": null | ||||
|         } | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248638, | ||||
|     "lastModifiedTimestamp": 1612285248638, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 15, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "ssid", | ||||
| 		"name": "TipWlan-cloud-hotspot-access", | ||||
| 		"details": { | ||||
| 			"model_type": "SsidConfiguration", | ||||
| 			"ssid": "TipWlan-cloud-hotspot-access", | ||||
| 			"appliedRadios": [ | ||||
| 				"is5GHzL", | ||||
| 				"is5GHzU" | ||||
| 			], | ||||
| 			"ssidAdminState": "enabled", | ||||
| 			"secureMode": "wpa2PSK", | ||||
| 			"vlanId": 1, | ||||
| 			"keyStr": "testing123", | ||||
| 			"broadcastSsid": "enabled", | ||||
| 			"keyRefresh": 0, | ||||
| 			"noLocalSubnets": false, | ||||
| 			"radiusServiceName": null, | ||||
| 			"radiusAccountingServiceName": null, | ||||
| 			"captivePortalId": null, | ||||
| 			"bandwidthLimitDown": 0, | ||||
| 			"bandwidthLimitUp": 0, | ||||
| 			"clientBandwidthLimitDown": 0, | ||||
| 			"clientBandwidthLimitUp": 0, | ||||
| 			"videoTrafficOnly": false, | ||||
| 			"radioBasedConfigs": { | ||||
| 				"is5GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is2dot4GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzU": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzL": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				} | ||||
| 			}, | ||||
| 			"bonjourGatewayProfileId": null, | ||||
| 			"enable80211w": null, | ||||
| 			"wepConfig": null, | ||||
| 			"forwardMode": null, | ||||
| 			"profileType": "ssid" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164949, | ||||
| 		"lastModifiedTimestamp": 1605711223372, | ||||
| 		"childProfileIds": [ | ||||
| 			24 | ||||
| 		] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 16, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "ssid", | ||||
| 		"name": "TipWlan-cloud-hotspot-osu", | ||||
| 		"details": { | ||||
| 			"model_type": "SsidConfiguration", | ||||
| 			"ssid": "TipWlan-cloud-hotspot-osu", | ||||
| 			"appliedRadios": [ | ||||
| 				"is2dot4GHz" | ||||
| 			], | ||||
| 			"ssidAdminState": "enabled", | ||||
| 			"secureMode": "open", | ||||
| 			"vlanId": 1, | ||||
| 			"keyStr": null, | ||||
| 			"broadcastSsid": "enabled", | ||||
| 			"keyRefresh": 0, | ||||
| 			"noLocalSubnets": false, | ||||
| 			"radiusServiceName": null, | ||||
| 			"radiusAccountingServiceName": null, | ||||
| 			"captivePortalId": null, | ||||
| 			"bandwidthLimitDown": 0, | ||||
| 			"bandwidthLimitUp": 0, | ||||
| 			"clientBandwidthLimitDown": 0, | ||||
| 			"clientBandwidthLimitUp": 0, | ||||
| 			"videoTrafficOnly": false, | ||||
| 			"radioBasedConfigs": { | ||||
| 				"is5GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is2dot4GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzU": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzL": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				} | ||||
| 			}, | ||||
| 			"bonjourGatewayProfileId": null, | ||||
| 			"enable80211w": null, | ||||
| 			"wepConfig": null, | ||||
| 			"forwardMode": null, | ||||
| 			"profileType": "ssid" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164950, | ||||
| 		"lastModifiedTimestamp": 1605711171732, | ||||
| 		"childProfileIds": [ | ||||
| 			19, | ||||
| 			20 | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -1,42 +1,43 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 33, | ||||
|     "customerId": 2, | ||||
|     "profileType": "passpoint_venue", | ||||
|     "name": "venue-profile-2021-01-21T21:28:58.934Z", | ||||
|     "details": { | ||||
|         "model_type": "PasspointVenueProfile", | ||||
|         "venueNameSet": [ | ||||
|             { | ||||
|                 "model_type": "PasspointVenueName", | ||||
|                 "locale": "fra", | ||||
|                 "dupleIso3Language": "fra", | ||||
|                 "dupleName": "Exemple de lieu", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "venueUrl": "http://www.example.com/info-fra", | ||||
|                 "asDuple": "fra:Exemple de lieu" | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "PasspointVenueName", | ||||
|                 "locale": "eng", | ||||
|                 "dupleIso3Language": "eng", | ||||
|                 "dupleName": "Example passpoint_venue", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "venueUrl": "http://www.example.com/info-eng", | ||||
|                 "asDuple": "eng:Example passpoint_venue" | ||||
|             } | ||||
|         ], | ||||
|         "venueTypeAssignment": { | ||||
|             "model_type": "PasspointVenueTypeAssignment", | ||||
|             "venueDescription": "Research and Development Facility", | ||||
|             "venueGroupId": 2, | ||||
|             "venueTypeId": 8 | ||||
|         }, | ||||
|         "profileType": "passpoint_venue" | ||||
|     }, | ||||
|     "createdTimestamp": 1611264538947, | ||||
|     "lastModifiedTimestamp": 1611264538947, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| ] | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 18, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_venue", | ||||
| 		"name": "TipWlan-Hotspot20-Venue", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointVenueProfile", | ||||
| 			"venueNameSet": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointVenueName", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de lieu", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"venueUrl": "http://www.example.com/info-fra", | ||||
| 					"asDuple": "fra:Exemple de lieu" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointVenueName", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example passpoint_venue", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"venueUrl": "http://www.example.com/info-eng", | ||||
| 					"asDuple": "eng:Example passpoint_venue" | ||||
| 				} | ||||
| 			], | ||||
| 			"venueTypeAssignment": { | ||||
| 				"model_type": "ProfileVenueTypeAssignment", | ||||
| 				"venueDescription": "Research and Development Facility", | ||||
| 				"venueGroupId": 2, | ||||
| 				"venueTypeId": 8 | ||||
| 			}, | ||||
| 			"profileType": "passpoint_venue" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164956, | ||||
| 		"lastModifiedTimestamp": 1605711164956, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -56,8 +56,6 @@ RESTAPI_PROPS+=" -Dserver.port=443" | ||||
|  | ||||
| SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED" | ||||
|  | ||||
| JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } " | ||||
|  | ||||
| export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS" | ||||
| export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS" | ||||
|  | ||||
| java $ALL_PROPS -jar app.jar | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| 	<parent> | ||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||
| 		<version>1.2.0-SNAPSHOT</version> | ||||
| 		<version>0.0.1-SNAPSHOT</version> | ||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | ||||
| 	</parent> | ||||
| 	<artifactId>opensync-gateway-static-process</artifactId> | ||||
| @@ -18,7 +18,7 @@ | ||||
| 		<dependency> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<artifactId>opensync-ext-static</artifactId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 	</dependencies> | ||||
|   | ||||
| @@ -1,472 +1,221 @@ | ||||
| { | ||||
|     "model_type": "Equipment", | ||||
|     "id": 1, | ||||
|     "customerId": 2, | ||||
|     "profileId": 8, | ||||
|     "locationId": 8, | ||||
|   "model_type": "Equipment", | ||||
|   "id": 51, | ||||
|   "customerId": 2, | ||||
|   "profileId": 5, | ||||
|   "locationId": 8, | ||||
|   "equipmentType": "AP", | ||||
|   "inventoryId": "Test_Client_21P10C68818122", | ||||
|   "name": "Test_Client_21P10C68818122", | ||||
|   "details": { | ||||
|     "model_type": "ApElementConfiguration", | ||||
|     "equipmentModel": "EA8300-CA", | ||||
|     "elementConfigVersion": "AP-V1", | ||||
|     "equipmentType": "AP", | ||||
|     "inventoryId": "Open_AP_21P10C68818122", | ||||
|     "name": "Open_AP_21P10C68818122", | ||||
|     "details": { | ||||
|         "model_type": "ApElementConfiguration", | ||||
|         "equipmentModel": "EA8300-CA", | ||||
|         "elementConfigVersion": "AP-V1", | ||||
|         "equipmentType": "AP", | ||||
|         "deviceMode": "standaloneAP", | ||||
|         "gettingIP": "dhcp", | ||||
|         "staticIP": null, | ||||
|         "staticIpMaskCidr": null, | ||||
|         "staticIpGw": null, | ||||
|         "gettingDNS": "dhcp", | ||||
|         "staticDnsIp1": null, | ||||
|         "staticDnsIp2": null, | ||||
|         "peerInfoList": [], | ||||
|         "deviceName": "Open_AP_21P10C68818122", | ||||
|         "locationData": null, | ||||
|         "locallyConfiguredMgmtVlan": 0, | ||||
|         "locallyConfigured": false, | ||||
|         "deploymentType": "CEILING", | ||||
|         "syntheticClientEnabled": null, | ||||
|         "frameReportThrottleEnabled": true, | ||||
|         "antennaType": "OMNI", | ||||
|         "costSavingEventsEnabled": true, | ||||
|         "forwardMode": "BRIDGE", | ||||
|         "radioMap": { | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "channelNumber": 149, | ||||
|                 "manualChannelNumber": 149, | ||||
|                 "backupChannelNumber": 157, | ||||
|                 "manualBackupChannelNumber": 157, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 161, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 100, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 132, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 165, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 104, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 136, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 108, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 140, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 112, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 144, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 116, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 149, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 153, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 157, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     } | ||||
|                 ] | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "channelNumber": 6, | ||||
|                 "manualChannelNumber": 6, | ||||
|                 "backupChannelNumber": 11, | ||||
|                 "manualBackupChannelNumber": 11, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 1, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 2, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 3, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 4, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 5, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 6, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 7, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 8, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 9, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 10, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 11, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 20 | ||||
|                     } | ||||
|                 ] | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "ElementRadioConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "channelNumber": 36, | ||||
|                 "manualChannelNumber": 36, | ||||
|                 "backupChannelNumber": 44, | ||||
|                 "manualBackupChannelNumber": 44, | ||||
|                 "rxCellSizeDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "probeResponseThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "clientDisconnectThresholdDb": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": -90 | ||||
|                 }, | ||||
|                 "eirpTxPower": { | ||||
|                     "model_type": "SourceSelectionValue", | ||||
|                     "source": "profile", | ||||
|                     "value": 18 | ||||
|                 }, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "bestAPSteerType": "both", | ||||
|                 "deauthAttackDetection": null, | ||||
|                 "allowedChannelsPowerLevels": [ | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 52, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 36, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 56, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 40, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 60, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 44, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 64, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": true, | ||||
|                         "channelWidth": 80 | ||||
|                     }, | ||||
|                     { | ||||
|                         "model_type": "ChannelPowerLevel", | ||||
|                         "channelNumber": 48, | ||||
|                         "powerLevel": 18, | ||||
|                         "dfs": false, | ||||
|                         "channelWidth": 80 | ||||
|                     } | ||||
|                 ] | ||||
|             } | ||||
|     "deviceMode": "standaloneAP", | ||||
|     "gettingIP": "dhcp", | ||||
|     "staticIP": null, | ||||
|     "staticIpMaskCidr": null, | ||||
|     "staticIpGw": null, | ||||
|     "gettingDNS": "dhcp", | ||||
|     "staticDnsIp1": null, | ||||
|     "staticDnsIp2": null, | ||||
|     "peerInfoList": [], | ||||
|     "deviceName": "Default Device Name", | ||||
|     "locationData": null, | ||||
|     "locallyConfiguredMgmtVlan": 0, | ||||
|     "locallyConfigured": false, | ||||
|     "deploymentType": "CEILING", | ||||
|     "syntheticClientEnabled": null, | ||||
|     "frameReportThrottleEnabled": true, | ||||
|     "antennaType": "OMNI", | ||||
|     "costSavingEventsEnabled": true, | ||||
|     "forwardMode": "BRIDGE", | ||||
|     "radioMap": { | ||||
|       "is2dot4GHz": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is2dot4GHz", | ||||
|         "channelNumber": 6, | ||||
|         "manualChannelNumber": 6, | ||||
|         "backupChannelNumber": 11, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "advancedRadioMap": { | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 20, | ||||
|                         "minLoadFactor": 50 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 30, | ||||
|                         "minLoadFactor": 40 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "radioAdminState": "enabled", | ||||
|                 "fragmentationThresholdBytes": 2346, | ||||
|                 "uapsdState": "enabled", | ||||
|                 "stationIsolation": "disabled", | ||||
|                 "multicastRate": { | ||||
|                     "model_type": "SourceSelectionMulticast", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "managementRate": { | ||||
|                     "model_type": "SourceSelectionManagement", | ||||
|                     "source": "profile", | ||||
|                     "value": "auto" | ||||
|                 }, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "SourceSelectionSteering", | ||||
|                     "source": "manual", | ||||
|                     "value": { | ||||
|                         "model_type": "RadioBestApSettings", | ||||
|                         "mlComputed": true, | ||||
|                         "dropInSnrPercentage": 30, | ||||
|                         "minLoadFactor": 40 | ||||
|                     } | ||||
|                 }, | ||||
|                 "legacyBSSRate": "enabled", | ||||
|                 "dtimPeriod": 2, | ||||
|                 "deauthAttackDetection": null | ||||
|             } | ||||
|         } | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 6 | ||||
|       }, | ||||
|       "is5GHzU": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is5GHzU", | ||||
|         "channelNumber": 149, | ||||
|         "manualChannelNumber": 149, | ||||
|         "backupChannelNumber": 154, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 149 | ||||
|       }, | ||||
|       "is5GHzL": { | ||||
|         "model_type": "ElementRadioConfiguration", | ||||
|         "radioType": "is5GHzL", | ||||
|         "channelNumber": 36, | ||||
|         "manualChannelNumber": 36, | ||||
|         "backupChannelNumber": 44, | ||||
|         "bannedChannels": [], | ||||
|         "allowedChannels": [], | ||||
|         "rxCellSizeDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "probeResponseThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "clientDisconnectThresholdDb": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": -90 | ||||
|         }, | ||||
|         "eirpTxPower": { | ||||
|           "model_type": "SourceSelectionValue", | ||||
|         	 "source": "auto", | ||||
|           "value": 32 | ||||
|         }, | ||||
|         "perimeterDetectionEnabled": true, | ||||
|         "bestAPSteerType": "both", | ||||
|         "deauthAttackDetection": null, | ||||
|         "allowedChannelsPowerLevels": [], | ||||
|         "activeChannel": 36 | ||||
|       } | ||||
|     }, | ||||
|     "latitude": null, | ||||
|     "longitude": null, | ||||
|     "baseMacAddress": { | ||||
|         "model_type": "MacAddress", | ||||
|         "address": "JPWi7y5T", | ||||
|         "addressAsString": "24:f5:a2:ef:2e:53" | ||||
|     }, | ||||
|     "serial": "21P10C68818122", | ||||
|     "createdTimestamp": 1612285288821, | ||||
|     "lastModifiedTimestamp": 1612285293922 | ||||
| } | ||||
|     "advancedRadioMap": { | ||||
|       "is2dot4GHz": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is2dot4GHz", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       }, | ||||
|       "is5GHzU": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is5GHzU", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       }, | ||||
|       "is5GHzL": { | ||||
|         "model_type": "RadioConfiguration", | ||||
|         "radioType": "is5GHzL", | ||||
|         "radioAdminState": "enabled", | ||||
|         "fragmentationThresholdBytes": 2346, | ||||
|         "uapsdState": "enabled", | ||||
|         "stationIsolation": "disabled", | ||||
|         "managementRate": { | ||||
|           "model_type": "SourceSelectionManagement", | ||||
|           "source": "auto", | ||||
|           "value": "auto" | ||||
|         }, | ||||
|         "bestApSettings": { | ||||
|         "model_type": "SourceSelectionSteering", | ||||
|           "source": "auto", | ||||
|           "value": { | ||||
| 	          "model_type": "RadioBestApSettings", | ||||
| 	          "mlComputed": true, | ||||
| 	          "dropInSnrPercentage": 30, | ||||
| 	          "minLoadFactor": 40 | ||||
|           } | ||||
|         }, | ||||
|         "legacyBSSRate": "enabled", | ||||
|         "deauthAttackDetection": null | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "latitude": null, | ||||
|   "longitude": null, | ||||
|   "serial": "21P10C68818122", | ||||
|   "createdTimestamp": 1591653239821, | ||||
|   "lastModifiedTimestamp": 1591653241398 | ||||
| } | ||||
|   | ||||
| @@ -1,61 +1,60 @@ | ||||
| { | ||||
|     "model_type": "Location", | ||||
|     "id": 8, | ||||
|     "parentId": 0, | ||||
|     "locationType": "SITE", | ||||
|     "customerId": 2, | ||||
|     "name": "Ottawa", | ||||
|     "details": { | ||||
|         "model_type": "LocationDetails", | ||||
|         "countryCode": "CA", | ||||
|         "dailyActivityDetails": { | ||||
|             "SUNDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "MONDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "TUESDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "WEDNESDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "THURSDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "FRIDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             }, | ||||
|             "SATURDAY": { | ||||
|                 "model_type": "LocationActivityDetails", | ||||
|                 "busyTime": "13:30", | ||||
|                 "quietTime": "3:00", | ||||
|                 "timezone": "US/Eastern" | ||||
|             } | ||||
|         }, | ||||
|         "maintenanceWindow": null, | ||||
|         "rrmEnabled": true, | ||||
|         "timezone": "US/Eastern" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285243534, | ||||
|     "lastModifiedTimestamp": 1612285243534 | ||||
|   "model_type" : "Location", | ||||
|   "id" : 8, | ||||
|   "parentId" : 0, | ||||
|   "locationType" : "SITE", | ||||
|   "customerId" : 2, | ||||
|   "name" : "Ottawa", | ||||
|   "details" : { | ||||
|     "model_type" : "LocationDetails", | ||||
|     "countryCode" : "ca", | ||||
|     "maintenanceWindow" : null, | ||||
|     "rrmEnabled" : true, | ||||
|     "dailyActivityDetails" : { | ||||
|       "SUNDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "MONDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "TUESDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "WEDNESDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "THURSDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "FRIDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       }, | ||||
|       "SATURDAY" : { | ||||
|         "model_type" : "LocationActivityDetails", | ||||
|         "busyTime" : "13:30", | ||||
|         "quietTime" : "3:30", | ||||
|         "timezone" : "US/Eastern" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "createdTimestamp" : 1590607043540, | ||||
|   "lastModifiedTimestamp" : 1590607043540 | ||||
| } | ||||
| @@ -1,58 +1,55 @@ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 8, | ||||
|     "customerId": 2, | ||||
|     "profileType": "equipment_ap", | ||||
|     "name": "ApProfile-3-radios", | ||||
|     "details": { | ||||
|         "model_type": "ApNetworkConfiguration", | ||||
|         "networkConfigVersion": "AP-1", | ||||
|         "equipmentType": "AP", | ||||
|         "vlanNative": true, | ||||
|         "vlan": 0, | ||||
|         "ntpServer": { | ||||
|             "model_type": "AutoOrManualString", | ||||
|             "auto": true, | ||||
|             "value": "pool.ntp.org" | ||||
|         }, | ||||
|         "syslogRelay": null, | ||||
|         "rtlsSettings": null, | ||||
|         "syntheticClientEnabled": true, | ||||
|         "ledControlEnabled": true, | ||||
|         "equipmentDiscovery": false, | ||||
|         "radioMap": { | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioProfileConfiguration", | ||||
|                 "bestApEnabled": true, | ||||
|                 "bestAPSteerType": "both" | ||||
|             } | ||||
|         }, | ||||
|         "greTunnelConfigurations": [ | ||||
|             { | ||||
|                 "model_type": "GreTunnelConfiguration", | ||||
|                 "greTunnelName": "gre1", | ||||
|                 "greRemoteInetAddr": "192.168.1.101", | ||||
|                 "vlanIdsInGreTunnel": [ | ||||
|                     100 | ||||
|                 ] | ||||
|             } | ||||
|         ], | ||||
|         "profileType": "equipment_ap" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248925, | ||||
|     "lastModifiedTimestamp": 1612285628377, | ||||
|     "childProfileIds": [ | ||||
|         2, | ||||
|         4 | ||||
|     ] | ||||
| } | ||||
| 	"model_type": "Profile", | ||||
| 	"id": 23, | ||||
| 	"customerId": 2, | ||||
| 	"profileType": "equipment_ap", | ||||
| 	"name": "ApProfile-3-radios-passpoint", | ||||
| 	"details": { | ||||
| 		"model_type": "ApNetworkConfiguration", | ||||
| 		"networkConfigVersion": "AP-1", | ||||
| 		"equipmentType": "AP", | ||||
| 		"vlanNative": true, | ||||
| 		"vlan": 0, | ||||
| 		"ntpServer": { | ||||
| 			"model_type": "AutoOrManualString", | ||||
| 			"auto": true, | ||||
| 			"value": "pool.ntp.org" | ||||
| 		}, | ||||
| 		"syslogRelay": null, | ||||
| 		"rtlsSettings": null, | ||||
| 		"syntheticClientEnabled": true, | ||||
| 		"ledControlEnabled": true, | ||||
| 		"equipmentDiscovery": false, | ||||
| 		"greTunnelName": null, | ||||
| 		"greParentIfName": null, | ||||
| 		"greLocalInetAddr": null, | ||||
| 		"greRemoteInetAddr": null, | ||||
| 		"greRemoteMacAddr": null, | ||||
| 		"radioMap": { | ||||
| 			"is2dot4GHz": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			}, | ||||
| 			"is5GHzU": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			}, | ||||
| 			"is5GHzL": { | ||||
| 				"model_type": "RadioProfileConfiguration", | ||||
| 				"bestApEnabled": true, | ||||
| 				"bestAPSteerType": "both" | ||||
| 			} | ||||
| 		}, | ||||
| 		"profileType": "equipment_ap" | ||||
| 	}, | ||||
| 	"createdTimestamp": 1605711197140, | ||||
| 	"lastModifiedTimestamp": 1605711197140, | ||||
| 	"childProfileIds": [ | ||||
| 		16, | ||||
| 		21, | ||||
| 		22, | ||||
| 		15 | ||||
| 	] | ||||
| } | ||||
|   | ||||
| @@ -1,58 +1,135 @@ | ||||
| [ | ||||
|   { | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 5, | ||||
|     "id": 14, | ||||
|     "customerId": 2, | ||||
|     "profileType": "captive_portal", | ||||
|     "name": "Captive-portal", | ||||
|     "details": { | ||||
|       "model_type": "CaptivePortalConfiguration", | ||||
|       "name": "Default", | ||||
|       "browserTitle": "Captive-portal", | ||||
|       "headerContent": "Captive Portal", | ||||
|       "userAcceptancePolicy": "Please agree to the following terms for using this network:", | ||||
|       "successPageMarkdownText": "You are now authorized and connected to the network.", | ||||
|       "redirectURL": "https://www.google.com", | ||||
|       "externalCaptivePortalURL": null, | ||||
|       "sessionTimeoutInMinutes": 10, | ||||
|       "logoFile": { | ||||
|         "model_type": "ManagedFileInfo", | ||||
|         "md5checksum": null, | ||||
|         "lastModifiedTimestamp": null, | ||||
|         "apExportUrl": "/filestore/tip-logo-mobile", | ||||
|         "fileCategory": "CaptivePortalLogo", | ||||
|         "fileType": "PNG", | ||||
|         "altSlot": false | ||||
|       }, | ||||
|       "backgroundFile": { | ||||
|         "model_type": "ManagedFileInfo", | ||||
|         "md5checksum": null, | ||||
|         "lastModifiedTimestamp": null, | ||||
|         "apExportUrl": "/filestore/tip-logo", | ||||
|         "fileCategory": "CaptivePortalBackground", | ||||
|         "fileType": "PNG", | ||||
|         "altSlot": false | ||||
|       }, | ||||
|       "walledGardenAllowlist": [ | ||||
|       ], | ||||
|       "usernamePasswordFile": null, | ||||
|       "authenticationType": "guest", | ||||
|       "radiusAuthMethod": "CHAP", | ||||
|       "maxUsersWithSameCredentials": 3, | ||||
|       "externalPolicyFile": null, | ||||
|       "backgroundPosition": "left_top", | ||||
|       "backgroundRepeat": "no_repeat", | ||||
|       "radiusServiceId": 0, | ||||
|       "expiryType": "time_limited", | ||||
|       "userList": [ | ||||
|       ], | ||||
|       "macAllowList": [ | ||||
|       ], | ||||
|       "profileType": "captive_portal" | ||||
|         "model_type": "CaptivePortalConfiguration", | ||||
|         "name": "Captive-portal", | ||||
|         "browserTitle": "Access the network as Guest", | ||||
|         "headerContent": "Captive Portal", | ||||
|         "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.", | ||||
|         "successPageMarkdownText": "Welcome to the network", | ||||
|         "redirectURL": "", | ||||
|         "externalCaptivePortalURL": null, | ||||
|         "sessionTimeoutInMinutes": 60, | ||||
|         "logoFile": null, | ||||
|         "backgroundFile": null, | ||||
|         "walledGardenAllowlist": [], | ||||
|         "usernamePasswordFile": { | ||||
|             "model_type": "ManagedFileInfo", | ||||
|             "md5checksum": null, | ||||
|             "lastModifiedTimestamp": null, | ||||
|             "apExportUrl": "userList", | ||||
|             "fileCategory": "UsernamePasswordList", | ||||
|             "fileType": "TEXT", | ||||
|             "altSlot": true | ||||
|         }, | ||||
|         "authenticationType": "guest", | ||||
|         "radiusAuthMethod": "CHAP", | ||||
|         "maxUsersWithSameCredentials": 42, | ||||
|         "externalPolicyFile": null, | ||||
|         "backgroundPosition": "left_top", | ||||
|         "backgroundRepeat": "no_repeat", | ||||
|         "radiusServiceName": null, | ||||
|         "expiryType": "unlimited", | ||||
|         "userList": [ | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer", | ||||
|                 "password": "testing123", | ||||
|                 "activationTime": 1602183994956, | ||||
|                 "expirationTime": 1602212794956, | ||||
|                 "numDevices": 1, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Pac", | ||||
|                     "lastName": "Man", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "fKtg5upO", | ||||
|                         "addressAsString": "7c:ab:60:e6:ea:4e" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer", | ||||
|                 "password": "testing123", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602187594957, | ||||
|                 "numDevices": 0, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Q", | ||||
|                     "lastName": "Bert", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "wJrQdqho", | ||||
|                         "addressAsString": "c0:9a:d0:76:a8:68" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer2", | ||||
|                 "password": "testing1234", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602788794957, | ||||
|                 "numDevices": 1, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Duke", | ||||
|                     "lastName": "Nukem", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "fKtg5upN", | ||||
|                         "addressAsString": "7c:ab:60:e6:ea:4d" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "TimedAccessUserRecord", | ||||
|                 "username": "customer2", | ||||
|                 "password": "testing1234", | ||||
|                 "activationTime": 1602183994957, | ||||
|                 "expirationTime": 1602270394957, | ||||
|                 "numDevices": 0, | ||||
|                 "userDetails": { | ||||
|                     "model_type": "TimedAccessUserDetails", | ||||
|                     "firstName": "Missile", | ||||
|                     "lastName": "Commander", | ||||
|                     "passwordNeedsReset": false | ||||
|                 }, | ||||
|                 "userMacAddresses": [ | ||||
|                     { | ||||
|                         "model_type": "MacAddress", | ||||
|                         "address": "wJrQdqhj", | ||||
|                         "addressAsString": "c0:9a:d0:76:a8:63" | ||||
|                     } | ||||
|                 ], | ||||
|                 "lastModifiedTimestamp": 0 | ||||
|             } | ||||
|         ], | ||||
|         "macAllowList": [], | ||||
|         "profileType": "captive_portal" | ||||
|     }, | ||||
|     "createdTimestamp": 1611857459118, | ||||
|     "lastModifiedTimestamp": 1611857459118, | ||||
|     "childProfileIds": [ | ||||
|     ] | ||||
|   } | ||||
| ] | ||||
|     "createdTimestamp": 1602183994959, | ||||
|     "lastModifiedTimestamp": 1602183994959, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| ] | ||||
| @@ -1,71 +1,72 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 37, | ||||
|     "customerId": 2, | ||||
|     "profileType": "passpoint", | ||||
|     "name": "hotspot20-profile-2021-01-21T21:28:59.171Z", | ||||
|     "details": { | ||||
|         "model_type": "PasspointProfile", | ||||
|         "enableInterworkingAndHs20": true, | ||||
|         "hessid": null, | ||||
|         "passpointAccessNetworkType": "free_public_network", | ||||
|         "passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions", | ||||
|         "additionalStepsRequiredForAccess": 0, | ||||
|         "deauthRequestTimeout": 0, | ||||
|         "operatingClass": 0, | ||||
|         "termsAndConditionsFile": { | ||||
|             "model_type": "ManagedFileInfo", | ||||
|             "md5checksum": null, | ||||
|             "lastModifiedTimestamp": null, | ||||
|             "apExportUrl": "https://localhost:9091/filestore/termsAndConditions", | ||||
|             "fileCategory": "ExternalPolicyConfiguration", | ||||
|             "fileType": "TEXT", | ||||
|             "altSlot": false | ||||
|         "model_type": "Profile", | ||||
|         "id": 24, | ||||
|         "customerId": 2, | ||||
|         "profileType": "passpoint", | ||||
|         "name": "TipWlan-Hotspot20-Config", | ||||
|         "details": { | ||||
|             "model_type": "PasspointProfile", | ||||
|             "enableInterworkingAndHs20": true, | ||||
|             "hessid": null, | ||||
|             "additionalStepsRequiredForAccess": 0, | ||||
|             "deauthRequestTimeout": 0, | ||||
|             "operatingClass": 0, | ||||
|             "termsAndConditionsFile": { | ||||
|                 "model_type": "ManagedFileInfo", | ||||
|                 "md5checksum": null, | ||||
|                 "lastModifiedTimestamp": null, | ||||
|                 "apExportUrl": "https://localhost:9091/filestore/termsAndConditions", | ||||
|                 "fileCategory": "ExternalPolicyConfiguration", | ||||
|                 "fileType": "TEXT", | ||||
|                 "altSlot": false | ||||
|             }, | ||||
|             "whitelistDomain": null, | ||||
|             "emergencyServicesReachable": true, | ||||
|             "unauthenticatedEmergencyServiceAccessible": false, | ||||
|             "internetConnectivity": true, | ||||
|             "connectionCapabilitySet": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointConnectionCapability", | ||||
|                     "connectionCapabilitiesPortNumber": 8888, | ||||
|                     "connectionCapabilitiesIpProtocol": "TCP", | ||||
|                     "connectionCapabilitiesStatus": "open" | ||||
|                 } | ||||
|             ], | ||||
|             "ipAddressTypeAvailability": "public_IPv4_address_available", | ||||
|             "qosMapSetConfiguration": null, | ||||
|             "apGeospatialLocation": null, | ||||
|             "apCivicLocation": null, | ||||
|             "apPublicLocationIdUri": null, | ||||
|             "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", | ||||
|             "anqpDomainId": 1234, | ||||
|             "disableDownstreamGroupAddressedForwarding": false, | ||||
|             "enable2pt4GHz": true, | ||||
|             "enable5GHz": true, | ||||
|             "associatedAccessSsidNames": [ | ||||
|                 "TipWlan-cloud-hotspot-access" | ||||
|             ], | ||||
|             "osuSsidName": "TipWlan-cloud-hotspot-osu", | ||||
|             "operatorProfileName": "TipWlan-Hotspot20-Operator", | ||||
|             "venueProfileName": "TipWlan-Hotspot20-Venue", | ||||
|             "idProviderProfileNames": [ | ||||
|                 "TipWlan-Hotspot20-OSU-Provider-2", | ||||
|                 "TipWlan-Hotspot20-OSU-Provider" | ||||
|             ], | ||||
|             "accessNetworkType": "free_public_network", | ||||
|             "networkAuthenticationType": "acceptance_of_terms_and_conditions", | ||||
|             "associatedSsids": [ | ||||
|                 "TipWlan-cloud-hotspot-access" | ||||
|             ], | ||||
|             "profileType": "passpoint" | ||||
|         }, | ||||
|         "whitelistDomain": null, | ||||
|         "emergencyServicesReachable": true, | ||||
|         "unauthenticatedEmergencyServiceAccessible": false, | ||||
|         "internetConnectivity": true, | ||||
|         "connectionCapabilitySet": [ | ||||
|             { | ||||
|                 "model_type": "PasspointConnectionCapability", | ||||
|                 "connectionCapabilitiesPortNumber": 8888, | ||||
|                 "connectionCapabilitiesIpProtocol": "TCP", | ||||
|                 "connectionCapabilitiesStatus": "open" | ||||
|             } | ||||
|         ], | ||||
|         "ipAddressTypeAvailability": "public_IPv4_address_available", | ||||
|         "qosMapSetConfiguration": null, | ||||
|         "apGeospatialLocation": null, | ||||
|         "apCivicLocation": null, | ||||
|         "apPublicLocationIdUri": null, | ||||
|         "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", | ||||
|         "anqpDomainId": 1234, | ||||
|         "disableDownstreamGroupAddressedForwarding": false, | ||||
|         "enable2pt4GHz": true, | ||||
|         "enable5GHz": true, | ||||
|         "associatedAccessSsidProfileIds": [ | ||||
|             32 | ||||
|         ], | ||||
|         "osuSsidProfileId": 31, | ||||
|         "passpointOperatorProfileId": 34, | ||||
|         "passpointVenueProfileId": 33, | ||||
|         "passpointOsuProviderProfileIds": [ | ||||
|             35, | ||||
|             36 | ||||
|         ], | ||||
|         "accessNetworkType": "free_public_network", | ||||
|         "networkAuthenticationType": "acceptance_of_terms_and_conditions", | ||||
|         "profileType": "passpoint" | ||||
|     }, | ||||
|     "createdTimestamp": 0, | ||||
|     "lastModifiedTimestamp": 1611264539331, | ||||
|     "childProfileIds": [ | ||||
|         33, | ||||
|         34, | ||||
|         35, | ||||
|         36 | ||||
|     ] | ||||
| } | ||||
|         "createdTimestamp": 1605711223339, | ||||
|         "lastModifiedTimestamp": 1605711223339, | ||||
|         "childProfileIds": [ | ||||
|             17, | ||||
|             18, | ||||
|             19, | ||||
|             20 | ||||
|         ] | ||||
|     } | ||||
| ] | ||||
|   | ||||
| @@ -1,263 +1,270 @@ | ||||
| [ | ||||
|     { | ||||
|         "model_type": "Profile", | ||||
|         "id": 35, | ||||
|         "customerId": 2, | ||||
|         "profileType": "passpoint_osu_id_provider", | ||||
|         "name": "provider1-profile-2021-01-21T21:28:59.057Z", | ||||
|         "details": { | ||||
|             "model_type": "PasspointOsuProviderProfile", | ||||
|             "mccMncList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointMccMnc", | ||||
|                     "mcc": 302, | ||||
|                     "mnc": 720, | ||||
|                     "iso": "ca", | ||||
|                     "country": "Canada", | ||||
|                     "countryCode": 1, | ||||
|                     "network": "Rogers AT&T Wireless", | ||||
|                     "mccMncPairing": "302,720" | ||||
|                 } | ||||
|             ], | ||||
|             "naiRealmList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointNaiRealmInformation", | ||||
|                     "naiRealms": [ | ||||
|                         "rogers.com" | ||||
|                     ], | ||||
|                     "encoding": 0, | ||||
|                     "eapMethods": [ | ||||
|                         "EAP-TTLS with username/password", | ||||
|                         "EAP-TLS with certificate" | ||||
|                     ], | ||||
|                     "eapMap": { | ||||
|                         "EAP-TTLS with username/password": [ | ||||
|                             "Credential Type:username/password", | ||||
|                             "Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
|                         ], | ||||
|                         "EAP-TLS with certificate": [ | ||||
|                             "Credential Type:Certificate" | ||||
|                         ] | ||||
|                     } | ||||
|                 } | ||||
|             ], | ||||
|             "osuIconList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_CA", | ||||
|                     "iconName": "icon32eng", | ||||
|                     "filePath": "/tmp/icon32eng.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32eng.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "fra", | ||||
|                     "iconLocale": "fr_CA", | ||||
|                     "iconName": "icon32fra", | ||||
|                     "filePath": "/tmp/icon32fra.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32fra.png", | ||||
|                     "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_US", | ||||
|                     "iconName": "icon32usa", | ||||
|                     "filePath": "/tmp/icon32usa.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32usa.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
|                 } | ||||
|             ], | ||||
|             "osuServerUri": "https://example.com/osu/rogers", | ||||
|             "osuFriendlyName": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example provider rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example provider rogers" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemple de fournisseur rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemple de fournisseur rogers" | ||||
|                 } | ||||
|             ], | ||||
|             "osuNaiStandalone": "anonymous@rogers.com", | ||||
|             "osuNaiShared": "anonymous@rogers.com", | ||||
|             "osuMethodList": [ | ||||
|                 1, | ||||
|                 0 | ||||
|             ], | ||||
|             "osuServiceDescription": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example services rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example services rogers" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemples de services rogers", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemples de services rogers" | ||||
|                 } | ||||
|             ], | ||||
|             "roamingOi": [ | ||||
|                 "BAA2D00100", | ||||
|                 "BAA2D00000" | ||||
|             ], | ||||
|             "profileType": "passpoint_osu_id_provider" | ||||
|         }, | ||||
|         "createdTimestamp": 1611264539070, | ||||
|         "lastModifiedTimestamp": 1611264539070, | ||||
|         "childProfileIds": [] | ||||
|     }, | ||||
|     { | ||||
|         "model_type": "Profile", | ||||
|         "id": 36, | ||||
|         "customerId": 2, | ||||
|         "profileType": "passpoint_osu_id_provider", | ||||
|         "name": "provider2-profile-2021-01-21T21:28:59.118Z", | ||||
|         "details": { | ||||
|             "model_type": "PasspointOsuProviderProfile", | ||||
|             "mccMncList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointMccMnc", | ||||
|                     "mcc": 302, | ||||
|                     "mnc": 220, | ||||
|                     "iso": "ca", | ||||
|                     "country": "Canada", | ||||
|                     "countryCode": 1, | ||||
|                     "network": "Telus Mobility", | ||||
|                     "mccMncPairing": "302,220" | ||||
|                 } | ||||
|             ], | ||||
|             "naiRealmList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointNaiRealmInformation", | ||||
|                     "naiRealms": [ | ||||
|                         "telus.com" | ||||
|                     ], | ||||
|                     "encoding": 0, | ||||
|                     "eapMethods": [ | ||||
|                         "EAP-TTLS with username/password", | ||||
|                         "EAP-TLS with certificate" | ||||
|                     ], | ||||
|                     "eapMap": { | ||||
|                         "EAP-TTLS with username/password": [ | ||||
|                             "Credential Type:username/password", | ||||
|                             "Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
|                         ], | ||||
|                         "EAP-TLS with certificate": [ | ||||
|                             "Credential Type:Certificate" | ||||
|                         ] | ||||
|                     } | ||||
|                 } | ||||
|             ], | ||||
|             "osuIconList": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_CA", | ||||
|                     "iconName": "icon32eng", | ||||
|                     "filePath": "/tmp/icon32eng.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32eng.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "fra", | ||||
|                     "iconLocale": "fr_CA", | ||||
|                     "iconName": "icon32fra", | ||||
|                     "filePath": "/tmp/icon32fra.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32fra.png", | ||||
|                     "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointOsuIcon", | ||||
|                     "iconWidth": 32, | ||||
|                     "iconHeight": 32, | ||||
|                     "languageCode": "eng", | ||||
|                     "iconLocale": "en_US", | ||||
|                     "iconName": "icon32usa", | ||||
|                     "filePath": "/tmp/icon32usa.png", | ||||
|                     "imageUrl": "https://localhost:9096/icon32usa.png", | ||||
|                     "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
|                 } | ||||
|             ], | ||||
|             "osuServerUri": "https://example.com/osu/telus", | ||||
|             "osuFriendlyName": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example provider telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example provider telus" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemple de fournisseur telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemple de fournisseur telus" | ||||
|                 } | ||||
|             ], | ||||
|             "osuNaiStandalone": "anonymous@telus.com", | ||||
|             "osuNaiShared": "anonymous@telus.com", | ||||
|             "osuMethodList": [ | ||||
|                 1, | ||||
|                 0 | ||||
|             ], | ||||
|             "osuServiceDescription": [ | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "eng", | ||||
|                     "dupleIso3Language": "eng", | ||||
|                     "dupleName": "Example services telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "eng:Example services telus" | ||||
|                 }, | ||||
|                 { | ||||
|                     "model_type": "PasspointDuple", | ||||
|                     "locale": "fra", | ||||
|                     "dupleIso3Language": "fra", | ||||
|                     "dupleName": "Exemples de services telus", | ||||
|                     "defaultDupleSeparator": ":", | ||||
|                     "asDuple": "fra:Exemples de services telus" | ||||
|                 } | ||||
|             ], | ||||
|             "roamingOi": [ | ||||
|                 "004096", | ||||
|                 "005014", | ||||
|                 "F4F5E8F5F4" | ||||
|             ], | ||||
|             "profileType": "passpoint_osu_id_provider" | ||||
|         }, | ||||
|         "createdTimestamp": 1611264539131, | ||||
|         "lastModifiedTimestamp": 1611264539131, | ||||
|         "childProfileIds": [] | ||||
|     } | ||||
| ] | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 19, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_osu_id_provider", | ||||
| 		"name": "TipWlan-Hotspot20-OSU-Provider", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOsuProviderProfile", | ||||
| 			"domainName": "rogers.com", | ||||
| 			"mccMncList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointMccMnc", | ||||
| 					"mcc": 302, | ||||
| 					"mnc": 720, | ||||
| 					"iso": "ca", | ||||
| 					"country": "Canada", | ||||
| 					"countryCode": 1, | ||||
| 					"network": "Rogers AT&T Wireless", | ||||
| 					"mccMncPairing": "302,720" | ||||
| 				} | ||||
| 			], | ||||
| 			"naiRealmList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointNaiRealmInformation", | ||||
| 					"naiRealms": [ | ||||
| 						"rogers.com" | ||||
| 					], | ||||
| 					"encoding": 0, | ||||
| 					"eapMethods": [ | ||||
| 						"EAP-TTLS with username/password", | ||||
| 						"EAP-TLS with certificate" | ||||
| 					], | ||||
| 					"eapMap": { | ||||
| 						"EAP-TTLS with username/password": [ | ||||
| 							"Credential Type:username/password", | ||||
| 							"Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
| 						], | ||||
| 						"EAP-TLS with certificate": [ | ||||
| 							"Credential Type:Certificate" | ||||
| 						] | ||||
| 					} | ||||
| 				} | ||||
| 			], | ||||
| 			"osuIconList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_CA", | ||||
| 					"iconName": "icon32eng", | ||||
| 					"filePath": "/tmp/icon32eng.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32eng.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "fra", | ||||
| 					"iconLocale": "fr_CA", | ||||
| 					"iconName": "icon32fra", | ||||
| 					"filePath": "/tmp/icon32fra.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32fra.png", | ||||
| 					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_US", | ||||
| 					"iconName": "icon32usa", | ||||
| 					"filePath": "/tmp/icon32usa.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32usa.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuServerUri": "https://example.com/osu/rogers", | ||||
| 			"osuFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example provider rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example provider rogers" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de fournisseur rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemple de fournisseur rogers" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuNaiStandalone": "anonymous@rogers.com", | ||||
| 			"osuNaiShared": "anonymous@rogers.com", | ||||
| 			"osuMethodList": [ | ||||
| 				1, | ||||
| 				0 | ||||
| 			], | ||||
| 			"osuServiceDescription": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example services rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example services rogers" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemples de services rogers", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemples de services rogers" | ||||
| 				} | ||||
| 			], | ||||
| 			"roamingOi": [ | ||||
| 				1, | ||||
| 				2, | ||||
| 				3, | ||||
| 				4 | ||||
| 			], | ||||
| 			"profileType": "passpoint_osu_id_provider" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711165325, | ||||
| 		"lastModifiedTimestamp": 1605711165325, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 20, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_osu_id_provider", | ||||
| 		"name": "TipWlan-Hotspot20-OSU-Provider-2", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOsuProviderProfile", | ||||
| 			"domainName": "telus.com", | ||||
| 			"mccMncList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointMccMnc", | ||||
| 					"mcc": 302, | ||||
| 					"mnc": 220, | ||||
| 					"iso": "ca", | ||||
| 					"country": "Canada", | ||||
| 					"countryCode": 1, | ||||
| 					"network": "Telus Mobility", | ||||
| 					"mccMncPairing": "302,220" | ||||
| 				} | ||||
| 			], | ||||
| 			"naiRealmList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointNaiRealmInformation", | ||||
| 					"naiRealms": [ | ||||
| 						"telus.com" | ||||
| 					], | ||||
| 					"encoding": 0, | ||||
| 					"eapMethods": [ | ||||
| 						"EAP-TTLS with username/password", | ||||
| 						"EAP-TLS with certificate" | ||||
| 					], | ||||
| 					"eapMap": { | ||||
| 						"EAP-TTLS with username/password": [ | ||||
| 							"Credential Type:username/password", | ||||
| 							"Non-EAP Inner Authentication Type:MSCHAPV2" | ||||
| 						], | ||||
| 						"EAP-TLS with certificate": [ | ||||
| 							"Credential Type:Certificate" | ||||
| 						] | ||||
| 					} | ||||
| 				} | ||||
| 			], | ||||
| 			"osuIconList": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_CA", | ||||
| 					"iconName": "icon32eng", | ||||
| 					"filePath": "/tmp/icon32eng.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32eng.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "fra", | ||||
| 					"iconLocale": "fr_CA", | ||||
| 					"iconName": "icon32fra", | ||||
| 					"filePath": "/tmp/icon32fra.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32fra.png", | ||||
| 					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointOsuIcon", | ||||
| 					"iconWidth": 32, | ||||
| 					"iconHeight": 32, | ||||
| 					"languageCode": "eng", | ||||
| 					"iconLocale": "en_US", | ||||
| 					"iconName": "icon32usa", | ||||
| 					"filePath": "/tmp/icon32usa.png", | ||||
| 					"imageUrl": "https://localhost:9096/icon32usa.png", | ||||
| 					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuServerUri": "https://example.com/osu/telus", | ||||
| 			"osuFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example provider telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example provider telus" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de fournisseur telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemple de fournisseur telus" | ||||
| 				} | ||||
| 			], | ||||
| 			"osuNaiStandalone": "anonymous@telus.com", | ||||
| 			"osuNaiShared": "anonymous@telus.com", | ||||
| 			"osuMethodList": [ | ||||
| 				1, | ||||
| 				0 | ||||
| 			], | ||||
| 			"osuServiceDescription": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example services telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Example services telus" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemples de services telus", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Exemples de services telus" | ||||
| 				} | ||||
| 			], | ||||
| 			"roamingOi": [ | ||||
| 				1, | ||||
| 				2, | ||||
| 				3, | ||||
| 				4 | ||||
| 			], | ||||
| 			"profileType": "passpoint_osu_id_provider" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711165330, | ||||
| 		"lastModifiedTimestamp": 1605711165330, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| [ | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 10, | ||||
| 		"id": 22, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "service_metrics_collection_config", | ||||
| 		"name": "Metrics-Profile-3-Radios", | ||||
| 		"name": "Metrics-Profile-Passpoint", | ||||
| 		"details": { | ||||
| 			"model_type": "ServiceMetricsCollectionConfigProfile", | ||||
| 			"radioTypes": [ | ||||
| @@ -21,6 +21,30 @@ | ||||
| 			], | ||||
| 			"metricConfigParameterMap": { | ||||
| 				"ApNode": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -45,42 +69,6 @@ | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -92,16 +80,21 @@ | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApNode", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				], | ||||
| 				"ApSsid": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -115,6 +108,13 @@ | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricRadioConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "ApSsid" | ||||
| 					} | ||||
| 				], | ||||
| 				"Client": [ | ||||
| @@ -144,12 +144,12 @@ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| @@ -168,12 +168,12 @@ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| @@ -192,29 +192,41 @@ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Channel", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				], | ||||
| 				"Neighbour": [ | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -239,6 +251,18 @@ | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| @@ -262,37 +286,13 @@ | ||||
| 						"radioType": "is5GHzU", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 120, | ||||
| 						"channelSurveyType": "OFF_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is5GHzL", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					}, | ||||
| 					{ | ||||
| 						"model_type": "ServiceMetricSurveyConfigParameters", | ||||
| 						"samplingInterval": 30, | ||||
| 						"reportingIntervalSeconds": 60, | ||||
| 						"channelSurveyType": "ON_CHANNEL", | ||||
| 						"scanIntervalMillis": 0, | ||||
| 						"percentUtilizationThreshold": 10, | ||||
| 						"delayMillisecondsThreshold": 600, | ||||
| 						"radioType": "is2dot4GHz", | ||||
| 						"serviceMetricDataType": "Neighbour", | ||||
| 						"statsReportFormat": "RAW" | ||||
| 					} | ||||
| 				] | ||||
| 			}, | ||||
| 			"profileType": "service_metrics_collection_config" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1606778369931, | ||||
| 		"lastModifiedTimestamp": 1606778369931, | ||||
| 		"createdTimestamp": 1605711195528, | ||||
| 		"lastModifiedTimestamp": 1605711195528, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
|   | ||||
| @@ -1,41 +1,37 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 34, | ||||
|     "customerId": 2, | ||||
|     "profileType": "passpoint_operator", | ||||
|     "name": "operator-profile-2021-01-21T21:28:58.994Z", | ||||
|     "details": { | ||||
|         "model_type": "PasspointOperatorProfile", | ||||
|         "serverOnlyAuthenticatedL2EncryptionNetwork": false, | ||||
|         "x509CertificateLocation": "/etc/ca.pem", | ||||
|         "operatorFriendlyName": [ | ||||
|             { | ||||
|                 "model_type": "PasspointDuple", | ||||
|                 "locale": "fra", | ||||
|                 "dupleIso3Language": "fra", | ||||
|                 "dupleName": "Nom de l'opérateur convivial par défaut", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "asDuple": "fra:Nom de l'opérateur convivial par défaut" | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "PasspointDuple", | ||||
|                 "locale": "eng", | ||||
|                 "dupleIso3Language": "eng", | ||||
|                 "dupleName": "Default friendly passpoint_operator name", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "asDuple": "eng:Default friendly passpoint_operator name" | ||||
|             } | ||||
|         ], | ||||
|         "domainNameList": [ | ||||
|             "bell.ca", | ||||
|             "telus.com", | ||||
|             "rogers.com" | ||||
|         ], | ||||
|         "profileType": "passpoint_operator" | ||||
|     }, | ||||
|     "createdTimestamp": 1611264539004, | ||||
|     "lastModifiedTimestamp": 1611264539004, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| ] | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 17, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_operator", | ||||
| 		"name": "TipWlan-Hotspot20-Operator", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointOperatorProfile", | ||||
| 			"serverOnlyAuthenticatedL2EncryptionNetwork": false, | ||||
| 			"x509CertificateLocation": "/etc/ca.pem", | ||||
| 			"operatorFriendlyName": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Default friendly passpoint_operator name", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "eng:Default friendly passpoint_operator name" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointDuple", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Nom de l'opérateur convivial par défaut", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"asDuple": "fra:Nom de l'opérateur convivial par défaut" | ||||
| 				} | ||||
| 			], | ||||
| 			"profileType": "passpoint_operator" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164952, | ||||
| 		"lastModifiedTimestamp": 1605711164952, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -1,24 +1,34 @@ | ||||
| [ | ||||
|   { | ||||
|     "model_type": "Profile", | ||||
|     "id": 1, | ||||
|     "customerId": 2, | ||||
|     "profileType": "radius", | ||||
|     "name": "Radius-Profile", | ||||
|     "details": { | ||||
|       "model_type": "RadiusProfile", | ||||
|       "primaryRadiusAuthServer": { | ||||
|         "model_type": "RadiusServer", | ||||
|         "ipAddress": "192.168.0.1", | ||||
|         "secret": "testing123", | ||||
|         "port": 1812, | ||||
|         "timeout": null | ||||
|       }, | ||||
|       "profileType": "radius" | ||||
|     }, | ||||
|     "createdTimestamp": 1611262628767, | ||||
|     "lastModifiedTimestamp": 1611262628767, | ||||
|     "childProfileIds": [ | ||||
|     ] | ||||
|   } | ||||
| ] | ||||
|         { | ||||
|             "model_type": "Profile", | ||||
|             "id": 1, | ||||
|             "customerId": 2, | ||||
|             "profileType": "radius", | ||||
|             "name": "Radius-Profile", | ||||
|             "details": { | ||||
|                 "model_type": "RadiusProfile", | ||||
|                 "subnetConfiguration": null, | ||||
|                 "serviceRegionMap": { | ||||
|                     "Ottawa": { | ||||
|                         "model_type": "RadiusServiceRegion", | ||||
|                         "serverMap": { | ||||
|                             "Radius-Profile": [ | ||||
|                                 { | ||||
|                                     "model_type": "RadiusServer", | ||||
|                                     "ipAddress": "192.168.0.1", | ||||
|                                     "secret": "testing123", | ||||
|                                     "authPort": 1812, | ||||
|                                     "timeout": null | ||||
|                                 } | ||||
|                             ] | ||||
|                         }, | ||||
|                         "regionName": "Ottawa" | ||||
|                     } | ||||
|                 }, | ||||
|                 "profileType": "radius" | ||||
|             }, | ||||
|             "createdTimestamp": 1601961451668, | ||||
|             "lastModifiedTimestamp": 1601961451668, | ||||
|             "childProfileIds": [] | ||||
|         } | ||||
| ] | ||||
| @@ -1,204 +1,205 @@ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 4, | ||||
|     "customerId": 2, | ||||
|     "profileType": "rf", | ||||
|     "name": "TipWlan-rf", | ||||
|     "details": { | ||||
|         "model_type": "RfConfiguration", | ||||
|         "rfConfigMap": { | ||||
|             "is5GHz": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHz", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is2dot4GHz", | ||||
|                 "radioMode": "modeN", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is20MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 20, | ||||
|                     "minLoadFactor": 50 | ||||
|                 } | ||||
|             }, | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHzU", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RfElementConfiguration", | ||||
|                 "radioType": "is5GHzL", | ||||
|                 "radioMode": "modeAC", | ||||
|                 "rf": "TipWlan-rf", | ||||
|                 "beaconInterval": 100, | ||||
|                 "forceScanDuringVoice": "disabled", | ||||
|                 "rtsCtsThreshold": 65535, | ||||
|                 "channelBandwidth": "is80MHz", | ||||
|                 "mimoMode": "twoByTwo", | ||||
|                 "maxNumClients": 100, | ||||
|                 "autoChannelSelection": false, | ||||
|                 "activeScanSettings": { | ||||
|                     "model_type": "ActiveScanSettings", | ||||
|                     "enabled": true, | ||||
|                     "scanFrequencySeconds": 10, | ||||
|                     "scanDurationMillis": 65 | ||||
|                 }, | ||||
|                 "neighbouringListApConfig": { | ||||
|                     "model_type": "NeighbouringAPListConfiguration", | ||||
|                     "minSignal": -85, | ||||
|                     "maxAps": 25 | ||||
|                 }, | ||||
|                 "minAutoCellSize": -65, | ||||
|                 "perimeterDetectionEnabled": true, | ||||
|                 "channelHopSettings": { | ||||
|                     "model_type": "ChannelHopSettings", | ||||
|                     "noiseFloorThresholdInDB": -75, | ||||
|                     "noiseFloorThresholdTimeInSeconds": 180, | ||||
|                     "nonWifiThresholdInPercentage": 50, | ||||
|                     "nonWifiThresholdTimeInSeconds": 180, | ||||
|                     "obssHopMode": "NON_WIFI" | ||||
|                 }, | ||||
|                 "bestApEnabled": null, | ||||
|                 "multicastRate": "auto", | ||||
|                 "managementRate": "auto", | ||||
|                 "rxCellSizeDb": -90, | ||||
|                 "probeResponseThresholdDb": -90, | ||||
|                 "clientDisconnectThresholdDb": -90, | ||||
|                 "eirpTxPower": 18, | ||||
|                 "bestApSettings": { | ||||
|                     "model_type": "RadioBestApSettings", | ||||
|                     "mlComputed": true, | ||||
|                     "dropInSnrPercentage": 30, | ||||
|                     "minLoadFactor": 40 | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "profileType": "rf" | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248650, | ||||
|     "lastModifiedTimestamp": 1612285248650, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| 	"model_type": "Profile", | ||||
| 	"id": 21, | ||||
| 	"customerId": 2, | ||||
| 	"profileType": "rf", | ||||
| 	"name": "TipWlan-rf-passpoint", | ||||
| 	"details": { | ||||
| 		"model_type": "RfConfiguration", | ||||
| 		"rfConfigMap": { | ||||
| 			"is5GHz": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHz", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is2dot4GHz": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is2dot4GHz", | ||||
| 				"radioMode": "modeN", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is20MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 20, | ||||
| 					"minLoadFactor": 50 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is5GHzU": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHzU", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			}, | ||||
| 			"is5GHzL": { | ||||
| 				"model_type": "RfElementConfiguration", | ||||
| 				"radioType": "is5GHzL", | ||||
| 				"radioMode": "modeAC", | ||||
| 				"rf": "TipWlan-rf-passpoint", | ||||
| 				"beaconInterval": 100, | ||||
| 				"forceScanDuringVoice": "disabled", | ||||
| 				"rtsCtsThreshold": 65535, | ||||
| 				"channelBandwidth": "is80MHz", | ||||
| 				"mimoMode": "twoByTwo", | ||||
| 				"maxNumClients": 100, | ||||
| 				"autoChannelSelection": false, | ||||
| 				"activeScanSettings": { | ||||
| 					"model_type": "ActiveScanSettings", | ||||
| 					"enabled": true, | ||||
| 					"scanFrequencySeconds": 10, | ||||
| 					"scanDurationMillis": 65 | ||||
| 				}, | ||||
| 				"neighbouringListApConfig": { | ||||
| 					"model_type": "NeighbouringAPListConfiguration", | ||||
| 					"minSignal": -85, | ||||
| 					"maxAps": 25 | ||||
| 				}, | ||||
| 				"minAutoCellSize": -65, | ||||
| 				"perimeterDetectionEnabled": true, | ||||
| 				"channelHopSettings": { | ||||
| 					"model_type": "ChannelHopSettings", | ||||
| 					"noiseFloorThresholdInDB": -75, | ||||
| 					"noiseFloorThresholdTimeInSeconds": 180, | ||||
| 					"nonWifiThresholdInPercentage": 50, | ||||
| 					"nonWifiThresholdTimeInSeconds": 180, | ||||
| 					"obssHopMode": "NON_WIFI" | ||||
| 				}, | ||||
| 				"bestApEnabled": null, | ||||
| 				"multicastRate": "auto", | ||||
| 				"managementRate": "auto", | ||||
| 				"rxCellSizeDb": -90, | ||||
| 				"probeResponseThresholdDb": -90, | ||||
| 				"clientDisconnectThresholdDb": -90, | ||||
| 				"eirpTxPower": 18, | ||||
| 				"bestApSettings": { | ||||
| 					"model_type": "RadioBestApSettings", | ||||
| 					"mlComputed": true, | ||||
| 					"dropInSnrPercentage": 30, | ||||
| 					"minLoadFactor": 40 | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		"profileType": "rf" | ||||
| 	}, | ||||
| 	"createdTimestamp": 1605711191976, | ||||
| 	"lastModifiedTimestamp": 1605711191976, | ||||
| 	"childProfileIds": [ | ||||
| 	] | ||||
| } | ||||
|   | ||||
| @@ -1,75 +1,134 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 2, | ||||
|     "customerId": 2, | ||||
|     "profileType": "ssid", | ||||
|     "name": "TipWlan-cloud-3-radios", | ||||
|     "details": { | ||||
|         "model_type": "SsidConfiguration", | ||||
|         "ssid": "TipWlan-cloud-3-radios", | ||||
|         "appliedRadios": [ | ||||
|             "is5GHzU", | ||||
|             "is2dot4GHz", | ||||
|             "is5GHzL" | ||||
|         ], | ||||
|         "ssidAdminState": "enabled", | ||||
|         "secureMode": "wpa2OnlyPSK", | ||||
|         "vlanId": 1, | ||||
|         "keyStr": "openwifi", | ||||
|         "broadcastSsid": "enabled", | ||||
|         "keyRefresh": 0, | ||||
|         "noLocalSubnets": false, | ||||
|         "radiusServiceId": 0, | ||||
|         "radiusAcountingServiceInterval": 60, | ||||
|         "captivePortalId": null, | ||||
|         "bandwidthLimitDown": 0, | ||||
|         "bandwidthLimitUp": 0, | ||||
|         "clientBandwidthLimitDown": 0, | ||||
|         "clientBandwidthLimitUp": 0, | ||||
|         "videoTrafficOnly": false, | ||||
|         "radioBasedConfigs": { | ||||
|             "is5GHzU": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is2dot4GHz": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is5GHz": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             }, | ||||
|             "is5GHzL": { | ||||
|                 "model_type": "RadioBasedSsidConfiguration", | ||||
|                 "enable80211r": null, | ||||
|                 "enable80211k": null, | ||||
|                 "enable80211v": null | ||||
|             } | ||||
|         }, | ||||
|         "bonjourGatewayProfileId": null, | ||||
|         "enable80211w": null, | ||||
|         "wepConfig": null, | ||||
|         "forwardMode": "BRIDGE", | ||||
|         "profileType": "ssid", | ||||
|         "radiusClientConfiguration": { | ||||
|             "model_type": "RadiusNasConfiguration", | ||||
|             "nasClientId": "DEFAULT", | ||||
|             "nasClientIp": "WAN_IP", | ||||
|             "userDefinedNasId": null, | ||||
|             "userDefinedNasIp": null, | ||||
|             "operatorId": null | ||||
|         } | ||||
|     }, | ||||
|     "createdTimestamp": 1612285248638, | ||||
|     "lastModifiedTimestamp": 1612285248638, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 15, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "ssid", | ||||
| 		"name": "TipWlan-cloud-hotspot-access", | ||||
| 		"details": { | ||||
| 			"model_type": "SsidConfiguration", | ||||
| 			"ssid": "TipWlan-cloud-hotspot-access", | ||||
| 			"appliedRadios": [ | ||||
| 				"is5GHzL", | ||||
| 				"is5GHzU" | ||||
| 			], | ||||
| 			"ssidAdminState": "enabled", | ||||
| 			"secureMode": "wpa2PSK", | ||||
| 			"vlanId": 1, | ||||
| 			"keyStr": "testing123", | ||||
| 			"broadcastSsid": "enabled", | ||||
| 			"keyRefresh": 0, | ||||
| 			"noLocalSubnets": false, | ||||
| 			"radiusServiceName": null, | ||||
| 			"radiusAccountingServiceName": null, | ||||
| 			"captivePortalId": null, | ||||
| 			"bandwidthLimitDown": 0, | ||||
| 			"bandwidthLimitUp": 0, | ||||
| 			"clientBandwidthLimitDown": 0, | ||||
| 			"clientBandwidthLimitUp": 0, | ||||
| 			"videoTrafficOnly": false, | ||||
| 			"radioBasedConfigs": { | ||||
| 				"is5GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is2dot4GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzU": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzL": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				} | ||||
| 			}, | ||||
| 			"bonjourGatewayProfileId": null, | ||||
| 			"enable80211w": null, | ||||
| 			"wepConfig": null, | ||||
| 			"forwardMode": null, | ||||
| 			"profileType": "ssid" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164949, | ||||
| 		"lastModifiedTimestamp": 1605711223372, | ||||
| 		"childProfileIds": [ | ||||
| 			24 | ||||
| 		] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 16, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "ssid", | ||||
| 		"name": "TipWlan-cloud-hotspot-osu", | ||||
| 		"details": { | ||||
| 			"model_type": "SsidConfiguration", | ||||
| 			"ssid": "TipWlan-cloud-hotspot-osu", | ||||
| 			"appliedRadios": [ | ||||
| 				"is2dot4GHz" | ||||
| 			], | ||||
| 			"ssidAdminState": "enabled", | ||||
| 			"secureMode": "open", | ||||
| 			"vlanId": 1, | ||||
| 			"keyStr": null, | ||||
| 			"broadcastSsid": "enabled", | ||||
| 			"keyRefresh": 0, | ||||
| 			"noLocalSubnets": false, | ||||
| 			"radiusServiceName": null, | ||||
| 			"radiusAccountingServiceName": null, | ||||
| 			"captivePortalId": null, | ||||
| 			"bandwidthLimitDown": 0, | ||||
| 			"bandwidthLimitUp": 0, | ||||
| 			"clientBandwidthLimitDown": 0, | ||||
| 			"clientBandwidthLimitUp": 0, | ||||
| 			"videoTrafficOnly": false, | ||||
| 			"radioBasedConfigs": { | ||||
| 				"is5GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is2dot4GHz": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzU": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				}, | ||||
| 				"is5GHzL": { | ||||
| 					"model_type": "RadioBasedSsidConfiguration", | ||||
| 					"enable80211r": null, | ||||
| 					"enable80211k": null, | ||||
| 					"enable80211v": null | ||||
| 				} | ||||
| 			}, | ||||
| 			"bonjourGatewayProfileId": null, | ||||
| 			"enable80211w": null, | ||||
| 			"wepConfig": null, | ||||
| 			"forwardMode": null, | ||||
| 			"profileType": "ssid" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164950, | ||||
| 		"lastModifiedTimestamp": 1605711171732, | ||||
| 		"childProfileIds": [ | ||||
| 			19, | ||||
| 			20 | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -1,42 +1,43 @@ | ||||
| [ | ||||
| { | ||||
|     "model_type": "Profile", | ||||
|     "id": 33, | ||||
|     "customerId": 2, | ||||
|     "profileType": "passpoint_venue", | ||||
|     "name": "venue-profile-2021-01-21T21:28:58.934Z", | ||||
|     "details": { | ||||
|         "model_type": "PasspointVenueProfile", | ||||
|         "venueNameSet": [ | ||||
|             { | ||||
|                 "model_type": "PasspointVenueName", | ||||
|                 "locale": "fra", | ||||
|                 "dupleIso3Language": "fra", | ||||
|                 "dupleName": "Exemple de lieu", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "venueUrl": "http://www.example.com/info-fra", | ||||
|                 "asDuple": "fra:Exemple de lieu" | ||||
|             }, | ||||
|             { | ||||
|                 "model_type": "PasspointVenueName", | ||||
|                 "locale": "eng", | ||||
|                 "dupleIso3Language": "eng", | ||||
|                 "dupleName": "Example passpoint_venue", | ||||
|                 "defaultDupleSeparator": ":", | ||||
|                 "venueUrl": "http://www.example.com/info-eng", | ||||
|                 "asDuple": "eng:Example passpoint_venue" | ||||
|             } | ||||
|         ], | ||||
|         "venueTypeAssignment": { | ||||
|             "model_type": "PasspointVenueTypeAssignment", | ||||
|             "venueDescription": "Research and Development Facility", | ||||
|             "venueGroupId": 2, | ||||
|             "venueTypeId": 8 | ||||
|         }, | ||||
|         "profileType": "passpoint_venue" | ||||
|     }, | ||||
|     "createdTimestamp": 1611264538947, | ||||
|     "lastModifiedTimestamp": 1611264538947, | ||||
|     "childProfileIds": [] | ||||
| } | ||||
| ] | ||||
| 	{ | ||||
| 		"model_type": "Profile", | ||||
| 		"id": 18, | ||||
| 		"customerId": 2, | ||||
| 		"profileType": "passpoint_venue", | ||||
| 		"name": "TipWlan-Hotspot20-Venue", | ||||
| 		"details": { | ||||
| 			"model_type": "PasspointVenueProfile", | ||||
| 			"venueNameSet": [ | ||||
| 				{ | ||||
| 					"model_type": "PasspointVenueName", | ||||
| 					"locale": "fr_CA", | ||||
| 					"dupleIso3Language": "fra", | ||||
| 					"dupleName": "Exemple de lieu", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"venueUrl": "http://www.example.com/info-fra", | ||||
| 					"asDuple": "fra:Exemple de lieu" | ||||
| 				}, | ||||
| 				{ | ||||
| 					"model_type": "PasspointVenueName", | ||||
| 					"locale": "en_CA", | ||||
| 					"dupleIso3Language": "eng", | ||||
| 					"dupleName": "Example passpoint_venue", | ||||
| 					"defaultDupleSeparator": ":", | ||||
| 					"venueUrl": "http://www.example.com/info-eng", | ||||
| 					"asDuple": "eng:Example passpoint_venue" | ||||
| 				} | ||||
| 			], | ||||
| 			"venueTypeAssignment": { | ||||
| 				"model_type": "ProfileVenueTypeAssignment", | ||||
| 				"venueDescription": "Research and Development Facility", | ||||
| 				"venueGroupId": 2, | ||||
| 				"venueTypeId": 8 | ||||
| 			}, | ||||
| 			"profileType": "passpoint_venue" | ||||
| 		}, | ||||
| 		"createdTimestamp": 1605711164956, | ||||
| 		"lastModifiedTimestamp": 1605711164956, | ||||
| 		"childProfileIds": [ | ||||
| 		] | ||||
| 	} | ||||
| ] | ||||
|   | ||||
| @@ -7,7 +7,6 @@ | ||||
|         <listEntry value="1"/> | ||||
|     </listAttribute> | ||||
|     <booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/> | ||||
|     <booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/> | ||||
|     <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/> | ||||
|     <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> | ||||
|     <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| 	<parent> | ||||
| 		<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 		<artifactId>tip-wlan-cloud-root-pom</artifactId> | ||||
| 		<version>1.2.0-SNAPSHOT</version> | ||||
| 		<version>0.0.1-SNAPSHOT</version> | ||||
| 		<relativePath>../../wlan-cloud-root</relativePath> | ||||
| 	</parent> | ||||
| 	<artifactId>opensync-gateway</artifactId> | ||||
| @@ -16,22 +16,22 @@ | ||||
| 		<dependency> | ||||
| 			<artifactId>base-container</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<artifactId>opensync-ext-interface</artifactId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<artifactId>client-models</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<artifactId>customer-models</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<groupId>com.vmware.ovsdb</groupId> | ||||
| @@ -49,13 +49,13 @@ | ||||
| 		<dependency> | ||||
| 			<artifactId>service-metric-service-interface</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<dependency> | ||||
| 			<artifactId>status-service-interface</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<version>${tip-wlan-cloud.release.version}</version> | ||||
| 		</dependency> | ||||
|  | ||||
| 		<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util --> | ||||
| @@ -72,33 +72,7 @@ | ||||
| 		</dependency> | ||||
| 		<!-- MQTT dependencies END --> | ||||
|  | ||||
| 		<!-- Test Dependencies BEGIN --> | ||||
| 		<dependency> | ||||
| 			<artifactId>status-service-local</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<scope>test</scope> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<artifactId>status-service</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<scope>test</scope> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<artifactId>status-datastore-inmemory</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<scope>test</scope> | ||||
| 		</dependency> | ||||
| 		<dependency> | ||||
| 			<artifactId>cloud-event-dispatcher-empty</artifactId> | ||||
| 			<groupId>com.telecominfraproject.wlan</groupId> | ||||
| 			<version>1.2.0-SNAPSHOT</version> | ||||
| 			<scope>test</scope> | ||||
| 		</dependency> | ||||
| 		<!-- Test Dependencies END --> | ||||
|  | ||||
| 	</dependencies> | ||||
|  | ||||
| </project> | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
|  | ||||
| package com.telecominfraproject.wlan.opensync.mqtt; | ||||
|  | ||||
| import java.nio.charset.Charset; | ||||
| @@ -6,7 +5,7 @@ import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| import java.util.List; | ||||
|  | ||||
| import org.fusesource.mqtt.client.BlockingConnection; | ||||
| import org.fusesource.mqtt.client.FutureConnection; | ||||
| import org.fusesource.mqtt.client.MQTT; | ||||
| import org.fusesource.mqtt.client.Message; | ||||
| import org.fusesource.mqtt.client.QoS; | ||||
| @@ -21,23 +20,18 @@ import org.springframework.context.event.ContextClosedEvent; | ||||
| import org.springframework.stereotype.Component; | ||||
|  | ||||
| import com.google.protobuf.Descriptors; | ||||
| import com.google.protobuf.TypeRegistry; | ||||
| import com.google.protobuf.MessageOrBuilder; | ||||
| import com.google.protobuf.util.JsonFormat; | ||||
| import com.netflix.servo.DefaultMonitorRegistry; | ||||
| import com.netflix.servo.monitor.BasicCounter; | ||||
| import com.netflix.servo.monitor.BasicTimer; | ||||
| import com.netflix.servo.monitor.Counter; | ||||
| import com.netflix.servo.monitor.MonitorConfig; | ||||
| import com.netflix.servo.monitor.Stopwatch; | ||||
| import com.netflix.servo.monitor.Timer; | ||||
| import com.netflix.servo.tag.TagList; | ||||
| import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags; | ||||
| import com.google.protobuf.util.JsonFormat.TypeRegistry; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.utils.StatsPublisherInterface; | ||||
| import com.telecominfraproject.wlan.opensync.util.ZlibUtil; | ||||
|  | ||||
| import sts.OpensyncStats; | ||||
| import sts.OpensyncStats.Report; | ||||
| import traffic.NetworkMetadata; | ||||
| import traffic.NetworkMetadata.FlowReport; | ||||
| import wc.stats.IpDnsTelemetry; | ||||
| import wc.stats.IpDnsTelemetry.WCStatsReport; | ||||
|  | ||||
| @Profile("mqtt_receiver") | ||||
| @Component | ||||
| @@ -49,25 +43,8 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven | ||||
|  | ||||
|     public static Charset utf8 = Charset.forName("UTF-8"); | ||||
|  | ||||
|     private final TagList tags = CloudMetricsTags.commonTags; | ||||
|  | ||||
|     private final Counter messagesReceived = new BasicCounter(MonitorConfig.builder("osgw-mqtt-messagesReceived").withTags(tags).build()); | ||||
|  | ||||
|     private final Counter messageBytesReceived = new BasicCounter(MonitorConfig.builder("osgw-mqtt-messageBytesReceived").withTags(tags).build()); | ||||
|  | ||||
|     private final Timer timerMessageProcess = new BasicTimer(MonitorConfig.builder("osgw-mqtt-messageProcessTimer").withTags(tags).build()); | ||||
|  | ||||
|     @Autowired | ||||
|     private OpensyncExternalIntegrationInterface opensyncExternalIntegrationInterface; | ||||
|  | ||||
|     // dtop: use anonymous constructor to ensure that the following code always | ||||
|     // get executed, | ||||
|     // even when somebody adds another constructor in here | ||||
|     { | ||||
|         DefaultMonitorRegistry.getInstance().register(messagesReceived); | ||||
|         DefaultMonitorRegistry.getInstance().register(messageBytesReceived); | ||||
|         DefaultMonitorRegistry.getInstance().register(timerMessageProcess); | ||||
|     } | ||||
|     private OpensyncExternalIntegrationInterface extIntegrationInterface; | ||||
|  | ||||
|     // | ||||
|     // See https://github.com/fusesource/mqtt-client for the docs | ||||
| @@ -78,7 +55,8 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven | ||||
|  | ||||
|     public OpensyncMqttClient(@Autowired io.netty.handler.ssl.SslContext sslContext, | ||||
|             @Value("${tip.wlan.mqttBroker.address.internal:testportal.123wlan.com}") String mqttBrokerAddress, | ||||
|             @Value("${tip.wlan.mqttBroker.listenPort:1883}") int mqttBrokerListenPort, @Value("${tip.wlan.mqttBroker.user:admin}") String username, | ||||
|             @Value("${tip.wlan.mqttBroker.listenPort:1883}") int mqttBrokerListenPort, | ||||
|             @Value("${tip.wlan.mqttBroker.user:admin}") String username, | ||||
|             @Value("${tip.wlan.mqttBroker.password:admin}") String password, | ||||
|             @Value("${mqtt.javax.net.ssl.keyStore:/opt/tip-wlan/certs/client_keystore.jks}") String jdkKeyStoreLocation, | ||||
|             @Value("${mqtt.javax.net.ssl.keyStorePassword:mypassword}") String jdkKeyStorePassword, | ||||
| @@ -106,9 +84,9 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven | ||||
|             @Override | ||||
|             public void run() { | ||||
|                 while (keepReconnecting) { | ||||
|                     BlockingConnection blockingConnection = null; | ||||
|                     FutureConnection futureConnection = null; | ||||
|                     try { | ||||
|                         // Thread.sleep(5000); | ||||
|                         Thread.sleep(5000); | ||||
|  | ||||
|                         // Create a new MQTT connection to the broker. | ||||
|                         /* | ||||
| @@ -136,71 +114,133 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven | ||||
|                          */ | ||||
|  | ||||
|                         MQTT mqtt = new MQTT(); | ||||
|                         // mqtt.setHost("tcp://192.168.0.137:61616"); | ||||
|                         mqtt.setHost("tls://" + mqttBrokerAddress + ":" + mqttBrokerListenPort); | ||||
|                         LOG.info("Connecting to MQTT broker at {}", mqtt.getHost()); | ||||
|                         mqtt.setClientId("opensync_mqtt"); | ||||
|                         mqtt.setUserName(username); | ||||
|                         mqtt.setPassword(password); | ||||
|                         blockingConnection = mqtt.blockingConnection(); | ||||
|                         blockingConnection.connect(); | ||||
|                         // Note: the following does not work with the | ||||
|                         // serverContext, | ||||
|                         // it has to be the | ||||
|                         // clientContext | ||||
|                         // mqtt.setSslContext(((JdkSslContext) | ||||
|                         // sslContext).context()); | ||||
|                         // For now we'll rely on regular SSLContext from the JDK | ||||
|  | ||||
|                         LOG.debug("Connected to MQTT broker at {}", mqtt.getHost()); | ||||
|                         // TODO: revisit this blocking connection, change it to | ||||
|                         // futureConnection | ||||
|                         futureConnection = mqtt.futureConnection(); | ||||
|                         futureConnection.connect(); | ||||
|  | ||||
|                         // NB. setting to AT_MOST_ONCE to match the APs message level | ||||
|                         Topic[] topics = {new Topic("/ap/#", QoS.AT_MOST_ONCE),}; | ||||
|                         LOG.info("Connected to MQTT broker at {}", mqtt.getHost()); | ||||
|  | ||||
|                         blockingConnection.subscribe(topics); | ||||
|                         // Subscribe to topics: | ||||
|                         // | ||||
|                         // new Topic("mqtt/example/publish", QoS.AT_LEAST_ONCE), | ||||
|                         // new Topic("#", QoS.AT_LEAST_ONCE), | ||||
|                         // new Topic("test/#", QoS.EXACTLY_ONCE), | ||||
|                         // new Topic("foo/+/bar", QoS.AT_LEAST_ONCE) | ||||
|                         Topic[] topics = { new Topic("/ap/+/opensync", QoS.AT_LEAST_ONCE), }; | ||||
|  | ||||
|                         futureConnection.subscribe(topics); | ||||
|                         LOG.info("Subscribed to mqtt topics {}", Arrays.asList(topics)); | ||||
|  | ||||
|                         // prepare a JSONPrinter to format protobuf messages as | ||||
|                         // json | ||||
|                         List<Descriptors.Descriptor> protobufDescriptors = new ArrayList<>(); | ||||
|                         protobufDescriptors.addAll(OpensyncStats.getDescriptor().getMessageTypes()); | ||||
|                         protobufDescriptors.addAll(IpDnsTelemetry.getDescriptor().getMessageTypes()); | ||||
|                         protobufDescriptors.addAll(NetworkMetadata.getDescriptor().getMessageTypes()); | ||||
|                         TypeRegistry oldRegistry = TypeRegistry.newBuilder().add(protobufDescriptors).build(); | ||||
|                         JsonFormat.Printer jsonPrinter = | ||||
|                                 JsonFormat.printer().includingDefaultValueFields().omittingInsignificantWhitespace().usingTypeRegistry(oldRegistry); | ||||
|                         JsonFormat.Printer jsonPrinter = JsonFormat.printer().includingDefaultValueFields() | ||||
|                                 .omittingInsignificantWhitespace().usingTypeRegistry(oldRegistry); | ||||
|  | ||||
|                         // main loop - receive messages | ||||
|                         while (true) { | ||||
|                             LOG.debug("{} awaiting mqtt message from broker",mqttClientThread.getName()); | ||||
|                             Message mqttMsg = blockingConnection.receive(); | ||||
|                             Message mqttMsg = futureConnection.receive().await(); | ||||
|  | ||||
|                             if (mqttMsg == null) { | ||||
|                                 if (LOG.isTraceEnabled()) | ||||
|                                     LOG.trace("NULL message received for blocking connection"); | ||||
|                                 continue; | ||||
|                             } | ||||
|                             Stopwatch stopwatchTimerMessageProcess = timerMessageProcess.start(); | ||||
|                             try { | ||||
|                                 byte payload[] = mqttMsg.getPayload(); | ||||
|                                 messagesReceived.increment(); | ||||
|                                 messageBytesReceived.increment(payload.length); | ||||
|  | ||||
|                                 if (payload[0] == 0x78) { | ||||
|                                     // looks like zlib-compressed data, let's | ||||
|                                     // decompress | ||||
|                                     // it before deserializing | ||||
|                                     payload = ZlibUtil.decompress(payload); | ||||
|                                 } | ||||
|                                 // Only supported protobuf on the TIP opensync APs is Report | ||||
|                                 Report statsReport = Report.parseFrom(payload); | ||||
|                                 mqttMsg.ack(); | ||||
|                                 MQTT_LOG.info("Topic {}\n{}", mqttMsg.getTopic(), jsonPrinter.print(statsReport)); | ||||
|                                 opensyncExternalIntegrationInterface.processMqttMessage(mqttMsg.getTopic(), statsReport);                            | ||||
|                                 LOG.debug("Dispatched report for topic {} to backend for processing", mqttMsg.getTopic()); | ||||
|                             LOG.debug("MQTT Topic {}", mqttMsg.getTopic()); | ||||
|  | ||||
|                             byte payload[] = mqttMsg.getPayload(); | ||||
|                             // we acknowledge right after receive because: | ||||
|                             // a. none of the stats messages are so important | ||||
|                             // that | ||||
|                             // we cannot skip one | ||||
|                             // b. if there's some kind of problem with the | ||||
|                             // message | ||||
|                             // (decoding or processing) | ||||
|                             // - we want to move on as quickly as possible and | ||||
|                             // not | ||||
|                             // let it get stuck in the | ||||
|                             // queue | ||||
|                             mqttMsg.ack(); | ||||
|  | ||||
|                             LOG.trace("received message on topic {} size {}", mqttMsg.getTopic(), payload.length); | ||||
|  | ||||
|                             if (payload[0] == 0x78) { | ||||
|                                 // looks like zlib-compressed data, let's | ||||
|                                 // decompress | ||||
|                                 // it before deserializing | ||||
|                                 payload = ZlibUtil.decompress(payload); | ||||
|                             } | ||||
|  | ||||
|                             // attempt to parse the message as protobuf | ||||
|                             MessageOrBuilder encodedMsg = null; | ||||
|                             try { | ||||
|  | ||||
|                                 encodedMsg = Report.parseFrom(payload); | ||||
|  | ||||
|                                 MQTT_LOG.info("topic = {} Report = {}", mqttMsg.getTopic(), | ||||
|                                         jsonPrinter.print(encodedMsg)); | ||||
|  | ||||
|  | ||||
|                                 extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(), (Report) encodedMsg); | ||||
|  | ||||
|                             } catch (Exception e) { | ||||
|                                 LOG.error("Exception processing topic for message {}",mqttMsg, e); | ||||
|                             } finally { | ||||
|                                 stopwatchTimerMessageProcess.stop(); | ||||
|                                 try { | ||||
|                                     // not a opensync_stats report, attempt to | ||||
|                                     // deserialize as network_metadata | ||||
|                                     encodedMsg = FlowReport.parseFrom(payload); | ||||
|  | ||||
|                                     MQTT_LOG.info("topic = {} FlowReport = {}", mqttMsg.getTopic(), | ||||
|                                             jsonPrinter.print(encodedMsg)); | ||||
|  | ||||
|                                     extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(), | ||||
|                                             (FlowReport) encodedMsg); | ||||
|                                 } catch (Exception e1) { | ||||
|  | ||||
|                                     try { | ||||
|                                         // not a opensync_stats report and not | ||||
|                                         // network_metadata report, attempt to | ||||
|                                         // deserialize as WCStatsReport | ||||
|                                         encodedMsg = WCStatsReport.parseFrom(payload); | ||||
|  | ||||
|                                         MQTT_LOG.info("topic = {} IpDnsTelemetry = {}", mqttMsg.getTopic(), | ||||
|                                                 jsonPrinter.print(encodedMsg)); | ||||
|  | ||||
|  | ||||
|                                         extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(), | ||||
|                                                 (WCStatsReport) encodedMsg); | ||||
|                                     } catch (Exception e2) { | ||||
|                                         String msgStr = new String(mqttMsg.getPayload(), utf8); | ||||
|                                         MQTT_LOG.info("topic = {} message = {}", mqttMsg.getTopic(), msgStr); | ||||
|                                     } | ||||
|                                 } | ||||
|                             } | ||||
|  | ||||
|                         } | ||||
|                     } catch (Throwable e) { | ||||
|  | ||||
|                     } catch (Exception e) { | ||||
|                         LOG.error("Exception in MQTT receiver", e); | ||||
|                     } finally { | ||||
|                         try { | ||||
|                             if (blockingConnection != null) { | ||||
|                                 blockingConnection.disconnect(); | ||||
|                             if (futureConnection != null) { | ||||
|                                 futureConnection.disconnect(); | ||||
|                             } | ||||
|                         } catch (Exception e1) { | ||||
|                             // do nothing | ||||
| @@ -226,5 +266,4 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven | ||||
|             mqttClientThread.interrupt(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,24 +1,13 @@ | ||||
| package com.telecominfraproject.wlan.opensync.ovsdb; | ||||
|  | ||||
| import java.util.concurrent.RejectedExecutionHandler; | ||||
| import java.util.concurrent.Executors; | ||||
| import java.util.concurrent.ScheduledExecutorService; | ||||
| import java.util.concurrent.ScheduledThreadPoolExecutor; | ||||
| import java.util.concurrent.ThreadFactory; | ||||
| import java.util.concurrent.ThreadPoolExecutor; | ||||
| import java.util.concurrent.atomic.AtomicInteger; | ||||
|  | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
|  | ||||
| import com.netflix.servo.DefaultMonitorRegistry; | ||||
| import com.netflix.servo.monitor.BasicCounter; | ||||
| import com.netflix.servo.monitor.Counter; | ||||
| import com.netflix.servo.monitor.MonitorConfig; | ||||
| import com.netflix.servo.monitor.NumberGauge; | ||||
| import com.netflix.servo.tag.TagList; | ||||
| import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags; | ||||
| import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener; | ||||
| import com.vmware.ovsdb.service.impl.OvsdbPassiveConnectionListenerImpl; | ||||
|  | ||||
| @@ -27,68 +16,12 @@ public class OvsdbListenerConfig { | ||||
|  | ||||
|     private static final Logger LOG = LoggerFactory.getLogger(OvsdbListenerConfig.class); | ||||
|  | ||||
|     private final TagList tags = CloudMetricsTags.commonTags; | ||||
|  | ||||
|     final Counter rejectedTasks = new BasicCounter(MonitorConfig.builder("osgw-ovsdb-rejectedTasks").withTags(tags).build()); | ||||
|     final Counter submittedTasks = new BasicCounter(MonitorConfig.builder("osgw-ovsdb-submittedTasks").withTags(tags).build()); | ||||
|     final Counter completedTasks = new BasicCounter(MonitorConfig.builder("osgw-ovsdb-completedTasks").withTags(tags).build()); | ||||
|      | ||||
|     private AtomicInteger tasksInFlight = new AtomicInteger(0); | ||||
|      | ||||
|     private final NumberGauge tasksInFlightGauge = new NumberGauge( | ||||
|             MonitorConfig.builder("osgw-ovsdb-tasksInFlight").withTags(tags).build(), tasksInFlight); | ||||
|  | ||||
|     // dtop: use anonymous constructor to ensure that the following code always | ||||
|     // get executed, | ||||
|     // even when somebody adds another constructor in here | ||||
|     { | ||||
|         DefaultMonitorRegistry.getInstance().register(rejectedTasks); | ||||
|         DefaultMonitorRegistry.getInstance().register(submittedTasks); | ||||
|         DefaultMonitorRegistry.getInstance().register(completedTasks); | ||||
|         DefaultMonitorRegistry.getInstance().register(tasksInFlightGauge); | ||||
|     } | ||||
|  | ||||
|     @Bean | ||||
|     public OvsdbPassiveConnectionListener ovsdbPassiveConnectionListener( | ||||
|             @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listener.threadPoolSize:10}") | ||||
|             int threadPoolSize) { | ||||
|         LOG.debug("Configuring OvsdbPassiveConnectionListener with thread pool size {}", threadPoolSize); | ||||
|          | ||||
|         ThreadFactory threadFactory = new ThreadFactory() { | ||||
|             private AtomicInteger thrNum = new AtomicInteger(); | ||||
|              | ||||
|             @Override | ||||
|             public Thread newThread(Runnable r) { | ||||
|                 Thread thr = new Thread(r, "ovsdb-exec-pool-" + thrNum.incrementAndGet()); | ||||
|                 thr.setDaemon(true); | ||||
|                 return thr; | ||||
|             } | ||||
|         }; | ||||
|          | ||||
|         RejectedExecutionHandler rejectedExecHandler = new ThreadPoolExecutor.AbortPolicy() { | ||||
|             @Override | ||||
|             public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { | ||||
|                 rejectedTasks.increment(); | ||||
|                 super.rejectedExecution(r, executor); | ||||
|             } | ||||
|         }; | ||||
|          | ||||
|         ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(threadPoolSize, threadFactory, rejectedExecHandler) { | ||||
|             @Override | ||||
|             protected void beforeExecute(Thread t, Runnable r) { | ||||
|                 submittedTasks.increment(); | ||||
|                 tasksInFlight.incrementAndGet(); | ||||
|                 super.beforeExecute(t, r); | ||||
|             } | ||||
|              | ||||
|             @Override | ||||
|             protected void afterExecute(Runnable r, Throwable t) { | ||||
|                 completedTasks.increment(); | ||||
|                 tasksInFlight.decrementAndGet(); | ||||
|                 super.afterExecute(r, t); | ||||
|             } | ||||
|         }; | ||||
|          | ||||
|         ScheduledExecutorService executorService = Executors.newScheduledThreadPool(threadPoolSize);     | ||||
|         OvsdbPassiveConnectionListener listener = new OvsdbPassiveConnectionListenerImpl(executorService); | ||||
|         return listener; | ||||
|     }     | ||||
|   | ||||
| @@ -1,21 +1,14 @@ | ||||
| package com.telecominfraproject.wlan.opensync.ovsdb; | ||||
|  | ||||
| import java.util.HashSet; | ||||
| import java.util.Map.Entry; | ||||
| import java.util.Set; | ||||
| import java.util.Map.Entry; | ||||
| import java.util.concurrent.ConcurrentHashMap; | ||||
| import java.util.concurrent.atomic.AtomicInteger; | ||||
|  | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.stereotype.Component; | ||||
|  | ||||
| import com.netflix.servo.DefaultMonitorRegistry; | ||||
| import com.netflix.servo.monitor.MonitorConfig; | ||||
| import com.netflix.servo.monitor.Monitors; | ||||
| import com.netflix.servo.monitor.NumberGauge; | ||||
| import com.netflix.servo.tag.TagList; | ||||
| import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession; | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface; | ||||
| import com.vmware.ovsdb.service.OvsdbClient; | ||||
| @@ -24,23 +17,9 @@ import com.vmware.ovsdb.service.OvsdbClient; | ||||
| public class OvsdbSessionMap implements OvsdbSessionMapInterface { | ||||
|  | ||||
|     private static final Logger LOG = LoggerFactory.getLogger(OvsdbSessionMap.class); | ||||
|  | ||||
|     private final TagList tags = CloudMetricsTags.commonTags; | ||||
|      | ||||
|     private AtomicInteger totalEquipmentConnections = new AtomicInteger(0); | ||||
|          | ||||
|     private final NumberGauge totalEquipmentConnectionsGauge = new NumberGauge( | ||||
|             MonitorConfig.builder("osgw-totalEquipmentConnections").withTags(tags).build(), totalEquipmentConnections); | ||||
|      | ||||
|     private final ConcurrentHashMap<String, OvsdbSession> connectedClients = new ConcurrentHashMap<>(); | ||||
|  | ||||
|     // dtop: use anonymous constructor to ensure that the following code always | ||||
|     // get executed, | ||||
|     // even when somebody adds another constructor in here | ||||
|     { | ||||
|         DefaultMonitorRegistry.getInstance().register(totalEquipmentConnectionsGauge); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public OvsdbSession getSession(String apId) { | ||||
|         LOG.info("Get session for AP {}", apId); | ||||
| @@ -50,11 +29,7 @@ public class OvsdbSessionMap implements OvsdbSessionMapInterface { | ||||
|     @Override | ||||
|     public OvsdbSession removeSession(String apId) {  | ||||
|         LOG.info("Removing session for AP {}", apId); | ||||
|         OvsdbSession ret = connectedClients.remove(apId); | ||||
|         if(ret!=null) { | ||||
|             totalEquipmentConnections.decrementAndGet(); | ||||
|         } | ||||
|         return ret; | ||||
|         return connectedClients.remove(apId); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -62,7 +37,7 @@ public class OvsdbSessionMap implements OvsdbSessionMapInterface { | ||||
|         try { | ||||
|             LOG.info("Close session for AP {}", apId); | ||||
|             connectedClients.get(apId).getOvsdbClient().shutdown(); | ||||
|             removeSession(apId); | ||||
|             connectedClients.remove(apId); | ||||
|             LOG.info("Closed ovsdb session for {}", apId); | ||||
|         }catch (Exception e) { | ||||
|             // do nothing | ||||
| @@ -83,8 +58,6 @@ public class OvsdbSessionMap implements OvsdbSessionMapInterface { | ||||
|             }catch (Exception e) { | ||||
|                 // do nothing | ||||
|             }             | ||||
|         } else { | ||||
|             totalEquipmentConnections.incrementAndGet(); | ||||
|         } | ||||
|          | ||||
|         LOG.info("Created new ovsdb session for {}", apId); | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,6 +1,5 @@ | ||||
| package com.telecominfraproject.wlan.opensync.ovsdb; | ||||
|  | ||||
| import java.security.cert.Certificate; | ||||
| import java.security.cert.X509Certificate; | ||||
|  | ||||
| import javax.annotation.PostConstruct; | ||||
| @@ -11,17 +10,10 @@ import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.context.annotation.Profile; | ||||
| import org.springframework.stereotype.Component; | ||||
|  | ||||
| import com.netflix.servo.DefaultMonitorRegistry; | ||||
| import com.netflix.servo.monitor.BasicCounter; | ||||
| import com.netflix.servo.monitor.Counter; | ||||
| import com.netflix.servo.monitor.MonitorConfig; | ||||
| import com.netflix.servo.tag.TagList; | ||||
| import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags; | ||||
| import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbDao; | ||||
| import com.telecominfraproject.wlan.opensync.util.SslUtil; | ||||
| import com.vmware.ovsdb.callback.ConnectionCallback; | ||||
| import com.vmware.ovsdb.service.OvsdbClient; | ||||
| import com.vmware.ovsdb.service.OvsdbConnectionInfo; | ||||
| import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener; | ||||
|  | ||||
| import io.netty.handler.ssl.SslContext; | ||||
| @@ -32,20 +24,6 @@ public class TipWlanOvsdbRedirector { | ||||
|  | ||||
|     private static final Logger LOG = LoggerFactory.getLogger(TipWlanOvsdbRedirector.class); | ||||
|      | ||||
|     private final TagList tags = CloudMetricsTags.commonTags; | ||||
|  | ||||
|     private final Counter connectionsAttempted = new BasicCounter( | ||||
|             MonitorConfig.builder("osgw-redirector-connectionsAttempted").withTags(tags).build()); | ||||
|  | ||||
|     private final Counter connectionsFailed = new BasicCounter( | ||||
|             MonitorConfig.builder("osgw-redirector-connectionsFailed").withTags(tags).build()); | ||||
|  | ||||
|     private final Counter connectionsCreated = new BasicCounter( | ||||
|             MonitorConfig.builder("osgw-redirector-connectionsCreated").withTags(tags).build()); | ||||
|  | ||||
|     private final Counter connectionsDropped = new BasicCounter( | ||||
|             MonitorConfig.builder("osgw-redirector-connectionsDropped").withTags(tags).build()); | ||||
|  | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.redirector.listenPort:6643}") | ||||
|     private int ovsdbRedirectorListenPort; | ||||
|  | ||||
| @@ -63,41 +41,21 @@ public class TipWlanOvsdbRedirector { | ||||
|         listenForConnections(); | ||||
|     } | ||||
|      | ||||
|     // dtop: use anonymous constructor to ensure that the following code always | ||||
|     // get executed, | ||||
|     // even when somebody adds another constructor in here | ||||
|     { | ||||
|         DefaultMonitorRegistry.getInstance().register(connectionsAttempted); | ||||
|         DefaultMonitorRegistry.getInstance().register(connectionsCreated); | ||||
|         DefaultMonitorRegistry.getInstance().register(connectionsDropped); | ||||
|         DefaultMonitorRegistry.getInstance().register(connectionsFailed); | ||||
|     } | ||||
|  | ||||
|     public void listenForConnections() { | ||||
|  | ||||
|         ConnectionCallback connectionCallback = new ConnectionCallback() { | ||||
|             public void connected(OvsdbClient ovsdbClient) { | ||||
|                 connectionsAttempted.increment(); | ||||
|                  | ||||
|                 String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress(); | ||||
|                 int localPort = ovsdbClient.getConnectionInfo().getLocalPort(); | ||||
|                 String subjectDn = null; | ||||
|                 try { | ||||
|                     OvsdbConnectionInfo connectionInfo = ovsdbClient.getConnectionInfo(); | ||||
|                     String remoteHost = connectionInfo.getRemoteAddress().getHostAddress(); | ||||
|                     Certificate remoteCertificate = connectionInfo.getRemoteCertificate(); | ||||
|                     if (remoteCertificate == null) { | ||||
|                     	LOG.debug("Connect attempt no certificate from {} on remote port {}", remoteHost, connectionInfo.getRemotePort()); | ||||
|                     	return; | ||||
|                     } | ||||
|                      | ||||
|                     int localPort = connectionInfo.getLocalPort(); | ||||
|                     String subjectDn = null; | ||||
| 					subjectDn = ((X509Certificate) remoteCertificate).getSubjectDN().getName(); | ||||
|                     subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()).getSubjectDN().getName(); | ||||
|                      | ||||
|                     String clientCn = SslUtil.extractCN(subjectDn); | ||||
|                     LOG.info("ovsdbClient redirector connected from {} on port {} clientCn {}", remoteHost, localPort, clientCn);                 | ||||
|                     ovsdbDao.performRedirect(ovsdbClient, clientCn); | ||||
|                     connectionsCreated.increment(); | ||||
|  | ||||
|                 } catch (Exception e) { | ||||
|                     connectionsFailed.increment(); | ||||
|                     //something is wrong with the SSL or with the redirect | ||||
|                     ovsdbClient.shutdown(); | ||||
|                     return; | ||||
| @@ -105,14 +63,11 @@ public class TipWlanOvsdbRedirector { | ||||
|             } | ||||
|              | ||||
|             public void disconnected(OvsdbClient ovsdbClient) { | ||||
|                 connectionsDropped.increment(); | ||||
|                 String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress(); | ||||
|                 int localPort = ovsdbClient.getConnectionInfo().getLocalPort(); | ||||
|                 String subjectDn = null; | ||||
|                 try { | ||||
|                 	Certificate remoteCertificate = ovsdbClient.getConnectionInfo().getRemoteCertificate(); | ||||
|                 	if (remoteCertificate != null) | ||||
|                 		subjectDn = ((X509Certificate) remoteCertificate).getSubjectDN().getName(); | ||||
|                     subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()).getSubjectDN().getName(); | ||||
|                 } catch (Exception e) { | ||||
|                     //do nothing | ||||
|                 } | ||||
|   | ||||
| @@ -1,81 +0,0 @@ | ||||
| package com.telecominfraproject.wlan.opensync.ovsdb.dao; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 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.vmware.ovsdb.exception.OvsdbClientException; | ||||
| import com.vmware.ovsdb.protocol.operation.Insert; | ||||
| import com.vmware.ovsdb.protocol.operation.Operation; | ||||
| import com.vmware.ovsdb.protocol.operation.Update; | ||||
| import com.vmware.ovsdb.protocol.operation.notation.Atom; | ||||
| 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.Value; | ||||
| import com.vmware.ovsdb.protocol.operation.result.OperationResult; | ||||
| import com.vmware.ovsdb.service.OvsdbClient; | ||||
|  | ||||
| @Component | ||||
| public class OvsdbCommandConfig extends OvsdbDaoBase { | ||||
|     @Autowired | ||||
|     OvsdbGet ovsdbGet; | ||||
|  | ||||
|     void configureCommands(OvsdbClient ovsdbClient, String command, Map<String, String> payload, Long delay, | ||||
|             Long duration) { | ||||
|         LOG.debug("OvsdbCommandConfig::configureCommands command {}, payload {}, delay {} duration {}", command, | ||||
|                 payload, delay, duration); | ||||
|         List<Operation> operations = new ArrayList<>(); | ||||
|         List<Condition> conditions = new ArrayList<>(); | ||||
|         Map<String, Value> commandConfigColumns = new HashMap<>(); | ||||
|         conditions.add(new Condition("command", Function.EQUALS, new Atom<>(command))); | ||||
|         commandConfigColumns.put("command", new Atom<>(command)); | ||||
|         commandConfigColumns.put("payload", com.vmware.ovsdb.protocol.operation.notation.Map.of(payload)); | ||||
|         commandConfigColumns.put("delay", new Atom<>(delay)); | ||||
|         commandConfigColumns.put("duration", new Atom<>(duration)); | ||||
|         commandConfigColumns.put("timestamp", new Atom<>(System.currentTimeMillis())); | ||||
|         Row row = new Row(commandConfigColumns); | ||||
|         insertOrUpdate(ovsdbClient, command, operations, conditions, row, commandConfigDbTable); | ||||
|         try { | ||||
|             CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); | ||||
|             OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||
|             LOG.debug( | ||||
|                     "OvsdbCommandConfig::configureCommands successfully configured command {} for duration {} payload {}", | ||||
|                     command, duration, payload); | ||||
|             for (OperationResult res : result) { | ||||
|                 LOG.debug("Op Result {}", res); | ||||
|             } | ||||
|         } catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) { | ||||
|             LOG.error("OvsdbCommandConfig::configureCommands failed.", e); | ||||
|             throw new RuntimeException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Update an existing entry, or insert a new one if entry not found | ||||
|      * satisfying conditions | ||||
|      *  | ||||
|      * @param ovsdbClient | ||||
|      * @param command | ||||
|      * @param operations | ||||
|      * @param conditions | ||||
|      * @param row | ||||
|      * @param ovsdbTableName TODO | ||||
|      */ | ||||
|     void insertOrUpdate(OvsdbClient ovsdbClient, String command, List<Operation> operations, List<Condition> conditions, | ||||
|             Row row, String ovsdbTableName) { | ||||
|         if (ovsdbGet.getOvsdbTableRowsForCondition(ovsdbClient,commandConfigDbTable,conditions).isEmpty()) { | ||||
|             operations.add(new Insert(ovsdbTableName, row)); | ||||
|         } else { | ||||
|             operations.add(new Update(ovsdbTableName, conditions, row)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,308 +0,0 @@ | ||||
| package com.telecominfraproject.wlan.opensync.ovsdb.dao; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Map.Entry; | ||||
| 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.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
|  | ||||
| import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo; | ||||
| import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.enumerations.DhcpFpDbStatus; | ||||
| import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.enumerations.DhcpFpDeviceType; | ||||
| import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.enumerations.DhcpFpManufId; | ||||
| import com.vmware.ovsdb.exception.OvsdbClientException; | ||||
| import com.vmware.ovsdb.protocol.operation.Insert; | ||||
| import com.vmware.ovsdb.protocol.operation.Operation; | ||||
| import com.vmware.ovsdb.protocol.operation.Select; | ||||
| import com.vmware.ovsdb.protocol.operation.Update; | ||||
| 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.ErrorResult; | ||||
| import com.vmware.ovsdb.protocol.operation.result.InsertResult; | ||||
| import com.vmware.ovsdb.protocol.operation.result.OperationResult; | ||||
| import com.vmware.ovsdb.protocol.operation.result.SelectResult; | ||||
| import com.vmware.ovsdb.protocol.operation.result.UpdateResult; | ||||
| import com.vmware.ovsdb.service.OvsdbClient; | ||||
|  | ||||
| public class OvsdbDaoBase { | ||||
|  | ||||
|     static final int MAX_VIF_PER_FREQ = 8; | ||||
|     static final Logger LOG = LoggerFactory.getLogger(OvsdbDaoBase.class); | ||||
|     public static final String wifiRouteStateDbTable = "Wifi_Route_State"; | ||||
|     public static final String wifiMasterStateDbTable = "Wifi_Master_State"; | ||||
|     public static final String HTTP = "http"; | ||||
|     public static final String ovsdbName = "Open_vSwitch"; | ||||
|     public static final String awlanNodeDbTable = "AWLAN_Node"; | ||||
|     public static final String wifiStatsConfigDbTable = "Wifi_Stats_Config"; | ||||
|     public static final String interfaceDbTable = "Interface"; | ||||
|     public static final String portDbTable = "Port"; | ||||
|     public static final String bridgeDbTable = "Bridge"; | ||||
|     public static final String wifiRadioConfigDbTable = "Wifi_Radio_Config"; | ||||
|     public static final String wifiRadioStateDbTable = "Wifi_Radio_State"; | ||||
|     public static final String wifiVifConfigDbTable = "Wifi_VIF_Config"; | ||||
|     public static final String wifiVifStateDbTable = "Wifi_VIF_State"; | ||||
|     public static final String wifiInetConfigDbTable = "Wifi_Inet_Config"; | ||||
|     public static final String wifiInetStateDbTable = "Wifi_Inet_State"; | ||||
|     public static final String wifiAssociatedClientsDbTable = "Wifi_Associated_Clients"; | ||||
|     public static final String wifiRrmConfigDbTable = "Wifi_RRM_Config"; | ||||
|     public static final String nodeConfigTable = "Node_Config"; | ||||
|     public static final String nodeStateTable = "Node_State"; | ||||
|     public static final String dhcpLeasedIpDbTable = "DHCP_leased_IP"; | ||||
|     public static final String commandConfigDbTable = "Command_Config"; | ||||
|     public static final String commandStateDbTable = "Command_State"; | ||||
|     public static final String hotspot20IconConfigDbTable = "Hotspot20_Icon_Config"; | ||||
|     public static final String hotspot20OsuProvidersDbTable = "Hotspot20_OSU_Providers"; | ||||
|     public static final String hotspot20ConfigDbTable = "Hotspot20_Config"; | ||||
|     public static final String radiusConfigDbTable = "Radius_Proxy_Config"; | ||||
|     public static final String apcConfigDbTable = "APC_Config"; | ||||
|     public static final String apcStateDbTable = "APC_State"; | ||||
|     public static final String StartDebugEngineApCommand = "startPortForwardingSession"; | ||||
|     public static final String StopDebugEngineApCommand = "stopSession"; | ||||
|  | ||||
|     public static <T> T getSingleValueFromSet(Row row, String columnName) { | ||||
|  | ||||
|         Set<T> set = row != null ? row.getSetColumn(columnName) : null; | ||||
|         T ret = (set != null) && !set.isEmpty() ? set.iterator().next() : null; | ||||
|  | ||||
|         return ret; | ||||
|     } | ||||
|  | ||||
|     public static void translateDhcpFpValueToString(Entry<String, Value> c, Map<String, String> rowMap) { | ||||
|         if (c.getKey().equals("manuf_id")) { | ||||
|             rowMap.put(c.getKey(), DhcpFpManufId.getById(Integer.valueOf(c.getValue().toString())).getName()); | ||||
|         } else if (c.getKey().equals("device_type")) { | ||||
|             rowMap.put(c.getKey(), DhcpFpDeviceType.getById(Integer.valueOf(c.getValue().toString())).getName()); | ||||
|         } else if (c.getKey().equals("db_status")) { | ||||
|             rowMap.put(c.getKey(), DhcpFpDbStatus.getById(Integer.valueOf(c.getValue().toString())).getName()); | ||||
|         } else { | ||||
|             rowMap.put(c.getKey(), c.getValue().toString()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.managerAddr:3.88.149.10}") | ||||
|     String managerIpAddr; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.region:Ottawa}") | ||||
|     public String region; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listenPort:6640}") | ||||
|     int ovsdbListenPort; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.externalPort:6640}") | ||||
|     int ovsdbExternalPort; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.mqttBroker.address.external:testportal.123wlan.com}") | ||||
|     String mqttBrokerAddress; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.mqttBroker.listenPort:1883}") | ||||
|     int mqttBrokerListenPort; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.mqttBroker.externalPort:1883}") | ||||
|     int mqttBrokerExternalPort; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.timeoutSec:30}") | ||||
|     int ovsdbTimeoutSec; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_bridge:lan}") | ||||
|     public String bridgeNameVifInterfaces; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_lan_type:bridge}") | ||||
|     public String defaultLanInterfaceType; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_lan_name:lan}") | ||||
|     public String defaultLanInterfaceName; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_wan_type:bridge}") | ||||
|     public String defaultWanInterfaceType; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_wan_name:wan}") | ||||
|     public String defaultWanInterfaceName; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio0:wlan0}") | ||||
|     public String defaultRadio0; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio1:wlan1}") | ||||
|     public String defaultRadio1; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio2:wlan2}") | ||||
|     public String defaultRadio2; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-device.radio0:radio0}") | ||||
|     public String radio0; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-device.radio1:radio1}") | ||||
|     public String radio1; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-device.radio2:radio2}") | ||||
|     public String radio2; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.max:8}") | ||||
|     public int maxInterfacesPerRadio; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.awlan-node.upgrade_dl_timer:60}") | ||||
|     public long upgradeDlTimerSeconds; | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.awlan-node.upgrade_timer:90}") | ||||
|     public long upgradeTimerSeconds; | ||||
|  | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.awlan-node.reboot_or_reset_timer:10}") | ||||
|     public long rebootOrResetTimerSeconds; | ||||
|  | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.externalFileStoreURL:https://localhost:9096}") | ||||
|     String externalFileStoreURL; | ||||
|      | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.fileStoreDirectory:/tmp/tip-wlan-filestore}") | ||||
|     String fileStoreDirectoryName; | ||||
|      | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.defaultReportingIntervalSeconds:60}") | ||||
|     public int defaultReportingIntervalSeconds; | ||||
|      | ||||
|     @org.springframework.beans.factory.annotation.Value("${tip.wlan.defaultOffChannelReportingIntervalSeconds:120}") | ||||
|     public int defaultOffChannelReportingIntervalSeconds; | ||||
|  | ||||
|     public OvsdbDaoBase() { | ||||
|     } | ||||
|  | ||||
|     public <T> Set<T> getSet(Row row, String columnName) { | ||||
|  | ||||
|         Set<T> set = row != null ? row.getSetColumn(columnName) : null; | ||||
|  | ||||
|         return set; | ||||
|     } | ||||
|  | ||||
|     public void updateEventReportingInterval(OvsdbClient ovsdbClient, long eventReportingIntervalSeconds) { | ||||
|  | ||||
|         try { | ||||
|             List<Operation> operations = new ArrayList<>(); | ||||
|             Map<String, Value> updateColumns = new HashMap<>(); | ||||
|  | ||||
|             // turn on stats collection over MQTT: (reporting_interval is in | ||||
|             // seconds) | ||||
|             // $ ovsh i Wifi_Stats_Config reporting_interval:=10 | ||||
|             // radio_type:="2.4G" stats_type:="device" | ||||
|  | ||||
|             updateColumns.put("reporting_interval", new Atom<>(eventReportingIntervalSeconds)); | ||||
|             updateColumns.put("radio_type", new Atom<>("2.4G")); | ||||
|             updateColumns.put("stats_type", new Atom<>("event")); | ||||
|  | ||||
|             Row row = new Row(updateColumns); | ||||
|             operations.add(new Insert(wifiStatsConfigDbTable, row)); | ||||
|  | ||||
|             CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); | ||||
|             OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||
|  | ||||
|             LOG.debug("Updated {}:", wifiStatsConfigDbTable); | ||||
|  | ||||
|             for (OperationResult res : result) { | ||||
|                 LOG.debug("updateEventReportingInterval Result {}", res); | ||||
|                 if (res instanceof InsertResult) { | ||||
|                     LOG.info("updateEventReportingInterval insert new row result {}", (res)); | ||||
|                     // for insert, make sure it is actually in the table | ||||
|                     confirmRowExistsInTable(ovsdbClient, ((InsertResult) res).getUuid(), wifiStatsConfigDbTable); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|         } catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) { | ||||
|             throw new RuntimeException(e); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     void configureWanInterfacesForDhcpSniffing(OvsdbClient ovsdbClient) { | ||||
|         List<Operation> operations = new ArrayList<>(); | ||||
|         Map<String, Value> updateColumns = new HashMap<>(); | ||||
|         List<Condition> conditions = new ArrayList<>(); | ||||
|         // Going forward this will be only for WAN, and children will inherit | ||||
|         // conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(defaultWanInterfaceName))); | ||||
|  | ||||
|         updateColumns.put("dhcp_sniff", new Atom<>(true)); | ||||
|  | ||||
|         Row row = new Row(updateColumns); | ||||
|         operations.add(new Update(wifiInetConfigDbTable, conditions, row)); | ||||
|  | ||||
|         try { | ||||
|             CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); | ||||
|             OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||
|  | ||||
|             for (OperationResult res : result) { | ||||
|                 if (res instanceof UpdateResult) { | ||||
|                     LOG.info("configureWanInterfacesForDhcpSniffing {}", ((UpdateResult) res).toString()); | ||||
|                 } else if (res instanceof ErrorResult) { | ||||
|                     LOG.error("configureWanInterfacesForDhcpSniffing error {}", (res)); | ||||
|                     throw new RuntimeException("configureWanInterfacesForDhcpSniffing " + ((ErrorResult) res).getError() | ||||
|                             + " " + ((ErrorResult) res).getDetails()); | ||||
|                 } | ||||
|             } | ||||
|         } catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) { | ||||
|             LOG.error("OvsdbDao::configureWanInterfaces failed.", e); | ||||
|             throw new RuntimeException(e); | ||||
|  | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Check existence of row with a given Uuid in the specified ovsdb table | ||||
|      * Used primarily for operation validation. | ||||
|      * | ||||
|      * @param ovsdbClient | ||||
|      * @param rowUuid | ||||
|      * @param table | ||||
|      */ | ||||
|     void confirmRowExistsInTable(OvsdbClient ovsdbClient, Uuid rowUuid, String table) { | ||||
|         try { | ||||
|             List<Condition> conditions = new ArrayList<>(); | ||||
|             conditions.add(new Condition("_uuid", Function.EQUALS, new Atom<>(rowUuid))); | ||||
|             List<Operation> operations = new ArrayList<>(); | ||||
|             operations.add(new Select(table, conditions)); | ||||
|  | ||||
|             CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); | ||||
|             OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||
|  | ||||
|             for (OperationResult res : result) { | ||||
|                 if (res instanceof SelectResult) { | ||||
|                     LOG.info("Select Result for confirmRowExistsInTable {} with Uuid {} {}", table, rowUuid, | ||||
|                             ((SelectResult) res).getRows()); | ||||
|                 } else if (res instanceof ErrorResult) { | ||||
|                     LOG.error("confirmRowExistsInTable error {}", (res)); | ||||
|                     throw new RuntimeException("confirmRowExistsInTable " + ((ErrorResult) res).getError() + " " | ||||
|                             + ((ErrorResult) res).getDetails()); | ||||
|                 } | ||||
|             } | ||||
|         } catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) { | ||||
|             LOG.error("Unable to confirm existence of row in table {} for Uuid {}", table, rowUuid, e); | ||||
|             throw new RuntimeException(e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void fillInRadioInterfaceNamesAndCountry(OvsdbClient ovsdbClient, ConnectNodeInfo ret) { | ||||
|         try { | ||||
|             List<Operation> operations = new ArrayList<>(); | ||||
|             List<Condition> conditions = new ArrayList<>(); | ||||
|             List<String> columns = new ArrayList<>(); | ||||
|  | ||||
|             columns.add("freq_band"); | ||||
|             columns.add("if_name"); | ||||
|             columns.add("country"); | ||||
|  | ||||
|             operations.add(new Select(wifiRadioStateDbTable, conditions, columns)); | ||||
|             CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations); | ||||
|             OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS); | ||||
|  | ||||
|             if (LOG.isDebugEnabled()) { | ||||
|                 LOG.debug("Select from {}:", wifiRadioStateDbTable); | ||||
|  | ||||
|                 for (OperationResult res : result) { | ||||
|                     LOG.debug("Op Result {}", res); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if ((result != null) && (result.length > 0) && (result[0] instanceof SelectResult) | ||||
|                     && !((SelectResult) result[0]).getRows().isEmpty()) { | ||||
|  | ||||
|                 for (Row row : ((SelectResult) result[0]).getRows()) { | ||||
|                     ret.wifiRadioStates.put(getSingleValueFromSet(row, "freq_band"), | ||||
|                             getSingleValueFromSet(row, "if_name")); | ||||
|                     ret.country = getSingleValueFromSet(row, "country"); | ||||
|  | ||||
|                 } | ||||
|  | ||||
|             } | ||||
|  | ||||
|         } catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) { | ||||
|             throw new RuntimeException(e); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
| } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user