mirror of
				https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
				synced 2025-11-03 20:17:53 +00:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			WIFI-7888-
			...
			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>
 | 
			
		||||
      </dependency>      
 | 
			
		||||
      
 | 
			
		||||
      <dependency>
 | 
			
		||||
        <artifactId>service-metric-models</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-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);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -248,8 +243,6 @@ public class OpensyncCloudGatewayController {
 | 
			
		||||
        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,374 +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.hasBssid()) {
 | 
			
		||||
            clientSession.getDetails().setBssid(MacAddress.valueOf(apClientEvent.getBssid()));
 | 
			
		||||
        }
 | 
			
		||||
        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.hasBssid()) {
 | 
			
		||||
            clientSession.getDetails().setBssid(MacAddress.valueOf(apClientEvent.getBssid()));
 | 
			
		||||
        }
 | 
			
		||||
        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.hasBssid()) {
 | 
			
		||||
            clientSession.getDetails().setBssid(MacAddress.valueOf(apClientEvent.getBssid()));
 | 
			
		||||
        }
 | 
			
		||||
        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);
 | 
			
		||||
@@ -279,7 +297,8 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
			
		||||
        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<>();
 | 
			
		||||
@@ -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);
 | 
			
		||||
@@ -394,7 +424,7 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testApDisconnected() {
 | 
			
		||||
        opensyncExternalIntegrationCloud.apDisconnected("Test_Client_21P10C68818122", 0L);
 | 
			
		||||
        opensyncExternalIntegrationCloud.apDisconnected("Test_Client_21P10C68818122");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
@@ -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,16 +603,16 @@ 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);
 | 
			
		||||
        
 | 
			
		||||
@@ -588,13 +638,15 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
			
		||||
 | 
			
		||||
        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,46 +726,28 @@ 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() {
 | 
			
		||||
        // TODO: implement me
 | 
			
		||||
@@ -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,7 +827,21 @@ 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<>();
 | 
			
		||||
 | 
			
		||||
@@ -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>
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,11 +22,7 @@ public interface OpensyncExternalIntegrationInterface {
 | 
			
		||||
        INIT, INSERT, DELETE, MODIFY
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void apDisconnected(String apId, Long ctxRoutingId);
 | 
			
		||||
    
 | 
			
		||||
    Long getLatestRoutingId(String apId);
 | 
			
		||||
    
 | 
			
		||||
    void removeRoutingRecord(Long routingId);
 | 
			
		||||
    void apDisconnected(String apId);
 | 
			
		||||
 | 
			
		||||
    OpensyncAPConfig getApConfig(String apId);
 | 
			
		||||
 | 
			
		||||
@@ -40,28 +36,19 @@ public interface OpensyncExternalIntegrationInterface {
 | 
			
		||||
 | 
			
		||||
    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 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 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 {
 | 
			
		||||
 | 
			
		||||
@@ -19,13 +17,12 @@ public interface OvsdbClientInterface {
 | 
			
		||||
 | 
			
		||||
    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);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,5 @@
 | 
			
		||||
package com.telecominfraproject.wlan.opensync.external.integration;
 | 
			
		||||
 | 
			
		||||
import java.util.concurrent.atomic.AtomicInteger;
 | 
			
		||||
 | 
			
		||||
import com.vmware.ovsdb.service.OvsdbClient;
 | 
			
		||||
 | 
			
		||||
public class OvsdbSession {
 | 
			
		||||
@@ -9,7 +7,7 @@ public class OvsdbSession {
 | 
			
		||||
    private String apId;
 | 
			
		||||
    private long routingId;
 | 
			
		||||
    private long equipmentId;
 | 
			
		||||
    private AtomicInteger currentConfigNumInFlight = new AtomicInteger();
 | 
			
		||||
    private int customerId;
 | 
			
		||||
    
 | 
			
		||||
    public OvsdbClient getOvsdbClient() {
 | 
			
		||||
        return ovsdbClient;
 | 
			
		||||
@@ -35,9 +33,12 @@ public class OvsdbSession {
 | 
			
		||||
    public void setEquipmentId(long equipmentId) {
 | 
			
		||||
        this.equipmentId = equipmentId;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public AtomicInteger getCurrentConfigNumInFlight() {
 | 
			
		||||
        return currentConfigNumInFlight;
 | 
			
		||||
    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,25 +26,6 @@ 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() {
 | 
			
		||||
@@ -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,9 +4,10 @@ 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;
 | 
			
		||||
    
 | 
			
		||||
@@ -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 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 int getVlanId() {
 | 
			
		||||
        return vlanId;
 | 
			
		||||
    }
 | 
			
		||||
	public void setIfUuid(String ifUuid) {
 | 
			
		||||
		this.ifUuid = ifUuid;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    @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 String getInetAddr() {
 | 
			
		||||
		return inetAddr;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    public boolean isEnabled() {
 | 
			
		||||
        return enabled;
 | 
			
		||||
    }
 | 
			
		||||
	public void setInetAddr(String inetAddr) {
 | 
			
		||||
		this.inetAddr = inetAddr;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    public boolean isNat() {
 | 
			
		||||
        return nat;
 | 
			
		||||
    }
 | 
			
		||||
	public String getHwAddr() {
 | 
			
		||||
		return hwAddr;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    public boolean isNetwork() {
 | 
			
		||||
        return network;
 | 
			
		||||
    }
 | 
			
		||||
	public void setHwAddr(String hwAddr) {
 | 
			
		||||
		this.hwAddr = hwAddr;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    public boolean isSofwdsWrap() {
 | 
			
		||||
        return sofwdsWrap;
 | 
			
		||||
    }
 | 
			
		||||
	public int getMtw() {
 | 
			
		||||
		return mtw;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    public void set_uuid(Uuid _uuid) {
 | 
			
		||||
        this._uuid = _uuid;
 | 
			
		||||
    }
 | 
			
		||||
	public void setMtw(int mtw) {
 | 
			
		||||
		this.mtw = mtw;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    public void setBroadcast(String broadcast) {
 | 
			
		||||
        this.broadcast = broadcast;
 | 
			
		||||
    }
 | 
			
		||||
	public boolean isNetwork() {
 | 
			
		||||
		return network;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    public void setDhcpc(Map<String, String> dhcpc) {
 | 
			
		||||
        this.dhcpc = dhcpc;
 | 
			
		||||
    }
 | 
			
		||||
	public void setNetwork(boolean network) {
 | 
			
		||||
		this.network = network;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    public void setDhcpd(Map<String, String> dhcpd) {
 | 
			
		||||
        this.dhcpd = dhcpd;
 | 
			
		||||
    }
 | 
			
		||||
	public Map<String, String> getDns() {
 | 
			
		||||
		return dns;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    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 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;
 | 
			
		||||
 | 
			
		||||
@@ -9,40 +11,40 @@ public class OpensyncAPRadioConfig extends OpensyncAPBase {
 | 
			
		||||
    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();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -3,28 +3,25 @@
 | 
			
		||||
 */
 | 
			
		||||
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;
 | 
			
		||||
 | 
			
		||||
@@ -13,29 +14,44 @@ public class OpensyncAPSsidConfig extends OpensyncAPBase {
 | 
			
		||||
    private String mode;
 | 
			
		||||
    private boolean broadcast;
 | 
			
		||||
    
 | 
			
		||||
    @Override
 | 
			
		||||
    public OpensyncAPSsidConfig clone() {
 | 
			
		||||
        return (OpensyncAPSsidConfig) super.clone();
 | 
			
		||||
    public RadioType getRadioType() {
 | 
			
		||||
        return radioType;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,25 +4,19 @@
 | 
			
		||||
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,50 +85,107 @@ 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, Long ctxRoutingId) {
 | 
			
		||||
    public void apDisconnected(String apId) {
 | 
			
		||||
        LOG.info("AP {} got disconnected from the gateway", apId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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,43 +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
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Long getLatestRoutingId(String apId) {
 | 
			
		||||
        LOG.info("getLatestRoutingId for AP {}", apId);
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void removeRoutingRecord(Long routingId) {
 | 
			
		||||
        LOG.info("removeRoutingRecord for routingId {}", routingId);        
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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,28 +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;
 | 
			
		||||
 | 
			
		||||
    @Value("${tip.wlan.internalHostName:localhost}") 
 | 
			
		||||
    private String internalHostName;
 | 
			
		||||
    
 | 
			
		||||
    // 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
 | 
			
		||||
@@ -81,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,
 | 
			
		||||
@@ -109,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.
 | 
			
		||||
                        /*
 | 
			
		||||
@@ -139,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_" + internalHostName);
 | 
			
		||||
                        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/opensync_mqtt_" + internalHostName + "/#", 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
 | 
			
		||||
@@ -229,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;
 | 
			
		||||
@@ -25,22 +18,8 @@ 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