mirror of
				https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
				synced 2025-11-04 04:27:59 +00:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			1.0
			...
			WIFI-797-R
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					b776610d5e | ||
| 
						 | 
					f9eb99ae65 | ||
| 
						 | 
					fc19bc59df | ||
| 
						 | 
					d5b534c025 | ||
| 
						 | 
					ffc07452c6 | 
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							@@ -1,5 +1,5 @@
 | 
				
			|||||||
BSD 3-Clause License
 | 
					BSD 3-Clause License
 | 
				
			||||||
#Release Testing
 | 
					
 | 
				
			||||||
Copyright (c) 2020, Telecom Infra Project
 | 
					Copyright (c) 2020, Telecom Infra Project
 | 
				
			||||||
All rights reserved.
 | 
					All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								opensync-ext-cloud/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								opensync-ext-cloud/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/target/
 | 
				
			||||||
@@ -13,17 +13,21 @@
 | 
				
			|||||||
	<name>opensync-ext-cloud</name>
 | 
						<name>opensync-ext-cloud</name>
 | 
				
			||||||
	<description>Configuration interface that provides config from the cloud services.</description>
 | 
						<description>Configuration interface that provides config from the cloud services.</description>
 | 
				
			||||||
	<dependencies>
 | 
						<dependencies>
 | 
				
			||||||
<!-- 		<dependency> -->
 | 
							<dependency>
 | 
				
			||||||
<!-- 			<groupId>com.telecominfraproject.wlan</groupId> -->
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
<!-- 			<artifactId>opensync-ext-interface</artifactId> -->
 | 
								<artifactId>opensync-ext-interface</artifactId>
 | 
				
			||||||
<!-- 			<version>${tip-wlan-cloud.release.version}</version> -->
 | 
								<version>${tip-wlan-cloud.release.version}</version>
 | 
				
			||||||
<!-- 		</dependency> -->
 | 
							</dependency>
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-gateway</artifactId>
 | 
								<artifactId>opensync-gateway</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>${tip-wlan-cloud.release.version}</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 	 
 | 
					 	  <dependency>
 | 
				
			||||||
 | 
					        <artifactId>base-container</artifactId>
 | 
				
			||||||
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
					        <version>${tip-wlan-cloud.release.version}</version>
 | 
				
			||||||
 | 
					      </dependency>
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <artifactId>base-client</artifactId>
 | 
					            <artifactId>base-client</artifactId>
 | 
				
			||||||
            <groupId>com.telecominfraproject.wlan</groupId>
 | 
					            <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.net.Inet4Address;
 | 
					 | 
				
			||||||
import java.net.InetAddress;
 | 
					import java.net.InetAddress;
 | 
				
			||||||
import java.net.UnknownHostException;
 | 
					import java.net.UnknownHostException;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
@@ -149,14 +148,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
    private boolean isAutoconfigEnabled;
 | 
					    private boolean isAutoconfigEnabled;
 | 
				
			||||||
    @Value("${tip.wlan.ovsdb.defaultFwVersion:r10947-65030d81f3}")
 | 
					    @Value("${tip.wlan.ovsdb.defaultFwVersion:r10947-65030d81f3}")
 | 
				
			||||||
    private String defaultFwVersion;
 | 
					    private String defaultFwVersion;
 | 
				
			||||||
    @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;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private CacheManager cacheManagerShortLived;
 | 
					    private CacheManager cacheManagerShortLived;
 | 
				
			||||||
@@ -180,6 +171,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
        return ce;
 | 
					        return ce;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void apConnected(String apId, ConnectNodeInfo connectNodeInfo) {
 | 
					    public void apConnected(String apId, ConnectNodeInfo connectNodeInfo) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -337,8 +329,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            updateApStatus(ce, connectNodeInfo);
 | 
					            updateApStatus(ce, connectNodeInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            removeNonWifiClients(ce, connectNodeInfo);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            OvsdbSession ovsdbSession = ovsdbSessionMapInterface.getSession(apId);
 | 
					            OvsdbSession ovsdbSession = ovsdbSessionMapInterface.getSession(apId);
 | 
				
			||||||
            ovsdbSession.setRoutingId(equipmentRoutingRecord.getId());
 | 
					            ovsdbSession.setRoutingId(equipmentRoutingRecord.getId());
 | 
				
			||||||
            ovsdbSession.setEquipmentId(ce.getId());
 | 
					            ovsdbSession.setEquipmentId(ce.getId());
 | 
				
			||||||
@@ -430,6 +420,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        apProfile.getChildProfileIds().add(rfProfile.getId());
 | 
					        apProfile.getChildProfileIds().add(rfProfile.getId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Update AP profile with SSID and RF child profiles
 | 
					        // Update AP profile with SSID and RF child profiles
 | 
				
			||||||
        apProfile = profileServiceInterface.update(apProfile);
 | 
					        apProfile = profileServiceInterface.update(apProfile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -490,7 +481,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
            protocolStatusData.setCloudCfgDataVersion(42L);
 | 
					            protocolStatusData.setCloudCfgDataVersion(42L);
 | 
				
			||||||
            protocolStatusData.setReportedCfgDataVersion(42L);
 | 
					            protocolStatusData.setReportedCfgDataVersion(42L);
 | 
				
			||||||
            protocolStatusData.setCountryCode("CA");
 | 
					            protocolStatusData.setCountryCode("CA");
 | 
				
			||||||
            protocolStatusData.setReportedCC(CountryCode.CA);
 | 
					            protocolStatusData.setReportedCC(CountryCode.ca);
 | 
				
			||||||
            protocolStatusData.setReportedHwVersion(connectNodeInfo.platformVersion);
 | 
					            protocolStatusData.setReportedHwVersion(connectNodeInfo.platformVersion);
 | 
				
			||||||
            if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_ACTIVE_KEY)) {
 | 
					            if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_ACTIVE_KEY)) {
 | 
				
			||||||
                protocolStatusData.setReportedSwVersion(
 | 
					                protocolStatusData.setReportedSwVersion(
 | 
				
			||||||
@@ -511,12 +502,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
                protocolStatusData.setReportedSwVersion("Unknown");
 | 
					                protocolStatusData.setReportedSwVersion("Unknown");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                if (connectNodeInfo.ipV4Address != null) {
 | 
					 | 
				
			||||||
                protocolStatusData.setReportedIpV4Addr(InetAddress.getByName(connectNodeInfo.ipV4Address));
 | 
					                protocolStatusData.setReportedIpV4Addr(InetAddress.getByName(connectNodeInfo.ipV4Address));
 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            } catch (UnknownHostException e) {
 | 
					            } catch (UnknownHostException e) {
 | 
				
			||||||
                LOG.error("Could not set IpV4Addr {} on AP {} due to UnknownHostException ",
 | 
					                // do nothing here
 | 
				
			||||||
                        connectNodeInfo.ipV4Address, ce.getName(), e);
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if ((connectNodeInfo.macAddress != null) && (MacAddress.valueOf(connectNodeInfo.macAddress) != null)) {
 | 
					            if ((connectNodeInfo.macAddress != null) && (MacAddress.valueOf(connectNodeInfo.macAddress) != null)) {
 | 
				
			||||||
                protocolStatusData.setReportedMacAddr(MacAddress.valueOf(connectNodeInfo.macAddress));
 | 
					                protocolStatusData.setReportedMacAddr(MacAddress.valueOf(connectNodeInfo.macAddress));
 | 
				
			||||||
@@ -525,8 +513,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
            protocolStatusData.setSerialNumber(connectNodeInfo.serialNumber);
 | 
					            protocolStatusData.setSerialNumber(connectNodeInfo.serialNumber);
 | 
				
			||||||
            protocolStatusData.setSystemName(connectNodeInfo.model);
 | 
					            protocolStatusData.setSystemName(connectNodeInfo.model);
 | 
				
			||||||
            statusRecord.setDetails(protocolStatusData);
 | 
					            statusRecord.setDetails(protocolStatusData);
 | 
				
			||||||
            Status protocolStatus = statusServiceInterface.update(statusRecord);
 | 
					            statusServiceInterface.update(statusRecord);
 | 
				
			||||||
            LOG.debug("ProtocolStatus for AP {} updated to {}", ce.getName(), protocolStatus);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            statusRecord = statusServiceInterface.getOrNull(ce.getCustomerId(), ce.getId(), StatusDataType.FIRMWARE);
 | 
					            statusRecord = statusServiceInterface.getOrNull(ce.getCustomerId(), ce.getId(), StatusDataType.FIRMWARE);
 | 
				
			||||||
            if (statusRecord == null) {
 | 
					            if (statusRecord == null) {
 | 
				
			||||||
@@ -572,7 +559,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
                networkAdminStatusRec = new Status();
 | 
					                networkAdminStatusRec = new Status();
 | 
				
			||||||
                networkAdminStatusRec.setCustomerId(ce.getCustomerId());
 | 
					                networkAdminStatusRec.setCustomerId(ce.getCustomerId());
 | 
				
			||||||
                networkAdminStatusRec.setEquipmentId(ce.getId());
 | 
					                networkAdminStatusRec.setEquipmentId(ce.getId());
 | 
				
			||||||
                networkAdminStatusRec.setStatusDataType(StatusDataType.NETWORK_ADMIN);
 | 
					 | 
				
			||||||
                NetworkAdminStatusData statusData = new NetworkAdminStatusData();
 | 
					                NetworkAdminStatusData statusData = new NetworkAdminStatusData();
 | 
				
			||||||
                networkAdminStatusRec.setDetails(statusData);
 | 
					                networkAdminStatusRec.setDetails(statusData);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -581,7 +567,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
            netAdminStatusData.setDhcpStatus(StatusCode.normal);
 | 
					            netAdminStatusData.setDhcpStatus(StatusCode.normal);
 | 
				
			||||||
            netAdminStatusData.setCloudLinkStatus(StatusCode.normal);
 | 
					            netAdminStatusData.setCloudLinkStatus(StatusCode.normal);
 | 
				
			||||||
            netAdminStatusData.setDnsStatus(StatusCode.normal);
 | 
					            netAdminStatusData.setDnsStatus(StatusCode.normal);
 | 
				
			||||||
            netAdminStatusData.setRadiusStatus(StatusCode.normal);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            networkAdminStatusRec.setDetails(netAdminStatusData);
 | 
					            networkAdminStatusRec.setDetails(netAdminStatusData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -593,32 +578,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void removeNonWifiClients(Equipment ce, ConnectNodeInfo connectNodeInfo) {
 | 
					 | 
				
			||||||
        // need to make sure that this AP didn't accidentally get registered as
 | 
					 | 
				
			||||||
        // a client previously via a partial DHCP lease event
 | 
					 | 
				
			||||||
        LOG.info("Checking for non-wifi client types for Equipment {}", ce);
 | 
					 | 
				
			||||||
        com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(ce.getCustomerId(),
 | 
					 | 
				
			||||||
                ce.getBaseMacAddress());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (client != null) {
 | 
					 | 
				
			||||||
            ClientSession clientSession = clientServiceInterface.getSessionOrNull(ce.getCustomerId(), ce.getId(),
 | 
					 | 
				
			||||||
                    ce.getBaseMacAddress());
 | 
					 | 
				
			||||||
            if (clientSession != null) {
 | 
					 | 
				
			||||||
                clientSession = clientServiceInterface.deleteSession(ce.getCustomerId(), ce.getId(),
 | 
					 | 
				
			||||||
                        client.getMacAddress());
 | 
					 | 
				
			||||||
                LOG.info("Removed invalid client session {}", clientSession);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            client = clientServiceInterface.delete(ce.getCustomerId(), client.getMacAddress());
 | 
					 | 
				
			||||||
            LOG.info("Removed invalid client type {}", client);
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            LOG.info("No clients with MAC address {} registered for customer {}", ce.getBaseMacAddress(),
 | 
					 | 
				
			||||||
                    ce.getCustomerId());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        LOG.info("Finished checking for and removing non-wifi client types for Equipment {}", ce);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void reconcileFwVersionToTrack(Equipment ce, String reportedFwVersionFromAp, String model) {
 | 
					    private void reconcileFwVersionToTrack(Equipment ce, String reportedFwVersionFromAp, String model) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.debug("reconcileFwVersionToTrack for AP {} with active firmware version {} model {}", ce.getInventoryId(),
 | 
					        LOG.debug("reconcileFwVersionToTrack for AP {} with active firmware version {} model {}", ce.getInventoryId(),
 | 
				
			||||||
@@ -828,7 +787,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
                        profileContainer.getChildrenOfType(equipmentConfig.getProfileId(), ProfileType.ssid));
 | 
					                        profileContainer.getChildrenOfType(equipmentConfig.getProfileId(), ProfileType.ssid));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ret.setMetricsProfiles(
 | 
					                ret.setMetricsProfiles(
 | 
				
			||||||
                        profileContainer.getChildrenOfType(equipmentConfig.getProfileId(), ProfileType.service_metrics_collection_config));
 | 
					                        profileContainer.getChildrenOfType(equipmentConfig.getProfileId(), ProfileType.metrics));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                Set<Profile> radiusSet = new HashSet<>();
 | 
					                Set<Profile> radiusSet = new HashSet<>();
 | 
				
			||||||
                Set<Long> captiveProfileIds = new HashSet<>();
 | 
					                Set<Long> captiveProfileIds = new HashSet<>();
 | 
				
			||||||
@@ -844,10 +803,10 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
                for (Profile ssidProfile : ret.getSsidProfile()) {
 | 
					                for (Profile ssidProfile : ret.getSsidProfile()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    hotspot20ProfileSet
 | 
					                    hotspot20ProfileSet
 | 
				
			||||||
                            .addAll(profileContainer.getChildrenOfType(ssidProfile.getId(), ProfileType.passpoint));
 | 
					                            .addAll(profileContainer.getChildrenOfType(ssidProfile.getId(), ProfileType.hotspot_2pt0));
 | 
				
			||||||
                    
 | 
					                    
 | 
				
			||||||
                    radiusSet
 | 
					
 | 
				
			||||||
                            .addAll(profileContainer.getChildrenOfType(ret.getApProfile().getId(), ProfileType.radius));
 | 
					                    radiusSet.addAll(profileContainer.getChildrenOfType(ret.getApProfile().getId(), ProfileType.radius));
 | 
				
			||||||
                    if (ssidProfile.getDetails() != null) {
 | 
					                    if (ssidProfile.getDetails() != null) {
 | 
				
			||||||
                        Long captivePortId = ((SsidConfiguration) ssidProfile.getDetails()).getCaptivePortalId();
 | 
					                        Long captivePortId = ((SsidConfiguration) ssidProfile.getDetails()).getCaptivePortalId();
 | 
				
			||||||
                        if (captivePortId != null) {
 | 
					                        if (captivePortId != null) {
 | 
				
			||||||
@@ -861,14 +820,13 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (hotspot20ProfileSet.size() > 0) {
 | 
					                if (hotspot20ProfileSet.size() > 0) {
 | 
				
			||||||
                    for (Profile hotspot20Profile : hotspot20ProfileSet) {
 | 
					                    for (Profile hotspot20Profile : hotspot20ProfileSet) {
 | 
				
			||||||
                        hotspot20OperatorSet.addAll(
 | 
					                        hotspot20OperatorSet.addAll(profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.operator));
 | 
				
			||||||
                                profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.passpoint_operator));
 | 
					                        hotspot20VenueSet.addAll(profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.venue));
 | 
				
			||||||
                        hotspot20VenueSet.addAll(
 | 
					                        hotspot20ProviderSet.addAll(profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.id_provider));
 | 
				
			||||||
                                profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.passpoint_venue));
 | 
					 | 
				
			||||||
                        hotspot20ProviderSet.addAll(
 | 
					 | 
				
			||||||
                                profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.passpoint_osu_id_provider));
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    hotspotConfig.setHotspot20OperatorSet(hotspot20OperatorSet);
 | 
					                    hotspotConfig.setHotspot20OperatorSet(hotspot20OperatorSet);
 | 
				
			||||||
                    hotspotConfig.setHotspot20ProfileSet(hotspot20ProfileSet);
 | 
					                    hotspotConfig.setHotspot20ProfileSet(hotspot20ProfileSet);
 | 
				
			||||||
@@ -907,6 +865,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
        mqttMessageProcessor.processMqttMessage(topic, report);
 | 
					        mqttMessageProcessor.processMqttMessage(topic, report);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void processMqttMessage(String topic, FlowReport flowReport) {
 | 
					    public void processMqttMessage(String topic, FlowReport flowReport) {
 | 
				
			||||||
        mqttMessageProcessor.processMqttMessage(topic, flowReport);
 | 
					        mqttMessageProcessor.processMqttMessage(topic, flowReport);
 | 
				
			||||||
@@ -947,8 +906,8 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
        
 | 
					        
 | 
				
			||||||
        ProfileContainer profileContainer = new ProfileContainer(
 | 
					        ProfileContainer profileContainer = new ProfileContainer(
 | 
				
			||||||
        		profileServiceInterface.getProfileWithChildren(apNode.getProfileId()));
 | 
					        		profileServiceInterface.getProfileWithChildren(apNode.getProfileId()));
 | 
				
			||||||
        RfConfiguration rfConfig = (RfConfiguration) profileContainer
 | 
					        RfConfiguration rfConfig = (RfConfiguration) profileContainer.getChildOfTypeOrNull(apNode.getProfileId(), ProfileType.rf)
 | 
				
			||||||
                .getChildOfTypeOrNull(apNode.getProfileId(), ProfileType.rf).getDetails();
 | 
					        		.getDetails();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (OpensyncAPVIFState vifState : vifStateTables) {
 | 
					        for (OpensyncAPVIFState vifState : vifStateTables) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1000,6 +959,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
            updateClientDetailsStatus(customerId, equipmentId, (ActiveBSSIDs) activeBssidsStatus.getDetails());
 | 
					            updateClientDetailsStatus(customerId, equipmentId, (ActiveBSSIDs) activeBssidsStatus.getDetails());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.info("Finished wifiVIFStateDbTableUpdate updated {}", activeBssidsStatus);
 | 
					        LOG.info("Finished wifiVIFStateDbTableUpdate updated {}", activeBssidsStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1134,8 +1094,8 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                protocolStatusData = (EquipmentProtocolStatusData) protocolStatus.getDetails();
 | 
					                protocolStatusData = (EquipmentProtocolStatusData) protocolStatus.getDetails();
 | 
				
			||||||
                if (!protocolStatusData.getReportedCC()
 | 
					                if (!protocolStatusData.getReportedCC()
 | 
				
			||||||
                        .equals(CountryCode.getByName((radioState.getCountry())))) {
 | 
					                        .equals(CountryCode.valueOf(radioState.getCountry().toLowerCase()))) {
 | 
				
			||||||
                    protocolStatusData.setReportedCC(CountryCode.getByName((radioState.getCountry())));
 | 
					                    protocolStatusData.setReportedCC(CountryCode.valueOf(radioState.getCountry().toLowerCase()));
 | 
				
			||||||
                    protocolStatus.setDetails(protocolStatusData);
 | 
					                    protocolStatus.setDetails(protocolStatusData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
@@ -1144,8 +1104,10 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (protocolStatus != null) {
 | 
					        if (protocolStatus != null) {
 | 
				
			||||||
            statusServiceInterface.update(protocolStatus);
 | 
					            statusServiceInterface.update(protocolStatus);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -1182,8 +1144,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
        Status activeBssidsStatus = statusServiceInterface.getOrNull(customerId, equipmentId,
 | 
					        Status activeBssidsStatus = statusServiceInterface.getOrNull(customerId, equipmentId,
 | 
				
			||||||
                StatusDataType.ACTIVE_BSSIDS);
 | 
					                StatusDataType.ACTIVE_BSSIDS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        statusServiceInterface.getForCustomer(customerId, null, ImmutableSet.of(StatusDataType.ACTIVE_BSSIDS), null,
 | 
					 | 
				
			||||||
                null);
 | 
					 | 
				
			||||||
        if (activeBssidsStatus == null) {
 | 
					        if (activeBssidsStatus == null) {
 | 
				
			||||||
            activeBssidsStatus = new Status();
 | 
					            activeBssidsStatus = new Status();
 | 
				
			||||||
            activeBssidsStatus.setCustomerId(customerId);
 | 
					            activeBssidsStatus.setCustomerId(customerId);
 | 
				
			||||||
@@ -1218,6 +1178,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
                    apId, currentActiveBSSIDs, ssid);
 | 
					                    apId, currentActiveBSSIDs, ssid);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ActiveBSSID activeBssid = new ActiveBSSID();
 | 
					        ActiveBSSID activeBssid = new ActiveBSSID();
 | 
				
			||||||
        activeBssid.setBssid(macAddress);
 | 
					        activeBssid.setBssid(macAddress);
 | 
				
			||||||
        activeBssid.setSsid(ssid);
 | 
					        activeBssid.setSsid(ssid);
 | 
				
			||||||
@@ -1225,14 +1186,16 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
        activeBssid.setNumDevicesConnected(numClients);
 | 
					        activeBssid.setNumDevicesConnected(numClients);
 | 
				
			||||||
        currentActiveBSSIDs.add(activeBssid);
 | 
					        currentActiveBSSIDs.add(activeBssid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        statusDetails.setActiveBSSIDs(currentActiveBSSIDs);
 | 
					        statusDetails.setActiveBSSIDs(currentActiveBSSIDs);
 | 
				
			||||||
        activeBssidsStatus.setDetails(statusDetails);
 | 
					        activeBssidsStatus.setDetails(statusDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        activeBssidsStatus = statusServiceInterface.update(activeBssidsStatus);
 | 
					        activeBssidsStatus = statusServiceInterface.update(activeBssidsStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.info("Processing Wifi_VIF_State table update for AP {}, updated ACTIVE_BSSID Status {}", apId,
 | 
					        if (LOG.isTraceEnabled()) {
 | 
				
			||||||
                activeBssidsStatus);
 | 
					            LOG.trace("Processing Wifi_VIF_State table update for AP {}, updated ACTIVE_BSSID Status {}", apId,
 | 
				
			||||||
 | 
					                    activeBssidsStatus.toPrettyString());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -1240,125 +1203,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        LOG.debug("Received Wifi_Inet_State table update for AP {}", apId);
 | 
					        LOG.debug("Received Wifi_Inet_State table update for AP {}", apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        OvsdbSession ovsdbSession = ovsdbSessionMapInterface.getSession(apId);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ovsdbSession == null) {
 | 
					 | 
				
			||||||
            LOG.debug("wifiInetStateDbTableUpdate::Cannot get Session for AP {}", apId);
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int customerId = ovsdbSession.getCustomerId();
 | 
					 | 
				
			||||||
        long equipmentId = ovsdbSession.getEquipmentId();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if ((customerId < 0) || (equipmentId < 0)) {
 | 
					 | 
				
			||||||
            LOG.debug("wifiInetStateDbTableUpdate::Cannot get valid CustomerId {} or EquipmentId {} for AP {}",
 | 
					 | 
				
			||||||
                    customerId, equipmentId, apId);
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Equipment ce = equipmentServiceInterface.getOrNull(equipmentId);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (ce == null) {
 | 
					 | 
				
			||||||
            LOG.debug("wifiInetStateDbTableUpdate Cannot get customer Equipment for {}", apId);
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Status lanStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.LANINFO);
 | 
					 | 
				
			||||||
        if (lanStatus == null) {
 | 
					 | 
				
			||||||
            lanStatus = new Status();
 | 
					 | 
				
			||||||
            lanStatus.setCustomerId(customerId);
 | 
					 | 
				
			||||||
            lanStatus.setEquipmentId(equipmentId);
 | 
					 | 
				
			||||||
            lanStatus.setStatusDataType(StatusDataType.LANINFO);
 | 
					 | 
				
			||||||
            lanStatus.setDetails(new EquipmentLANStatusData());
 | 
					 | 
				
			||||||
            lanStatus = statusServiceInterface.update(lanStatus);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        EquipmentLANStatusData lanStatusData = (EquipmentLANStatusData) lanStatus.getDetails();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Status protocolStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL);
 | 
					 | 
				
			||||||
        if (protocolStatus == null) {
 | 
					 | 
				
			||||||
            protocolStatus = new Status();
 | 
					 | 
				
			||||||
            protocolStatus.setCustomerId(customerId);
 | 
					 | 
				
			||||||
            protocolStatus.setEquipmentId(equipmentId);
 | 
					 | 
				
			||||||
            protocolStatus.setStatusDataType(StatusDataType.PROTOCOL);
 | 
					 | 
				
			||||||
            protocolStatus.setDetails(new EquipmentProtocolStatusData());
 | 
					 | 
				
			||||||
            protocolStatus = statusServiceInterface.update(protocolStatus);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        EquipmentProtocolStatusData protocolStatusData = (EquipmentProtocolStatusData) protocolStatus.getDetails();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for (OpensyncAPInetState inetState : inetStateTables) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (inetState.ifName != null && inetState.ifName.equals(defaultWanInterfaceName)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (inetState.inetAddr != null) {
 | 
					 | 
				
			||||||
                    try {
 | 
					 | 
				
			||||||
                        protocolStatusData.setReportedIpV4Addr(Inet4Address.getByName(inetState.inetAddr));
 | 
					 | 
				
			||||||
                        protocolStatus.setDetails(protocolStatusData);
 | 
					 | 
				
			||||||
                        protocolStatus = statusServiceInterface.update(protocolStatus);
 | 
					 | 
				
			||||||
                        LOG.info("Updated IpV4Addr for AP {} to {} from Wifi_Inet_State change for if_name {}", apId,
 | 
					 | 
				
			||||||
                                ((EquipmentProtocolStatusData) protocolStatus.getDetails()).getReportedIpV4Addr(),
 | 
					 | 
				
			||||||
                                inetState.ifName);
 | 
					 | 
				
			||||||
                        LOG.debug("ProtocolStatus for AP {} updated to {}", apId, protocolStatus);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    } catch (UnknownHostException e) {
 | 
					 | 
				
			||||||
                        LOG.error("Could not set IpV4Addr {} on AP {} due to UnknownHostException ", inetState.inetAddr,
 | 
					 | 
				
			||||||
                                apId, e);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (inetState.getIfType().equals("vlan") && inetState.parentIfName != null
 | 
					 | 
				
			||||||
                    && inetState.parentIfName.equals(defaultWanInterfaceName)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                try {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    VLANStatusData vlanStatusData = new VLANStatusData();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (inetState.gateway != null)
 | 
					 | 
				
			||||||
                        vlanStatusData.setGateway(InetAddress.getByName(inetState.getGateway()));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (inetState.dns != null) {
 | 
					 | 
				
			||||||
                        String primaryDns = inetState.dns.get("primary");
 | 
					 | 
				
			||||||
                        if (primaryDns != null) {
 | 
					 | 
				
			||||||
                            vlanStatusData.setDnsServer1(InetAddress.getByName(primaryDns));
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                        String secondaryDns = inetState.dns.get("secondary");
 | 
					 | 
				
			||||||
                        if (secondaryDns != null) {
 | 
					 | 
				
			||||||
                            vlanStatusData.setDnsServer2(InetAddress.getByName(secondaryDns));
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (inetState.netmask != null) {
 | 
					 | 
				
			||||||
                        vlanStatusData.setSubnetMask(InetAddress.getByName(inetState.netmask));
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    if (inetState.dhcpd != null) {
 | 
					 | 
				
			||||||
                        String dhcpOption = inetState.dhcpd.get("dhcp_option");
 | 
					 | 
				
			||||||
                        if (dhcpOption != null) {
 | 
					 | 
				
			||||||
                            String dhcpServer = dhcpOption.split(",")[1];
 | 
					 | 
				
			||||||
                            if (dhcpServer != null) {
 | 
					 | 
				
			||||||
                                vlanStatusData.setDhcpServer(InetAddress.getByName(dhcpServer));
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    String inetAddr = inetState.getInetAddr();
 | 
					 | 
				
			||||||
                    if (inetAddr != null) {
 | 
					 | 
				
			||||||
                        vlanStatusData.setIpBase(InetAddress.getByName(inetAddr));
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    lanStatusData.getVlanStatusDataMap().put(inetState.vlanId, vlanStatusData);
 | 
					 | 
				
			||||||
                    lanStatus.setDetails(lanStatusData);
 | 
					 | 
				
			||||||
                    lanStatus = statusServiceInterface.update(lanStatus);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    LOG.info("LANINFO updated for VLAN {}", lanStatus);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                } catch (UnknownHostException e) {
 | 
					 | 
				
			||||||
                    LOG.error("Unknown Host while configuring LANINFO", e);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1367,6 +1211,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        LOG.debug("Received Wifi_Inet_State table delete for AP {}", apId);
 | 
					        LOG.debug("Received Wifi_Inet_State table delete for AP {}", apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -1416,6 +1261,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
                isReassociation = false;
 | 
					                isReassociation = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            ClientInfoDetails clientDetails = (ClientInfoDetails) clientInstance.getDetails();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            clientInstance.setDetails(clientDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            clientInstance = clientServiceInterface.update(clientInstance);
 | 
					            clientInstance = clientServiceInterface.update(clientInstance);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1430,13 +1278,16 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
                clientSession.setLocationId(ce.getLocationId());
 | 
					                clientSession.setLocationId(ce.getLocationId());
 | 
				
			||||||
                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
					                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
				
			||||||
                clientSessionDetails.setIsReassociation(isReassociation);
 | 
					                clientSessionDetails.setIsReassociation(isReassociation);
 | 
				
			||||||
 | 
					                clientSessionDetails.setSessionId(clientInstance.getMacAddress().getAddressAsLong());
 | 
				
			||||||
                clientSession.setDetails(clientSessionDetails);
 | 
					                clientSession.setDetails(clientSessionDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
					                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ClientSessionDetails clientSessionDetails = clientSession.getDetails();
 | 
					            ClientSessionDetails clientSessionDetails = clientSession.getDetails();
 | 
				
			||||||
            clientSessionDetails.setAssociationState(AssociationState._802_11_Associated);
 | 
					            clientSessionDetails.setAssociationState(AssociationState._802_11_Associated);
 | 
				
			||||||
            clientSessionDetails.setAssocTimestamp(System.currentTimeMillis());
 | 
					            clientSessionDetails.setAssocTimestamp(System.currentTimeMillis());
 | 
				
			||||||
 | 
					            clientSessionDetails.setSessionId(clientInstance.getMacAddress().getAddressAsLong());
 | 
				
			||||||
            clientSession.getDetails().mergeSession(clientSessionDetails);
 | 
					            clientSession.getDetails().mergeSession(clientSessionDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            clientSession = clientServiceInterface.updateSession(clientSession);
 | 
					            clientSession = clientServiceInterface.updateSession(clientSession);
 | 
				
			||||||
@@ -1486,6 +1337,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Status protocolStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL);
 | 
					        Status protocolStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL);
 | 
				
			||||||
        if (protocolStatus == null) {
 | 
					        if (protocolStatus == null) {
 | 
				
			||||||
            protocolStatus = new Status();
 | 
					            protocolStatus = new Status();
 | 
				
			||||||
@@ -1736,6 +1588,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        bssidList.removeAll(toBeDeleted);
 | 
					        bssidList.removeAll(toBeDeleted);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        statusDetails.setActiveBSSIDs(bssidList);
 | 
					        statusDetails.setActiveBSSIDs(bssidList);
 | 
				
			||||||
@@ -1767,32 +1620,34 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId,
 | 
					        Set<MacAddress> macAddressSet = new HashSet<>();
 | 
				
			||||||
                new MacAddress(deletedClientMac));
 | 
					        macAddressSet.add(new MacAddress(deletedClientMac));
 | 
				
			||||||
        ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId,
 | 
					        List<ClientSession> clientSessionList = clientServiceInterface.getSessions(customerId, macAddressSet);
 | 
				
			||||||
                new MacAddress(deletedClientMac));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (client != null) {
 | 
					        for (ClientSession session : clientSessionList) {
 | 
				
			||||||
            if (clientSession != null) {
 | 
					 | 
				
			||||||
                if (!clientSession.getDetails().getAssociationState().equals(AssociationState.Disconnected)) {
 | 
					 | 
				
			||||||
                    clientSession.getDetails().setAssociationState(AssociationState.Disconnected);
 | 
					 | 
				
			||||||
                    clientSession = clientServiceInterface.updateSession(clientSession);
 | 
					 | 
				
			||||||
                    LOG.info("Session {} for client {} is now disconnected.", clientSession, client.getMacAddress());
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            if (clientSession != null) {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                clientSession = clientServiceInterface.deleteSession(customerId, equipmentId,
 | 
					            ClientSessionDetails clientSessionDetails = session.getDetails();
 | 
				
			||||||
                        new MacAddress(deletedClientMac));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                LOG.info("No client {} found, delete session {}", new MacAddress(deletedClientMac), clientSession);
 | 
					
 | 
				
			||||||
 | 
					            if ((clientSessionDetails.getAssociationState() != null)
 | 
				
			||||||
 | 
					                    && !clientSessionDetails.getAssociationState().equals(AssociationState.Disconnected)) {
 | 
				
			||||||
 | 
					                clientSessionDetails.setDisconnectByClientTimestamp(System.currentTimeMillis());
 | 
				
			||||||
 | 
					                clientSessionDetails.setAssociationState(AssociationState.Disconnected);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                session.setDetails(clientSessionDetails);
 | 
				
			||||||
 | 
					                session = clientServiceInterface.updateSession(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (LOG.isTraceEnabled()) {
 | 
				
			||||||
 | 
					                    LOG.trace("wifiAssociatedClientsDbTableDelete Updated client session, set to disconnected {}",
 | 
				
			||||||
 | 
					                            session.toPrettyString());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void dhcpLeasedIpDbTableUpdate(List<Map<String, String>> dhcpAttributes, String apId,
 | 
					    public void dhcpLeasedIpDbTableUpdate(List<Map<String, String>> dhcpAttributes, String apId,
 | 
				
			||||||
            RowUpdateOperation rowUpdateOperation) {
 | 
					            RowUpdateOperation rowUpdateOperation) {
 | 
				
			||||||
@@ -1815,6 +1670,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Equipment ce = getCustomerEquipment(apId);
 | 
					        Equipment ce = getCustomerEquipment(apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (ce == null) {
 | 
					        if (ce == null) {
 | 
				
			||||||
@@ -1824,44 +1680,39 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        long locationId = ce.getLocationId();
 | 
					        long locationId = ce.getLocationId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //         "hwaddr":
 | 
				
			||||||
 | 
					        //         "inet_addr":
 | 
				
			||||||
 | 
					        //         "hostname":
 | 
				
			||||||
 | 
					        //         "fingerprint":
 | 
				
			||||||
 | 
					        //         "vendor_class":
 | 
				
			||||||
 | 
					        //         "lease_time":
 | 
				
			||||||
 | 
					        //         "subnet_mask":
 | 
				
			||||||
 | 
					        //         "gateway":
 | 
				
			||||||
 | 
					        //         "dhcp_server":
 | 
				
			||||||
 | 
					        //         "primary_dns":
 | 
				
			||||||
 | 
					        //         "secondary_dns":
 | 
				
			||||||
 | 
					        //         "db_status":
 | 
				
			||||||
 | 
					        //         "device_name":
 | 
				
			||||||
 | 
					        //         "device_type":
 | 
				
			||||||
 | 
					        //         "manuf_id":
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (rowUpdateOperation.equals(RowUpdateOperation.INSERT)) {
 | 
					        if (rowUpdateOperation.equals(RowUpdateOperation.INSERT)) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            List<ClientSession> clientSessionList = new ArrayList<>();
 | 
					            List<ClientSession> clientSessionList = new ArrayList<>();
 | 
				
			||||||
            for (Map<String, String> dhcpLeasedIps : dhcpAttributes) {
 | 
					            for (Map<String, String> dhcpLeasedIps : dhcpAttributes) {
 | 
				
			||||||
                if (!dhcpLeasedIps.containsKey("hwaddr")) {
 | 
					                if (!dhcpLeasedIps.containsKey("hwaddr")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    LOG.info("Cannot insert a client {} that has no hwaddr.", dhcpLeasedIps);
 | 
					                    LOG.info("Cannot insert a client {} that has no hwaddr.", dhcpLeasedIps);
 | 
				
			||||||
                    continue;
 | 
					                    continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                MacAddress clientMacAddress = new MacAddress(dhcpLeasedIps.get("hwaddr"));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                MacAddress clientMacAddress = new MacAddress(dhcpLeasedIps.get("hwaddr"));
 | 
				
			||||||
                com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId,
 | 
					                com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId,
 | 
				
			||||||
                        clientMacAddress);
 | 
					                        clientMacAddress);
 | 
				
			||||||
 | 
					                if (client != null) {
 | 
				
			||||||
                if (client == null) {
 | 
					 | 
				
			||||||
                    LOG.info("Cannot find client instance for {}", clientMacAddress);
 | 
					 | 
				
			||||||
                    continue;
 | 
					 | 
				
			||||||
                } else if (clientMacAddress.equals(equipmentServiceInterface.get(equipmentId).getBaseMacAddress())) {
 | 
					 | 
				
			||||||
                    LOG.info("Not a client device {} ", dhcpLeasedIps);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    // In case somehow this equipment has accidentally been
 | 
					 | 
				
			||||||
                    // tagged as a client, remove
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId,
 | 
					 | 
				
			||||||
                            clientMacAddress);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (clientSession != null) {
 | 
					 | 
				
			||||||
                        LOG.info("Deleting invalid client session {}",
 | 
					 | 
				
			||||||
                                clientServiceInterface.deleteSession(customerId, equipmentId, clientMacAddress));
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    LOG.info("Deleting invalid client {}", clientServiceInterface.delete(customerId, clientMacAddress));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    continue;
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    LOG.info("Client {} already exists on the cloud, update client values", dhcpLeasedIps);
 | 
					                    LOG.info("Client {} already exists on the cloud, update client values", dhcpLeasedIps);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    ClientInfoDetails clientDetails = (ClientInfoDetails) client.getDetails();
 | 
					                    ClientInfoDetails clientDetails = (ClientInfoDetails) client.getDetails();
 | 
				
			||||||
@@ -1878,6 +1729,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    if (dhcpLeasedIps.containsKey("device_type")) {
 | 
					                    if (dhcpLeasedIps.containsKey("device_type")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        DhcpFpDeviceType dhcpFpDeviceType = DhcpFpDeviceType
 | 
					                        DhcpFpDeviceType dhcpFpDeviceType = DhcpFpDeviceType
 | 
				
			||||||
                                .getByName(dhcpLeasedIps.get("device_type"));
 | 
					                                .getByName(dhcpLeasedIps.get("device_type"));
 | 
				
			||||||
                        ClientType clientType = OvsdbToWlanCloudTypeMappingUtility
 | 
					                        ClientType clientType = OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
@@ -1897,7 +1749,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    // In this case, we might have a session, as the client
 | 
					                    // In this case, we might have a session, as the client
 | 
				
			||||||
                    // already exists on the cloud, update if required
 | 
					                    // already exists on the cloud, update if required
 | 
				
			||||||
 | 
					 | 
				
			||||||
                    ClientSession session = updateClientSession(customerId, equipmentId, locationId, dhcpLeasedIps,
 | 
					                    ClientSession session = updateClientSession(customerId, equipmentId, locationId, dhcpLeasedIps,
 | 
				
			||||||
                            clientMacAddress);
 | 
					                            clientMacAddress);
 | 
				
			||||||
                    if (session != null) {
 | 
					                    if (session != null) {
 | 
				
			||||||
@@ -1905,7 +1756,49 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    client = new com.telecominfraproject.wlan.client.models.Client();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    client.setCustomerId(customerId);
 | 
				
			||||||
 | 
					                    client.setMacAddress(clientMacAddress);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    ClientInfoDetails clientDetails = new ClientInfoDetails();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (dhcpLeasedIps.containsKey("hostname")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        clientDetails.setHostName(dhcpLeasedIps.get("hostname"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (dhcpLeasedIps.containsKey("fingerprint")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        clientDetails.setApFingerprint(dhcpLeasedIps.get("fingerprint"));
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (dhcpLeasedIps.containsKey("device_type")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        DhcpFpDeviceType dhcpFpDeviceType = DhcpFpDeviceType
 | 
				
			||||||
 | 
					                                .getByName(dhcpLeasedIps.get("device_type"));
 | 
				
			||||||
 | 
					                        ClientType clientType = OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
 | 
					                                .getClientTypeForDhcpFpDeviceType(dhcpFpDeviceType);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        LOG.debug("Translate from ovsdb {} to cloud {}", dhcpFpDeviceType, clientType);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        clientDetails.setClientType(clientType.getId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    client.setDetails(clientDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    client = clientServiceInterface.create(client);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    LOG.info("Created Client {}.", client);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (!clientSessionList.isEmpty()) {
 | 
					            if (!clientSessionList.isEmpty()) {
 | 
				
			||||||
@@ -1914,6 +1807,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
                LOG.info("Updated client sessions {}", clientSessionList);
 | 
					                LOG.info("Updated client sessions {}", clientSessionList);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (rowUpdateOperation.equals(RowUpdateOperation.MODIFY)
 | 
					        } else if (rowUpdateOperation.equals(RowUpdateOperation.MODIFY)
 | 
				
			||||||
                || rowUpdateOperation.equals(RowUpdateOperation.INIT)) {
 | 
					                || rowUpdateOperation.equals(RowUpdateOperation.INIT)) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1929,36 +1823,21 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                MacAddress clientMacAddress = new MacAddress(dhcpLeasedIps.get("hwaddr"));
 | 
					                MacAddress clientMacAddress = new MacAddress(dhcpLeasedIps.get("hwaddr"));
 | 
				
			||||||
 | 
					 | 
				
			||||||
                com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId,
 | 
					                com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId,
 | 
				
			||||||
                        clientMacAddress);
 | 
					                        clientMacAddress);
 | 
				
			||||||
                if (client == null) {
 | 
					                if (client == null) {
 | 
				
			||||||
                    LOG.info("Cannot find client instance for {}", clientMacAddress);
 | 
					                    LOG.info("Client {} does not exist on the cloud. Creating...", dhcpLeasedIps);
 | 
				
			||||||
                    continue;
 | 
					                    client = new com.telecominfraproject.wlan.client.models.Client();
 | 
				
			||||||
                } else if (clientMacAddress.equals(equipmentServiceInterface.get(equipmentId).getBaseMacAddress())) {
 | 
					                    client.setCustomerId(customerId);
 | 
				
			||||||
 | 
					                    client.setMacAddress(clientMacAddress);
 | 
				
			||||||
 | 
					                    ClientInfoDetails clientDetails = new ClientInfoDetails();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    LOG.info("Not a client device {} ", dhcpLeasedIps);
 | 
					                    client.setDetails(clientDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    client = clientServiceInterface.create(client);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // In case somehow this equipment has accidentally been
 | 
					 | 
				
			||||||
                    // tagged as a client, remove
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId,
 | 
					 | 
				
			||||||
                            clientMacAddress);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (clientSession != null) {
 | 
					 | 
				
			||||||
                        LOG.info("Deleting invalid client session {}",
 | 
					 | 
				
			||||||
                                clientServiceInterface.deleteSession(customerId, equipmentId, clientMacAddress));
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    LOG.info("Deleting invalid client {}", clientServiceInterface.delete(customerId, clientMacAddress));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                ClientInfoDetails clientDetails = (ClientInfoDetails) client.getDetails();
 | 
					                ClientInfoDetails clientDetails = (ClientInfoDetails) client.getDetails();
 | 
				
			||||||
                if (dhcpLeasedIps.containsKey("hostname")) {
 | 
					                if (dhcpLeasedIps.containsKey("hostname")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1973,8 +1852,8 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                if (dhcpLeasedIps.containsKey("device_type")) {
 | 
					                if (dhcpLeasedIps.containsKey("device_type")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        DhcpFpDeviceType dhcpFpDeviceType = DhcpFpDeviceType
 | 
					
 | 
				
			||||||
                                .getByName(dhcpLeasedIps.get("device_type"));
 | 
					                    DhcpFpDeviceType dhcpFpDeviceType = DhcpFpDeviceType.getByName(dhcpLeasedIps.get("device_type"));
 | 
				
			||||||
                    ClientType clientType = OvsdbToWlanCloudTypeMappingUtility
 | 
					                    ClientType clientType = OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
                            .getClientTypeForDhcpFpDeviceType(dhcpFpDeviceType);
 | 
					                            .getClientTypeForDhcpFpDeviceType(dhcpFpDeviceType);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1998,7 +1877,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
                    clientSessionList.add(session);
 | 
					                    clientSessionList.add(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2013,6 +1891,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
            LOG.debug("Recieved deletions, not removing client(s) from cloud", dhcpAttributes);
 | 
					            LOG.debug("Recieved deletions, not removing client(s) from cloud", dhcpAttributes);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected ClientSession updateClientSession(int customerId, long equipmentId, long locationId,
 | 
					    protected ClientSession updateClientSession(int customerId, long equipmentId, long locationId,
 | 
				
			||||||
@@ -2035,8 +1914,9 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
        //         "device_type":
 | 
					        //         "device_type":
 | 
				
			||||||
        //         "manuf_id":
 | 
					        //         "manuf_id":
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (session == null) {
 | 
					        if (session == null) {
 | 
				
			||||||
            return null;
 | 
					            session = new ClientSession();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        session.setCustomerId(customerId);
 | 
					        session.setCustomerId(customerId);
 | 
				
			||||||
        session.setEquipmentId(equipmentId);
 | 
					        session.setEquipmentId(equipmentId);
 | 
				
			||||||
@@ -2061,12 +1941,14 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (dhcpLeasedIps.containsKey("hostname")) {
 | 
					        if (dhcpLeasedIps.containsKey("hostname")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            clientSessionDetails.setHostname(dhcpLeasedIps.get("hostname"));
 | 
					            clientSessionDetails.setHostname(dhcpLeasedIps.get("hostname"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ClientDhcpDetails clientDhcpDetails = new ClientDhcpDetails(clientSessionDetails.getSessionId());
 | 
					        ClientDhcpDetails clientDhcpDetails = new ClientDhcpDetails(clientSessionDetails.getSessionId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (dhcpLeasedIps.containsKey("dhcp_server")) {
 | 
					        if (dhcpLeasedIps.containsKey("dhcp_server")) {
 | 
				
			||||||
@@ -2144,6 +2026,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (dhcpLeasedIps.containsKey("device_name")) {
 | 
					        if (dhcpLeasedIps.containsKey("device_name")) {
 | 
				
			||||||
            clientSessionDetails.setClassificationName(dhcpLeasedIps.get("device_name"));
 | 
					            clientSessionDetails.setClassificationName(dhcpLeasedIps.get("device_name"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -2152,6 +2035,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        session.getDetails().mergeSession(clientSessionDetails);
 | 
					        session.getDetails().mergeSession(clientSessionDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return session;
 | 
					        return session;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2164,4 +2048,5 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
				
			|||||||
        // TODO: will handle changes from Command_State table
 | 
					        // TODO: will handle changes from Command_State table
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,7 @@ import com.telecominfraproject.wlan.core.model.equipment.SecurityType;
 | 
				
			|||||||
import com.telecominfraproject.wlan.core.model.equipment.WiFiSessionUtility;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.WiFiSessionUtility;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.utils.DecibelUtils;
 | 
					import com.telecominfraproject.wlan.core.model.utils.DecibelUtils;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
 | 
					import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
					import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities.OvsdbToWlanCloudTypeMappingUtility;
 | 
					import com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities.OvsdbToWlanCloudTypeMappingUtility;
 | 
				
			||||||
import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
					import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
				
			||||||
@@ -73,9 +74,7 @@ import com.telecominfraproject.wlan.status.equipment.report.models.EquipmentPerR
 | 
				
			|||||||
import com.telecominfraproject.wlan.status.equipment.report.models.OperatingSystemPerformance;
 | 
					import com.telecominfraproject.wlan.status.equipment.report.models.OperatingSystemPerformance;
 | 
				
			||||||
import com.telecominfraproject.wlan.status.equipment.report.models.RadioUtilizationReport;
 | 
					import com.telecominfraproject.wlan.status.equipment.report.models.RadioUtilizationReport;
 | 
				
			||||||
import com.telecominfraproject.wlan.status.models.Status;
 | 
					import com.telecominfraproject.wlan.status.models.Status;
 | 
				
			||||||
import com.telecominfraproject.wlan.status.models.StatusCode;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.status.models.StatusDataType;
 | 
					import com.telecominfraproject.wlan.status.models.StatusDataType;
 | 
				
			||||||
import com.telecominfraproject.wlan.status.network.models.NetworkAdminStatusData;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeEventType;
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeEventType;
 | 
				
			||||||
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallReportEvent;
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallReportEvent;
 | 
				
			||||||
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallStartEvent;
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallStartEvent;
 | 
				
			||||||
@@ -148,7 +147,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
    private CloudEventDispatcherInterface equipmentMetricsCollectorInterface;
 | 
					    private CloudEventDispatcherInterface equipmentMetricsCollectorInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void processMqttMessage(String topic, WCStatsReport wcStatsReport) {
 | 
					    void processMqttMessage(String topic, WCStatsReport wcStatsReport) {
 | 
				
			||||||
        LOG.info("Received WCStatsReport {}", wcStatsReport.toString());
 | 
					        LOG.debug("Received WCStatsReport {}", wcStatsReport.toString());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.info("Received report on topic {}", topic);
 | 
					        LOG.info("Received report on topic {}", topic);
 | 
				
			||||||
        int customerId = extractCustomerIdFromTopic(topic);
 | 
					        int customerId = extractCustomerIdFromTopic(topic);
 | 
				
			||||||
@@ -245,7 +244,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!metricRecordList.isEmpty()) {
 | 
					        if (!metricRecordList.isEmpty()) {
 | 
				
			||||||
            LOG.info("Publishing Metrics {}", metricRecordList);
 | 
					            LOG.debug("Publishing Metrics {}", metricRecordList);
 | 
				
			||||||
            equipmentMetricsCollectorInterface.publishMetrics(metricRecordList);
 | 
					            equipmentMetricsCollectorInterface.publishMetrics(metricRecordList);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -290,6 +289,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void processEventReport(Report report, int customerId, long equipmentId, String apId, long locationId) {
 | 
					    void processEventReport(Report report, int customerId, long equipmentId, String apId, long locationId) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        report.getEventReportList().stream().forEach(e -> {
 | 
					        report.getEventReportList().stream().forEach(e -> {
 | 
				
			||||||
@@ -442,6 +442,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
                clientSessionDetails.setAssociationState(AssociationState._802_11_Associated);
 | 
					                clientSessionDetails.setAssociationState(AssociationState._802_11_Associated);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (clientSession.getDetails() == null) {
 | 
					                if (clientSession.getDetails() == null) {
 | 
				
			||||||
                    clientSession.setDetails(clientSessionDetails);
 | 
					                    clientSession.setDetails(clientSessionDetails);
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
@@ -452,6 +453,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -507,6 +509,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                clientSessionDetails.setSessionId(apEventClientSession.getSessionId());
 | 
					                clientSessionDetails.setSessionId(apEventClientSession.getSessionId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (clientDisconnectEvent.hasLrcvUpTsInUs()) {
 | 
					                if (clientDisconnectEvent.hasLrcvUpTsInUs()) {
 | 
				
			||||||
                    clientSessionDetails.setLastRxTimestamp(clientDisconnectEvent.getLrcvUpTsInUs());
 | 
					                    clientSessionDetails.setLastRxTimestamp(clientDisconnectEvent.getLrcvUpTsInUs());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -524,6 +527,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
                clientSessionDetails.setAssociationState(AssociationState.Disconnected);
 | 
					                clientSessionDetails.setAssociationState(AssociationState.Disconnected);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (clientSession.getDetails() == null) {
 | 
					                if (clientSession.getDetails() == null) {
 | 
				
			||||||
                    clientSession.setDetails(clientSessionDetails);
 | 
					                    clientSession.setDetails(clientSessionDetails);
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
@@ -532,6 +536,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
					                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                LOG.info("Cannot update client or client session when no client mac address is present");
 | 
					                LOG.info("Cannot update client or client session when no client mac address is present");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -584,6 +589,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                    clientSessionDetails.setAssociationState(AssociationState._802_11_Authenticated);
 | 
					                    clientSessionDetails.setAssociationState(AssociationState._802_11_Authenticated);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (clientSession.getDetails() == null) {
 | 
					                if (clientSession.getDetails() == null) {
 | 
				
			||||||
                    clientSession.setDetails(clientSessionDetails);
 | 
					                    clientSession.setDetails(clientSessionDetails);
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
@@ -592,6 +598,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
					                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                LOG.info("Cannot update client or client session when no client mac address is present");
 | 
					                LOG.info("Cannot update client or client session when no client mac address is present");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -702,6 +709,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                clientSession.setLocationId(locationId);
 | 
					                clientSession.setLocationId(locationId);
 | 
				
			||||||
                clientSession.setMacAddress(new MacAddress(clientFailureEvent.getStaMac()));
 | 
					                clientSession.setMacAddress(new MacAddress(clientFailureEvent.getStaMac()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
					                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (clientFailureEvent.hasSsid()) {
 | 
					                if (clientFailureEvent.hasSsid()) {
 | 
				
			||||||
@@ -764,8 +772,10 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                clientSession.setLocationId(locationId);
 | 
					                clientSession.setLocationId(locationId);
 | 
				
			||||||
                clientSession.setMacAddress(new MacAddress(clientFirstDataEvent.getStaMac()));
 | 
					                clientSession.setMacAddress(new MacAddress(clientFirstDataEvent.getStaMac()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
					                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (clientFirstDataEvent.hasFdataRxUpTsInUs()) {
 | 
					                if (clientFirstDataEvent.hasFdataRxUpTsInUs()) {
 | 
				
			||||||
                    clientSessionDetails.setFirstDataRcvdTimestamp(clientFirstDataEvent.getFdataRxUpTsInUs());
 | 
					                    clientSessionDetails.setFirstDataRcvdTimestamp(clientFirstDataEvent.getFdataRxUpTsInUs());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -823,10 +833,12 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                clientSession.setLocationId(locationId);
 | 
					                clientSession.setLocationId(locationId);
 | 
				
			||||||
                clientSession.setMacAddress(new MacAddress(clientIdEvent.getCltMac()));
 | 
					                clientSession.setMacAddress(new MacAddress(clientIdEvent.getCltMac()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
					                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                clientSessionDetails.setSessionId(apEventClientSession.getSessionId());
 | 
					                clientSessionDetails.setSessionId(apEventClientSession.getSessionId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (clientSession.getDetails() == null) {
 | 
					                if (clientSession.getDetails() == null) {
 | 
				
			||||||
                    clientSession.setDetails(clientSessionDetails);
 | 
					                    clientSession.setDetails(clientSessionDetails);
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
@@ -874,8 +886,10 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
					                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                clientSessionDetails.setSessionId(apEventClientSession.getSessionId());
 | 
					                clientSessionDetails.setSessionId(apEventClientSession.getSessionId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                try {
 | 
					                try {
 | 
				
			||||||
                    clientSessionDetails
 | 
					                    clientSessionDetails
 | 
				
			||||||
                            .setIpAddress(InetAddress.getByAddress(clientIpEvent.getIpAddr().toByteArray()));
 | 
					                            .setIpAddress(InetAddress.getByAddress(clientIpEvent.getIpAddr().toByteArray()));
 | 
				
			||||||
@@ -978,7 +992,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                eventTimestamp = videoVoiceReport.getTimestampMs();
 | 
					                eventTimestamp = videoVoiceReport.getTimestampMs();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            LOG.info("Received VideoVoiceReport {} for SIP call", videoVoiceReport);
 | 
					            LOG.debug("Received VideoVoiceReport {} for SIP call", videoVoiceReport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            processRealTImeSipCallReportEvent(customerId, equipmentId, eventTimestamp, eventsList, videoVoiceReport);
 | 
					            processRealTImeSipCallReportEvent(customerId, equipmentId, eventTimestamp, eventsList, videoVoiceReport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1087,10 +1101,12 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                    cloudRtpStats.setPacketLossPercentage(apRtpFlowStats.getPacketLossPercent());
 | 
					                    cloudRtpStats.setPacketLossPercentage(apRtpFlowStats.getPacketLossPercent());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                cloudRtpFlowStatsList.add(cloudRtpStats);
 | 
					                cloudRtpFlowStatsList.add(cloudRtpStats);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            RealTimeSipCallReportEvent cloudSipCallReportEvent = new RealTimeSipCallReportEvent(customerId, equipmentId,
 | 
					            RealTimeSipCallReportEvent cloudSipCallReportEvent = new RealTimeSipCallReportEvent(customerId, equipmentId,
 | 
				
			||||||
                    eventTimestamp);
 | 
					                    eventTimestamp);
 | 
				
			||||||
            cloudSipCallReportEvent.setClientMacAddress(MacAddress.valueOf(callReport.getClientMac()));
 | 
					            cloudSipCallReportEvent.setClientMacAddress(MacAddress.valueOf(callReport.getClientMac()));
 | 
				
			||||||
@@ -1151,8 +1167,10 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (apCallStop.hasCallDuration()) {
 | 
					            if (apCallStop.hasCallDuration()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                cloudSipCallStopEvent.setCallDuration(apCallStop.getCallDuration());
 | 
					                cloudSipCallStopEvent.setCallDuration(apCallStop.getCallDuration());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (apCallStop.hasClientMac()) {
 | 
					            if (apCallStop.hasClientMac()) {
 | 
				
			||||||
@@ -1190,6 +1208,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            eventsList.add(cloudSipCallStopEvent);
 | 
					            eventsList.add(cloudSipCallStopEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1230,6 +1249,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            eventsList.add(rtsStartEvent);
 | 
					            eventsList.add(rtsStartEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1319,9 +1339,10 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void populateApNodeMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId,
 | 
					    void populateApNodeMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId,
 | 
				
			||||||
            long locationId) {
 | 
					            long locationId) {
 | 
				
			||||||
        LOG.info("populateApNodeMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
					        LOG.debug("populateApNodeMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
				
			||||||
        ApNodeMetrics apNodeMetrics = new ApNodeMetrics();
 | 
					        ApNodeMetrics apNodeMetrics = new ApNodeMetrics();
 | 
				
			||||||
        ServiceMetric smr = new ServiceMetric(customerId, equipmentId);
 | 
					        ServiceMetric smr = new ServiceMetric(customerId, equipmentId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1514,6 +1535,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                // we need to perform a weighted average here because the
 | 
					                // we need to perform a weighted average here because the
 | 
				
			||||||
                // samples are in percentage, and may be of different durations
 | 
					                // samples are in percentage, and may be of different durations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                busyTx += surveySample.getBusyTx() * surveySample.getDurationMs();
 | 
					                busyTx += surveySample.getBusyTx() * surveySample.getDurationMs();
 | 
				
			||||||
                busyRx += surveySample.getBusyRx() * surveySample.getDurationMs();
 | 
					                busyRx += surveySample.getBusyRx() * surveySample.getDurationMs();
 | 
				
			||||||
                busy += surveySample.getBusy() * surveySample.getDurationMs();
 | 
					                busy += surveySample.getBusy() * surveySample.getDurationMs();
 | 
				
			||||||
@@ -1521,6 +1543,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                totalDurationMs += surveySample.getDurationMs();
 | 
					                totalDurationMs += surveySample.getDurationMs();
 | 
				
			||||||
                noiseList.add(getNegativeSignedIntFrom8BitUnsigned(surveySample.getNoise()));
 | 
					                noiseList.add(getNegativeSignedIntFrom8BitUnsigned(surveySample.getNoise()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (totalDurationMs > 0) {
 | 
					            if (totalDurationMs > 0) {
 | 
				
			||||||
@@ -1570,7 +1593,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        populateNetworkProbeMetrics(report, apNodeMetrics);
 | 
					        populateNetworkProbeMetrics(report, apNodeMetrics);
 | 
				
			||||||
        updateNetworkAdminStatusReport(customerId, equipmentId, apNodeMetrics);
 | 
					 | 
				
			||||||
        RadioUtilizationReport radioUtilizationReport = new RadioUtilizationReport();
 | 
					        RadioUtilizationReport radioUtilizationReport = new RadioUtilizationReport();
 | 
				
			||||||
        radioUtilizationReport.setAvgNoiseFloor(avgNoiseFloor);
 | 
					        radioUtilizationReport.setAvgNoiseFloor(avgNoiseFloor);
 | 
				
			||||||
        radioUtilizationReport.setRadioUtilization(radioUtilizationDetailsMap);
 | 
					        radioUtilizationReport.setRadioUtilization(radioUtilizationDetailsMap);
 | 
				
			||||||
@@ -1579,78 +1601,9 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
        updateDeviceStatusRadioUtilizationReport(customerId, equipmentId, radioUtilizationReport);
 | 
					        updateDeviceStatusRadioUtilizationReport(customerId, equipmentId, radioUtilizationReport);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void updateNetworkAdminStatusReport(int customerId, long equipmentId, ApNodeMetrics apNodeMetrics) {
 | 
					 | 
				
			||||||
        apNodeMetrics.getNetworkProbeMetrics().forEach(n -> {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            LOG.info("Update NetworkAdminStatusReport for NetworkProbeMetrics {}", n.toString());
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            Status networkAdminStatus = statusServiceInterface.getOrNull(customerId, equipmentId,
 | 
					 | 
				
			||||||
                    StatusDataType.NETWORK_ADMIN);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (networkAdminStatus == null) {
 | 
					 | 
				
			||||||
                networkAdminStatus = new Status();
 | 
					 | 
				
			||||||
                networkAdminStatus.setCustomerId(customerId);
 | 
					 | 
				
			||||||
                networkAdminStatus.setEquipmentId(equipmentId);
 | 
					 | 
				
			||||||
                networkAdminStatus.setCreatedTimestamp(System.currentTimeMillis());
 | 
					 | 
				
			||||||
                networkAdminStatus.setStatusDataType(StatusDataType.NETWORK_ADMIN);
 | 
					 | 
				
			||||||
                networkAdminStatus.setDetails(new NetworkAdminStatusData());
 | 
					 | 
				
			||||||
                networkAdminStatus = statusServiceInterface.update(networkAdminStatus);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            NetworkAdminStatusData statusData = (NetworkAdminStatusData) networkAdminStatus.getDetails();
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            if (n.getDnsState() == null) {
 | 
					 | 
				
			||||||
                LOG.info("No DnsState present in networkProbeMetrics, DnsState and CloudLinkStatus set to 'normal");
 | 
					 | 
				
			||||||
                statusData.setDnsStatus(StatusCode.normal);
 | 
					 | 
				
			||||||
                statusData.setCloudLinkStatus(StatusCode.normal);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                statusData.setDnsStatus(stateUpDownErrorToStatusCode(n.getDnsState()));
 | 
					 | 
				
			||||||
                statusData.setCloudLinkStatus(stateUpDownErrorToStatusCode(n.getDnsState()));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (n.getDhcpState() == null) {
 | 
					 | 
				
			||||||
                LOG.info("No DhcpState present in networkProbeMetrics, set to 'normal");
 | 
					 | 
				
			||||||
                statusData.setDhcpStatus(StatusCode.normal);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                statusData.setDhcpStatus(stateUpDownErrorToStatusCode(n.getDhcpState()));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (n.getRadiusState() == null) {
 | 
					 | 
				
			||||||
                LOG.info("No RadiusState present in networkProbeMetrics, set to 'normal");
 | 
					 | 
				
			||||||
                statusData.setRadiusStatus(StatusCode.normal);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                statusData.setRadiusStatus(stateUpDownErrorToStatusCode(n.getRadiusState()));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            networkAdminStatus.setDetails(statusData);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            networkAdminStatus = statusServiceInterface.update(networkAdminStatus);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            LOG.info("Updated NetworkAdminStatus {}", networkAdminStatus);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static StatusCode stateUpDownErrorToStatusCode(StateUpDownError state) {
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        switch (state) {
 | 
					 | 
				
			||||||
        case enabled:
 | 
					 | 
				
			||||||
            return StatusCode.normal;
 | 
					 | 
				
			||||||
        case error:
 | 
					 | 
				
			||||||
            return StatusCode.error;
 | 
					 | 
				
			||||||
        case disabled:
 | 
					 | 
				
			||||||
            return StatusCode.disabled;
 | 
					 | 
				
			||||||
        case UNSUPPORTED:
 | 
					 | 
				
			||||||
            return StatusCode.requiresAttention;
 | 
					 | 
				
			||||||
        default:
 | 
					 | 
				
			||||||
            return StatusCode.normal;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void updateDeviceStatusRadioUtilizationReport(int customerId, long equipmentId,
 | 
					    void updateDeviceStatusRadioUtilizationReport(int customerId, long equipmentId,
 | 
				
			||||||
            RadioUtilizationReport radioUtilizationReport) {
 | 
					            RadioUtilizationReport radioUtilizationReport) {
 | 
				
			||||||
        LOG.info(
 | 
					        LOG.debug(
 | 
				
			||||||
                "Processing updateDeviceStatusRadioUtilizationReport for equipmentId {} with RadioUtilizationReport {}",
 | 
					                "Processing updateDeviceStatusRadioUtilizationReport for equipmentId {} with RadioUtilizationReport {}",
 | 
				
			||||||
                equipmentId, radioUtilizationReport);
 | 
					                equipmentId, radioUtilizationReport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1658,7 +1611,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                StatusDataType.RADIO_UTILIZATION);
 | 
					                StatusDataType.RADIO_UTILIZATION);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (radioUtilizationStatus == null) {
 | 
					        if (radioUtilizationStatus == null) {
 | 
				
			||||||
            LOG.info("Create new radioUtilizationStatus");
 | 
					            LOG.debug("Create new radioUtilizationStatus");
 | 
				
			||||||
            radioUtilizationStatus = new Status();
 | 
					            radioUtilizationStatus = new Status();
 | 
				
			||||||
            radioUtilizationStatus.setCustomerId(customerId);
 | 
					            radioUtilizationStatus.setCustomerId(customerId);
 | 
				
			||||||
            radioUtilizationStatus.setEquipmentId(equipmentId);
 | 
					            radioUtilizationStatus.setEquipmentId(equipmentId);
 | 
				
			||||||
@@ -1704,8 +1657,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                        ipAddress = InetAddress.getByName(dnsProbeMetricFromAp.getServerIP());
 | 
					                        ipAddress = InetAddress.getByName(dnsProbeMetricFromAp.getServerIP());
 | 
				
			||||||
                        cloudDnsProbeMetric.setDnsServerIp(ipAddress);
 | 
					                        cloudDnsProbeMetric.setDnsServerIp(ipAddress);
 | 
				
			||||||
                    } catch (UnknownHostException e) {
 | 
					                    } catch (UnknownHostException e) {
 | 
				
			||||||
                        LOG.error("Could not get DNS Server IP from network_probe service_metrics_collection_config",
 | 
					                        LOG.error("Could not get DNS Server IP from network_probe metrics", e);
 | 
				
			||||||
                                e);
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1741,6 +1693,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                    StateUpDownError dhcpState = OvsdbToWlanCloudTypeMappingUtility
 | 
					                    StateUpDownError dhcpState = OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
                            .getCloudMetricsStateFromOpensyncStatsStateUpDown(vlanMetrics.getDhcpState());
 | 
					                            .getCloudMetricsStateFromOpensyncStatsStateUpDown(vlanMetrics.getDhcpState());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    networkProbeMetrics.setDhcpState(dhcpState);
 | 
					                    networkProbeMetrics.setDhcpState(dhcpState);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -1769,23 +1722,24 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
        eqOsPerformance.setTotalAvailableMemoryKb(deviceReport.getMemUtil().getMemTotal());
 | 
					        eqOsPerformance.setTotalAvailableMemoryKb(deviceReport.getMemUtil().getMemTotal());
 | 
				
			||||||
        status.setDetails(eqOsPerformance);
 | 
					        status.setDetails(eqOsPerformance);
 | 
				
			||||||
        status = statusServiceInterface.update(status);
 | 
					        status = statusServiceInterface.update(status);
 | 
				
			||||||
        LOG.info("updated status {}", status);
 | 
					        LOG.debug("updated status {}", status);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void populateApClientMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId,
 | 
					    void populateApClientMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId,
 | 
				
			||||||
            long locationId) {
 | 
					            long locationId) {
 | 
				
			||||||
        LOG.info("populateApClientMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
					        LOG.debug("populateApClientMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (ClientReport clReport : report.getClientsList()) {
 | 
					        for (ClientReport clReport : report.getClientsList()) {
 | 
				
			||||||
            for (Client cl : clReport.getClientListList()) {
 | 
					            for (Client cl : clReport.getClientListList()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (cl.getMacAddress() == null) {
 | 
					                if (cl.getMacAddress() == null) {
 | 
				
			||||||
                    LOG.info("No mac address for Client {}, cannot set device mac address for client in ClientMetrics.",
 | 
					                    LOG.debug(
 | 
				
			||||||
 | 
					                            "No mac address for Client {}, cannot set device mac address for client in ClientMetrics.",
 | 
				
			||||||
                            cl);
 | 
					                            cl);
 | 
				
			||||||
                    continue;
 | 
					                    continue;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                LOG.info("Processing ClientReport from AP {}", cl.getMacAddress());
 | 
					                LOG.debug("Processing ClientReport from AP {}", cl.getMacAddress());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ServiceMetric smr = new ServiceMetric(customerId, equipmentId, new MacAddress(cl.getMacAddress()));
 | 
					                ServiceMetric smr = new ServiceMetric(customerId, equipmentId, new MacAddress(cl.getMacAddress()));
 | 
				
			||||||
                smr.setLocationId(locationId);
 | 
					                smr.setLocationId(locationId);
 | 
				
			||||||
@@ -1809,7 +1763,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                long sessionId = WiFiSessionUtility.encodeWiFiAssociationId(clReport.getTimestampMs() / 1000L,
 | 
					                long sessionId = WiFiSessionUtility.encodeWiFiAssociationId(clReport.getTimestampMs() / 1000L,
 | 
				
			||||||
                        MacAddress.convertMacStringToLongValue(cl.getMacAddress()));
 | 
					                        MacAddress.convertMacStringToLongValue(cl.getMacAddress()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                LOG.info("populateApClientMetrics Session Id {}", sessionId);
 | 
					                LOG.debug("populateApClientMetrics Session Id {}", sessionId);
 | 
				
			||||||
                cMetrics.setSessionId(sessionId);
 | 
					                cMetrics.setSessionId(sessionId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (cl.hasStats()) {
 | 
					                if (cl.hasStats()) {
 | 
				
			||||||
@@ -1867,7 +1821,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                LOG.info("ApClientMetrics Report {}", cMetrics);
 | 
					                LOG.debug("ApClientMetrics Report {}", cMetrics);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1877,7 +1831,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    void populateNeighbourScanReports(List<ServiceMetric> metricRecordList, Report report, int customerId,
 | 
					    void populateNeighbourScanReports(List<ServiceMetric> metricRecordList, Report report, int customerId,
 | 
				
			||||||
            long equipmentId, long locationId) {
 | 
					            long equipmentId, long locationId) {
 | 
				
			||||||
        LOG.info("populateNeighbourScanReports for Customer {} Equipment {}", customerId, equipmentId);
 | 
					        LOG.debug("populateNeighbourScanReports for Customer {} Equipment {}", customerId, equipmentId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (Neighbor neighbor : report.getNeighborsList()) {
 | 
					        for (Neighbor neighbor : report.getNeighborsList()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1937,8 +1891,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ClientSession handleClientSessionMetricsUpdate(int customerId, long equipmentId, long locationId,
 | 
					    void handleClientSessionMetricsUpdate(int customerId, long equipmentId, long locationId, RadioType radioType,
 | 
				
			||||||
            RadioType radioType, long timestamp, sts.OpensyncStats.Client client) {
 | 
					            long timestamp, sts.OpensyncStats.Client client) {
 | 
				
			||||||
        try
 | 
					        try
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -1950,10 +1904,13 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            boolean isReassociation = true;
 | 
					            boolean isReassociation = true;
 | 
				
			||||||
            if (clientInstance == null) {
 | 
					            if (clientInstance == null) {
 | 
				
			||||||
 | 
					                clientInstance = new com.telecominfraproject.wlan.client.models.Client();
 | 
				
			||||||
 | 
					                clientInstance.setCustomerId(customerId);
 | 
				
			||||||
 | 
					                clientInstance.setMacAddress(new MacAddress(client.getMacAddress()));
 | 
				
			||||||
 | 
					                clientInstance.setDetails(new ClientInfoDetails());
 | 
				
			||||||
 | 
					                clientInstance = clientServiceInterface.create(clientInstance);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                LOG.info("Cannot get client instance for {}", client.getMacAddress());
 | 
					                isReassociation = false;
 | 
				
			||||||
                return null;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            LOG.info("Client {}", clientInstance);
 | 
					            LOG.info("Client {}", clientInstance);
 | 
				
			||||||
@@ -1962,8 +1919,18 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                    clientInstance.getMacAddress());
 | 
					                    clientInstance.getMacAddress());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (clientSession == null) {
 | 
					            if (clientSession == null) {
 | 
				
			||||||
                LOG.info("Cannot get client session for {}", clientInstance.getMacAddress());
 | 
					
 | 
				
			||||||
                return null;
 | 
					                clientSession = new ClientSession();
 | 
				
			||||||
 | 
					                clientSession.setCustomerId(customerId);
 | 
				
			||||||
 | 
					                clientSession.setEquipmentId(equipmentId);
 | 
				
			||||||
 | 
					                clientSession.setLocationId(locationId);
 | 
				
			||||||
 | 
					                clientSession.setMacAddress(clientInstance.getMacAddress());
 | 
				
			||||||
 | 
					                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
				
			||||||
 | 
					                clientSessionDetails.setSsid(client.getSsid());
 | 
				
			||||||
 | 
					                clientSessionDetails.setRadioType(radioType);
 | 
				
			||||||
 | 
					                clientSessionDetails.setSessionId(clientInstance.getMacAddress().getAddressAsLong());
 | 
				
			||||||
 | 
					                clientSession.setDetails(new ClientSessionDetails());
 | 
				
			||||||
 | 
					                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ClientSessionDetails latestClientSessionDetails = clientSession.getDetails();
 | 
					            ClientSessionDetails latestClientSessionDetails = clientSession.getDetails();
 | 
				
			||||||
@@ -1994,6 +1961,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                    }).collect(Collectors.toList());
 | 
					                    }).collect(Collectors.toList());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (!ssidConfigList.isEmpty()) {
 | 
					            if (!ssidConfigList.isEmpty()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                Profile ssidProfile = ssidConfigList.iterator().next();
 | 
					                Profile ssidProfile = ssidConfigList.iterator().next();
 | 
				
			||||||
                SsidConfiguration ssidConfig = (SsidConfiguration) ssidProfile.getDetails();
 | 
					                SsidConfiguration ssidConfig = (SsidConfiguration) ssidProfile.getDetails();
 | 
				
			||||||
                if (ssidConfig.getSecureMode().equals(SecureMode.open)) {
 | 
					                if (ssidConfig.getSecureMode().equals(SecureMode.open)) {
 | 
				
			||||||
@@ -2011,6 +1979,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpa2EAP)
 | 
					                        || ssidConfig.getSecureMode().equals(SecureMode.wpa2EAP)
 | 
				
			||||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpa2OnlyEAP)) {
 | 
					                        || ssidConfig.getSecureMode().equals(SecureMode.wpa2OnlyEAP)) {
 | 
				
			||||||
                    latestClientSessionDetails.setSecurityType(SecurityType.RADIUS);
 | 
					                    latestClientSessionDetails.setSecurityType(SecurityType.RADIUS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    latestClientSessionDetails.setEapDetails(new ClientEapDetails());
 | 
					                    latestClientSessionDetails.setEapDetails(new ClientEapDetails());
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    latestClientSessionDetails.setSecurityType(SecurityType.UNSUPPORTED);
 | 
					                    latestClientSessionDetails.setSecurityType(SecurityType.UNSUPPORTED);
 | 
				
			||||||
@@ -2020,6 +1989,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                    latestClientSessionDetails.setDynamicVlan(ssidConfig.getVlanId());
 | 
					                    latestClientSessionDetails.setDynamicVlan(ssidConfig.getVlanId());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                RadioBasedSsidConfiguration radioConfig = ssidConfig.getRadioBasedConfigs().get(radioType);
 | 
					                RadioBasedSsidConfiguration radioConfig = ssidConfig.getRadioBasedConfigs().get(radioType);
 | 
				
			||||||
                latestClientSessionDetails
 | 
					                latestClientSessionDetails
 | 
				
			||||||
                        .setIs11KUsed(radioConfig.getEnable80211k() != null ? radioConfig.getEnable80211k() : false);
 | 
					                        .setIs11KUsed(radioConfig.getEnable80211k() != null ? radioConfig.getEnable80211k() : false);
 | 
				
			||||||
@@ -2037,61 +2007,35 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            clientSession = clientServiceInterface.updateSession(clientSession);
 | 
					            clientSession = clientServiceInterface.updateSession(clientSession);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            LOG.info("Updated client session {}", clientSession);
 | 
					            LOG.debug("Updated client session {}", clientSession);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return clientSession;
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            LOG.error("Error while attempting to create ClientSession and Info", e);
 | 
					            LOG.error("Error while attempting to create ClientSession and Info", e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return null;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ClientSessionMetricDetails calculateClientSessionMetricDetails(sts.OpensyncStats.Client client, long timestamp) {
 | 
					    ClientSessionMetricDetails calculateClientSessionMetricDetails(sts.OpensyncStats.Client client, long timestamp) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.info("calculateClientSessionMetricDetails for Client {} at timestamp {}", client.getMacAddress(),
 | 
					        LOG.debug("calculateClientSessionMetricDetails for Client {} at timestamp {}", client.getMacAddress(),
 | 
				
			||||||
                timestamp);
 | 
					                timestamp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ClientSessionMetricDetails metricDetails = new ClientSessionMetricDetails();
 | 
					        ClientSessionMetricDetails metricDetails = new ClientSessionMetricDetails();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (LOG.isDebugEnabled())
 | 
					 | 
				
			||||||
            LOG.info("Stats: {} DurationMs {}", client.getStats(), client.getDurationMs());
 | 
					 | 
				
			||||||
        int rssi = client.getStats().getRssi();
 | 
					        int rssi = client.getStats().getRssi();
 | 
				
			||||||
        metricDetails.setRssi(rssi);
 | 
					        metricDetails.setRssi(rssi);
 | 
				
			||||||
        metricDetails.setRxBytes(client.getStats().getRxBytes());
 | 
					        metricDetails.setRxBytes(client.getStats().getRxBytes());
 | 
				
			||||||
        metricDetails.setTxBytes(client.getStats().getTxBytes());
 | 
					        metricDetails.setTxBytes(client.getStats().getTxBytes());
 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Frames : data chunk sent over data-link layer (Ethernet, ATM)
 | 
					 | 
				
			||||||
        // Packets : data chunk sent over IP layer.
 | 
					 | 
				
			||||||
        // in Wifi, these are the same size, so number of packets is equal to
 | 
					 | 
				
			||||||
        // number of frames
 | 
					 | 
				
			||||||
        metricDetails.setTotalTxPackets(client.getStats().getTxFrames());
 | 
					        metricDetails.setTotalTxPackets(client.getStats().getTxFrames());
 | 
				
			||||||
        metricDetails.setTotalRxPackets(client.getStats().getRxFrames());
 | 
					        metricDetails.setTotalRxPackets(client.getStats().getRxFrames());
 | 
				
			||||||
        metricDetails.setTxDataFrames((int) client.getStats().getTxFrames());
 | 
					        metricDetails.setTxDataFrames((int) client.getStats().getTxFrames());
 | 
				
			||||||
        metricDetails.setRxDataFrames((int) client.getStats().getRxFrames());
 | 
					        metricDetails.setRxDataFrames((int) client.getStats().getRxFrames());
 | 
				
			||||||
 | 
					        // values reported in Kbps, convert to Mbps
 | 
				
			||||||
        metricDetails.setRxRateKbps((long) client.getStats().getRxRate());
 | 
					        metricDetails.setRxMbps((float) (client.getStats().getRxRate() / 1000));
 | 
				
			||||||
        metricDetails.setTxRateKbps((long) client.getStats().getTxRate());
 | 
					        metricDetails.setTxMbps((float) (client.getStats().getTxRate() / 1000));
 | 
				
			||||||
        if (LOG.isDebugEnabled())
 | 
					 | 
				
			||||||
            LOG.info("RxRateKbps {} TxRateKbps {}", metricDetails.getRxRateKbps(), metricDetails.getTxRateKbps());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Throughput, do rate / duration
 | 
					        // Throughput, do rate / duration
 | 
				
			||||||
        if (client.getDurationMs() > 1000) {
 | 
					        if (client.getDurationMs() > 0) {
 | 
				
			||||||
            int durationSec = client.getDurationMs() / 1000;
 | 
					            metricDetails.setRxRateKbps((long) client.getStats().getRxRate() / client.getDurationMs());
 | 
				
			||||||
            // 1 Mbit = 125000 B
 | 
					            metricDetails.setTxRateKbps((long) client.getStats().getTxRate() / client.getDurationMs());
 | 
				
			||||||
 | 
					 | 
				
			||||||
            float rxBytesFv = Long.valueOf(client.getStats().getRxBytes()).floatValue();
 | 
					 | 
				
			||||||
            float rxBytesToMb = rxBytesFv / 125000F;
 | 
					 | 
				
			||||||
            float txBytesFv = Long.valueOf(client.getStats().getRxBytes()).floatValue();
 | 
					 | 
				
			||||||
            float txBytesToMb = txBytesFv / 125000F;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (LOG.isDebugEnabled())
 | 
					 | 
				
			||||||
                LOG.info("rxBytesToMb {} txBytesToMb {} ", rxBytesToMb, txBytesToMb);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            metricDetails.setRxMbps(rxBytesToMb / durationSec);
 | 
					 | 
				
			||||||
            metricDetails.setTxMbps(txBytesToMb / durationSec);
 | 
					 | 
				
			||||||
            if (LOG.isDebugEnabled())
 | 
					 | 
				
			||||||
                LOG.info("RxMbps {} TxMbps {} ", metricDetails.getRxMbps(), metricDetails.getTxMbps());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            LOG.info("Cannot calculate tx/rx throughput for Client {} based on duration of {} Ms",
 | 
					            LOG.info("Cannot calculate tx/rx throughput for Client {} based on duration of {} Ms",
 | 
				
			||||||
                    client.getMacAddress(), client.getDurationMs());
 | 
					                    client.getMacAddress(), client.getDurationMs());
 | 
				
			||||||
@@ -2104,17 +2048,19 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
    void populateApSsidMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId,
 | 
					    void populateApSsidMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId,
 | 
				
			||||||
            String apId, long locationId) {
 | 
					            String apId, long locationId) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.info("populateApSsidMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
					        LOG.debug("populateApSsidMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
				
			||||||
        ServiceMetric smr = new ServiceMetric(customerId, equipmentId);
 | 
					        ServiceMetric smr = new ServiceMetric(customerId, equipmentId);
 | 
				
			||||||
        smr.setLocationId(locationId);
 | 
					        smr.setLocationId(locationId);
 | 
				
			||||||
        ApSsidMetrics apSsidMetrics = new ApSsidMetrics();
 | 
					        ApSsidMetrics apSsidMetrics = new ApSsidMetrics();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        smr.setDetails(apSsidMetrics);
 | 
					        smr.setDetails(apSsidMetrics);
 | 
				
			||||||
        metricRecordList.add(smr);
 | 
					        metricRecordList.add(smr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (ClientReport clientReport : report.getClientsList()) {
 | 
					        for (ClientReport clientReport : report.getClientsList()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            LOG.info("ClientReport for channel {} RadioBand {}", clientReport.getChannel(), clientReport.getBand());
 | 
					            LOG.debug("ClientReport for channel {} RadioBand {}", clientReport.getChannel(), clientReport.getBand());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (smr.getCreatedTimestamp() < clientReport.getTimestampMs()) {
 | 
					            if (smr.getCreatedTimestamp() < clientReport.getTimestampMs()) {
 | 
				
			||||||
                smr.setCreatedTimestamp(clientReport.getTimestampMs());
 | 
					                smr.setCreatedTimestamp(clientReport.getTimestampMs());
 | 
				
			||||||
@@ -2157,11 +2103,12 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            LOG.info("Client Report Date is {}", new Date(clientReport.getTimestampMs()));
 | 
					            LOG.debug("Client Report Date is {}", new Date(clientReport.getTimestampMs()));
 | 
				
			||||||
            int numConnectedClients = 0;
 | 
					            int numConnectedClients = 0;
 | 
				
			||||||
            for (Client client : clientReport.getClientListList()) {
 | 
					            for (Client client : clientReport.getClientListList()) {
 | 
				
			||||||
                if (client.hasStats()) {
 | 
					                if (client.hasStats()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (client.hasSsid()) {
 | 
					                    if (client.hasSsid()) {
 | 
				
			||||||
                        ssid = client.getSsid();
 | 
					                        ssid = client.getSsid();
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
@@ -2186,19 +2133,15 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                    try {
 | 
					                    try {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        if (client.hasConnected() && client.getConnected() && client.hasMacAddress()) {
 | 
					                        if (client.hasConnected() && client.getConnected() && client.hasMacAddress()) {
 | 
				
			||||||
                            // update service_metrics_collection_config for
 | 
					                            // update metrics for connected client
 | 
				
			||||||
                            // connected client
 | 
					 | 
				
			||||||
                            ClientSession session = handleClientSessionMetricsUpdate(customerId, equipmentId,
 | 
					 | 
				
			||||||
                                    locationId, radioType, clientReport.getTimestampMs(), client);
 | 
					 | 
				
			||||||
                            if (session != null) {
 | 
					 | 
				
			||||||
                            numConnectedClients += 1;
 | 
					                            numConnectedClients += 1;
 | 
				
			||||||
                            }
 | 
					                            handleClientSessionMetricsUpdate(customerId, equipmentId, locationId, radioType,
 | 
				
			||||||
 | 
					                                    clientReport.getTimestampMs(), client);
 | 
				
			||||||
                        } else {
 | 
					                        } else {
 | 
				
			||||||
                            // Make sure, if we have a session for this client,
 | 
					                            // Make sure, if we have a session for this client,
 | 
				
			||||||
                            // it
 | 
					                            // it
 | 
				
			||||||
                            // shows disconnected.
 | 
					                            // shows disconnected.
 | 
				
			||||||
                            // update any service_metrics_collection_config that
 | 
					                            // update any metrics that need update if the
 | 
				
			||||||
                            // need update if the
 | 
					 | 
				
			||||||
                            // disconnect occured during this window
 | 
					                            // disconnect occured during this window
 | 
				
			||||||
                            if (client.hasMacAddress()) {
 | 
					                            if (client.hasMacAddress()) {
 | 
				
			||||||
                                ClientSession session = clientServiceInterface.getSessionOrNull(customerId, equipmentId,
 | 
					                                ClientSession session = clientServiceInterface.getSessionOrNull(customerId, equipmentId,
 | 
				
			||||||
@@ -2236,8 +2179,9 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                            continue; // not connected
 | 
					                            continue; // not connected
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    } catch (Exception e) {
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
                        LOG.info("Unabled to update client {} session {}", client, e);
 | 
					                        LOG.debug("Unabled to update client {} session {}", client, e);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -2267,7 +2211,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.info("ApSsidMetrics {}", apSsidMetrics);
 | 
					        LOG.debug("ApSsidMetrics {}", apSsidMetrics);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2309,7 +2253,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
    void populateChannelInfoReports(List<ServiceMetric> metricRecordList, Report report, int customerId,
 | 
					    void populateChannelInfoReports(List<ServiceMetric> metricRecordList, Report report, int customerId,
 | 
				
			||||||
            long equipmentId, long locationId, long profileId) {
 | 
					            long equipmentId, long locationId, long profileId) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.info("populateChannelInfoReports for Customer {} Equipment {}", customerId, equipmentId);
 | 
					        LOG.debug("populateChannelInfoReports for Customer {} Equipment {}", customerId, equipmentId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ProfileContainer profileContainer = new ProfileContainer(
 | 
					        ProfileContainer profileContainer = new ProfileContainer(
 | 
				
			||||||
                profileServiceInterface.getProfileWithChildren(profileId));
 | 
					                profileServiceInterface.getProfileWithChildren(profileId));
 | 
				
			||||||
@@ -2369,17 +2313,20 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
				
			|||||||
                channelInfoReports.setChannelInformationReportsPerRadio(channelInfoMap);
 | 
					                channelInfoReports.setChannelInformationReportsPerRadio(channelInfoMap);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            channelInfoReports.setChannelInformationReportsPerRadio(channelInfoMap);
 | 
					            channelInfoReports.setChannelInformationReportsPerRadio(channelInfoMap);
 | 
				
			||||||
            smr.setDetails(channelInfoReports);
 | 
					            smr.setDetails(channelInfoReports);
 | 
				
			||||||
            smr.setCreatedTimestamp(survey.getTimestampMs());
 | 
					            smr.setCreatedTimestamp(survey.getTimestampMs());
 | 
				
			||||||
            metricRecordList.add(smr);
 | 
					            metricRecordList.add(smr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            LOG.info("ChannelInfoReports {}", channelInfoReports);
 | 
					            LOG.debug("ChannelInfoReports {}", channelInfoReports);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int getNegativeSignedIntFrom8BitUnsigned(int unsignedValue) {
 | 
					    int getNegativeSignedIntFrom8BitUnsigned(int unsignedValue) {
 | 
				
			||||||
        byte b = (byte) Integer.parseInt(Integer.toHexString(unsignedValue), 16);
 | 
					        byte b = (byte) Integer.parseInt(Integer.toHexString(unsignedValue), 16);
 | 
				
			||||||
        return b;
 | 
					        return b;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -697,7 +697,7 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        protocolStatus.setCustomerId(2);
 | 
					        protocolStatus.setCustomerId(2);
 | 
				
			||||||
        protocolStatus.setEquipmentId(1L);
 | 
					        protocolStatus.setEquipmentId(1L);
 | 
				
			||||||
        EquipmentProtocolStatusData protocolStatusData = new EquipmentProtocolStatusData();
 | 
					        EquipmentProtocolStatusData protocolStatusData = new EquipmentProtocolStatusData();
 | 
				
			||||||
        protocolStatusData.setReportedCC(CountryCode.CA);
 | 
					        protocolStatusData.setReportedCC(CountryCode.ca);
 | 
				
			||||||
        protocolStatus.setDetails(protocolStatusData);
 | 
					        protocolStatus.setDetails(protocolStatusData);
 | 
				
			||||||
        protocolStatus.setStatusDataType(StatusDataType.PROTOCOL);
 | 
					        protocolStatus.setStatusDataType(StatusDataType.PROTOCOL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,11 @@
 | 
				
			|||||||
			<artifactId>tip-wlan-opensync-protobuf</artifactId>
 | 
								<artifactId>tip-wlan-opensync-protobuf</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>${tip-wlan-cloud.release.version}</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
		
 | 
							<dependency>
 | 
				
			||||||
 | 
								<artifactId>customer-models</artifactId>
 | 
				
			||||||
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
								<version>${tip-wlan-cloud.release.version}</version>
 | 
				
			||||||
 | 
							</dependency>
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>equipment-models</artifactId>
 | 
								<artifactId>equipment-models</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
@@ -43,7 +47,11 @@
 | 
				
			|||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>${tip-wlan-cloud.release.version}</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
		
 | 
							<dependency>
 | 
				
			||||||
 | 
								<artifactId>client-models</artifactId>
 | 
				
			||||||
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
								<version>${tip-wlan-cloud.release.version}</version>
 | 
				
			||||||
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.vmware.ovsdb</groupId>
 | 
								<groupId>com.vmware.ovsdb</groupId>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,6 @@ package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			|||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.HashSet;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Objects;
 | 
					 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.entity.CountryCode;
 | 
					import com.telecominfraproject.wlan.core.model.entity.CountryCode;
 | 
				
			||||||
@@ -283,34 +282,4 @@ public class OpensyncAPConfig extends BaseJsonModel {
 | 
				
			|||||||
    public List<Profile> getMetricsProfiles() {
 | 
					    public List<Profile> getMetricsProfiles() {
 | 
				
			||||||
        return metricsProfile;       
 | 
					        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);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,10 +8,11 @@ import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public class OpensyncAPInetState extends BaseJsonModel  {
 | 
					public class OpensyncAPInetState extends BaseJsonModel  {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final long serialVersionUID = 1707053648715030173L;
 | 
						private static final long serialVersionUID = 1707053648715030173L;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public String ifName;
 | 
						public String ifName;
 | 
				
			||||||
	public Map<String, String> dhcpd;
 | 
						public String dhcpd;
 | 
				
			||||||
	public String unpnpMode;
 | 
						public String unpnpMode;
 | 
				
			||||||
	public String ifType;
 | 
						public String ifType;
 | 
				
			||||||
	public String softwdsMacAddr;
 | 
						public String softwdsMacAddr;
 | 
				
			||||||
@@ -36,423 +37,175 @@ public class OpensyncAPInetState extends BaseJsonModel {
 | 
				
			|||||||
	public String inetConfig;
 | 
						public String inetConfig;
 | 
				
			||||||
	public Uuid _uuid;
 | 
						public Uuid _uuid;
 | 
				
			||||||
	public Uuid version;
 | 
						public Uuid version;
 | 
				
			||||||
	public String greLocalInetAddr;
 | 
					
 | 
				
			||||||
	public String greRemoteMacAddr;
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public OpensyncAPInetState() {
 | 
						public OpensyncAPInetState() {
 | 
				
			||||||
        super();
 | 
					        super();
 | 
				
			||||||
        dns = new HashMap<>();
 | 
					        dns = new HashMap<>();
 | 
				
			||||||
        dhcpc = new HashMap<>();
 | 
					        dhcpc = new HashMap<>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getIfName() {
 | 
					    public String getIfName() {
 | 
				
			||||||
		return ifName;
 | 
							return ifName;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setIfName(String ifName) {
 | 
						public void setIfName(String ifName) {
 | 
				
			||||||
		this.ifName = ifName;
 | 
							this.ifName = ifName;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						public String getDhcpd() {
 | 
				
			||||||
	public Map<String, String> getDhcpd() {
 | 
					 | 
				
			||||||
		return dhcpd;
 | 
							return dhcpd;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						public void setDhcpd(String dhcpd) {
 | 
				
			||||||
	public void setDhcpd(Map<String, String> dhcpd) {
 | 
					 | 
				
			||||||
		this.dhcpd = dhcpd;
 | 
							this.dhcpd = dhcpd;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getUnpnpMode() {
 | 
						public String getUnpnpMode() {
 | 
				
			||||||
		return unpnpMode;
 | 
							return unpnpMode;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setUnpnpMode(String unpnpMode) {
 | 
						public void setUnpnpMode(String unpnpMode) {
 | 
				
			||||||
		this.unpnpMode = unpnpMode;
 | 
							this.unpnpMode = unpnpMode;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getIfType() {
 | 
						public String getIfType() {
 | 
				
			||||||
		return ifType;
 | 
							return ifType;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setIfType(String ifType) {
 | 
						public void setIfType(String ifType) {
 | 
				
			||||||
		this.ifType = ifType;
 | 
							this.ifType = ifType;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getSoftwdsMacAddr() {
 | 
						public String getSoftwdsMacAddr() {
 | 
				
			||||||
		return softwdsMacAddr;
 | 
							return softwdsMacAddr;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setSoftwdsMacAddr(String softwdsMacAddr) {
 | 
						public void setSoftwdsMacAddr(String softwdsMacAddr) {
 | 
				
			||||||
		this.softwdsMacAddr = softwdsMacAddr;
 | 
							this.softwdsMacAddr = softwdsMacAddr;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public boolean isEnabled() {
 | 
						public boolean isEnabled() {
 | 
				
			||||||
		return enabled;
 | 
							return enabled;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setEnabled(boolean enabled) {
 | 
						public void setEnabled(boolean enabled) {
 | 
				
			||||||
		this.enabled = enabled;
 | 
							this.enabled = enabled;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public boolean isSofwdsWrap() {
 | 
						public boolean isSofwdsWrap() {
 | 
				
			||||||
		return sofwdsWrap;
 | 
							return sofwdsWrap;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setSofwdsWrap(boolean sofwdsWrap) {
 | 
						public void setSofwdsWrap(boolean sofwdsWrap) {
 | 
				
			||||||
		this.sofwdsWrap = sofwdsWrap;
 | 
							this.sofwdsWrap = sofwdsWrap;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public int getVlanId() {
 | 
						public int getVlanId() {
 | 
				
			||||||
		return vlanId;
 | 
							return vlanId;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setVlanId(int vlanId) {
 | 
						public void setVlanId(int vlanId) {
 | 
				
			||||||
		this.vlanId = vlanId;
 | 
							this.vlanId = vlanId;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getNetmask() {
 | 
						public String getNetmask() {
 | 
				
			||||||
		return netmask;
 | 
							return netmask;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setNetmask(String netmask) {
 | 
						public void setNetmask(String netmask) {
 | 
				
			||||||
		this.netmask = netmask;
 | 
							this.netmask = netmask;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public boolean isNat() {
 | 
						public boolean isNat() {
 | 
				
			||||||
		return nat;
 | 
							return nat;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setNat(boolean nat) {
 | 
						public void setNat(boolean nat) {
 | 
				
			||||||
		this.nat = nat;
 | 
							this.nat = nat;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getGreRemoteInetAddr() {
 | 
						public String getGreRemoteInetAddr() {
 | 
				
			||||||
		return greRemoteInetAddr;
 | 
							return greRemoteInetAddr;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setGreRemoteInetAddr(String greRemoteInetAddr) {
 | 
						public void setGreRemoteInetAddr(String greRemoteInetAddr) {
 | 
				
			||||||
		this.greRemoteInetAddr = greRemoteInetAddr;
 | 
							this.greRemoteInetAddr = greRemoteInetAddr;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getIfUuid() {
 | 
						public String getIfUuid() {
 | 
				
			||||||
		return ifUuid;
 | 
							return ifUuid;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setIfUuid(String ifUuid) {
 | 
						public void setIfUuid(String ifUuid) {
 | 
				
			||||||
		this.ifUuid = ifUuid;
 | 
							this.ifUuid = ifUuid;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getInetAddr() {
 | 
						public String getInetAddr() {
 | 
				
			||||||
		return inetAddr;
 | 
							return inetAddr;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setInetAddr(String inetAddr) {
 | 
						public void setInetAddr(String inetAddr) {
 | 
				
			||||||
		this.inetAddr = inetAddr;
 | 
							this.inetAddr = inetAddr;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getHwAddr() {
 | 
						public String getHwAddr() {
 | 
				
			||||||
		return hwAddr;
 | 
							return hwAddr;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setHwAddr(String hwAddr) {
 | 
						public void setHwAddr(String hwAddr) {
 | 
				
			||||||
		this.hwAddr = hwAddr;
 | 
							this.hwAddr = hwAddr;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public int getMtw() {
 | 
						public int getMtw() {
 | 
				
			||||||
		return mtw;
 | 
							return mtw;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setMtw(int mtw) {
 | 
						public void setMtw(int mtw) {
 | 
				
			||||||
		this.mtw = mtw;
 | 
							this.mtw = mtw;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public boolean isNetwork() {
 | 
						public boolean isNetwork() {
 | 
				
			||||||
		return network;
 | 
							return network;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setNetwork(boolean network) {
 | 
						public void setNetwork(boolean network) {
 | 
				
			||||||
		this.network = network;
 | 
							this.network = network;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public Map<String, String> getDns() {
 | 
						public Map<String, String> getDns() {
 | 
				
			||||||
		return dns;
 | 
							return dns;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setDns(Map<String, String> dns) {
 | 
						public void setDns(Map<String, String> dns) {
 | 
				
			||||||
		this.dns = dns;
 | 
							this.dns = dns;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getParentIfName() {
 | 
						public String getParentIfName() {
 | 
				
			||||||
		return parentIfName;
 | 
							return parentIfName;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setParentIfName(String parentIfName) {
 | 
						public void setParentIfName(String parentIfName) {
 | 
				
			||||||
		this.parentIfName = parentIfName;
 | 
							this.parentIfName = parentIfName;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getGreIfName() {
 | 
						public String getGreIfName() {
 | 
				
			||||||
		return greIfName;
 | 
							return greIfName;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setGreIfName(String greIfName) {
 | 
						public void setGreIfName(String greIfName) {
 | 
				
			||||||
		this.greIfName = greIfName;
 | 
							this.greIfName = greIfName;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getBroadcast() {
 | 
						public String getBroadcast() {
 | 
				
			||||||
		return broadcast;
 | 
							return broadcast;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setBroadcast(String broadcast) {
 | 
						public void setBroadcast(String broadcast) {
 | 
				
			||||||
		this.broadcast = broadcast;
 | 
							this.broadcast = broadcast;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public Map<String, String> getDhcpc() {
 | 
						public Map<String, String> getDhcpc() {
 | 
				
			||||||
		return dhcpc;
 | 
							return dhcpc;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setDhcpc(Map<String, String> dhcpc) {
 | 
						public void setDhcpc(Map<String, String> dhcpc) {
 | 
				
			||||||
		this.dhcpc = dhcpc;
 | 
							this.dhcpc = dhcpc;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getGateway() {
 | 
						public String getGateway() {
 | 
				
			||||||
		return gateway;
 | 
							return gateway;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setGateway(String gateway) {
 | 
						public void setGateway(String gateway) {
 | 
				
			||||||
		this.gateway = gateway;
 | 
							this.gateway = gateway;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getIpAssignScheme() {
 | 
						public String getIpAssignScheme() {
 | 
				
			||||||
		return ipAssignScheme;
 | 
							return ipAssignScheme;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setIpAssignScheme(String ipAssignScheme) {
 | 
						public void setIpAssignScheme(String ipAssignScheme) {
 | 
				
			||||||
		this.ipAssignScheme = ipAssignScheme;
 | 
							this.ipAssignScheme = ipAssignScheme;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getInetConfig() {
 | 
						public String getInetConfig() {
 | 
				
			||||||
		return inetConfig;
 | 
							return inetConfig;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setInetConfig(String inetConfig) {
 | 
						public void setInetConfig(String inetConfig) {
 | 
				
			||||||
		this.inetConfig = inetConfig;
 | 
							this.inetConfig = inetConfig;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public static long getSerialversionuid() {
 | 
						public static long getSerialversionuid() {
 | 
				
			||||||
		return serialVersionUID;
 | 
							return serialVersionUID;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public Uuid get_uuid() {
 | 
						public Uuid get_uuid() {
 | 
				
			||||||
		return _uuid;
 | 
							return _uuid;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void set_uuid(Uuid _uuid) {
 | 
						public void set_uuid(Uuid _uuid) {
 | 
				
			||||||
		this._uuid = _uuid;
 | 
							this._uuid = _uuid;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public Uuid getVersion() {
 | 
						public Uuid getVersion() {
 | 
				
			||||||
		return version;
 | 
							return version;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setVersion(Uuid version) {
 | 
						public void setVersion(Uuid version) {
 | 
				
			||||||
		this.version = 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 + "]";
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@
 | 
				
			|||||||
  <dependencies>
 | 
					  <dependencies>
 | 
				
			||||||
  	<dependency>
 | 
					  	<dependency>
 | 
				
			||||||
  		<groupId>com.telecominfraproject.wlan</groupId>
 | 
					  		<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
  		<artifactId>opensync-gateway</artifactId>
 | 
					  		<artifactId>opensync-ext-interface</artifactId>
 | 
				
			||||||
  		<version>${tip-wlan-cloud.release.version}</version>
 | 
					  		<version>${tip-wlan-cloud.release.version}</version>
 | 
				
			||||||
  	</dependency>
 | 
					  	</dependency>
 | 
				
			||||||
  </dependencies>
 | 
					  </dependencies>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -141,6 +141,7 @@
 | 
				
			|||||||
        "radioType": "is2dot4GHz",
 | 
					        "radioType": "is2dot4GHz",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
@@ -166,6 +167,7 @@
 | 
				
			|||||||
        "radioType": "is5GHzU",
 | 
					        "radioType": "is5GHzU",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
@@ -191,6 +193,7 @@
 | 
				
			|||||||
        "radioType": "is5GHzL",
 | 
					        "radioType": "is5GHzL",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,48 +10,55 @@
 | 
				
			|||||||
    "countryCode" : "ca",
 | 
					    "countryCode" : "ca",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					    "maintenanceWindow" : null,
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					    "rrmEnabled" : true,
 | 
				
			||||||
    "dailyActivityDetails" : {
 | 
					    "dailyRebalancingDetails" : {
 | 
				
			||||||
      "SUNDAY" : {
 | 
					      "SUNDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "MONDAY" : {
 | 
					      "MONDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					      "TUESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					      "WEDNESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					      "THURSDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					      "FRIDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					      "SATURDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
	"id": 23,
 | 
					    "id": 17,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "equipment_ap",
 | 
					    "profileType": "equipment_ap",
 | 
				
			||||||
	"name": "ApProfile-3-radios-passpoint",
 | 
					    "name": "ApProfile-3-radios",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "ApNetworkConfiguration",
 | 
					        "model_type": "ApNetworkConfiguration",
 | 
				
			||||||
        "networkConfigVersion": "AP-1",
 | 
					        "networkConfigVersion": "AP-1",
 | 
				
			||||||
@@ -20,11 +20,6 @@
 | 
				
			|||||||
        "syntheticClientEnabled": true,
 | 
					        "syntheticClientEnabled": true,
 | 
				
			||||||
        "ledControlEnabled": true,
 | 
					        "ledControlEnabled": true,
 | 
				
			||||||
        "equipmentDiscovery": false,
 | 
					        "equipmentDiscovery": false,
 | 
				
			||||||
		"greTunnelName": null,
 | 
					 | 
				
			||||||
		"greParentIfName": null,
 | 
					 | 
				
			||||||
		"greLocalInetAddr": null,
 | 
					 | 
				
			||||||
		"greRemoteInetAddr": null,
 | 
					 | 
				
			||||||
		"greRemoteMacAddr": null,
 | 
					 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RadioProfileConfiguration",
 | 
					                "model_type": "RadioProfileConfiguration",
 | 
				
			||||||
@@ -44,12 +39,12 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "equipment_ap"
 | 
					        "profileType": "equipment_ap"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
	"createdTimestamp": 1605711197140,
 | 
					    "createdTimestamp": 1602182806348,
 | 
				
			||||||
	"lastModifiedTimestamp": 1605711197140,
 | 
					    "lastModifiedTimestamp": 1602182806348,
 | 
				
			||||||
    "childProfileIds": [
 | 
					    "childProfileIds": [
 | 
				
			||||||
		16,
 | 
					        2,
 | 
				
			||||||
		21,
 | 
					        5,
 | 
				
			||||||
		22,
 | 
					        11,
 | 
				
			||||||
		15
 | 
					        13
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,14 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
        "id": 24,
 | 
					    "id": 10,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
        "profileType": "passpoint",
 | 
					    "profileType": "hotspot_2pt0",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-Config",
 | 
					    "name": "TipWlan-Hotspot20-Config",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
            "model_type": "PasspointProfile",
 | 
					        "model_type": "Hotspot2Profile",
 | 
				
			||||||
        "enableInterworkingAndHs20": true,
 | 
					        "enableInterworkingAndHs20": true,
 | 
				
			||||||
        "hessid": null,
 | 
					        "hessid": null,
 | 
				
			||||||
 | 
					        "accessNetworkType": "free_public_network",
 | 
				
			||||||
 | 
					        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
        "additionalStepsRequiredForAccess": 0,
 | 
					        "additionalStepsRequiredForAccess": 0,
 | 
				
			||||||
        "deauthRequestTimeout": 0,
 | 
					        "deauthRequestTimeout": 0,
 | 
				
			||||||
        "operatingClass": 0,
 | 
					        "operatingClass": 0,
 | 
				
			||||||
@@ -27,7 +29,7 @@
 | 
				
			|||||||
        "internetConnectivity": true,
 | 
					        "internetConnectivity": true,
 | 
				
			||||||
        "connectionCapabilitySet": [
 | 
					        "connectionCapabilitySet": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "PasspointConnectionCapability",
 | 
					                "model_type": "ConnectionCapability",
 | 
				
			||||||
                "connectionCapabilitiesPortNumber": 8888,
 | 
					                "connectionCapabilitiesPortNumber": 8888,
 | 
				
			||||||
                "connectionCapabilitiesIpProtocol": "TCP",
 | 
					                "connectionCapabilitiesIpProtocol": "TCP",
 | 
				
			||||||
                "connectionCapabilitiesStatus": "open"
 | 
					                "connectionCapabilitiesStatus": "open"
 | 
				
			||||||
@@ -46,27 +48,25 @@
 | 
				
			|||||||
        "associatedAccessSsidNames": [
 | 
					        "associatedAccessSsidNames": [
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					            "TipWlan-cloud-hotspot-access"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
            "osuSsidName": "TipWlan-cloud-hotspot-osu",
 | 
					        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
				
			||||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
					        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
				
			||||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
					        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
				
			||||||
        "idProviderProfileNames": [
 | 
					        "idProviderProfileNames": [
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
					            "TipWlan-Hotspot20-OSU-Provider"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
            "accessNetworkType": "free_public_network",
 | 
					        "profileType": "hotspot_2pt0",
 | 
				
			||||||
            "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
					 | 
				
			||||||
        "associatedSsids": [
 | 
					        "associatedSsids": [
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					            "TipWlan-cloud-hotspot-access"
 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
            "profileType": "passpoint"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "createdTimestamp": 1605711223339,
 | 
					 | 
				
			||||||
        "lastModifiedTimestamp": 1605711223339,
 | 
					 | 
				
			||||||
        "childProfileIds": [
 | 
					 | 
				
			||||||
            17,
 | 
					 | 
				
			||||||
            18,
 | 
					 | 
				
			||||||
            19,
 | 
					 | 
				
			||||||
            20
 | 
					 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
    }
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1602182806040,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1602182806040,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					        6,
 | 
				
			||||||
 | 
					        7,
 | 
				
			||||||
 | 
					        8,
 | 
				
			||||||
 | 
					        9
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 19,
 | 
					    "id": 8,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_osu_id_provider",
 | 
					    "profileType": "id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
					    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
			"model_type": "PasspointOsuProviderProfile",
 | 
					        "model_type": "Hotspot20IdProviderProfile",
 | 
				
			||||||
        "domainName": "rogers.com",
 | 
					        "domainName": "rogers.com",
 | 
				
			||||||
        "mccMncList": [
 | 
					        "mccMncList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointMccMnc",
 | 
					                "model_type": "MccMnc",
 | 
				
			||||||
                "mcc": 302,
 | 
					                "mcc": 302,
 | 
				
			||||||
                "mnc": 720,
 | 
					                "mnc": 720,
 | 
				
			||||||
                "iso": "ca",
 | 
					                "iso": "ca",
 | 
				
			||||||
@@ -22,7 +22,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "naiRealmList": [
 | 
					        "naiRealmList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointNaiRealmInformation",
 | 
					                "model_type": "NaiRealmInformation",
 | 
				
			||||||
                "naiRealms": [
 | 
					                "naiRealms": [
 | 
				
			||||||
                    "rogers.com"
 | 
					                    "rogers.com"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -44,7 +44,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuIconList": [
 | 
					        "osuIconList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -55,7 +55,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "fra",
 | 
					                "languageCode": "fra",
 | 
				
			||||||
@@ -66,7 +66,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -77,10 +77,10 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"osuServerUri": "https://example.com/osu/rogers",
 | 
					        "osuServerUri": "https://example.com/osu/rogers/",
 | 
				
			||||||
        "osuFriendlyName": [
 | 
					        "osuFriendlyName": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example provider rogers",
 | 
					                "dupleName": "Example provider rogers",
 | 
				
			||||||
@@ -88,7 +88,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example provider rogers"
 | 
					                "asDuple": "eng:Example provider rogers"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemple de fournisseur rogers",
 | 
					                "dupleName": "Exemple de fournisseur rogers",
 | 
				
			||||||
@@ -104,7 +104,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuServiceDescription": [
 | 
					        "osuServiceDescription": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example services rogers",
 | 
					                "dupleName": "Example services rogers",
 | 
				
			||||||
@@ -112,7 +112,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example services rogers"
 | 
					                "asDuple": "eng:Example services rogers"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemples de services rogers",
 | 
					                "dupleName": "Exemples de services rogers",
 | 
				
			||||||
@@ -120,31 +120,24 @@
 | 
				
			|||||||
                "asDuple": "fra:Exemples de services rogers"
 | 
					                "asDuple": "fra:Exemples de services rogers"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"roamingOi": [
 | 
					        "profileType": "id_provider"
 | 
				
			||||||
				1,
 | 
					 | 
				
			||||||
				2,
 | 
					 | 
				
			||||||
				3,
 | 
					 | 
				
			||||||
				4
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"profileType": "passpoint_osu_id_provider"
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1605711165325,
 | 
					    "createdTimestamp": 1602182805654,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711165325,
 | 
					    "lastModifiedTimestamp": 1602182805654,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
		]
 | 
					},
 | 
				
			||||||
	},
 | 
					{
 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 20,
 | 
					    "id": 9,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_osu_id_provider",
 | 
					    "profileType": "id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
			"model_type": "PasspointOsuProviderProfile",
 | 
					        "model_type": "Hotspot20IdProviderProfile",
 | 
				
			||||||
        "domainName": "telus.com",
 | 
					        "domainName": "telus.com",
 | 
				
			||||||
        "mccMncList": [
 | 
					        "mccMncList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointMccMnc",
 | 
					                "model_type": "MccMnc",
 | 
				
			||||||
                "mcc": 302,
 | 
					                "mcc": 302,
 | 
				
			||||||
                "mnc": 220,
 | 
					                "mnc": 220,
 | 
				
			||||||
                "iso": "ca",
 | 
					                "iso": "ca",
 | 
				
			||||||
@@ -156,7 +149,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "naiRealmList": [
 | 
					        "naiRealmList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointNaiRealmInformation",
 | 
					                "model_type": "NaiRealmInformation",
 | 
				
			||||||
                "naiRealms": [
 | 
					                "naiRealms": [
 | 
				
			||||||
                    "telus.com"
 | 
					                    "telus.com"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -178,7 +171,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuIconList": [
 | 
					        "osuIconList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -189,7 +182,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "fra",
 | 
					                "languageCode": "fra",
 | 
				
			||||||
@@ -200,7 +193,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -211,10 +204,10 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"osuServerUri": "https://example.com/osu/telus",
 | 
					        "osuServerUri": "https://example.com/osu/telus/",
 | 
				
			||||||
        "osuFriendlyName": [
 | 
					        "osuFriendlyName": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example provider telus",
 | 
					                "dupleName": "Example provider telus",
 | 
				
			||||||
@@ -222,7 +215,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example provider telus"
 | 
					                "asDuple": "eng:Example provider telus"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemple de fournisseur telus",
 | 
					                "dupleName": "Exemple de fournisseur telus",
 | 
				
			||||||
@@ -238,7 +231,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuServiceDescription": [
 | 
					        "osuServiceDescription": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example services telus",
 | 
					                "dupleName": "Example services telus",
 | 
				
			||||||
@@ -246,7 +239,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example services telus"
 | 
					                "asDuple": "eng:Example services telus"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemples de services telus",
 | 
					                "dupleName": "Exemples de services telus",
 | 
				
			||||||
@@ -254,17 +247,10 @@
 | 
				
			|||||||
                "asDuple": "fra:Exemples de services telus"
 | 
					                "asDuple": "fra:Exemples de services telus"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"roamingOi": [
 | 
					        "profileType": "id_provider"
 | 
				
			||||||
				1,
 | 
					 | 
				
			||||||
				2,
 | 
					 | 
				
			||||||
				3,
 | 
					 | 
				
			||||||
				4
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"profileType": "passpoint_osu_id_provider"
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1605711165330,
 | 
					    "createdTimestamp": 1602182805660,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711165330,
 | 
					    "lastModifiedTimestamp": 1602182805660,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 22,
 | 
					        "id": 2,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "service_metrics_collection_config",
 | 
					        "profileType": "metrics",
 | 
				
			||||||
		"name": "Metrics-Profile-Passpoint",
 | 
					        "name": "Metrics-Profile-3-radios",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
            "model_type": "ServiceMetricsCollectionConfigProfile",
 | 
					            "model_type": "ServiceMetricsCollectionConfigProfile",
 | 
				
			||||||
            "radioTypes": [
 | 
					            "radioTypes": [
 | 
				
			||||||
 | 
					                "is5GHzU",
 | 
				
			||||||
                "is5GHzL",
 | 
					                "is5GHzL",
 | 
				
			||||||
				"is2dot4GHz",
 | 
					                "is2dot4GHz"
 | 
				
			||||||
				"is5GHzU"
 | 
					 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "serviceMetricDataTypes": [
 | 
					            "serviceMetricDataTypes": [
 | 
				
			||||||
                "ApNode",
 | 
					                "ApNode",
 | 
				
			||||||
@@ -24,26 +24,14 @@
 | 
				
			|||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
						"channelSurveyType": "ON_CHANNEL",
 | 
					                        "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,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -53,9 +41,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -65,9 +53,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -77,21 +65,33 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 120,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "ApSsid": [
 | 
					                "ApSsid": [
 | 
				
			||||||
@@ -99,14 +99,14 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "ApSsid"
 | 
					                        "serviceMetricDataType": "ApSsid"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "ApSsid"
 | 
					                        "serviceMetricDataType": "ApSsid"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -122,7 +122,7 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "Client"
 | 
					                        "serviceMetricDataType": "Client"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -136,7 +136,7 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
                        "serviceMetricDataType": "Client"
 | 
					                        "serviceMetricDataType": "Client"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -149,21 +149,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					{
 | 
					 | 
				
			||||||
						"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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -173,9 +161,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -185,9 +173,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -197,9 +185,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -209,35 +197,35 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "Neighbour": [
 | 
					                "Neighbour": [
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 120,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -247,21 +235,45 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -271,29 +283,16 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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"
 | 
					            "profileType": "metrics"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711195528,
 | 
					        "createdTimestamp": 1602113058699,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711195528,
 | 
					        "lastModifiedTimestamp": 1602113058699,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,25 +1,26 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
					{
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 17,
 | 
					        "id": 6,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_operator",
 | 
					        "profileType": "operator",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
					        "name": "TipWlan-Hotspot20-Operator",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
			"model_type": "PasspointOperatorProfile",
 | 
					            "model_type": "OperatorProfile",
 | 
				
			||||||
 | 
					            "domainName": "telecominfraproject.atlassian.net",
 | 
				
			||||||
            "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
					            "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
				
			||||||
            "x509CertificateLocation": "/etc/ca.pem",
 | 
					            "x509CertificateLocation": "/etc/ca.pem",
 | 
				
			||||||
            "operatorFriendlyName": [
 | 
					            "operatorFriendlyName": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                    "model_type": "Hotspot20Duple",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                    "locale": "en_CA",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
					"dupleName": "Default friendly passpoint_operator name",
 | 
					                    "dupleName": "Default friendly operator name",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
					"asDuple": "eng:Default friendly passpoint_operator name"
 | 
					                    "asDuple": "eng:Default friendly operator name"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                    "model_type": "Hotspot20Duple",
 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					                    "locale": "fr_CA",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
					                    "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
				
			||||||
@@ -27,11 +28,10 @@
 | 
				
			|||||||
                    "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
					                    "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
			"profileType": "passpoint_operator"
 | 
					            "profileType": "operator"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711164952,
 | 
					        "createdTimestamp": 1602113058719,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711164952,
 | 
					        "lastModifiedTimestamp": 1602113058719,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,23 +1,24 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
	"id": 21,
 | 
					    "id": 13,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "rf",
 | 
					    "profileType": "rf",
 | 
				
			||||||
	"name": "TipWlan-rf-passpoint",
 | 
					    "name": "TipWlan-rf",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "RfConfiguration",
 | 
					        "model_type": "RfConfiguration",
 | 
				
			||||||
        "rfConfigMap": {
 | 
					        "rfConfigMap": {
 | 
				
			||||||
            "is5GHz": {
 | 
					            "is5GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHz",
 | 
					                "radioType": "is5GHz",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -25,12 +26,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -40,31 +46,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "radioMode": "modeN",
 | 
					                "radioMode": "modeN",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is20MHz",
 | 
					                "channelBandwidth": "is20MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -72,12 +73,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -87,31 +93,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 20,
 | 
					                    "dropInSnrPercentage": 20,
 | 
				
			||||||
                    "minLoadFactor": 50
 | 
					                    "minLoadFactor": 50
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHzU",
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -119,12 +120,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -134,31 +140,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHzL",
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -166,12 +167,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -181,25 +187,18 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "rf"
 | 
					        "profileType": "rf"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
	"createdTimestamp": 1605711191976,
 | 
					    "createdTimestamp": 1602182806063,
 | 
				
			||||||
	"lastModifiedTimestamp": 1605711191976,
 | 
					    "lastModifiedTimestamp": 1602182806063,
 | 
				
			||||||
	"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
	]
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"model_type": "Profile",
 | 
							"model_type": "Profile",
 | 
				
			||||||
		"id": 15,
 | 
							"id": 5,
 | 
				
			||||||
		"customerId": 2,
 | 
							"customerId": 2,
 | 
				
			||||||
		"profileType": "ssid",
 | 
							"profileType": "ssid",
 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
							"name": "TipWlan-cloud-hotspot-access",
 | 
				
			||||||
@@ -9,8 +9,9 @@
 | 
				
			|||||||
			"model_type": "SsidConfiguration",
 | 
								"model_type": "SsidConfiguration",
 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
								"ssid": "TipWlan-cloud-hotspot-access",
 | 
				
			||||||
			"appliedRadios": [
 | 
								"appliedRadios": [
 | 
				
			||||||
 | 
									"is5GHzU",
 | 
				
			||||||
				"is5GHzL",
 | 
									"is5GHzL",
 | 
				
			||||||
				"is5GHzU"
 | 
									"is2dot4GHz"
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
								"ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "wpa2PSK",
 | 
								"secureMode": "wpa2PSK",
 | 
				
			||||||
@@ -20,7 +21,6 @@
 | 
				
			|||||||
			"keyRefresh": 0,
 | 
								"keyRefresh": 0,
 | 
				
			||||||
			"noLocalSubnets": false,
 | 
								"noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
								"radiusServiceName": null,
 | 
				
			||||||
			"radiusAccountingServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
								"captivePortalId": null,
 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
								"bandwidthLimitDown": 0,
 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
								"bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -59,23 +59,25 @@
 | 
				
			|||||||
			"forwardMode": null,
 | 
								"forwardMode": null,
 | 
				
			||||||
			"profileType": "ssid"
 | 
								"profileType": "ssid"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"createdTimestamp": 1605711164949,
 | 
							"createdTimestamp": 1602113058718,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711223372,
 | 
							"lastModifiedTimestamp": 1602113059547,
 | 
				
			||||||
		"childProfileIds": [
 | 
							"childProfileIds": [
 | 
				
			||||||
			24
 | 
								10
 | 
				
			||||||
		]
 | 
							]
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"model_type": "Profile",
 | 
							"model_type": "Profile",
 | 
				
			||||||
		"id": 16,
 | 
							"id": 11,
 | 
				
			||||||
		"customerId": 2,
 | 
							"customerId": 2,
 | 
				
			||||||
		"profileType": "ssid",
 | 
							"profileType": "ssid",
 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-osu",
 | 
							"name": "TipWlan-cloud-3-radios",
 | 
				
			||||||
		"details": {
 | 
							"details": {
 | 
				
			||||||
			"model_type": "SsidConfiguration",
 | 
								"model_type": "SsidConfiguration",
 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-osu",
 | 
								"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
			"appliedRadios": [
 | 
								"appliedRadios": [
 | 
				
			||||||
				"is2dot4GHz"
 | 
									"is5GHzL",
 | 
				
			||||||
 | 
									"is2dot4GHz",
 | 
				
			||||||
 | 
									"is5GHzU"
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
								"ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "open",
 | 
								"secureMode": "open",
 | 
				
			||||||
@@ -85,7 +87,6 @@
 | 
				
			|||||||
			"keyRefresh": 0,
 | 
								"keyRefresh": 0,
 | 
				
			||||||
			"noLocalSubnets": false,
 | 
								"noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
								"radiusServiceName": null,
 | 
				
			||||||
			"radiusAccountingServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
								"captivePortalId": null,
 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
								"bandwidthLimitDown": 0,
 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
								"bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -124,11 +125,10 @@
 | 
				
			|||||||
			"forwardMode": null,
 | 
								"forwardMode": null,
 | 
				
			||||||
			"profileType": "ssid"
 | 
								"profileType": "ssid"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"createdTimestamp": 1605711164950,
 | 
							"createdTimestamp": 1602183994766,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711171732,
 | 
							"lastModifiedTimestamp": 1602183994766,
 | 
				
			||||||
		"childProfileIds": [
 | 
							"childProfileIds": [
 | 
				
			||||||
			19,
 | 
								10
 | 
				
			||||||
			20
 | 
					 | 
				
			||||||
		]
 | 
							]
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,15 +1,15 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 18,
 | 
					        "id": 7,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_venue",
 | 
					        "profileType": "venue",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
					        "name": "TipWlan-Hotspot20-Venue",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
			"model_type": "PasspointVenueProfile",
 | 
					            "model_type": "VenueProfile",
 | 
				
			||||||
            "venueNameSet": [
 | 
					            "venueNameSet": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointVenueName",
 | 
					                    "model_type": "VenueName",
 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					                    "locale": "fr_CA",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemple de lieu",
 | 
					                    "dupleName": "Exemple de lieu",
 | 
				
			||||||
@@ -18,26 +18,25 @@
 | 
				
			|||||||
                    "asDuple": "fra:Exemple de lieu"
 | 
					                    "asDuple": "fra:Exemple de lieu"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointVenueName",
 | 
					                    "model_type": "VenueName",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                    "locale": "en_CA",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
					"dupleName": "Example passpoint_venue",
 | 
					                    "dupleName": "Example venue",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "venueUrl": "http://www.example.com/info-eng",
 | 
					                    "venueUrl": "http://www.example.com/info-eng",
 | 
				
			||||||
					"asDuple": "eng:Example passpoint_venue"
 | 
					                    "asDuple": "eng:Example venue"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "venueTypeAssignment": {
 | 
					            "venueTypeAssignment": {
 | 
				
			||||||
				"model_type": "ProfileVenueTypeAssignment",
 | 
					                "model_type": "VenueTypeAssignment",
 | 
				
			||||||
                "venueDescription": "Research and Development Facility",
 | 
					                "venueDescription": "Research and Development Facility",
 | 
				
			||||||
                "venueGroupId": 2,
 | 
					                "venueGroupId": 2,
 | 
				
			||||||
                "venueTypeId": 8
 | 
					                "venueTypeId": 8
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
			"profileType": "passpoint_venue"
 | 
					            "profileType": "venue"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711164956,
 | 
					        "createdTimestamp": 1602113058725,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711164956,
 | 
					        "lastModifiedTimestamp": 1602113058725,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -20,10 +20,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			<modules>
 | 
								<modules>
 | 
				
			||||||
				<module>../opensync-ext-interface</module>
 | 
									<module>../opensync-ext-interface</module>
 | 
				
			||||||
				<module>../opensync-gateway</module>
 | 
					 | 
				
			||||||
				<module>../opensync-ext-static</module>
 | 
									<module>../opensync-ext-static</module>
 | 
				
			||||||
				<module>../opensync-gateway-static-process</module>
 | 
					 | 
				
			||||||
				<module>../opensync-ext-cloud</module>
 | 
									<module>../opensync-ext-cloud</module>
 | 
				
			||||||
 | 
									<module>../opensync-gateway</module>
 | 
				
			||||||
 | 
									<module>../opensync-gateway-static-process</module>
 | 
				
			||||||
				<module>../opensync-gateway-cloud-process</module>
 | 
									<module>../opensync-gateway-cloud-process</module>
 | 
				
			||||||
			</modules>
 | 
								</modules>
 | 
				
			||||||
		</profile>
 | 
							</profile>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,11 +20,6 @@ SSC_SERVER_HOST="${SSC_SERVER}"
 | 
				
			|||||||
ALL_IN_ONE_HOST="${INTEGRATED_SERVER}"
 | 
					ALL_IN_ONE_HOST="${INTEGRATED_SERVER}"
 | 
				
			||||||
FILE_STORE_DIRECTORY="${FILE_STORE_DIRECTORY_INTERNAL:=/tmp/filestore}"
 | 
					FILE_STORE_DIRECTORY="${FILE_STORE_DIRECTORY_INTERNAL:=/tmp/filestore}"
 | 
				
			||||||
FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}"
 | 
					FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}"
 | 
				
			||||||
MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_EXTERNAL_PORT}"
 | 
					 | 
				
			||||||
OVSDB_EXTERNAL_PORT="${OVSDB_EXTERNAL_PORT}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
OVSDB_PROPS=" "
 | 
					OVSDB_PROPS=" "
 | 
				
			||||||
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
 | 
				
			||||||
@@ -38,8 +33,6 @@ OVSDB_PROPS+=" -Dtip.wlan.ovsdb.configFileName=/app/opensync/config_2_ssids.json
 | 
				
			|||||||
MQTT_PROPS=" "
 | 
					MQTT_PROPS=" "
 | 
				
			||||||
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.internal=$MQTT_BROKER_HOST_INTERNAL"
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.internal=$MQTT_BROKER_HOST_INTERNAL"
 | 
				
			||||||
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.external=$MQTT_BROKER_HOST_EXTERNAL"
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.external=$MQTT_BROKER_HOST_EXTERNAL"
 | 
				
			||||||
MQTT_PROPS+=" -Dtip.wlan.ovsdb.externalPort=$OVSDB_EXTERNAL_PORT"
 | 
					 | 
				
			||||||
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.externalPort=$MQTT_BROKER_EXTERNAL_PORT"
 | 
					 | 
				
			||||||
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.listenPort=1883"
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.listenPort=1883"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LOGBACK_CONFIG_FILE="${LOGBACK_CONFIG_FILE:=/app/opensync/logback.xml}"
 | 
					LOGBACK_CONFIG_FILE="${LOGBACK_CONFIG_FILE:=/app/opensync/logback.xml}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								opensync-gateway-cloud-process/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								opensync-gateway-cloud-process/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					/target/
 | 
				
			||||||
@@ -34,7 +34,7 @@
 | 
				
			|||||||
				<artifactId>docker-maven-plugin</artifactId>
 | 
									<artifactId>docker-maven-plugin</artifactId>
 | 
				
			||||||
				<version>${docker.fabric.version}</version>
 | 
									<version>${docker.fabric.version}</version>
 | 
				
			||||||
				<configuration>
 | 
									<configuration>
 | 
				
			||||||
					<verbose>false</verbose>
 | 
										<verbose>true</verbose>
 | 
				
			||||||
					<apiVersion>1.23</apiVersion>
 | 
										<apiVersion>1.23</apiVersion>
 | 
				
			||||||
					<images>
 | 
										<images>
 | 
				
			||||||
						<image>
 | 
											<image>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -141,6 +141,7 @@
 | 
				
			|||||||
        "radioType": "is2dot4GHz",
 | 
					        "radioType": "is2dot4GHz",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
@@ -166,6 +167,7 @@
 | 
				
			|||||||
        "radioType": "is5GHzU",
 | 
					        "radioType": "is5GHzU",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
@@ -191,6 +193,7 @@
 | 
				
			|||||||
        "radioType": "is5GHzL",
 | 
					        "radioType": "is5GHzL",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,48 +10,55 @@
 | 
				
			|||||||
    "countryCode" : "ca",
 | 
					    "countryCode" : "ca",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					    "maintenanceWindow" : null,
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					    "rrmEnabled" : true,
 | 
				
			||||||
    "dailyActivityDetails" : {
 | 
					    "dailyRebalancingDetails" : {
 | 
				
			||||||
      "SUNDAY" : {
 | 
					      "SUNDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "MONDAY" : {
 | 
					      "MONDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					      "TUESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					      "WEDNESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					      "THURSDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					      "FRIDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					      "SATURDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,48 +10,55 @@
 | 
				
			|||||||
    "countryCode" : "usa",
 | 
					    "countryCode" : "usa",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					    "maintenanceWindow" : null,
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					    "rrmEnabled" : true,
 | 
				
			||||||
    "dailyActivityDetails" : {
 | 
					    "dailyRebalancingDetails" : {
 | 
				
			||||||
      "SUNDAY" : {
 | 
					      "SUNDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "MONDAY" : {
 | 
					      "MONDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					      "TUESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					      "WEDNESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					      "THURSDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					      "FRIDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					      "SATURDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
	"id": 23,
 | 
					    "id": 17,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "equipment_ap",
 | 
					    "profileType": "equipment_ap",
 | 
				
			||||||
	"name": "ApProfile-3-radios-passpoint",
 | 
					    "name": "ApProfile-3-radios",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "ApNetworkConfiguration",
 | 
					        "model_type": "ApNetworkConfiguration",
 | 
				
			||||||
        "networkConfigVersion": "AP-1",
 | 
					        "networkConfigVersion": "AP-1",
 | 
				
			||||||
@@ -20,11 +20,6 @@
 | 
				
			|||||||
        "syntheticClientEnabled": true,
 | 
					        "syntheticClientEnabled": true,
 | 
				
			||||||
        "ledControlEnabled": true,
 | 
					        "ledControlEnabled": true,
 | 
				
			||||||
        "equipmentDiscovery": false,
 | 
					        "equipmentDiscovery": false,
 | 
				
			||||||
		"greTunnelName": null,
 | 
					 | 
				
			||||||
		"greParentIfName": null,
 | 
					 | 
				
			||||||
		"greLocalInetAddr": null,
 | 
					 | 
				
			||||||
		"greRemoteInetAddr": null,
 | 
					 | 
				
			||||||
		"greRemoteMacAddr": null,
 | 
					 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RadioProfileConfiguration",
 | 
					                "model_type": "RadioProfileConfiguration",
 | 
				
			||||||
@@ -44,12 +39,12 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "equipment_ap"
 | 
					        "profileType": "equipment_ap"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
	"createdTimestamp": 1605711197140,
 | 
					    "createdTimestamp": 1602182806348,
 | 
				
			||||||
	"lastModifiedTimestamp": 1605711197140,
 | 
					    "lastModifiedTimestamp": 1602182806348,
 | 
				
			||||||
    "childProfileIds": [
 | 
					    "childProfileIds": [
 | 
				
			||||||
		16,
 | 
					        2,
 | 
				
			||||||
		21,
 | 
					        5,
 | 
				
			||||||
		22,
 | 
					        11,
 | 
				
			||||||
		15
 | 
					        13
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,14 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
        "id": 24,
 | 
					    "id": 10,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
        "profileType": "passpoint",
 | 
					    "profileType": "hotspot_2pt0",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-Config",
 | 
					    "name": "TipWlan-Hotspot20-Config",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
            "model_type": "PasspointProfile",
 | 
					        "model_type": "Hotspot2Profile",
 | 
				
			||||||
        "enableInterworkingAndHs20": true,
 | 
					        "enableInterworkingAndHs20": true,
 | 
				
			||||||
        "hessid": null,
 | 
					        "hessid": null,
 | 
				
			||||||
 | 
					        "accessNetworkType": "free_public_network",
 | 
				
			||||||
 | 
					        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
        "additionalStepsRequiredForAccess": 0,
 | 
					        "additionalStepsRequiredForAccess": 0,
 | 
				
			||||||
        "deauthRequestTimeout": 0,
 | 
					        "deauthRequestTimeout": 0,
 | 
				
			||||||
        "operatingClass": 0,
 | 
					        "operatingClass": 0,
 | 
				
			||||||
@@ -27,7 +29,7 @@
 | 
				
			|||||||
        "internetConnectivity": true,
 | 
					        "internetConnectivity": true,
 | 
				
			||||||
        "connectionCapabilitySet": [
 | 
					        "connectionCapabilitySet": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "PasspointConnectionCapability",
 | 
					                "model_type": "ConnectionCapability",
 | 
				
			||||||
                "connectionCapabilitiesPortNumber": 8888,
 | 
					                "connectionCapabilitiesPortNumber": 8888,
 | 
				
			||||||
                "connectionCapabilitiesIpProtocol": "TCP",
 | 
					                "connectionCapabilitiesIpProtocol": "TCP",
 | 
				
			||||||
                "connectionCapabilitiesStatus": "open"
 | 
					                "connectionCapabilitiesStatus": "open"
 | 
				
			||||||
@@ -46,27 +48,25 @@
 | 
				
			|||||||
        "associatedAccessSsidNames": [
 | 
					        "associatedAccessSsidNames": [
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					            "TipWlan-cloud-hotspot-access"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
            "osuSsidName": "TipWlan-cloud-hotspot-osu",
 | 
					        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
				
			||||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
					        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
				
			||||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
					        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
				
			||||||
        "idProviderProfileNames": [
 | 
					        "idProviderProfileNames": [
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
					            "TipWlan-Hotspot20-OSU-Provider"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
            "accessNetworkType": "free_public_network",
 | 
					        "profileType": "hotspot_2pt0",
 | 
				
			||||||
            "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
					 | 
				
			||||||
        "associatedSsids": [
 | 
					        "associatedSsids": [
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					            "TipWlan-cloud-hotspot-access"
 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
            "profileType": "passpoint"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "createdTimestamp": 1605711223339,
 | 
					 | 
				
			||||||
        "lastModifiedTimestamp": 1605711223339,
 | 
					 | 
				
			||||||
        "childProfileIds": [
 | 
					 | 
				
			||||||
            17,
 | 
					 | 
				
			||||||
            18,
 | 
					 | 
				
			||||||
            19,
 | 
					 | 
				
			||||||
            20
 | 
					 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
    }
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1602182806040,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1602182806040,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					        6,
 | 
				
			||||||
 | 
					        7,
 | 
				
			||||||
 | 
					        8,
 | 
				
			||||||
 | 
					        9
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 19,
 | 
					    "id": 8,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_osu_id_provider",
 | 
					    "profileType": "id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
					    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
			"model_type": "PasspointOsuProviderProfile",
 | 
					        "model_type": "Hotspot20IdProviderProfile",
 | 
				
			||||||
        "domainName": "rogers.com",
 | 
					        "domainName": "rogers.com",
 | 
				
			||||||
        "mccMncList": [
 | 
					        "mccMncList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointMccMnc",
 | 
					                "model_type": "MccMnc",
 | 
				
			||||||
                "mcc": 302,
 | 
					                "mcc": 302,
 | 
				
			||||||
                "mnc": 720,
 | 
					                "mnc": 720,
 | 
				
			||||||
                "iso": "ca",
 | 
					                "iso": "ca",
 | 
				
			||||||
@@ -22,7 +22,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "naiRealmList": [
 | 
					        "naiRealmList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointNaiRealmInformation",
 | 
					                "model_type": "NaiRealmInformation",
 | 
				
			||||||
                "naiRealms": [
 | 
					                "naiRealms": [
 | 
				
			||||||
                    "rogers.com"
 | 
					                    "rogers.com"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -44,7 +44,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuIconList": [
 | 
					        "osuIconList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -55,7 +55,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "fra",
 | 
					                "languageCode": "fra",
 | 
				
			||||||
@@ -66,7 +66,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -77,10 +77,10 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"osuServerUri": "https://example.com/osu/rogers",
 | 
					        "osuServerUri": "https://example.com/osu/rogers/",
 | 
				
			||||||
        "osuFriendlyName": [
 | 
					        "osuFriendlyName": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example provider rogers",
 | 
					                "dupleName": "Example provider rogers",
 | 
				
			||||||
@@ -88,7 +88,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example provider rogers"
 | 
					                "asDuple": "eng:Example provider rogers"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemple de fournisseur rogers",
 | 
					                "dupleName": "Exemple de fournisseur rogers",
 | 
				
			||||||
@@ -104,7 +104,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuServiceDescription": [
 | 
					        "osuServiceDescription": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example services rogers",
 | 
					                "dupleName": "Example services rogers",
 | 
				
			||||||
@@ -112,7 +112,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example services rogers"
 | 
					                "asDuple": "eng:Example services rogers"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemples de services rogers",
 | 
					                "dupleName": "Exemples de services rogers",
 | 
				
			||||||
@@ -120,31 +120,24 @@
 | 
				
			|||||||
                "asDuple": "fra:Exemples de services rogers"
 | 
					                "asDuple": "fra:Exemples de services rogers"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"roamingOi": [
 | 
					        "profileType": "id_provider"
 | 
				
			||||||
				1,
 | 
					 | 
				
			||||||
				2,
 | 
					 | 
				
			||||||
				3,
 | 
					 | 
				
			||||||
				4
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"profileType": "passpoint_osu_id_provider"
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1605711165325,
 | 
					    "createdTimestamp": 1602182805654,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711165325,
 | 
					    "lastModifiedTimestamp": 1602182805654,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
		]
 | 
					},
 | 
				
			||||||
	},
 | 
					{
 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 20,
 | 
					    "id": 9,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_osu_id_provider",
 | 
					    "profileType": "id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
			"model_type": "PasspointOsuProviderProfile",
 | 
					        "model_type": "Hotspot20IdProviderProfile",
 | 
				
			||||||
        "domainName": "telus.com",
 | 
					        "domainName": "telus.com",
 | 
				
			||||||
        "mccMncList": [
 | 
					        "mccMncList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointMccMnc",
 | 
					                "model_type": "MccMnc",
 | 
				
			||||||
                "mcc": 302,
 | 
					                "mcc": 302,
 | 
				
			||||||
                "mnc": 220,
 | 
					                "mnc": 220,
 | 
				
			||||||
                "iso": "ca",
 | 
					                "iso": "ca",
 | 
				
			||||||
@@ -156,7 +149,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "naiRealmList": [
 | 
					        "naiRealmList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointNaiRealmInformation",
 | 
					                "model_type": "NaiRealmInformation",
 | 
				
			||||||
                "naiRealms": [
 | 
					                "naiRealms": [
 | 
				
			||||||
                    "telus.com"
 | 
					                    "telus.com"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -178,7 +171,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuIconList": [
 | 
					        "osuIconList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -189,7 +182,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "fra",
 | 
					                "languageCode": "fra",
 | 
				
			||||||
@@ -200,7 +193,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -211,10 +204,10 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"osuServerUri": "https://example.com/osu/telus",
 | 
					        "osuServerUri": "https://example.com/osu/telus/",
 | 
				
			||||||
        "osuFriendlyName": [
 | 
					        "osuFriendlyName": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example provider telus",
 | 
					                "dupleName": "Example provider telus",
 | 
				
			||||||
@@ -222,7 +215,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example provider telus"
 | 
					                "asDuple": "eng:Example provider telus"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemple de fournisseur telus",
 | 
					                "dupleName": "Exemple de fournisseur telus",
 | 
				
			||||||
@@ -238,7 +231,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuServiceDescription": [
 | 
					        "osuServiceDescription": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example services telus",
 | 
					                "dupleName": "Example services telus",
 | 
				
			||||||
@@ -246,7 +239,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example services telus"
 | 
					                "asDuple": "eng:Example services telus"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemples de services telus",
 | 
					                "dupleName": "Exemples de services telus",
 | 
				
			||||||
@@ -254,17 +247,10 @@
 | 
				
			|||||||
                "asDuple": "fra:Exemples de services telus"
 | 
					                "asDuple": "fra:Exemples de services telus"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"roamingOi": [
 | 
					        "profileType": "id_provider"
 | 
				
			||||||
				1,
 | 
					 | 
				
			||||||
				2,
 | 
					 | 
				
			||||||
				3,
 | 
					 | 
				
			||||||
				4
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"profileType": "passpoint_osu_id_provider"
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1605711165330,
 | 
					    "createdTimestamp": 1602182805660,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711165330,
 | 
					    "lastModifiedTimestamp": 1602182805660,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 22,
 | 
					        "id": 2,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "service_metrics_collection_config",
 | 
					        "profileType": "metrics",
 | 
				
			||||||
		"name": "Metrics-Profile-Passpoint",
 | 
					        "name": "Metrics-Profile-3-radios",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
            "model_type": "ServiceMetricsCollectionConfigProfile",
 | 
					            "model_type": "ServiceMetricsCollectionConfigProfile",
 | 
				
			||||||
            "radioTypes": [
 | 
					            "radioTypes": [
 | 
				
			||||||
 | 
					                "is5GHzU",
 | 
				
			||||||
                "is5GHzL",
 | 
					                "is5GHzL",
 | 
				
			||||||
				"is2dot4GHz",
 | 
					                "is2dot4GHz"
 | 
				
			||||||
				"is5GHzU"
 | 
					 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "serviceMetricDataTypes": [
 | 
					            "serviceMetricDataTypes": [
 | 
				
			||||||
                "ApNode",
 | 
					                "ApNode",
 | 
				
			||||||
@@ -24,26 +24,14 @@
 | 
				
			|||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
						"channelSurveyType": "ON_CHANNEL",
 | 
					                        "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,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -53,9 +41,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -65,9 +53,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -77,21 +65,33 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 120,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "ApSsid": [
 | 
					                "ApSsid": [
 | 
				
			||||||
@@ -99,14 +99,14 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "ApSsid"
 | 
					                        "serviceMetricDataType": "ApSsid"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "ApSsid"
 | 
					                        "serviceMetricDataType": "ApSsid"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -122,7 +122,7 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "Client"
 | 
					                        "serviceMetricDataType": "Client"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -136,7 +136,7 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
                        "serviceMetricDataType": "Client"
 | 
					                        "serviceMetricDataType": "Client"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -149,21 +149,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					{
 | 
					 | 
				
			||||||
						"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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -173,9 +161,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -185,9 +173,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -197,9 +185,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -209,35 +197,35 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "Neighbour": [
 | 
					                "Neighbour": [
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 120,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -247,21 +235,45 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -271,29 +283,16 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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"
 | 
					            "profileType": "metrics"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711195528,
 | 
					        "createdTimestamp": 1602113058699,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711195528,
 | 
					        "lastModifiedTimestamp": 1602113058699,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,25 +1,26 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
					{
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 17,
 | 
					        "id": 6,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_operator",
 | 
					        "profileType": "operator",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
					        "name": "TipWlan-Hotspot20-Operator",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
			"model_type": "PasspointOperatorProfile",
 | 
					            "model_type": "OperatorProfile",
 | 
				
			||||||
 | 
					            "domainName": "telecominfraproject.atlassian.net",
 | 
				
			||||||
            "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
					            "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
				
			||||||
            "x509CertificateLocation": "/etc/ca.pem",
 | 
					            "x509CertificateLocation": "/etc/ca.pem",
 | 
				
			||||||
            "operatorFriendlyName": [
 | 
					            "operatorFriendlyName": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                    "model_type": "Hotspot20Duple",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                    "locale": "en_CA",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
					"dupleName": "Default friendly passpoint_operator name",
 | 
					                    "dupleName": "Default friendly operator name",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
					"asDuple": "eng:Default friendly passpoint_operator name"
 | 
					                    "asDuple": "eng:Default friendly operator name"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                    "model_type": "Hotspot20Duple",
 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					                    "locale": "fr_CA",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
					                    "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
				
			||||||
@@ -27,11 +28,10 @@
 | 
				
			|||||||
                    "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
					                    "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
			"profileType": "passpoint_operator"
 | 
					            "profileType": "operator"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711164952,
 | 
					        "createdTimestamp": 1602113058719,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711164952,
 | 
					        "lastModifiedTimestamp": 1602113058719,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,23 +1,24 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
	"id": 21,
 | 
					    "id": 13,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "rf",
 | 
					    "profileType": "rf",
 | 
				
			||||||
	"name": "TipWlan-rf-passpoint",
 | 
					    "name": "TipWlan-rf",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "RfConfiguration",
 | 
					        "model_type": "RfConfiguration",
 | 
				
			||||||
        "rfConfigMap": {
 | 
					        "rfConfigMap": {
 | 
				
			||||||
            "is5GHz": {
 | 
					            "is5GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHz",
 | 
					                "radioType": "is5GHz",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -25,12 +26,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -40,31 +46,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "radioMode": "modeN",
 | 
					                "radioMode": "modeN",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is20MHz",
 | 
					                "channelBandwidth": "is20MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -72,12 +73,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -87,31 +93,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 20,
 | 
					                    "dropInSnrPercentage": 20,
 | 
				
			||||||
                    "minLoadFactor": 50
 | 
					                    "minLoadFactor": 50
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHzU",
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -119,12 +120,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -134,31 +140,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHzL",
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -166,12 +167,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -181,25 +187,18 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "rf"
 | 
					        "profileType": "rf"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
	"createdTimestamp": 1605711191976,
 | 
					    "createdTimestamp": 1602182806063,
 | 
				
			||||||
	"lastModifiedTimestamp": 1605711191976,
 | 
					    "lastModifiedTimestamp": 1602182806063,
 | 
				
			||||||
	"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
	]
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"model_type": "Profile",
 | 
							"model_type": "Profile",
 | 
				
			||||||
		"id": 15,
 | 
							"id": 5,
 | 
				
			||||||
		"customerId": 2,
 | 
							"customerId": 2,
 | 
				
			||||||
		"profileType": "ssid",
 | 
							"profileType": "ssid",
 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
							"name": "TipWlan-cloud-hotspot-access",
 | 
				
			||||||
@@ -9,8 +9,9 @@
 | 
				
			|||||||
			"model_type": "SsidConfiguration",
 | 
								"model_type": "SsidConfiguration",
 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
								"ssid": "TipWlan-cloud-hotspot-access",
 | 
				
			||||||
			"appliedRadios": [
 | 
								"appliedRadios": [
 | 
				
			||||||
 | 
									"is5GHzU",
 | 
				
			||||||
				"is5GHzL",
 | 
									"is5GHzL",
 | 
				
			||||||
				"is5GHzU"
 | 
									"is2dot4GHz"
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
								"ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "wpa2PSK",
 | 
								"secureMode": "wpa2PSK",
 | 
				
			||||||
@@ -20,7 +21,6 @@
 | 
				
			|||||||
			"keyRefresh": 0,
 | 
								"keyRefresh": 0,
 | 
				
			||||||
			"noLocalSubnets": false,
 | 
								"noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
								"radiusServiceName": null,
 | 
				
			||||||
			"radiusAccountingServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
								"captivePortalId": null,
 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
								"bandwidthLimitDown": 0,
 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
								"bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -59,23 +59,25 @@
 | 
				
			|||||||
			"forwardMode": null,
 | 
								"forwardMode": null,
 | 
				
			||||||
			"profileType": "ssid"
 | 
								"profileType": "ssid"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"createdTimestamp": 1605711164949,
 | 
							"createdTimestamp": 1602113058718,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711223372,
 | 
							"lastModifiedTimestamp": 1602113059547,
 | 
				
			||||||
		"childProfileIds": [
 | 
							"childProfileIds": [
 | 
				
			||||||
			24
 | 
								10
 | 
				
			||||||
		]
 | 
							]
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"model_type": "Profile",
 | 
							"model_type": "Profile",
 | 
				
			||||||
		"id": 16,
 | 
							"id": 11,
 | 
				
			||||||
		"customerId": 2,
 | 
							"customerId": 2,
 | 
				
			||||||
		"profileType": "ssid",
 | 
							"profileType": "ssid",
 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-osu",
 | 
							"name": "TipWlan-cloud-3-radios",
 | 
				
			||||||
		"details": {
 | 
							"details": {
 | 
				
			||||||
			"model_type": "SsidConfiguration",
 | 
								"model_type": "SsidConfiguration",
 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-osu",
 | 
								"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
			"appliedRadios": [
 | 
								"appliedRadios": [
 | 
				
			||||||
				"is2dot4GHz"
 | 
									"is5GHzL",
 | 
				
			||||||
 | 
									"is2dot4GHz",
 | 
				
			||||||
 | 
									"is5GHzU"
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
								"ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "open",
 | 
								"secureMode": "open",
 | 
				
			||||||
@@ -85,7 +87,6 @@
 | 
				
			|||||||
			"keyRefresh": 0,
 | 
								"keyRefresh": 0,
 | 
				
			||||||
			"noLocalSubnets": false,
 | 
								"noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
								"radiusServiceName": null,
 | 
				
			||||||
			"radiusAccountingServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
								"captivePortalId": null,
 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
								"bandwidthLimitDown": 0,
 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
								"bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -124,11 +125,10 @@
 | 
				
			|||||||
			"forwardMode": null,
 | 
								"forwardMode": null,
 | 
				
			||||||
			"profileType": "ssid"
 | 
								"profileType": "ssid"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"createdTimestamp": 1605711164950,
 | 
							"createdTimestamp": 1602183994766,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711171732,
 | 
							"lastModifiedTimestamp": 1602183994766,
 | 
				
			||||||
		"childProfileIds": [
 | 
							"childProfileIds": [
 | 
				
			||||||
			19,
 | 
								10
 | 
				
			||||||
			20
 | 
					 | 
				
			||||||
		]
 | 
							]
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,15 +1,15 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 18,
 | 
					        "id": 7,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_venue",
 | 
					        "profileType": "venue",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
					        "name": "TipWlan-Hotspot20-Venue",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
			"model_type": "PasspointVenueProfile",
 | 
					            "model_type": "VenueProfile",
 | 
				
			||||||
            "venueNameSet": [
 | 
					            "venueNameSet": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointVenueName",
 | 
					                    "model_type": "VenueName",
 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					                    "locale": "fr_CA",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemple de lieu",
 | 
					                    "dupleName": "Exemple de lieu",
 | 
				
			||||||
@@ -18,26 +18,25 @@
 | 
				
			|||||||
                    "asDuple": "fra:Exemple de lieu"
 | 
					                    "asDuple": "fra:Exemple de lieu"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointVenueName",
 | 
					                    "model_type": "VenueName",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                    "locale": "en_CA",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
					"dupleName": "Example passpoint_venue",
 | 
					                    "dupleName": "Example venue",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "venueUrl": "http://www.example.com/info-eng",
 | 
					                    "venueUrl": "http://www.example.com/info-eng",
 | 
				
			||||||
					"asDuple": "eng:Example passpoint_venue"
 | 
					                    "asDuple": "eng:Example venue"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "venueTypeAssignment": {
 | 
					            "venueTypeAssignment": {
 | 
				
			||||||
				"model_type": "ProfileVenueTypeAssignment",
 | 
					                "model_type": "VenueTypeAssignment",
 | 
				
			||||||
                "venueDescription": "Research and Development Facility",
 | 
					                "venueDescription": "Research and Development Facility",
 | 
				
			||||||
                "venueGroupId": 2,
 | 
					                "venueGroupId": 2,
 | 
				
			||||||
                "venueTypeId": 8
 | 
					                "venueTypeId": 8
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
			"profileType": "passpoint_venue"
 | 
					            "profileType": "venue"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711164956,
 | 
					        "createdTimestamp": 1602113058725,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711164956,
 | 
					        "lastModifiedTimestamp": 1602113058725,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -141,6 +141,7 @@
 | 
				
			|||||||
        "radioType": "is2dot4GHz",
 | 
					        "radioType": "is2dot4GHz",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
@@ -166,6 +167,7 @@
 | 
				
			|||||||
        "radioType": "is5GHzU",
 | 
					        "radioType": "is5GHzU",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
@@ -191,6 +193,7 @@
 | 
				
			|||||||
        "radioType": "is5GHzL",
 | 
					        "radioType": "is5GHzL",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,48 +10,55 @@
 | 
				
			|||||||
    "countryCode" : "ca",
 | 
					    "countryCode" : "ca",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					    "maintenanceWindow" : null,
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					    "rrmEnabled" : true,
 | 
				
			||||||
    "dailyActivityDetails" : {
 | 
					    "dailyRebalancingDetails" : {
 | 
				
			||||||
      "SUNDAY" : {
 | 
					      "SUNDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "MONDAY" : {
 | 
					      "MONDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					      "TUESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					      "WEDNESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					      "THURSDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					      "FRIDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					      "SATURDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,48 +10,55 @@
 | 
				
			|||||||
    "countryCode" : "usa",
 | 
					    "countryCode" : "usa",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					    "maintenanceWindow" : null,
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					    "rrmEnabled" : true,
 | 
				
			||||||
    "dailyActivityDetails" : {
 | 
					    "dailyRebalancingDetails" : {
 | 
				
			||||||
      "SUNDAY" : {
 | 
					      "SUNDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "MONDAY" : {
 | 
					      "MONDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					      "TUESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					      "WEDNESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					      "THURSDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					      "FRIDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					      "SATURDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
	"id": 23,
 | 
					    "id": 17,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "equipment_ap",
 | 
					    "profileType": "equipment_ap",
 | 
				
			||||||
	"name": "ApProfile-3-radios-passpoint",
 | 
					    "name": "ApProfile-3-radios",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "ApNetworkConfiguration",
 | 
					        "model_type": "ApNetworkConfiguration",
 | 
				
			||||||
        "networkConfigVersion": "AP-1",
 | 
					        "networkConfigVersion": "AP-1",
 | 
				
			||||||
@@ -20,11 +20,6 @@
 | 
				
			|||||||
        "syntheticClientEnabled": true,
 | 
					        "syntheticClientEnabled": true,
 | 
				
			||||||
        "ledControlEnabled": true,
 | 
					        "ledControlEnabled": true,
 | 
				
			||||||
        "equipmentDiscovery": false,
 | 
					        "equipmentDiscovery": false,
 | 
				
			||||||
		"greTunnelName": null,
 | 
					 | 
				
			||||||
		"greParentIfName": null,
 | 
					 | 
				
			||||||
		"greLocalInetAddr": null,
 | 
					 | 
				
			||||||
		"greRemoteInetAddr": null,
 | 
					 | 
				
			||||||
		"greRemoteMacAddr": null,
 | 
					 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RadioProfileConfiguration",
 | 
					                "model_type": "RadioProfileConfiguration",
 | 
				
			||||||
@@ -44,12 +39,12 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "equipment_ap"
 | 
					        "profileType": "equipment_ap"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
	"createdTimestamp": 1605711197140,
 | 
					    "createdTimestamp": 1602182806348,
 | 
				
			||||||
	"lastModifiedTimestamp": 1605711197140,
 | 
					    "lastModifiedTimestamp": 1602182806348,
 | 
				
			||||||
    "childProfileIds": [
 | 
					    "childProfileIds": [
 | 
				
			||||||
		16,
 | 
					        2,
 | 
				
			||||||
		21,
 | 
					        5,
 | 
				
			||||||
		22,
 | 
					        11,
 | 
				
			||||||
		15
 | 
					        13
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,14 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
        "id": 24,
 | 
					    "id": 10,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
        "profileType": "passpoint",
 | 
					    "profileType": "hotspot_2pt0",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-Config",
 | 
					    "name": "TipWlan-Hotspot20-Config",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
            "model_type": "PasspointProfile",
 | 
					        "model_type": "Hotspot2Profile",
 | 
				
			||||||
        "enableInterworkingAndHs20": true,
 | 
					        "enableInterworkingAndHs20": true,
 | 
				
			||||||
        "hessid": null,
 | 
					        "hessid": null,
 | 
				
			||||||
 | 
					        "accessNetworkType": "free_public_network",
 | 
				
			||||||
 | 
					        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
        "additionalStepsRequiredForAccess": 0,
 | 
					        "additionalStepsRequiredForAccess": 0,
 | 
				
			||||||
        "deauthRequestTimeout": 0,
 | 
					        "deauthRequestTimeout": 0,
 | 
				
			||||||
        "operatingClass": 0,
 | 
					        "operatingClass": 0,
 | 
				
			||||||
@@ -27,7 +29,7 @@
 | 
				
			|||||||
        "internetConnectivity": true,
 | 
					        "internetConnectivity": true,
 | 
				
			||||||
        "connectionCapabilitySet": [
 | 
					        "connectionCapabilitySet": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "PasspointConnectionCapability",
 | 
					                "model_type": "ConnectionCapability",
 | 
				
			||||||
                "connectionCapabilitiesPortNumber": 8888,
 | 
					                "connectionCapabilitiesPortNumber": 8888,
 | 
				
			||||||
                "connectionCapabilitiesIpProtocol": "TCP",
 | 
					                "connectionCapabilitiesIpProtocol": "TCP",
 | 
				
			||||||
                "connectionCapabilitiesStatus": "open"
 | 
					                "connectionCapabilitiesStatus": "open"
 | 
				
			||||||
@@ -46,27 +48,25 @@
 | 
				
			|||||||
        "associatedAccessSsidNames": [
 | 
					        "associatedAccessSsidNames": [
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					            "TipWlan-cloud-hotspot-access"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
            "osuSsidName": "TipWlan-cloud-hotspot-osu",
 | 
					        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
				
			||||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
					        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
				
			||||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
					        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
				
			||||||
        "idProviderProfileNames": [
 | 
					        "idProviderProfileNames": [
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
					            "TipWlan-Hotspot20-OSU-Provider"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
            "accessNetworkType": "free_public_network",
 | 
					        "profileType": "hotspot_2pt0",
 | 
				
			||||||
            "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
					 | 
				
			||||||
        "associatedSsids": [
 | 
					        "associatedSsids": [
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					            "TipWlan-cloud-hotspot-access"
 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
            "profileType": "passpoint"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "createdTimestamp": 1605711223339,
 | 
					 | 
				
			||||||
        "lastModifiedTimestamp": 1605711223339,
 | 
					 | 
				
			||||||
        "childProfileIds": [
 | 
					 | 
				
			||||||
            17,
 | 
					 | 
				
			||||||
            18,
 | 
					 | 
				
			||||||
            19,
 | 
					 | 
				
			||||||
            20
 | 
					 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
    }
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1602182806040,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1602182806040,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					        6,
 | 
				
			||||||
 | 
					        7,
 | 
				
			||||||
 | 
					        8,
 | 
				
			||||||
 | 
					        9
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 19,
 | 
					    "id": 8,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_osu_id_provider",
 | 
					    "profileType": "id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
					    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
			"model_type": "PasspointOsuProviderProfile",
 | 
					        "model_type": "Hotspot20IdProviderProfile",
 | 
				
			||||||
        "domainName": "rogers.com",
 | 
					        "domainName": "rogers.com",
 | 
				
			||||||
        "mccMncList": [
 | 
					        "mccMncList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointMccMnc",
 | 
					                "model_type": "MccMnc",
 | 
				
			||||||
                "mcc": 302,
 | 
					                "mcc": 302,
 | 
				
			||||||
                "mnc": 720,
 | 
					                "mnc": 720,
 | 
				
			||||||
                "iso": "ca",
 | 
					                "iso": "ca",
 | 
				
			||||||
@@ -22,7 +22,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "naiRealmList": [
 | 
					        "naiRealmList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointNaiRealmInformation",
 | 
					                "model_type": "NaiRealmInformation",
 | 
				
			||||||
                "naiRealms": [
 | 
					                "naiRealms": [
 | 
				
			||||||
                    "rogers.com"
 | 
					                    "rogers.com"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -44,7 +44,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuIconList": [
 | 
					        "osuIconList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -55,7 +55,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "fra",
 | 
					                "languageCode": "fra",
 | 
				
			||||||
@@ -66,7 +66,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -77,10 +77,10 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"osuServerUri": "https://example.com/osu/rogers",
 | 
					        "osuServerUri": "https://example.com/osu/rogers/",
 | 
				
			||||||
        "osuFriendlyName": [
 | 
					        "osuFriendlyName": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example provider rogers",
 | 
					                "dupleName": "Example provider rogers",
 | 
				
			||||||
@@ -88,7 +88,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example provider rogers"
 | 
					                "asDuple": "eng:Example provider rogers"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemple de fournisseur rogers",
 | 
					                "dupleName": "Exemple de fournisseur rogers",
 | 
				
			||||||
@@ -104,7 +104,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuServiceDescription": [
 | 
					        "osuServiceDescription": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example services rogers",
 | 
					                "dupleName": "Example services rogers",
 | 
				
			||||||
@@ -112,7 +112,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example services rogers"
 | 
					                "asDuple": "eng:Example services rogers"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemples de services rogers",
 | 
					                "dupleName": "Exemples de services rogers",
 | 
				
			||||||
@@ -120,31 +120,24 @@
 | 
				
			|||||||
                "asDuple": "fra:Exemples de services rogers"
 | 
					                "asDuple": "fra:Exemples de services rogers"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"roamingOi": [
 | 
					        "profileType": "id_provider"
 | 
				
			||||||
				1,
 | 
					 | 
				
			||||||
				2,
 | 
					 | 
				
			||||||
				3,
 | 
					 | 
				
			||||||
				4
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"profileType": "passpoint_osu_id_provider"
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1605711165325,
 | 
					    "createdTimestamp": 1602182805654,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711165325,
 | 
					    "lastModifiedTimestamp": 1602182805654,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
		]
 | 
					},
 | 
				
			||||||
	},
 | 
					{
 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 20,
 | 
					    "id": 9,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_osu_id_provider",
 | 
					    "profileType": "id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
			"model_type": "PasspointOsuProviderProfile",
 | 
					        "model_type": "Hotspot20IdProviderProfile",
 | 
				
			||||||
        "domainName": "telus.com",
 | 
					        "domainName": "telus.com",
 | 
				
			||||||
        "mccMncList": [
 | 
					        "mccMncList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointMccMnc",
 | 
					                "model_type": "MccMnc",
 | 
				
			||||||
                "mcc": 302,
 | 
					                "mcc": 302,
 | 
				
			||||||
                "mnc": 220,
 | 
					                "mnc": 220,
 | 
				
			||||||
                "iso": "ca",
 | 
					                "iso": "ca",
 | 
				
			||||||
@@ -156,7 +149,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "naiRealmList": [
 | 
					        "naiRealmList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointNaiRealmInformation",
 | 
					                "model_type": "NaiRealmInformation",
 | 
				
			||||||
                "naiRealms": [
 | 
					                "naiRealms": [
 | 
				
			||||||
                    "telus.com"
 | 
					                    "telus.com"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -178,7 +171,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuIconList": [
 | 
					        "osuIconList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -189,7 +182,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "fra",
 | 
					                "languageCode": "fra",
 | 
				
			||||||
@@ -200,7 +193,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -211,10 +204,10 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"osuServerUri": "https://example.com/osu/telus",
 | 
					        "osuServerUri": "https://example.com/osu/telus/",
 | 
				
			||||||
        "osuFriendlyName": [
 | 
					        "osuFriendlyName": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example provider telus",
 | 
					                "dupleName": "Example provider telus",
 | 
				
			||||||
@@ -222,7 +215,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example provider telus"
 | 
					                "asDuple": "eng:Example provider telus"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemple de fournisseur telus",
 | 
					                "dupleName": "Exemple de fournisseur telus",
 | 
				
			||||||
@@ -238,7 +231,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuServiceDescription": [
 | 
					        "osuServiceDescription": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example services telus",
 | 
					                "dupleName": "Example services telus",
 | 
				
			||||||
@@ -246,7 +239,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example services telus"
 | 
					                "asDuple": "eng:Example services telus"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemples de services telus",
 | 
					                "dupleName": "Exemples de services telus",
 | 
				
			||||||
@@ -254,17 +247,10 @@
 | 
				
			|||||||
                "asDuple": "fra:Exemples de services telus"
 | 
					                "asDuple": "fra:Exemples de services telus"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"roamingOi": [
 | 
					        "profileType": "id_provider"
 | 
				
			||||||
				1,
 | 
					 | 
				
			||||||
				2,
 | 
					 | 
				
			||||||
				3,
 | 
					 | 
				
			||||||
				4
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"profileType": "passpoint_osu_id_provider"
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1605711165330,
 | 
					    "createdTimestamp": 1602182805660,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711165330,
 | 
					    "lastModifiedTimestamp": 1602182805660,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 22,
 | 
					        "id": 2,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "service_metrics_collection_config",
 | 
					        "profileType": "metrics",
 | 
				
			||||||
		"name": "Metrics-Profile-Passpoint",
 | 
					        "name": "Metrics-Profile-3-radios",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
            "model_type": "ServiceMetricsCollectionConfigProfile",
 | 
					            "model_type": "ServiceMetricsCollectionConfigProfile",
 | 
				
			||||||
            "radioTypes": [
 | 
					            "radioTypes": [
 | 
				
			||||||
 | 
					                "is5GHzU",
 | 
				
			||||||
                "is5GHzL",
 | 
					                "is5GHzL",
 | 
				
			||||||
				"is2dot4GHz",
 | 
					                "is2dot4GHz"
 | 
				
			||||||
				"is5GHzU"
 | 
					 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "serviceMetricDataTypes": [
 | 
					            "serviceMetricDataTypes": [
 | 
				
			||||||
                "ApNode",
 | 
					                "ApNode",
 | 
				
			||||||
@@ -24,26 +24,14 @@
 | 
				
			|||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
						"channelSurveyType": "ON_CHANNEL",
 | 
					                        "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,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -53,9 +41,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -65,9 +53,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -77,21 +65,33 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 120,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "ApSsid": [
 | 
					                "ApSsid": [
 | 
				
			||||||
@@ -99,14 +99,14 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "ApSsid"
 | 
					                        "serviceMetricDataType": "ApSsid"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "ApSsid"
 | 
					                        "serviceMetricDataType": "ApSsid"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -122,7 +122,7 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "Client"
 | 
					                        "serviceMetricDataType": "Client"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -136,7 +136,7 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
                        "serviceMetricDataType": "Client"
 | 
					                        "serviceMetricDataType": "Client"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -149,21 +149,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					{
 | 
					 | 
				
			||||||
						"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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -173,9 +161,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -185,9 +173,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -197,9 +185,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -209,35 +197,35 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "Neighbour": [
 | 
					                "Neighbour": [
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 120,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -247,21 +235,45 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -271,29 +283,16 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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"
 | 
					            "profileType": "metrics"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711195528,
 | 
					        "createdTimestamp": 1602113058699,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711195528,
 | 
					        "lastModifiedTimestamp": 1602113058699,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,25 +1,26 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
					{
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 17,
 | 
					        "id": 6,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_operator",
 | 
					        "profileType": "operator",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
					        "name": "TipWlan-Hotspot20-Operator",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
			"model_type": "PasspointOperatorProfile",
 | 
					            "model_type": "OperatorProfile",
 | 
				
			||||||
 | 
					            "domainName": "telecominfraproject.atlassian.net",
 | 
				
			||||||
            "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
					            "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
				
			||||||
            "x509CertificateLocation": "/etc/ca.pem",
 | 
					            "x509CertificateLocation": "/etc/ca.pem",
 | 
				
			||||||
            "operatorFriendlyName": [
 | 
					            "operatorFriendlyName": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                    "model_type": "Hotspot20Duple",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                    "locale": "en_CA",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
					"dupleName": "Default friendly passpoint_operator name",
 | 
					                    "dupleName": "Default friendly operator name",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
					"asDuple": "eng:Default friendly passpoint_operator name"
 | 
					                    "asDuple": "eng:Default friendly operator name"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                    "model_type": "Hotspot20Duple",
 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					                    "locale": "fr_CA",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
					                    "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
				
			||||||
@@ -27,11 +28,10 @@
 | 
				
			|||||||
                    "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
					                    "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
			"profileType": "passpoint_operator"
 | 
					            "profileType": "operator"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711164952,
 | 
					        "createdTimestamp": 1602113058719,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711164952,
 | 
					        "lastModifiedTimestamp": 1602113058719,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,23 +1,24 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
	"id": 21,
 | 
					    "id": 13,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "rf",
 | 
					    "profileType": "rf",
 | 
				
			||||||
	"name": "TipWlan-rf-passpoint",
 | 
					    "name": "TipWlan-rf",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "RfConfiguration",
 | 
					        "model_type": "RfConfiguration",
 | 
				
			||||||
        "rfConfigMap": {
 | 
					        "rfConfigMap": {
 | 
				
			||||||
            "is5GHz": {
 | 
					            "is5GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHz",
 | 
					                "radioType": "is5GHz",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -25,12 +26,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -40,31 +46,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "radioMode": "modeN",
 | 
					                "radioMode": "modeN",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is20MHz",
 | 
					                "channelBandwidth": "is20MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -72,12 +73,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -87,31 +93,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 20,
 | 
					                    "dropInSnrPercentage": 20,
 | 
				
			||||||
                    "minLoadFactor": 50
 | 
					                    "minLoadFactor": 50
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHzU",
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -119,12 +120,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -134,31 +140,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHzL",
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -166,12 +167,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -181,25 +187,18 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "rf"
 | 
					        "profileType": "rf"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
	"createdTimestamp": 1605711191976,
 | 
					    "createdTimestamp": 1602182806063,
 | 
				
			||||||
	"lastModifiedTimestamp": 1605711191976,
 | 
					    "lastModifiedTimestamp": 1602182806063,
 | 
				
			||||||
	"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
	]
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"model_type": "Profile",
 | 
							"model_type": "Profile",
 | 
				
			||||||
		"id": 15,
 | 
							"id": 5,
 | 
				
			||||||
		"customerId": 2,
 | 
							"customerId": 2,
 | 
				
			||||||
		"profileType": "ssid",
 | 
							"profileType": "ssid",
 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
							"name": "TipWlan-cloud-hotspot-access",
 | 
				
			||||||
@@ -9,8 +9,9 @@
 | 
				
			|||||||
			"model_type": "SsidConfiguration",
 | 
								"model_type": "SsidConfiguration",
 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
								"ssid": "TipWlan-cloud-hotspot-access",
 | 
				
			||||||
			"appliedRadios": [
 | 
								"appliedRadios": [
 | 
				
			||||||
 | 
									"is5GHzU",
 | 
				
			||||||
				"is5GHzL",
 | 
									"is5GHzL",
 | 
				
			||||||
				"is5GHzU"
 | 
									"is2dot4GHz"
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
								"ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "wpa2PSK",
 | 
								"secureMode": "wpa2PSK",
 | 
				
			||||||
@@ -20,7 +21,6 @@
 | 
				
			|||||||
			"keyRefresh": 0,
 | 
								"keyRefresh": 0,
 | 
				
			||||||
			"noLocalSubnets": false,
 | 
								"noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
								"radiusServiceName": null,
 | 
				
			||||||
			"radiusAccountingServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
								"captivePortalId": null,
 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
								"bandwidthLimitDown": 0,
 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
								"bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -59,23 +59,25 @@
 | 
				
			|||||||
			"forwardMode": null,
 | 
								"forwardMode": null,
 | 
				
			||||||
			"profileType": "ssid"
 | 
								"profileType": "ssid"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"createdTimestamp": 1605711164949,
 | 
							"createdTimestamp": 1602113058718,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711223372,
 | 
							"lastModifiedTimestamp": 1602113059547,
 | 
				
			||||||
		"childProfileIds": [
 | 
							"childProfileIds": [
 | 
				
			||||||
			24
 | 
								10
 | 
				
			||||||
		]
 | 
							]
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"model_type": "Profile",
 | 
							"model_type": "Profile",
 | 
				
			||||||
		"id": 16,
 | 
							"id": 11,
 | 
				
			||||||
		"customerId": 2,
 | 
							"customerId": 2,
 | 
				
			||||||
		"profileType": "ssid",
 | 
							"profileType": "ssid",
 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-osu",
 | 
							"name": "TipWlan-cloud-3-radios",
 | 
				
			||||||
		"details": {
 | 
							"details": {
 | 
				
			||||||
			"model_type": "SsidConfiguration",
 | 
								"model_type": "SsidConfiguration",
 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-osu",
 | 
								"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
			"appliedRadios": [
 | 
								"appliedRadios": [
 | 
				
			||||||
				"is2dot4GHz"
 | 
									"is5GHzL",
 | 
				
			||||||
 | 
									"is2dot4GHz",
 | 
				
			||||||
 | 
									"is5GHzU"
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
								"ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "open",
 | 
								"secureMode": "open",
 | 
				
			||||||
@@ -85,7 +87,6 @@
 | 
				
			|||||||
			"keyRefresh": 0,
 | 
								"keyRefresh": 0,
 | 
				
			||||||
			"noLocalSubnets": false,
 | 
								"noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
								"radiusServiceName": null,
 | 
				
			||||||
			"radiusAccountingServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
								"captivePortalId": null,
 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
								"bandwidthLimitDown": 0,
 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
								"bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -124,11 +125,10 @@
 | 
				
			|||||||
			"forwardMode": null,
 | 
								"forwardMode": null,
 | 
				
			||||||
			"profileType": "ssid"
 | 
								"profileType": "ssid"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"createdTimestamp": 1605711164950,
 | 
							"createdTimestamp": 1602183994766,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711171732,
 | 
							"lastModifiedTimestamp": 1602183994766,
 | 
				
			||||||
		"childProfileIds": [
 | 
							"childProfileIds": [
 | 
				
			||||||
			19,
 | 
								10
 | 
				
			||||||
			20
 | 
					 | 
				
			||||||
		]
 | 
							]
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,15 +1,15 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 18,
 | 
					        "id": 7,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_venue",
 | 
					        "profileType": "venue",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
					        "name": "TipWlan-Hotspot20-Venue",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
			"model_type": "PasspointVenueProfile",
 | 
					            "model_type": "VenueProfile",
 | 
				
			||||||
            "venueNameSet": [
 | 
					            "venueNameSet": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointVenueName",
 | 
					                    "model_type": "VenueName",
 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					                    "locale": "fr_CA",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemple de lieu",
 | 
					                    "dupleName": "Exemple de lieu",
 | 
				
			||||||
@@ -18,26 +18,25 @@
 | 
				
			|||||||
                    "asDuple": "fra:Exemple de lieu"
 | 
					                    "asDuple": "fra:Exemple de lieu"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointVenueName",
 | 
					                    "model_type": "VenueName",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                    "locale": "en_CA",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
					"dupleName": "Example passpoint_venue",
 | 
					                    "dupleName": "Example venue",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "venueUrl": "http://www.example.com/info-eng",
 | 
					                    "venueUrl": "http://www.example.com/info-eng",
 | 
				
			||||||
					"asDuple": "eng:Example passpoint_venue"
 | 
					                    "asDuple": "eng:Example venue"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "venueTypeAssignment": {
 | 
					            "venueTypeAssignment": {
 | 
				
			||||||
				"model_type": "ProfileVenueTypeAssignment",
 | 
					                "model_type": "VenueTypeAssignment",
 | 
				
			||||||
                "venueDescription": "Research and Development Facility",
 | 
					                "venueDescription": "Research and Development Facility",
 | 
				
			||||||
                "venueGroupId": 2,
 | 
					                "venueGroupId": 2,
 | 
				
			||||||
                "venueTypeId": 8
 | 
					                "venueTypeId": 8
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
			"profileType": "passpoint_venue"
 | 
					            "profileType": "venue"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711164956,
 | 
					        "createdTimestamp": 1602113058725,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711164956,
 | 
					        "lastModifiedTimestamp": 1602113058725,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -15,6 +15,11 @@
 | 
				
			|||||||
	</properties>
 | 
						</properties>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<dependencies>
 | 
						<dependencies>
 | 
				
			||||||
 | 
							<dependency>
 | 
				
			||||||
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
								<artifactId>opensync-gateway</artifactId>
 | 
				
			||||||
 | 
								<version>${tip-wlan-cloud.release.version}</version>
 | 
				
			||||||
 | 
							</dependency>
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-ext-static</artifactId>
 | 
								<artifactId>opensync-ext-static</artifactId>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -141,6 +141,7 @@
 | 
				
			|||||||
        "radioType": "is2dot4GHz",
 | 
					        "radioType": "is2dot4GHz",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
@@ -166,6 +167,7 @@
 | 
				
			|||||||
        "radioType": "is5GHzU",
 | 
					        "radioType": "is5GHzU",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
@@ -191,6 +193,7 @@
 | 
				
			|||||||
        "radioType": "is5GHzL",
 | 
					        "radioType": "is5GHzL",
 | 
				
			||||||
        "radioAdminState": "enabled",
 | 
					        "radioAdminState": "enabled",
 | 
				
			||||||
        "fragmentationThresholdBytes": 2346,
 | 
					        "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
 | 
					        "wmmState": "enabled",
 | 
				
			||||||
        "uapsdState": "enabled",
 | 
					        "uapsdState": "enabled",
 | 
				
			||||||
        "stationIsolation": "disabled",
 | 
					        "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": {
 | 
					        "managementRate": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,48 +10,55 @@
 | 
				
			|||||||
    "countryCode" : "ca",
 | 
					    "countryCode" : "ca",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					    "maintenanceWindow" : null,
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					    "rrmEnabled" : true,
 | 
				
			||||||
    "dailyActivityDetails" : {
 | 
					    "dailyRebalancingDetails" : {
 | 
				
			||||||
      "SUNDAY" : {
 | 
					      "SUNDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "MONDAY" : {
 | 
					      "MONDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					      "TUESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					      "WEDNESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					      "THURSDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					      "FRIDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					      "SATURDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,48 +10,55 @@
 | 
				
			|||||||
    "countryCode" : "usa",
 | 
					    "countryCode" : "usa",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					    "maintenanceWindow" : null,
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					    "rrmEnabled" : true,
 | 
				
			||||||
    "dailyActivityDetails" : {
 | 
					    "dailyRebalancingDetails" : {
 | 
				
			||||||
      "SUNDAY" : {
 | 
					      "SUNDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "MONDAY" : {
 | 
					      "MONDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					      "TUESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					      "WEDNESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					      "THURSDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					      "FRIDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					      "SATURDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern"
 | 
					        "timezone" : "US/Eastern",
 | 
				
			||||||
 | 
					        "lastBusySnapshot" : 0
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
	"id": 23,
 | 
					    "id": 17,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "equipment_ap",
 | 
					    "profileType": "equipment_ap",
 | 
				
			||||||
	"name": "ApProfile-3-radios-passpoint",
 | 
					    "name": "ApProfile-3-radios",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "ApNetworkConfiguration",
 | 
					        "model_type": "ApNetworkConfiguration",
 | 
				
			||||||
        "networkConfigVersion": "AP-1",
 | 
					        "networkConfigVersion": "AP-1",
 | 
				
			||||||
@@ -20,11 +20,6 @@
 | 
				
			|||||||
        "syntheticClientEnabled": true,
 | 
					        "syntheticClientEnabled": true,
 | 
				
			||||||
        "ledControlEnabled": true,
 | 
					        "ledControlEnabled": true,
 | 
				
			||||||
        "equipmentDiscovery": false,
 | 
					        "equipmentDiscovery": false,
 | 
				
			||||||
		"greTunnelName": null,
 | 
					 | 
				
			||||||
		"greParentIfName": null,
 | 
					 | 
				
			||||||
		"greLocalInetAddr": null,
 | 
					 | 
				
			||||||
		"greRemoteInetAddr": null,
 | 
					 | 
				
			||||||
		"greRemoteMacAddr": null,
 | 
					 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RadioProfileConfiguration",
 | 
					                "model_type": "RadioProfileConfiguration",
 | 
				
			||||||
@@ -44,12 +39,12 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "equipment_ap"
 | 
					        "profileType": "equipment_ap"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
	"createdTimestamp": 1605711197140,
 | 
					    "createdTimestamp": 1602182806348,
 | 
				
			||||||
	"lastModifiedTimestamp": 1605711197140,
 | 
					    "lastModifiedTimestamp": 1602182806348,
 | 
				
			||||||
    "childProfileIds": [
 | 
					    "childProfileIds": [
 | 
				
			||||||
		16,
 | 
					        2,
 | 
				
			||||||
		21,
 | 
					        5,
 | 
				
			||||||
		22,
 | 
					        11,
 | 
				
			||||||
		15
 | 
					        13
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,14 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
        "id": 24,
 | 
					    "id": 10,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
        "profileType": "passpoint",
 | 
					    "profileType": "hotspot_2pt0",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-Config",
 | 
					    "name": "TipWlan-Hotspot20-Config",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
            "model_type": "PasspointProfile",
 | 
					        "model_type": "Hotspot2Profile",
 | 
				
			||||||
        "enableInterworkingAndHs20": true,
 | 
					        "enableInterworkingAndHs20": true,
 | 
				
			||||||
        "hessid": null,
 | 
					        "hessid": null,
 | 
				
			||||||
 | 
					        "accessNetworkType": "free_public_network",
 | 
				
			||||||
 | 
					        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
        "additionalStepsRequiredForAccess": 0,
 | 
					        "additionalStepsRequiredForAccess": 0,
 | 
				
			||||||
        "deauthRequestTimeout": 0,
 | 
					        "deauthRequestTimeout": 0,
 | 
				
			||||||
        "operatingClass": 0,
 | 
					        "operatingClass": 0,
 | 
				
			||||||
@@ -27,7 +29,7 @@
 | 
				
			|||||||
        "internetConnectivity": true,
 | 
					        "internetConnectivity": true,
 | 
				
			||||||
        "connectionCapabilitySet": [
 | 
					        "connectionCapabilitySet": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "PasspointConnectionCapability",
 | 
					                "model_type": "ConnectionCapability",
 | 
				
			||||||
                "connectionCapabilitiesPortNumber": 8888,
 | 
					                "connectionCapabilitiesPortNumber": 8888,
 | 
				
			||||||
                "connectionCapabilitiesIpProtocol": "TCP",
 | 
					                "connectionCapabilitiesIpProtocol": "TCP",
 | 
				
			||||||
                "connectionCapabilitiesStatus": "open"
 | 
					                "connectionCapabilitiesStatus": "open"
 | 
				
			||||||
@@ -46,27 +48,25 @@
 | 
				
			|||||||
        "associatedAccessSsidNames": [
 | 
					        "associatedAccessSsidNames": [
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					            "TipWlan-cloud-hotspot-access"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
            "osuSsidName": "TipWlan-cloud-hotspot-osu",
 | 
					        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
				
			||||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
					        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
				
			||||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
					        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
				
			||||||
        "idProviderProfileNames": [
 | 
					        "idProviderProfileNames": [
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
					            "TipWlan-Hotspot20-OSU-Provider"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
            "accessNetworkType": "free_public_network",
 | 
					        "profileType": "hotspot_2pt0",
 | 
				
			||||||
            "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
					 | 
				
			||||||
        "associatedSsids": [
 | 
					        "associatedSsids": [
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					            "TipWlan-cloud-hotspot-access"
 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
            "profileType": "passpoint"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "createdTimestamp": 1605711223339,
 | 
					 | 
				
			||||||
        "lastModifiedTimestamp": 1605711223339,
 | 
					 | 
				
			||||||
        "childProfileIds": [
 | 
					 | 
				
			||||||
            17,
 | 
					 | 
				
			||||||
            18,
 | 
					 | 
				
			||||||
            19,
 | 
					 | 
				
			||||||
            20
 | 
					 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
    }
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1602182806040,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1602182806040,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					        6,
 | 
				
			||||||
 | 
					        7,
 | 
				
			||||||
 | 
					        8,
 | 
				
			||||||
 | 
					        9
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 19,
 | 
					    "id": 8,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_osu_id_provider",
 | 
					    "profileType": "id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
					    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
			"model_type": "PasspointOsuProviderProfile",
 | 
					        "model_type": "Hotspot20IdProviderProfile",
 | 
				
			||||||
        "domainName": "rogers.com",
 | 
					        "domainName": "rogers.com",
 | 
				
			||||||
        "mccMncList": [
 | 
					        "mccMncList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointMccMnc",
 | 
					                "model_type": "MccMnc",
 | 
				
			||||||
                "mcc": 302,
 | 
					                "mcc": 302,
 | 
				
			||||||
                "mnc": 720,
 | 
					                "mnc": 720,
 | 
				
			||||||
                "iso": "ca",
 | 
					                "iso": "ca",
 | 
				
			||||||
@@ -22,7 +22,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "naiRealmList": [
 | 
					        "naiRealmList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointNaiRealmInformation",
 | 
					                "model_type": "NaiRealmInformation",
 | 
				
			||||||
                "naiRealms": [
 | 
					                "naiRealms": [
 | 
				
			||||||
                    "rogers.com"
 | 
					                    "rogers.com"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -44,7 +44,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuIconList": [
 | 
					        "osuIconList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -55,7 +55,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "fra",
 | 
					                "languageCode": "fra",
 | 
				
			||||||
@@ -66,7 +66,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -77,10 +77,10 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"osuServerUri": "https://example.com/osu/rogers",
 | 
					        "osuServerUri": "https://example.com/osu/rogers/",
 | 
				
			||||||
        "osuFriendlyName": [
 | 
					        "osuFriendlyName": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example provider rogers",
 | 
					                "dupleName": "Example provider rogers",
 | 
				
			||||||
@@ -88,7 +88,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example provider rogers"
 | 
					                "asDuple": "eng:Example provider rogers"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemple de fournisseur rogers",
 | 
					                "dupleName": "Exemple de fournisseur rogers",
 | 
				
			||||||
@@ -104,7 +104,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuServiceDescription": [
 | 
					        "osuServiceDescription": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example services rogers",
 | 
					                "dupleName": "Example services rogers",
 | 
				
			||||||
@@ -112,7 +112,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example services rogers"
 | 
					                "asDuple": "eng:Example services rogers"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemples de services rogers",
 | 
					                "dupleName": "Exemples de services rogers",
 | 
				
			||||||
@@ -120,31 +120,24 @@
 | 
				
			|||||||
                "asDuple": "fra:Exemples de services rogers"
 | 
					                "asDuple": "fra:Exemples de services rogers"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"roamingOi": [
 | 
					        "profileType": "id_provider"
 | 
				
			||||||
				1,
 | 
					 | 
				
			||||||
				2,
 | 
					 | 
				
			||||||
				3,
 | 
					 | 
				
			||||||
				4
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"profileType": "passpoint_osu_id_provider"
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1605711165325,
 | 
					    "createdTimestamp": 1602182805654,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711165325,
 | 
					    "lastModifiedTimestamp": 1602182805654,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
		]
 | 
					},
 | 
				
			||||||
	},
 | 
					{
 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 20,
 | 
					    "id": 9,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_osu_id_provider",
 | 
					    "profileType": "id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
			"model_type": "PasspointOsuProviderProfile",
 | 
					        "model_type": "Hotspot20IdProviderProfile",
 | 
				
			||||||
        "domainName": "telus.com",
 | 
					        "domainName": "telus.com",
 | 
				
			||||||
        "mccMncList": [
 | 
					        "mccMncList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointMccMnc",
 | 
					                "model_type": "MccMnc",
 | 
				
			||||||
                "mcc": 302,
 | 
					                "mcc": 302,
 | 
				
			||||||
                "mnc": 220,
 | 
					                "mnc": 220,
 | 
				
			||||||
                "iso": "ca",
 | 
					                "iso": "ca",
 | 
				
			||||||
@@ -156,7 +149,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "naiRealmList": [
 | 
					        "naiRealmList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointNaiRealmInformation",
 | 
					                "model_type": "NaiRealmInformation",
 | 
				
			||||||
                "naiRealms": [
 | 
					                "naiRealms": [
 | 
				
			||||||
                    "telus.com"
 | 
					                    "telus.com"
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -178,7 +171,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuIconList": [
 | 
					        "osuIconList": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -189,7 +182,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "fra",
 | 
					                "languageCode": "fra",
 | 
				
			||||||
@@ -200,7 +193,7 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointOsuIcon",
 | 
					                "model_type": "OsuIcon",
 | 
				
			||||||
                "iconWidth": 32,
 | 
					                "iconWidth": 32,
 | 
				
			||||||
                "iconHeight": 32,
 | 
					                "iconHeight": 32,
 | 
				
			||||||
                "languageCode": "eng",
 | 
					                "languageCode": "eng",
 | 
				
			||||||
@@ -211,10 +204,10 @@
 | 
				
			|||||||
                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"osuServerUri": "https://example.com/osu/telus",
 | 
					        "osuServerUri": "https://example.com/osu/telus/",
 | 
				
			||||||
        "osuFriendlyName": [
 | 
					        "osuFriendlyName": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example provider telus",
 | 
					                "dupleName": "Example provider telus",
 | 
				
			||||||
@@ -222,7 +215,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example provider telus"
 | 
					                "asDuple": "eng:Example provider telus"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemple de fournisseur telus",
 | 
					                "dupleName": "Exemple de fournisseur telus",
 | 
				
			||||||
@@ -238,7 +231,7 @@
 | 
				
			|||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuServiceDescription": [
 | 
					        "osuServiceDescription": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                "locale": "en_CA",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                "dupleName": "Example services telus",
 | 
					                "dupleName": "Example services telus",
 | 
				
			||||||
@@ -246,7 +239,7 @@
 | 
				
			|||||||
                "asDuple": "eng:Example services telus"
 | 
					                "asDuple": "eng:Example services telus"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                "model_type": "Hotspot20Duple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                "locale": "fr_CA",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemples de services telus",
 | 
					                "dupleName": "Exemples de services telus",
 | 
				
			||||||
@@ -254,17 +247,10 @@
 | 
				
			|||||||
                "asDuple": "fra:Exemples de services telus"
 | 
					                "asDuple": "fra:Exemples de services telus"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
			"roamingOi": [
 | 
					        "profileType": "id_provider"
 | 
				
			||||||
				1,
 | 
					 | 
				
			||||||
				2,
 | 
					 | 
				
			||||||
				3,
 | 
					 | 
				
			||||||
				4
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"profileType": "passpoint_osu_id_provider"
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1605711165330,
 | 
					    "createdTimestamp": 1602182805660,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711165330,
 | 
					    "lastModifiedTimestamp": 1602182805660,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 22,
 | 
					        "id": 2,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "service_metrics_collection_config",
 | 
					        "profileType": "metrics",
 | 
				
			||||||
		"name": "Metrics-Profile-Passpoint",
 | 
					        "name": "Metrics-Profile-3-radios",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
            "model_type": "ServiceMetricsCollectionConfigProfile",
 | 
					            "model_type": "ServiceMetricsCollectionConfigProfile",
 | 
				
			||||||
            "radioTypes": [
 | 
					            "radioTypes": [
 | 
				
			||||||
 | 
					                "is5GHzU",
 | 
				
			||||||
                "is5GHzL",
 | 
					                "is5GHzL",
 | 
				
			||||||
				"is2dot4GHz",
 | 
					                "is2dot4GHz"
 | 
				
			||||||
				"is5GHzU"
 | 
					 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "serviceMetricDataTypes": [
 | 
					            "serviceMetricDataTypes": [
 | 
				
			||||||
                "ApNode",
 | 
					                "ApNode",
 | 
				
			||||||
@@ -24,26 +24,14 @@
 | 
				
			|||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
						"channelSurveyType": "ON_CHANNEL",
 | 
					                        "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,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -53,9 +41,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -65,9 +53,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -77,21 +65,33 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 120,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "ApNode",
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "ApNode"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "ApSsid": [
 | 
					                "ApSsid": [
 | 
				
			||||||
@@ -99,14 +99,14 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "ApSsid"
 | 
					                        "serviceMetricDataType": "ApSsid"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "ApSsid"
 | 
					                        "serviceMetricDataType": "ApSsid"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -122,7 +122,7 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "Client"
 | 
					                        "serviceMetricDataType": "Client"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -136,7 +136,7 @@
 | 
				
			|||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
                        "serviceMetricDataType": "Client"
 | 
					                        "serviceMetricDataType": "Client"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
@@ -149,21 +149,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					{
 | 
					 | 
				
			||||||
						"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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -173,9 +161,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -185,9 +173,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -197,9 +185,9 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -209,35 +197,35 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "Channel",
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
						"statsReportFormat": "RAW"
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Channel"
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
                "Neighbour": [
 | 
					                "Neighbour": [
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 120,
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -247,21 +235,45 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
 | 
					                        "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                        "serviceMetricDataType": "Neighbour"
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
					                        "samplingInterval": 30,
 | 
				
			||||||
 | 
					                        "reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
					                        "channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					                        "radioType": "is5GHzL",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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",
 | 
					                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -271,29 +283,16 @@
 | 
				
			|||||||
                        "scanIntervalMillis": 0,
 | 
					                        "scanIntervalMillis": 0,
 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					                        "percentUtilizationThreshold": 10,
 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					                        "delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
					                        "statsReportFormat": "RAW",
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					                        "radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "Neighbour",
 | 
					                        "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"
 | 
					            "profileType": "metrics"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711195528,
 | 
					        "createdTimestamp": 1602113058699,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711195528,
 | 
					        "lastModifiedTimestamp": 1602113058699,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,25 +1,26 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
					{
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 17,
 | 
					        "id": 6,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_operator",
 | 
					        "profileType": "operator",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
					        "name": "TipWlan-Hotspot20-Operator",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
			"model_type": "PasspointOperatorProfile",
 | 
					            "model_type": "OperatorProfile",
 | 
				
			||||||
 | 
					            "domainName": "telecominfraproject.atlassian.net",
 | 
				
			||||||
            "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
					            "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
				
			||||||
            "x509CertificateLocation": "/etc/ca.pem",
 | 
					            "x509CertificateLocation": "/etc/ca.pem",
 | 
				
			||||||
            "operatorFriendlyName": [
 | 
					            "operatorFriendlyName": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                    "model_type": "Hotspot20Duple",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                    "locale": "en_CA",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
					"dupleName": "Default friendly passpoint_operator name",
 | 
					                    "dupleName": "Default friendly operator name",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
					"asDuple": "eng:Default friendly passpoint_operator name"
 | 
					                    "asDuple": "eng:Default friendly operator name"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointDuple",
 | 
					                    "model_type": "Hotspot20Duple",
 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					                    "locale": "fr_CA",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
					                    "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
				
			||||||
@@ -27,11 +28,10 @@
 | 
				
			|||||||
                    "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
					                    "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
			"profileType": "passpoint_operator"
 | 
					            "profileType": "operator"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711164952,
 | 
					        "createdTimestamp": 1602113058719,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711164952,
 | 
					        "lastModifiedTimestamp": 1602113058719,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,23 +1,24 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
	"id": 21,
 | 
					    "id": 13,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "rf",
 | 
					    "profileType": "rf",
 | 
				
			||||||
	"name": "TipWlan-rf-passpoint",
 | 
					    "name": "TipWlan-rf",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "RfConfiguration",
 | 
					        "model_type": "RfConfiguration",
 | 
				
			||||||
        "rfConfigMap": {
 | 
					        "rfConfigMap": {
 | 
				
			||||||
            "is5GHz": {
 | 
					            "is5GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHz",
 | 
					                "radioType": "is5GHz",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -25,12 +26,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -40,31 +46,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "radioMode": "modeN",
 | 
					                "radioMode": "modeN",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is20MHz",
 | 
					                "channelBandwidth": "is20MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -72,12 +73,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -87,31 +93,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 20,
 | 
					                    "dropInSnrPercentage": 20,
 | 
				
			||||||
                    "minLoadFactor": 50
 | 
					                    "minLoadFactor": 50
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHzU",
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -119,12 +120,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -134,31 +140,26 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "radioType": "is5GHzL",
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
                "radioMode": "modeAC",
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
				"rf": "TipWlan-rf-passpoint",
 | 
					 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
                "rtsCtsThreshold": 65535,
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -166,12 +167,17 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"minAutoCellSize": -65,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -181,25 +187,18 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
				"bestApEnabled": null,
 | 
					 | 
				
			||||||
				"multicastRate": "auto",
 | 
					 | 
				
			||||||
				"managementRate": "auto",
 | 
					 | 
				
			||||||
				"rxCellSizeDb": -90,
 | 
					 | 
				
			||||||
				"probeResponseThresholdDb": -90,
 | 
					 | 
				
			||||||
				"clientDisconnectThresholdDb": -90,
 | 
					 | 
				
			||||||
				"eirpTxPower": 18,
 | 
					 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
				}
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "rf"
 | 
					        "profileType": "rf"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
	"createdTimestamp": 1605711191976,
 | 
					    "createdTimestamp": 1602182806063,
 | 
				
			||||||
	"lastModifiedTimestamp": 1605711191976,
 | 
					    "lastModifiedTimestamp": 1602182806063,
 | 
				
			||||||
	"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
	]
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"model_type": "Profile",
 | 
							"model_type": "Profile",
 | 
				
			||||||
		"id": 15,
 | 
							"id": 5,
 | 
				
			||||||
		"customerId": 2,
 | 
							"customerId": 2,
 | 
				
			||||||
		"profileType": "ssid",
 | 
							"profileType": "ssid",
 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
							"name": "TipWlan-cloud-hotspot-access",
 | 
				
			||||||
@@ -9,8 +9,9 @@
 | 
				
			|||||||
			"model_type": "SsidConfiguration",
 | 
								"model_type": "SsidConfiguration",
 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
								"ssid": "TipWlan-cloud-hotspot-access",
 | 
				
			||||||
			"appliedRadios": [
 | 
								"appliedRadios": [
 | 
				
			||||||
 | 
									"is5GHzU",
 | 
				
			||||||
				"is5GHzL",
 | 
									"is5GHzL",
 | 
				
			||||||
				"is5GHzU"
 | 
									"is2dot4GHz"
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
								"ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "wpa2PSK",
 | 
								"secureMode": "wpa2PSK",
 | 
				
			||||||
@@ -20,7 +21,6 @@
 | 
				
			|||||||
			"keyRefresh": 0,
 | 
								"keyRefresh": 0,
 | 
				
			||||||
			"noLocalSubnets": false,
 | 
								"noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
								"radiusServiceName": null,
 | 
				
			||||||
			"radiusAccountingServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
								"captivePortalId": null,
 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
								"bandwidthLimitDown": 0,
 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
								"bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -59,23 +59,25 @@
 | 
				
			|||||||
			"forwardMode": null,
 | 
								"forwardMode": null,
 | 
				
			||||||
			"profileType": "ssid"
 | 
								"profileType": "ssid"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"createdTimestamp": 1605711164949,
 | 
							"createdTimestamp": 1602113058718,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711223372,
 | 
							"lastModifiedTimestamp": 1602113059547,
 | 
				
			||||||
		"childProfileIds": [
 | 
							"childProfileIds": [
 | 
				
			||||||
			24
 | 
								10
 | 
				
			||||||
		]
 | 
							]
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"model_type": "Profile",
 | 
							"model_type": "Profile",
 | 
				
			||||||
		"id": 16,
 | 
							"id": 11,
 | 
				
			||||||
		"customerId": 2,
 | 
							"customerId": 2,
 | 
				
			||||||
		"profileType": "ssid",
 | 
							"profileType": "ssid",
 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-osu",
 | 
							"name": "TipWlan-cloud-3-radios",
 | 
				
			||||||
		"details": {
 | 
							"details": {
 | 
				
			||||||
			"model_type": "SsidConfiguration",
 | 
								"model_type": "SsidConfiguration",
 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-osu",
 | 
								"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
			"appliedRadios": [
 | 
								"appliedRadios": [
 | 
				
			||||||
				"is2dot4GHz"
 | 
									"is5GHzL",
 | 
				
			||||||
 | 
									"is2dot4GHz",
 | 
				
			||||||
 | 
									"is5GHzU"
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
								"ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "open",
 | 
								"secureMode": "open",
 | 
				
			||||||
@@ -85,7 +87,6 @@
 | 
				
			|||||||
			"keyRefresh": 0,
 | 
								"keyRefresh": 0,
 | 
				
			||||||
			"noLocalSubnets": false,
 | 
								"noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
								"radiusServiceName": null,
 | 
				
			||||||
			"radiusAccountingServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
								"captivePortalId": null,
 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
								"bandwidthLimitDown": 0,
 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
								"bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -124,11 +125,10 @@
 | 
				
			|||||||
			"forwardMode": null,
 | 
								"forwardMode": null,
 | 
				
			||||||
			"profileType": "ssid"
 | 
								"profileType": "ssid"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"createdTimestamp": 1605711164950,
 | 
							"createdTimestamp": 1602183994766,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711171732,
 | 
							"lastModifiedTimestamp": 1602183994766,
 | 
				
			||||||
		"childProfileIds": [
 | 
							"childProfileIds": [
 | 
				
			||||||
			19,
 | 
								10
 | 
				
			||||||
			20
 | 
					 | 
				
			||||||
		]
 | 
							]
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,15 +1,15 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
		"id": 18,
 | 
					        "id": 7,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
		"profileType": "passpoint_venue",
 | 
					        "profileType": "venue",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
					        "name": "TipWlan-Hotspot20-Venue",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
			"model_type": "PasspointVenueProfile",
 | 
					            "model_type": "VenueProfile",
 | 
				
			||||||
            "venueNameSet": [
 | 
					            "venueNameSet": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointVenueName",
 | 
					                    "model_type": "VenueName",
 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					                    "locale": "fr_CA",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemple de lieu",
 | 
					                    "dupleName": "Exemple de lieu",
 | 
				
			||||||
@@ -18,26 +18,25 @@
 | 
				
			|||||||
                    "asDuple": "fra:Exemple de lieu"
 | 
					                    "asDuple": "fra:Exemple de lieu"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
					"model_type": "PasspointVenueName",
 | 
					                    "model_type": "VenueName",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                    "locale": "en_CA",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
					"dupleName": "Example passpoint_venue",
 | 
					                    "dupleName": "Example venue",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "venueUrl": "http://www.example.com/info-eng",
 | 
					                    "venueUrl": "http://www.example.com/info-eng",
 | 
				
			||||||
					"asDuple": "eng:Example passpoint_venue"
 | 
					                    "asDuple": "eng:Example venue"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "venueTypeAssignment": {
 | 
					            "venueTypeAssignment": {
 | 
				
			||||||
				"model_type": "ProfileVenueTypeAssignment",
 | 
					                "model_type": "VenueTypeAssignment",
 | 
				
			||||||
                "venueDescription": "Research and Development Facility",
 | 
					                "venueDescription": "Research and Development Facility",
 | 
				
			||||||
                "venueGroupId": 2,
 | 
					                "venueGroupId": 2,
 | 
				
			||||||
                "venueTypeId": 8
 | 
					                "venueTypeId": 8
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
			"profileType": "passpoint_venue"
 | 
					            "profileType": "venue"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
		"createdTimestamp": 1605711164956,
 | 
					        "createdTimestamp": 1602113058725,
 | 
				
			||||||
		"lastModifiedTimestamp": 1605711164956,
 | 
					        "lastModifiedTimestamp": 1602113058725,
 | 
				
			||||||
		"childProfileIds": [
 | 
					        "childProfileIds": []
 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -23,16 +23,7 @@
 | 
				
			|||||||
			<artifactId>opensync-ext-interface</artifactId>
 | 
								<artifactId>opensync-ext-interface</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>${tip-wlan-cloud.release.version}</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
		<dependency>
 | 
					
 | 
				
			||||||
			<artifactId>client-models</artifactId>
 | 
					 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
					 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
					 | 
				
			||||||
		</dependency>
 | 
					 | 
				
			||||||
		<dependency>
 | 
					 | 
				
			||||||
			<artifactId>customer-models</artifactId>
 | 
					 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
					 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
					 | 
				
			||||||
		</dependency>
 | 
					 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.vmware.ovsdb</groupId>
 | 
								<groupId>com.vmware.ovsdb</groupId>
 | 
				
			||||||
			<artifactId>ovsdb-client</artifactId>
 | 
								<artifactId>ovsdb-client</artifactId>
 | 
				
			||||||
@@ -46,6 +37,12 @@
 | 
				
			|||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<!-- MQTT dependencies BEGIN -->
 | 
							<!-- MQTT dependencies BEGIN -->
 | 
				
			||||||
 | 
							<dependency>
 | 
				
			||||||
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
								<artifactId>tip-wlan-opensync-protobuf</artifactId>
 | 
				
			||||||
 | 
								<version>${tip-wlan-cloud.release.version}</version>
 | 
				
			||||||
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>service-metric-service-interface</artifactId>
 | 
								<artifactId>service-metric-service-interface</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,7 +57,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
    @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listenPort:6640}")
 | 
					    @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listenPort:6640}")
 | 
				
			||||||
    private int ovsdbListenPort;
 | 
					    private int ovsdbListenPort;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @org.springframework.beans.factory.annotation.Value("${tip.wlan.manager.collectionIntervalSec.deviceStats:60}")
 | 
					    @org.springframework.beans.factory.annotation.Value("${tip.wlan.manager.collectionIntervalSec.deviceStats:120}")
 | 
				
			||||||
    private long collectionIntervalSecDeviceStats;
 | 
					    private long collectionIntervalSecDeviceStats;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @org.springframework.beans.factory.annotation.Value("${tip.wlan.preventClientCnAlteration:false}")
 | 
					    @org.springframework.beans.factory.annotation.Value("${tip.wlan.preventClientCnAlteration:false}")
 | 
				
			||||||
@@ -132,6 +132,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            @Override
 | 
					            @Override
 | 
				
			||||||
            public void disconnected(OvsdbClient ovsdbClient) {
 | 
					            public void disconnected(OvsdbClient ovsdbClient) {
 | 
				
			||||||
                String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
 | 
					                String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
 | 
				
			||||||
@@ -191,21 +192,22 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
        // connectedClients table
 | 
					        // connectedClients table
 | 
				
			||||||
        String apId = alterClientCnIfRequired(clientCn, connectNodeInfo);
 | 
					        String apId = alterClientCnIfRequired(clientCn, connectNodeInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.debug("Client {} connect for AP {}", clientCn, apId);
 | 
					        LOG.debug("Client connect for AP {}", apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId);
 | 
					        OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (opensyncAPConfig != null) {
 | 
					        try {
 | 
				
			||||||
            // cleanup existing
 | 
					            ovsdbDao.provisionBridgePortInterface(ovsdbClient);
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            LOG.warn("Could not provision Bridge->Port->Interface mapping.", e);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
					        ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
				
			||||||
            ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
 | 
					        ovsdbDao.removeAllSsids(ovsdbClient); // always
 | 
				
			||||||
        ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
					        ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
				
			||||||
            ovsdbDao.removeAllSsids(ovsdbClient, opensyncAPConfig); // always
 | 
					
 | 
				
			||||||
            ovsdbDao.removeAllGreTunnels(ovsdbClient, opensyncAPConfig);
 | 
					        if (opensyncAPConfig != null) {
 | 
				
			||||||
            // reconfigure
 | 
					 | 
				
			||||||
            ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
 | 
					            ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
            ovsdbDao.configureInterfaces(ovsdbClient);
 | 
					            ovsdbDao.configureInterfaces(ovsdbClient);
 | 
				
			||||||
            ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
 | 
					 | 
				
			||||||
            ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
					            ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
            ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
 | 
					            ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
            if (opensyncAPConfig.getHotspotConfig() != null) {
 | 
					            if (opensyncAPConfig.getHotspotConfig() != null) {
 | 
				
			||||||
@@ -215,19 +217,8 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
            if (((ApNetworkConfiguration) opensyncAPConfig.getApProfile().getDetails()).getSyntheticClientEnabled()) {
 | 
					            if (((ApNetworkConfiguration) opensyncAPConfig.getApProfile().getDetails()).getSyntheticClientEnabled()) {
 | 
				
			||||||
                ovsdbDao.enableNetworkProbeForSyntheticClient(ovsdbClient);
 | 
					                ovsdbDao.enableNetworkProbeForSyntheticClient(ovsdbClient);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
 | 
					 | 
				
			||||||
            ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
					 | 
				
			||||||
            ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
					 | 
				
			||||||
            ovsdbDao.removeAllSsids(ovsdbClient); // always
 | 
					 | 
				
			||||||
            ovsdbDao.removeAllGreTunnels(ovsdbClient, null);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (ovsdbDao.getDeviceStatsReportingInterval(ovsdbClient) != collectionIntervalSecDeviceStats) {
 | 
					 | 
				
			||||||
            ovsdbDao.updateDeviceStatsReportingInterval(ovsdbClient, collectionIntervalSecDeviceStats);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        LOG.debug("Client connect Done");
 | 
					        LOG.debug("Client connect Done");
 | 
				
			||||||
        return connectNodeInfo;
 | 
					        return connectNodeInfo;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -270,24 +261,20 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
            LOG.warn("AP with id " + apId + " does not have a config to apply.");
 | 
					            LOG.warn("AP with id " + apId + " does not have a config to apply.");
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
					
 | 
				
			||||||
        ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
 | 
					        ovsdbDao.removeAllSsids(ovsdbClient); // always
 | 
				
			||||||
        ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
					        ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
				
			||||||
        ovsdbDao.removeAllSsids(ovsdbClient, opensyncAPConfig); // always
 | 
					        ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
				
			||||||
        ovsdbDao.removeAllGreTunnels(ovsdbClient, opensyncAPConfig);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
 | 
					        ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
        ovsdbDao.configureInterfaces(ovsdbClient);
 | 
					        ovsdbDao.configureInterfaces(ovsdbClient);
 | 
				
			||||||
        ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
 | 
					 | 
				
			||||||
        ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
					        ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
        ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
 | 
					        ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
        if (opensyncAPConfig.getHotspotConfig() != null) {
 | 
					        if (opensyncAPConfig.getHotspotConfig() != null) {
 | 
				
			||||||
            ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig);
 | 
					            ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig);
 | 
					        ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
        if (ovsdbDao.getDeviceStatsReportingInterval(ovsdbClient) != collectionIntervalSecDeviceStats) {
 | 
					
 | 
				
			||||||
            ovsdbDao.updateDeviceStatsReportingInterval(ovsdbClient, collectionIntervalSecDeviceStats);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        LOG.debug("Finished processConfigChanged for {}", apId);
 | 
					        LOG.debug("Finished processConfigChanged for {}", apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -367,8 +354,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
				
			||||||
                OvsdbDao.dhcpLeasedIpDbTable + "_" + key,
 | 
					                OvsdbDao.dhcpLeasedIpDbTable + "_" + key,
 | 
				
			||||||
                new MonitorRequests(ImmutableMap.of(OvsdbDao.dhcpLeasedIpDbTable,
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.dhcpLeasedIpDbTable, new MonitorRequest())),
 | 
				
			||||||
                        new MonitorRequest(new MonitorSelect(true, true, true, true)))),
 | 
					 | 
				
			||||||
                new MonitorCallback() {
 | 
					                new MonitorCallback() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    @Override
 | 
					                    @Override
 | 
				
			||||||
@@ -433,12 +419,15 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        awCf.join();
 | 
					        awCf.join();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void monitorCommandStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
					    private void monitorCommandStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        CompletableFuture<TableUpdates> csCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> csCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
				
			||||||
@@ -455,6 +444,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                        List<Map<String, String>> delete = new ArrayList<>();
 | 
					                        List<Map<String, String>> delete = new ArrayList<>();
 | 
				
			||||||
                        List<Map<String, String>> update = new ArrayList<>();
 | 
					                        List<Map<String, String>> update = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        for (TableUpdate tableUpdate : tableUpdates.getTableUpdates().values()) {
 | 
					                        for (TableUpdate tableUpdate : tableUpdates.getTableUpdates().values()) {
 | 
				
			||||||
                            for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
 | 
					                            for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -508,16 +498,18 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        csCf.join();
 | 
					        csCf.join();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void monitorAwlanNodeDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
					    private void monitorAwlanNodeDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
        CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
				
			||||||
                OvsdbDao.awlanNodeDbTable + "_" + key,
 | 
					                OvsdbDao.awlanNodeDbTable + "_" + key,
 | 
				
			||||||
                new MonitorRequests(ImmutableMap.of(OvsdbDao.awlanNodeDbTable, new MonitorRequest(new MonitorSelect(true, false, false, true)))),
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.awlanNodeDbTable, new MonitorRequest())),
 | 
				
			||||||
                new MonitorCallback() {
 | 
					                new MonitorCallback() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    @Override
 | 
					                    @Override
 | 
				
			||||||
@@ -566,6 +558,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // now address the update/add
 | 
					                        // now address the update/add
 | 
				
			||||||
                        extIntegrationInterface.wifiAssociatedClientsDbTableUpdate(associatedClients, key);
 | 
					                        extIntegrationInterface.wifiAssociatedClientsDbTableUpdate(associatedClients, key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -575,13 +568,14 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        acCf.join();
 | 
					        acCf.join();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void monitorWifiInetStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
					    private void monitorWifiInetStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
        CompletableFuture<TableUpdates> isCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> isCf = ovsdbClient
 | 
				
			||||||
                OvsdbDao.wifiInetStateDbTable + "_" + key,
 | 
					                .monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiInetStateDbTable + "_" + key,
 | 
				
			||||||
                        new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiInetStateDbTable,
 | 
					                        new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiInetStateDbTable,
 | 
				
			||||||
                        new MonitorRequest(new MonitorSelect(true, true, true, true)))),
 | 
					                                new MonitorRequest(new MonitorSelect(false, true, true, true)))),
 | 
				
			||||||
                        new MonitorCallback() {
 | 
					                        new MonitorCallback() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            @Override
 | 
					                            @Override
 | 
				
			||||||
@@ -598,16 +592,17 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                                    for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
 | 
					                                    for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                        if (rowUpdate.getNew() == null) {
 | 
					                                        if (rowUpdate.getNew() == null) {
 | 
				
			||||||
                                    inetStateDelete.addAll(
 | 
					                                            inetStateDelete.addAll(ovsdbDao
 | 
				
			||||||
                                            ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
					                                                    .getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
				
			||||||
                                        } else {
 | 
					                                        } else {
 | 
				
			||||||
                                    inetStateInsertOrUpdate.addAll(
 | 
					                                            inetStateInsertOrUpdate.addAll(ovsdbDao
 | 
				
			||||||
                                            ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
					                                                    .getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
				
			||||||
                                        }
 | 
					                                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    }
 | 
					                                    }
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                // delete first
 | 
					                                // delete first
 | 
				
			||||||
                                extIntegrationInterface.wifiInetStateDbTableUpdate(inetStateDelete, key);
 | 
					                                extIntegrationInterface.wifiInetStateDbTableUpdate(inetStateDelete, key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -625,7 +620,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        CompletableFuture<TableUpdates> rsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> rsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
				
			||||||
                OvsdbDao.wifiRadioStateDbTable + "_" + key,
 | 
					                OvsdbDao.wifiRadioStateDbTable + "_" + key,
 | 
				
			||||||
                new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiRadioStateDbTable, new MonitorRequest(new MonitorSelect(true, false, false, true)))),
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiRadioStateDbTable, new MonitorRequest())),
 | 
				
			||||||
                new MonitorCallback() {
 | 
					                new MonitorCallback() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    @Override
 | 
					                    @Override
 | 
				
			||||||
@@ -646,7 +641,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        CompletableFuture<TableUpdates> vsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> vsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
				
			||||||
                OvsdbDao.wifiVifStateDbTable + "_" + key,
 | 
					                OvsdbDao.wifiVifStateDbTable + "_" + key,
 | 
				
			||||||
                new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiVifStateDbTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))),
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiVifStateDbTable, new MonitorRequest())),
 | 
				
			||||||
                new MonitorCallback() {
 | 
					                new MonitorCallback() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    @Override
 | 
					                    @Override
 | 
				
			||||||
@@ -685,6 +680,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
@@ -727,10 +723,14 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String processFirmwareFlash(String apId, String firmwareVersion, String username) {
 | 
					    public String processFirmwareFlash(String apId, String firmwareVersion, String username) {
 | 
				
			||||||
        OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
					        OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
				
			||||||
 | 
					        OvsdbClient ovsdbClient = session.getOvsdbClient();
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            ovsdbDao.configureFirmwareFlash(session.getOvsdbClient(), apId, firmwareVersion, username);
 | 
					            ovsdbDao.configureFirmwareFlash(session.getOvsdbClient(), apId, firmwareVersion, username);
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            LOG.error("Failed to flash firmware for " + apId + " " + e.getLocalizedMessage());
 | 
					            LOG.error("Failed to flash firmware for " + apId + " " + e.getLocalizedMessage());
 | 
				
			||||||
 | 
					            monitorOvsdbStateTables(ovsdbClient, apId); // turn back on so we
 | 
				
			||||||
 | 
					                                                        // can go forward and
 | 
				
			||||||
 | 
					                                                        // recover
 | 
				
			||||||
            return "Failed to flash firmware for " + apId + " " + e.getLocalizedMessage();
 | 
					            return "Failed to flash firmware for " + apId + " " + e.getLocalizedMessage();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -839,6 +839,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
            return "failed to trigger a factory reset of AP " + apId;
 | 
					            return "failed to trigger a factory reset of AP " + apId;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String alterClientCnIfRequired(String clientCn, ConnectNodeInfo connectNodeInfo) {
 | 
					    public String alterClientCnIfRequired(String clientCn, ConnectNodeInfo connectNodeInfo) {
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,7 +1,5 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.ovsdb.dao.models;
 | 
					package com.telecominfraproject.wlan.opensync.ovsdb.dao.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Map;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class WifiInetConfigInfo implements Cloneable{
 | 
					public class WifiInetConfigInfo implements Cloneable{
 | 
				
			||||||
@@ -19,126 +17,22 @@ public class WifiInetConfigInfo implements Cloneable{
 | 
				
			|||||||
	public String inetAddr;
 | 
						public String inetAddr;
 | 
				
			||||||
	public int mtu;
 | 
						public int mtu;
 | 
				
			||||||
	public String netmask;
 | 
						public String netmask;
 | 
				
			||||||
	public String gateway;
 | 
					 | 
				
			||||||
	public Map<String,String> dns;
 | 
					 | 
				
			||||||
	public Map<String,String> dhcpd;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public WifiInetConfigInfo clone() {
 | 
					    public WifiInetConfigInfo clone() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            WifiInetConfigInfo ret = (WifiInetConfigInfo)super.clone();
 | 
					            WifiInetConfigInfo ret = (WifiInetConfigInfo)super.clone();
 | 
				
			||||||
            if (dns != null) ret.dns = this.dns;
 | 
					 | 
				
			||||||
            if (dhcpd != null) ret.dhcpd = this.dhcpd;
 | 
					 | 
				
			||||||
            return ret;
 | 
					            return ret;
 | 
				
			||||||
        }catch(CloneNotSupportedException e) {                
 | 
					        }catch(CloneNotSupportedException e) {                
 | 
				
			||||||
            throw new IllegalStateException("Cannot clone ", e);
 | 
					            throw new IllegalStateException("Cannot clone ", e);
 | 
				
			||||||
        }            
 | 
					        }            
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
	public int hashCode() {
 | 
					 | 
				
			||||||
		final int prime = 31;
 | 
					 | 
				
			||||||
		int result = 1;
 | 
					 | 
				
			||||||
		result = prime * result + ((broadcast == null) ? 0 : broadcast.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 + ((ifName == null) ? 0 : ifName.hashCode());
 | 
					 | 
				
			||||||
		result = prime * result + ((ifType == null) ? 0 : ifType.hashCode());
 | 
					 | 
				
			||||||
		result = prime * result + ((inetAddr == null) ? 0 : inetAddr.hashCode());
 | 
					 | 
				
			||||||
		result = prime * result + ((ipAssignScheme == null) ? 0 : ipAssignScheme.hashCode());
 | 
					 | 
				
			||||||
		result = prime * result + mtu;
 | 
					 | 
				
			||||||
		result = prime * result + (nat ? 1231 : 1237);
 | 
					 | 
				
			||||||
		result = prime * result + ((netmask == null) ? 0 : netmask.hashCode());
 | 
					 | 
				
			||||||
		result = prime * result + (network ? 1231 : 1237);
 | 
					 | 
				
			||||||
		result = prime * result + ((uuid == null) ? 0 : uuid.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;
 | 
					 | 
				
			||||||
		WifiInetConfigInfo other = (WifiInetConfigInfo) obj;
 | 
					 | 
				
			||||||
		if (broadcast == null) {
 | 
					 | 
				
			||||||
			if (other.broadcast != null)
 | 
					 | 
				
			||||||
				return false;
 | 
					 | 
				
			||||||
		} else if (!broadcast.equals(other.broadcast))
 | 
					 | 
				
			||||||
			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 (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 (inetAddr == null) {
 | 
					 | 
				
			||||||
			if (other.inetAddr != null)
 | 
					 | 
				
			||||||
				return false;
 | 
					 | 
				
			||||||
		} else if (!inetAddr.equals(other.inetAddr))
 | 
					 | 
				
			||||||
			return false;
 | 
					 | 
				
			||||||
		if (ipAssignScheme == null) {
 | 
					 | 
				
			||||||
			if (other.ipAssignScheme != null)
 | 
					 | 
				
			||||||
				return false;
 | 
					 | 
				
			||||||
		} else if (!ipAssignScheme.equals(other.ipAssignScheme))
 | 
					 | 
				
			||||||
			return false;
 | 
					 | 
				
			||||||
		if (mtu != other.mtu)
 | 
					 | 
				
			||||||
			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 (uuid == null) {
 | 
					 | 
				
			||||||
			if (other.uuid != null)
 | 
					 | 
				
			||||||
				return false;
 | 
					 | 
				
			||||||
		} else if (!uuid.equals(other.uuid))
 | 
					 | 
				
			||||||
			return false;
 | 
					 | 
				
			||||||
		if (vlanId != other.vlanId)
 | 
					 | 
				
			||||||
			return false;
 | 
					 | 
				
			||||||
		return true;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String toString() {
 | 
					    public String toString() {
 | 
				
			||||||
		return "WifiInetConfigInfo [nat=" + nat + ", enabled=" + enabled + ", ifName=" + ifName + ", ifType=" + ifType
 | 
					        return String.format(
 | 
				
			||||||
				+ ", ipAssignScheme=" + ipAssignScheme + ", network=" + network + ", uuid=" + uuid + ", vlanId="
 | 
					                "WifiInetConfigInfo [nat=%s, broadcast=%s, enabled=%s, ifName=%s, ifType=%s, ipAssignScheme=%s, network=%s, uuid=%s, inetAddr=%s, mtu=%s, netmask=%s, vlanId=%s]",
 | 
				
			||||||
				+ vlanId + ", broadcast=" + broadcast + ", inetAddr=" + inetAddr + ", mtu=" + mtu + ", netmask="
 | 
					                nat, broadcast, enabled, ifName, ifType, ipAssignScheme, network, uuid,inetAddr, mtu, netmask, vlanId);
 | 
				
			||||||
				+ netmask + ", gateway=" + gateway + ", dns=" + dns + ", dhcpd=" + dhcpd + "]";
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -3,7 +3,6 @@ package com.telecominfraproject.wlan.opensync.ovsdb.dao.models;
 | 
				
			|||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.HashSet;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.Objects;
 | 
					 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
@@ -44,30 +43,6 @@ public class WifiRadioConfigInfo implements Cloneable {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
					 | 
				
			||||||
    public int hashCode() {
 | 
					 | 
				
			||||||
        return Objects.hash(beaconInterval, channel, channelMode, country, enabled, freqBand, htMode, hwConfig, hwType,
 | 
					 | 
				
			||||||
                ifName, txPower, uuid, vifConfigUuids);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public boolean equals(Object obj) {
 | 
					 | 
				
			||||||
        if (this == obj) {
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (!(obj instanceof WifiRadioConfigInfo)) {
 | 
					 | 
				
			||||||
            return false;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        WifiRadioConfigInfo other = (WifiRadioConfigInfo) obj;
 | 
					 | 
				
			||||||
        return beaconInterval == other.beaconInterval && channel == other.channel
 | 
					 | 
				
			||||||
                && Objects.equals(channelMode, other.channelMode) && Objects.equals(country, other.country)
 | 
					 | 
				
			||||||
                && enabled == other.enabled && Objects.equals(freqBand, other.freqBand)
 | 
					 | 
				
			||||||
                && Objects.equals(htMode, other.htMode) && Objects.equals(hwConfig, other.hwConfig)
 | 
					 | 
				
			||||||
                && Objects.equals(hwType, other.hwType) && Objects.equals(ifName, other.ifName)
 | 
					 | 
				
			||||||
                && Objects.equals(txPower, other.txPower) && Objects.equals(uuid, other.uuid)
 | 
					 | 
				
			||||||
                && Objects.equals(vifConfigUuids, other.vifConfigUuids);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public String toString() {
 | 
						public String toString() {
 | 
				
			||||||
		return String.format(
 | 
							return String.format(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,7 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.ovsdb.dao.models;
 | 
					package com.telecominfraproject.wlan.opensync.ovsdb.dao.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.HashSet;
 | 
					 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.Objects;
 | 
					 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
@@ -40,41 +38,12 @@ public class WifiVifConfigInfo implements Cloneable{
 | 
				
			|||||||
            if(security!=null) {
 | 
					            if(security!=null) {
 | 
				
			||||||
                ret.security = new HashMap<>(this.security);
 | 
					                ret.security = new HashMap<>(this.security);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (macList!=null) {
 | 
					 | 
				
			||||||
                ret.macList = new HashSet<>(this.macList);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return ret;
 | 
					            return ret;
 | 
				
			||||||
        }catch(CloneNotSupportedException e) {                
 | 
					        }catch(CloneNotSupportedException e) {                
 | 
				
			||||||
            throw new IllegalStateException("Cannot clone ", e);
 | 
					            throw new IllegalStateException("Cannot clone ", e);
 | 
				
			||||||
        }            
 | 
					        }            
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public int hashCode() {
 | 
					 | 
				
			||||||
        return Objects.hash(apBridge, bridge, btm, enabled, ftMobilityDomain, ftPsk, groupRekey, ifName, macList,
 | 
					 | 
				
			||||||
                macListType, minHwMode, mode, rrm, security, ssid, ssidBroadcast, uapsdEnable, uuid, vifRadioIdx,
 | 
					 | 
				
			||||||
                vlanId);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public boolean equals(Object obj) {
 | 
					 | 
				
			||||||
        if (this == obj) {
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (!(obj instanceof WifiVifConfigInfo)) {
 | 
					 | 
				
			||||||
            return false;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        WifiVifConfigInfo other = (WifiVifConfigInfo) obj;
 | 
					 | 
				
			||||||
        return Objects.equals(apBridge, other.apBridge) && Objects.equals(bridge, other.bridge) && btm == other.btm
 | 
					 | 
				
			||||||
                && enabled == other.enabled && ftMobilityDomain == other.ftMobilityDomain && ftPsk == other.ftPsk
 | 
					 | 
				
			||||||
                && groupRekey == other.groupRekey && Objects.equals(ifName, other.ifName)
 | 
					 | 
				
			||||||
                && Objects.equals(macList, other.macList) && Objects.equals(macListType, other.macListType)
 | 
					 | 
				
			||||||
                && Objects.equals(minHwMode, other.minHwMode) && Objects.equals(mode, other.mode) && rrm == other.rrm
 | 
					 | 
				
			||||||
                && Objects.equals(security, other.security) && Objects.equals(ssid, other.ssid)
 | 
					 | 
				
			||||||
                && Objects.equals(ssidBroadcast, other.ssidBroadcast) && uapsdEnable == other.uapsdEnable
 | 
					 | 
				
			||||||
                && Objects.equals(uuid, other.uuid) && vifRadioIdx == other.vifRadioIdx && vlanId == other.vlanId;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String toString() {
 | 
					    public String toString() {
 | 
				
			||||||
        return String.format(
 | 
					        return String.format(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			|||||||
import com.telecominfraproject.wlan.core.model.equipment.SecurityType;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.SecurityType;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.enumerations.DhcpFpDeviceType;
 | 
					import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.enumerations.DhcpFpDeviceType;
 | 
				
			||||||
import com.telecominfraproject.wlan.profile.metrics.ServiceMetricsChannelUtilizationSurveyType;
 | 
					import com.telecominfraproject.wlan.profile.metrics.ChannelUtilizationSurveyType;
 | 
				
			||||||
import com.telecominfraproject.wlan.servicemetric.apnode.models.StateUpDownError;
 | 
					import com.telecominfraproject.wlan.servicemetric.apnode.models.StateUpDownError;
 | 
				
			||||||
import com.telecominfraproject.wlan.servicemetric.models.ServiceMetricDataType;
 | 
					import com.telecominfraproject.wlan.servicemetric.models.ServiceMetricDataType;
 | 
				
			||||||
import com.telecominfraproject.wlan.status.equipment.models.EquipmentUpgradeState;
 | 
					import com.telecominfraproject.wlan.status.equipment.models.EquipmentUpgradeState;
 | 
				
			||||||
@@ -83,7 +83,7 @@ public class OvsdbToWlanCloudTypeMappingUtility {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static String getOvsdbStatsSurveyTypeFromProfileSurveyType(ServiceMetricsChannelUtilizationSurveyType surveyType) {
 | 
					    public static String getOvsdbStatsSurveyTypeFromProfileSurveyType(ChannelUtilizationSurveyType surveyType) {
 | 
				
			||||||
        switch (surveyType) {
 | 
					        switch (surveyType) {
 | 
				
			||||||
            case FULL:
 | 
					            case FULL:
 | 
				
			||||||
                return "full";
 | 
					                return "full";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -126,7 +126,7 @@ public class OpensyncGatewayTipWlanOvsdbClientTest {
 | 
				
			|||||||
        Mockito.verify(ovsdbSessionMapInterface).getSession("Test_Client_21P10C68818122");
 | 
					        Mockito.verify(ovsdbSessionMapInterface).getSession("Test_Client_21P10C68818122");
 | 
				
			||||||
        Mockito.verify(ovsdbSession).getOvsdbClient();
 | 
					        Mockito.verify(ovsdbSession).getOvsdbClient();
 | 
				
			||||||
        Mockito.verify(opensyncExternalIntegrationInterface).getApConfig("Test_Client_21P10C68818122");
 | 
					        Mockito.verify(opensyncExternalIntegrationInterface).getApConfig("Test_Client_21P10C68818122");
 | 
				
			||||||
        Mockito.verify(ovsdbDao).removeAllSsids(ovsdbClient, apConfig);
 | 
					        Mockito.verify(ovsdbDao).removeAllSsids(ovsdbClient);
 | 
				
			||||||
        Mockito.verify(ovsdbDao).removeAllStatsConfigs(ovsdbClient);
 | 
					        Mockito.verify(ovsdbDao).removeAllStatsConfigs(ovsdbClient);
 | 
				
			||||||
        Mockito.verify(ovsdbDao).configureWifiRadios(ovsdbClient, apConfig);
 | 
					        Mockito.verify(ovsdbDao).configureWifiRadios(ovsdbClient, apConfig);
 | 
				
			||||||
        Mockito.verify(ovsdbDao).configureSsids(ovsdbClient, apConfig);
 | 
					        Mockito.verify(ovsdbDao).configureSsids(ovsdbClient, apConfig);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,15 +1,11 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
 | 
					package com.telecominfraproject.wlan.opensync.ovsdb.dao;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.junit.Assert.assertFalse;
 | 
					 | 
				
			||||||
import static org.junit.Assert.assertNotNull;
 | 
					import static org.junit.Assert.assertNotNull;
 | 
				
			||||||
import static org.junit.Assert.assertNull;
 | 
					import static org.junit.Assert.assertNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.net.InetAddress;
 | 
					import java.io.File;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					 | 
				
			||||||
import java.util.Set;
 | 
					 | 
				
			||||||
import java.util.UUID;
 | 
					import java.util.UUID;
 | 
				
			||||||
import java.util.concurrent.CompletableFuture;
 | 
					import java.util.concurrent.CompletableFuture;
 | 
				
			||||||
import java.util.concurrent.TimeUnit;
 | 
					import java.util.concurrent.TimeUnit;
 | 
				
			||||||
@@ -31,19 +27,21 @@ import org.springframework.context.annotation.Configuration;
 | 
				
			|||||||
import org.springframework.context.annotation.Import;
 | 
					import org.springframework.context.annotation.Import;
 | 
				
			||||||
import org.springframework.test.context.ActiveProfiles;
 | 
					import org.springframework.test.context.ActiveProfiles;
 | 
				
			||||||
import org.springframework.test.context.junit4.SpringRunner;
 | 
					import org.springframework.test.context.junit4.SpringRunner;
 | 
				
			||||||
 | 
					import org.springframework.util.ResourceUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.JsonNode;
 | 
				
			||||||
 | 
					import com.github.fge.jackson.JsonLoader;
 | 
				
			||||||
import com.google.common.collect.ImmutableList;
 | 
					import com.google.common.collect.ImmutableList;
 | 
				
			||||||
import com.google.common.collect.ImmutableMap;
 | 
					import com.google.common.collect.ImmutableMap;
 | 
				
			||||||
import com.telecominfraproject.wlan.location.models.Location;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPHotspot20Config;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState;
 | 
				
			||||||
import com.telecominfraproject.wlan.profile.models.Profile;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
 | 
				
			||||||
import com.telecominfraproject.wlan.profile.models.ProfileType;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.status.network.models.RadiusDetails;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.exception.OvsdbClientException;
 | 
					import com.vmware.ovsdb.exception.OvsdbClientException;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.jsonrpc.v1.util.JsonUtil;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.methods.RowUpdate;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.methods.TableUpdate;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.methods.TableUpdates;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Atom;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Atom;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
@@ -52,30 +50,18 @@ import com.vmware.ovsdb.protocol.operation.result.ErrorResult;
 | 
				
			|||||||
import com.vmware.ovsdb.protocol.operation.result.InsertResult;
 | 
					import com.vmware.ovsdb.protocol.operation.result.InsertResult;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
 | 
					import com.vmware.ovsdb.protocol.operation.result.OperationResult;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.result.SelectResult;
 | 
					import com.vmware.ovsdb.protocol.operation.result.SelectResult;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.schema.DatabaseSchema;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.protocol.schema.TableSchema;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.service.OvsdbClient;
 | 
					import com.vmware.ovsdb.service.OvsdbClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@RunWith(SpringRunner.class)
 | 
					@RunWith(SpringRunner.class)
 | 
				
			||||||
@ActiveProfiles(profiles = { "integration_test", }) // NOTE: these profiles will
 | 
					@ActiveProfiles(profiles = { "integration_test", }) // NOTE: these profiles will
 | 
				
			||||||
// be ADDED to the list of
 | 
					                                                    // be ADDED to the list of
 | 
				
			||||||
// active profiles
 | 
					                                                    // active profiles
 | 
				
			||||||
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OvsdbDaoTest.class)
 | 
					@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OvsdbDaoTest.class)
 | 
				
			||||||
@Import(value = { OvsdbDao.class, OvsdbDaoTest.Config.class,
 | 
					@Import(value = { OvsdbDao.class, OvsdbDaoTest.Config.class,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
public class OvsdbDaoTest {
 | 
					public class OvsdbDaoTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static final int DEFAULT_CUSTOMER_ID = 1;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static final long HOTSPOT_CONFIG_ID = 1;
 | 
					 | 
				
			||||||
    private static final long HOTSPOT_PROVIDER_ID_1 = 2;
 | 
					 | 
				
			||||||
    private static final long HOTSPOT_PROVIDER_ID_2 = 3;
 | 
					 | 
				
			||||||
    private static final long SSID_PSK_ID = 4;
 | 
					 | 
				
			||||||
    private static final long SSID_OSU_ID = 5;
 | 
					 | 
				
			||||||
    private static final long OPERATOR_ID = 6;
 | 
					 | 
				
			||||||
    private static final long VENUE_ID = 7;
 | 
					 | 
				
			||||||
    private static final long EQUIPMENT_AP_ID = 8;
 | 
					 | 
				
			||||||
    private static final String LAN_IF_TYPE = "bridge";
 | 
					    private static final String LAN_IF_TYPE = "bridge";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final String LAN_IF_NAME = "br-lan";
 | 
					    private static final String LAN_IF_NAME = "br-lan";
 | 
				
			||||||
@@ -111,12 +97,9 @@ public class OvsdbDaoTest {
 | 
				
			|||||||
    @Mock(answer = Answers.RETURNS_MOCKS)
 | 
					    @Mock(answer = Answers.RETURNS_MOCKS)
 | 
				
			||||||
    OvsdbClient ovsdbClient;
 | 
					    OvsdbClient ovsdbClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Mock(answer = Answers.RETURNS_MOCKS)
 | 
					    @Mock
 | 
				
			||||||
    CompletableFuture<OperationResult[]> futureResult;
 | 
					    CompletableFuture<OperationResult[]> futureResult;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Mock(answer = Answers.RETURNS_MOCKS)
 | 
					 | 
				
			||||||
    CompletableFuture<OperationResult[]> selectionFutureResult;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    OvsdbDao ovsdbDao;
 | 
					    OvsdbDao ovsdbDao;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -125,7 +108,6 @@ public class OvsdbDaoTest {
 | 
				
			|||||||
    @Configuration
 | 
					    @Configuration
 | 
				
			||||||
    // @PropertySource({ "classpath:persistence-${envTarget:dev}.properties" })
 | 
					    // @PropertySource({ "classpath:persistence-${envTarget:dev}.properties" })
 | 
				
			||||||
    static class Config {
 | 
					    static class Config {
 | 
				
			||||||
 | 
					 | 
				
			||||||
        @Bean
 | 
					        @Bean
 | 
				
			||||||
        public OvsdbDao ovsdbDao() {
 | 
					        public OvsdbDao ovsdbDao() {
 | 
				
			||||||
            return new OvsdbDao();
 | 
					            return new OvsdbDao();
 | 
				
			||||||
@@ -142,306 +124,6 @@ public class OvsdbDaoTest {
 | 
				
			|||||||
        mockito.finishMocking();
 | 
					        mockito.finishMocking();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testRemoveAllGreTunnels() throws Exception {
 | 
					 | 
				
			||||||
        List<Row> rows = new ArrayList<>();
 | 
					 | 
				
			||||||
        OperationResult[] operationResult = new OperationResult[] { new SelectResult(rows) };
 | 
					 | 
				
			||||||
        Mockito.when(ovsdbClient.transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList()))
 | 
					 | 
				
			||||||
                .thenReturn(selectionFutureResult);
 | 
					 | 
				
			||||||
        Mockito.when(selectionFutureResult.get(30, TimeUnit.SECONDS)).thenReturn(operationResult);
 | 
					 | 
				
			||||||
        Profile apProfile = new Profile();
 | 
					 | 
				
			||||||
        apProfile.setCustomerId(2);
 | 
					 | 
				
			||||||
        apProfile.setId(1L);
 | 
					 | 
				
			||||||
        apProfile.setName("ApProfile");
 | 
					 | 
				
			||||||
        apProfile.setProfileType(ProfileType.equipment_ap);
 | 
					 | 
				
			||||||
        ApNetworkConfiguration tunnelProfileDetails = ApNetworkConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreLocalInetAddr(InetAddress.getByName("10.0.10.10"));
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreRemoteInetAddr(InetAddress.getByName("192.168.0.10"));
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreTunnelName("gre1");
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreParentIfName("wan");
 | 
					 | 
				
			||||||
        apProfile.setDetails(tunnelProfileDetails);
 | 
					 | 
				
			||||||
        OpensyncAPConfig apConfig = Mockito.mock(OpensyncAPConfig.class);
 | 
					 | 
				
			||||||
        Mockito.when(apConfig.getApProfile()).thenReturn(apProfile);
 | 
					 | 
				
			||||||
        ovsdbDao.removeAllGreTunnels(ovsdbClient, apConfig);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.verify(apConfig, Mockito.times(2)).getApProfile();
 | 
					 | 
				
			||||||
        Mockito.verify(ovsdbClient, Mockito.times(1)).transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testRemoveAllGreTunnelsNoProfile() throws Exception {
 | 
					 | 
				
			||||||
        List<Row> rows = new ArrayList<>();
 | 
					 | 
				
			||||||
        OperationResult[] operationResult = new OperationResult[] { new SelectResult(rows) };
 | 
					 | 
				
			||||||
        Mockito.when(ovsdbClient.transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList()))
 | 
					 | 
				
			||||||
                .thenReturn(selectionFutureResult);
 | 
					 | 
				
			||||||
        Mockito.when(selectionFutureResult.get(30, TimeUnit.SECONDS)).thenReturn(operationResult);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ovsdbDao.removeAllGreTunnels(ovsdbClient, null);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.verify(ovsdbClient, Mockito.times(1)).transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testConfigureGreTunnels() throws Exception {
 | 
					 | 
				
			||||||
        List<Row> rows = new ArrayList<>();
 | 
					 | 
				
			||||||
        OperationResult[] operationResult = new OperationResult[] { new SelectResult(rows) };
 | 
					 | 
				
			||||||
        Mockito.when(ovsdbClient.transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList()))
 | 
					 | 
				
			||||||
                .thenReturn(selectionFutureResult);
 | 
					 | 
				
			||||||
        Mockito.when(selectionFutureResult.get(30, TimeUnit.SECONDS)).thenReturn(operationResult);
 | 
					 | 
				
			||||||
        Profile apProfile = new Profile();
 | 
					 | 
				
			||||||
        apProfile.setCustomerId(2);
 | 
					 | 
				
			||||||
        apProfile.setId(1L);
 | 
					 | 
				
			||||||
        apProfile.setName("ApProfile");
 | 
					 | 
				
			||||||
        apProfile.setProfileType(ProfileType.equipment_ap);
 | 
					 | 
				
			||||||
        ApNetworkConfiguration tunnelProfileDetails = ApNetworkConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreLocalInetAddr(InetAddress.getByName("10.0.10.10"));
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreRemoteInetAddr(InetAddress.getByName("192.168.0.10"));
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreTunnelName("gre1");
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreParentIfName("wan");
 | 
					 | 
				
			||||||
        apProfile.setDetails(tunnelProfileDetails);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OpensyncAPConfig apConfig = Mockito.mock(OpensyncAPConfig.class);
 | 
					 | 
				
			||||||
        Mockito.when(apConfig.getApProfile()).thenReturn(apProfile);
 | 
					 | 
				
			||||||
        ovsdbDao.configureGreTunnels(ovsdbClient, apConfig);
 | 
					 | 
				
			||||||
        // 1 call to check existence, 1 to add profile
 | 
					 | 
				
			||||||
        Mockito.verify(ovsdbClient, Mockito.times(2)).transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList());
 | 
					 | 
				
			||||||
        Mockito.verify(apConfig, Mockito.times(3)).getApProfile();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testGetRadiusConfiguration() throws Exception {
 | 
					 | 
				
			||||||
        OpensyncAPConfig apConfig = new OpensyncAPConfig();
 | 
					 | 
				
			||||||
        Profile profileRadius = OvsdbDaoTestUtilities.createRadiusProfile(DEFAULT_CUSTOMER_ID);
 | 
					 | 
				
			||||||
        apConfig.setRadiusProfiles(List.of(profileRadius));
 | 
					 | 
				
			||||||
        SsidConfiguration ssidConfig = SsidConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
        ssidConfig.setRadiusServiceName("Radius-Profile");
 | 
					 | 
				
			||||||
        Map<String, String> security = new HashMap<>();
 | 
					 | 
				
			||||||
        Location location = new Location();
 | 
					 | 
				
			||||||
        location.setName("Ottawa");
 | 
					 | 
				
			||||||
        apConfig.setEquipmentLocation(location);
 | 
					 | 
				
			||||||
        ovsdbDao.getRadiusConfiguration(apConfig, ssidConfig, security);       
 | 
					 | 
				
			||||||
        assert (security.get("radius_server_ip").equals("192.168.0.1"));
 | 
					 | 
				
			||||||
        assert (security.get("radius_server_port").equals("1812"));
 | 
					 | 
				
			||||||
        assert (security.get("radius_server_secret").equals("testing123"));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testGetRadiusAccountingConfiguration() throws Exception {
 | 
					 | 
				
			||||||
        OpensyncAPConfig apConfig = new OpensyncAPConfig();
 | 
					 | 
				
			||||||
        Profile profileRadius = OvsdbDaoTestUtilities.createRadiusProfile(DEFAULT_CUSTOMER_ID);
 | 
					 | 
				
			||||||
        apConfig.setRadiusProfiles(List.of(profileRadius));
 | 
					 | 
				
			||||||
        SsidConfiguration ssidConfig = SsidConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
        ssidConfig.setRadiusAccountingServiceName("Radius-Profile");
 | 
					 | 
				
			||||||
        ssidConfig.setRadiusAcountingServiceInterval(60);
 | 
					 | 
				
			||||||
        Map<String, String> security = new HashMap<>();
 | 
					 | 
				
			||||||
        Location location = new Location();
 | 
					 | 
				
			||||||
        location.setName("Ottawa");
 | 
					 | 
				
			||||||
        apConfig.setEquipmentLocation(location);
 | 
					 | 
				
			||||||
        ovsdbDao.getRadiusAccountingConfiguration(apConfig, ssidConfig, security);
 | 
					 | 
				
			||||||
        assert (Integer.valueOf(security.get("radius_acct_interval"))
 | 
					 | 
				
			||||||
                .equals(ssidConfig.getRadiusAcountingServiceInterval()));
 | 
					 | 
				
			||||||
        assert (security.get("radius_acct_ip").equals("192.168.0.1"));
 | 
					 | 
				
			||||||
        assert (security.get("radius_acct_port").equals("1812"));
 | 
					 | 
				
			||||||
        assert (security.get("radius_acct_secret").equals("testing123"));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testGetRadiusAccountingConfigurationNoAcctInterval() throws Exception {
 | 
					 | 
				
			||||||
        OpensyncAPConfig apConfig = new OpensyncAPConfig();
 | 
					 | 
				
			||||||
        Profile profileRadius = OvsdbDaoTestUtilities.createRadiusProfile(DEFAULT_CUSTOMER_ID);
 | 
					 | 
				
			||||||
        apConfig.setRadiusProfiles(List.of(profileRadius));
 | 
					 | 
				
			||||||
        SsidConfiguration ssidConfig = SsidConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
        ssidConfig.setRadiusAccountingServiceName("Radius-Profile");
 | 
					 | 
				
			||||||
        Map<String, String> security = new HashMap<>();
 | 
					 | 
				
			||||||
        Location location = new Location();
 | 
					 | 
				
			||||||
        location.setName("Ottawa");
 | 
					 | 
				
			||||||
        apConfig.setEquipmentLocation(location);
 | 
					 | 
				
			||||||
        ovsdbDao.getRadiusAccountingConfiguration(apConfig, ssidConfig, security);
 | 
					 | 
				
			||||||
        assert (security.get("radius_acct_interval").equals("0"));
 | 
					 | 
				
			||||||
        assert (security.get("radius_acct_ip").equals("192.168.0.1"));
 | 
					 | 
				
			||||||
        assert (security.get("radius_acct_port").equals("1812"));
 | 
					 | 
				
			||||||
        assert (security.get("radius_acct_secret").equals("testing123"));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testConfigureHotspots() throws Exception {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        DatabaseSchema schemaMock = Mockito.mock(DatabaseSchema.class);
 | 
					 | 
				
			||||||
        CompletableFuture<DatabaseSchema> schemaFuture = Mockito.mock(CompletableFuture.class);
 | 
					 | 
				
			||||||
        Mockito.when(schemaFuture.get(Mockito.anyLong(), Mockito.any())).thenReturn(schemaMock);
 | 
					 | 
				
			||||||
        HashMap<String, TableSchema> mapMock = Mockito.mock(HashMap.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.when(mapMock.containsKey(Mockito.any())).thenReturn(true);
 | 
					 | 
				
			||||||
        Mockito.when(mapMock.get(Mockito.any())).thenReturn(Mockito.mock(TableSchema.class));
 | 
					 | 
				
			||||||
        Mockito.when(schemaMock.getTables()).thenReturn(mapMock);
 | 
					 | 
				
			||||||
        Mockito.when(ovsdbClient.getSchema(Mockito.anyString())).thenReturn(schemaFuture);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OpensyncAPConfig apConfig = new OpensyncAPConfig();
 | 
					 | 
				
			||||||
        OpensyncAPHotspot20Config hsConfig = new OpensyncAPHotspot20Config();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Profile profileSsidPsk = OvsdbDaoTestUtilities.createPasspointAccessSsid(DEFAULT_CUSTOMER_ID);
 | 
					 | 
				
			||||||
        profileSsidPsk.setId(SSID_PSK_ID);
 | 
					 | 
				
			||||||
        Profile profileSsidOsu = OvsdbDaoTestUtilities.createPasspointOsuSsid(DEFAULT_CUSTOMER_ID);
 | 
					 | 
				
			||||||
        profileSsidOsu.setId(SSID_OSU_ID);
 | 
					 | 
				
			||||||
        Profile passpointOperatorProfile = OvsdbDaoTestUtilities.createPasspointOperatorProfile(DEFAULT_CUSTOMER_ID);
 | 
					 | 
				
			||||||
        passpointOperatorProfile.setId(OPERATOR_ID);
 | 
					 | 
				
			||||||
        Profile passpointVenueProfile = OvsdbDaoTestUtilities.createPasspointVenueProfile(DEFAULT_CUSTOMER_ID);
 | 
					 | 
				
			||||||
        passpointVenueProfile.setId(VENUE_ID);
 | 
					 | 
				
			||||||
        Profile hotspot20IdProviderProfile = new Profile();
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile.setId(HOTSPOT_PROVIDER_ID_1);
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile = OvsdbDaoTestUtilities.createPasspointIdProviderProfile(DEFAULT_CUSTOMER_ID,
 | 
					 | 
				
			||||||
                hotspot20IdProviderProfile, "TipWlan-Hotspot20-OSU-Provider", "Rogers AT&T Wireless", "Canada", "ca",
 | 
					 | 
				
			||||||
                302, 720, "rogers.com", 1);
 | 
					 | 
				
			||||||
        Profile hotspot20IdProviderProfile2 = new Profile();
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile2.setId(HOTSPOT_PROVIDER_ID_2);
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile2 = OvsdbDaoTestUtilities.createPasspointIdProviderProfile(DEFAULT_CUSTOMER_ID,
 | 
					 | 
				
			||||||
                hotspot20IdProviderProfile2, "TipWlan-Hotspot20-OSU-Provider-2", "Telus Mobility", "Canada", "ca", 302,
 | 
					 | 
				
			||||||
                220, "telus.com", 1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        profileSsidOsu.getChildProfileIds().add(hotspot20IdProviderProfile.getId());
 | 
					 | 
				
			||||||
        profileSsidOsu.getChildProfileIds().add(hotspot20IdProviderProfile2.getId());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Profile passpointHotspotConfig = OvsdbDaoTestUtilities.createPasspointHotspotConfig(DEFAULT_CUSTOMER_ID,
 | 
					 | 
				
			||||||
                hotspot20IdProviderProfile2, hotspot20IdProviderProfile, passpointOperatorProfile,
 | 
					 | 
				
			||||||
                passpointVenueProfile, profileSsidPsk, profileSsidOsu);
 | 
					 | 
				
			||||||
        passpointHotspotConfig.setId(HOTSPOT_CONFIG_ID);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Profile hotspotProfileAp = OvsdbDaoTestUtilities.createPasspointApProfile(DEFAULT_CUSTOMER_ID, profileSsidPsk,
 | 
					 | 
				
			||||||
                profileSsidOsu);
 | 
					 | 
				
			||||||
        hotspotProfileAp.setId(EQUIPMENT_AP_ID);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        hsConfig.setHotspot20OperatorSet(Set.of(passpointOperatorProfile));
 | 
					 | 
				
			||||||
        hsConfig.setHotspot20ProviderSet(Set.of(hotspot20IdProviderProfile, hotspot20IdProviderProfile2));
 | 
					 | 
				
			||||||
        hsConfig.setHotspot20VenueSet(Set.of(passpointVenueProfile));
 | 
					 | 
				
			||||||
        hsConfig.setHotspot20ProfileSet(Set.of(passpointHotspotConfig));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        apConfig.setHotspotConfig(hsConfig);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        apConfig.setApProfile(hotspotProfileAp);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        apConfig.setSsidProfile(List.of(profileSsidOsu, profileSsidPsk));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.when(futureResult.get(Mockito.anyLong(), Mockito.eq(TimeUnit.SECONDS)))
 | 
					 | 
				
			||||||
                .thenReturn(OvsdbDaoTestUtilities.hs20IconRows()).thenReturn(OvsdbDaoTestUtilities.hs20InsertIconRows())
 | 
					 | 
				
			||||||
                .thenReturn(OvsdbDaoTestUtilities.hs20OsuProviders()).thenReturn(OvsdbDaoTestUtilities.hs20IconRows())
 | 
					 | 
				
			||||||
                .thenReturn(OvsdbDaoTestUtilities.hs20IconRows())
 | 
					 | 
				
			||||||
                .thenReturn(OvsdbDaoTestUtilities.hs20InsertProviderRows())
 | 
					 | 
				
			||||||
                .thenReturn(OvsdbDaoTestUtilities.hs20Config()).thenReturn(OvsdbDaoTestUtilities.hs20OsuProviders())
 | 
					 | 
				
			||||||
                .thenReturn(OvsdbDaoTestUtilities.vifConfigRows()).thenReturn(OvsdbDaoTestUtilities.vifConfigRows())
 | 
					 | 
				
			||||||
                .thenReturn(OvsdbDaoTestUtilities.hs20Config());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.when(ovsdbClient.transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList())).thenReturn(futureResult);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ovsdbDao.configureHotspots(ovsdbClient, apConfig);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.verify(futureResult, Mockito.times(11)).get(Mockito.anyLong(), Mockito.eq(TimeUnit.SECONDS));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testConfigureGreTunnelsWithNoLocalAddress() throws Exception {
 | 
					 | 
				
			||||||
        List<Row> rows = new ArrayList<>();
 | 
					 | 
				
			||||||
        OperationResult[] operationResult = new OperationResult[] { new SelectResult(rows) };
 | 
					 | 
				
			||||||
        Mockito.when(ovsdbClient.transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList()))
 | 
					 | 
				
			||||||
                .thenReturn(selectionFutureResult);
 | 
					 | 
				
			||||||
        Mockito.when(selectionFutureResult.get(30, TimeUnit.SECONDS)).thenReturn(operationResult);
 | 
					 | 
				
			||||||
        Profile apProfile = new Profile();
 | 
					 | 
				
			||||||
        apProfile.setCustomerId(2);
 | 
					 | 
				
			||||||
        apProfile.setId(1L);
 | 
					 | 
				
			||||||
        apProfile.setName("ApProfile");
 | 
					 | 
				
			||||||
        apProfile.setProfileType(ProfileType.equipment_ap);
 | 
					 | 
				
			||||||
        ApNetworkConfiguration tunnelProfileDetails = ApNetworkConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreRemoteInetAddr(InetAddress.getByName("192.168.0.10"));
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreTunnelName("gre1");
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreParentIfName("wan");
 | 
					 | 
				
			||||||
        apProfile.setDetails(tunnelProfileDetails);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OpensyncAPConfig apConfig = Mockito.mock(OpensyncAPConfig.class);
 | 
					 | 
				
			||||||
        Mockito.when(apConfig.getApProfile()).thenReturn(apProfile);
 | 
					 | 
				
			||||||
        ovsdbDao.configureGreTunnels(ovsdbClient, apConfig);
 | 
					 | 
				
			||||||
        // 2 calls to check existence, 2 calls to insert tunnel (1 each per
 | 
					 | 
				
			||||||
        // Profile)
 | 
					 | 
				
			||||||
        Mockito.verify(ovsdbClient, Mockito.times(2)).transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList());
 | 
					 | 
				
			||||||
        Mockito.verify(apConfig, Mockito.times(3)).getApProfile();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testConfigureGreTunnelsWithNoRemoteAddress() throws Exception {
 | 
					 | 
				
			||||||
        Profile apProfile = new Profile();
 | 
					 | 
				
			||||||
        apProfile.setCustomerId(2);
 | 
					 | 
				
			||||||
        apProfile.setId(1L);
 | 
					 | 
				
			||||||
        apProfile.setName("ApProfile");
 | 
					 | 
				
			||||||
        apProfile.setProfileType(ProfileType.equipment_ap);
 | 
					 | 
				
			||||||
        ApNetworkConfiguration tunnelProfileDetails = ApNetworkConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreLocalInetAddr(InetAddress.getByName("10.0.10.10"));
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreTunnelName("gre1");
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreParentIfName("wan");
 | 
					 | 
				
			||||||
        apProfile.setDetails(tunnelProfileDetails);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OpensyncAPConfig apConfig = Mockito.mock(OpensyncAPConfig.class);
 | 
					 | 
				
			||||||
        Mockito.when(apConfig.getApProfile()).thenReturn(apProfile);
 | 
					 | 
				
			||||||
        ovsdbDao.configureGreTunnels(ovsdbClient, apConfig);
 | 
					 | 
				
			||||||
        // Should not create
 | 
					 | 
				
			||||||
        Mockito.verify(ovsdbClient, Mockito.times(0)).transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList());
 | 
					 | 
				
			||||||
        Mockito.verify(apConfig, Mockito.times(3)).getApProfile();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testConfigureGreTunnelsWithNoParentInterface() throws Exception {
 | 
					 | 
				
			||||||
        Profile apProfile = new Profile();
 | 
					 | 
				
			||||||
        apProfile.setCustomerId(2);
 | 
					 | 
				
			||||||
        apProfile.setId(1L);
 | 
					 | 
				
			||||||
        apProfile.setName("ApProfile");
 | 
					 | 
				
			||||||
        apProfile.setProfileType(ProfileType.equipment_ap);
 | 
					 | 
				
			||||||
        ApNetworkConfiguration tunnelProfileDetails = ApNetworkConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreLocalInetAddr(InetAddress.getByName("10.0.10.10"));
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreRemoteInetAddr(InetAddress.getByName("192.168.0.10"));
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreTunnelName("gre1");
 | 
					 | 
				
			||||||
        apProfile.setDetails(tunnelProfileDetails);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OpensyncAPConfig apConfig = Mockito.mock(OpensyncAPConfig.class);
 | 
					 | 
				
			||||||
        Mockito.when(apConfig.getApProfile()).thenReturn(apProfile);
 | 
					 | 
				
			||||||
        ovsdbDao.configureGreTunnels(ovsdbClient, apConfig);
 | 
					 | 
				
			||||||
        // Should not create
 | 
					 | 
				
			||||||
        Mockito.verify(ovsdbClient, Mockito.times(0)).transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList());
 | 
					 | 
				
			||||||
        Mockito.verify(apConfig, Mockito.times(3)).getApProfile();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testConfigureGreTunnelsWithNoTunnelName() throws Exception {
 | 
					 | 
				
			||||||
        Profile apProfile = new Profile();
 | 
					 | 
				
			||||||
        apProfile.setCustomerId(2);
 | 
					 | 
				
			||||||
        apProfile.setId(1L);
 | 
					 | 
				
			||||||
        apProfile.setName("ApProfile");
 | 
					 | 
				
			||||||
        apProfile.setProfileType(ProfileType.equipment_ap);
 | 
					 | 
				
			||||||
        ApNetworkConfiguration tunnelProfileDetails = ApNetworkConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreLocalInetAddr(InetAddress.getByName("10.0.10.10"));
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreRemoteInetAddr(InetAddress.getByName("192.168.0.10"));
 | 
					 | 
				
			||||||
        tunnelProfileDetails.setGreParentIfName("wan");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        apProfile.setDetails(tunnelProfileDetails);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OpensyncAPConfig apConfig = Mockito.mock(OpensyncAPConfig.class);
 | 
					 | 
				
			||||||
        Mockito.when(apConfig.getApProfile()).thenReturn(apProfile);
 | 
					 | 
				
			||||||
        ovsdbDao.configureGreTunnels(ovsdbClient, apConfig);
 | 
					 | 
				
			||||||
        // Should not create
 | 
					 | 
				
			||||||
        Mockito.verify(ovsdbClient, Mockito.times(0)).transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList());
 | 
					 | 
				
			||||||
        Mockito.verify(apConfig, Mockito.times(3)).getApProfile();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testGetConnectNodeInfo() throws Exception {
 | 
					    public void testGetConnectNodeInfo() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -525,7 +207,7 @@ public class OvsdbDaoTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test(expected = RuntimeException.class)
 | 
					    @Test
 | 
				
			||||||
    public void testFailGetConnectNodeInfo() throws Exception {
 | 
					    public void testFailGetConnectNodeInfo() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(ovsdbClient.transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList())).thenReturn(futureResult);
 | 
					        Mockito.when(ovsdbClient.transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList())).thenReturn(futureResult);
 | 
				
			||||||
@@ -705,6 +387,94 @@ public class OvsdbDaoTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testOvsdbDaoGetOpensyncAPVIFState() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String path = "src/test/resources/Wifi_VIF_State-home-ap-24.json";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        File file = new File(path);
 | 
				
			||||||
 | 
					        String absolutePath = file.getAbsolutePath();
 | 
				
			||||||
 | 
					        File jsonFile = ResourceUtils.getFile(absolutePath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        JsonNode jn = JsonLoader.fromFile(jsonFile);
 | 
				
			||||||
 | 
					        Row row = JsonUtil.deserializeNoException(jn.toString(), Row.class);
 | 
				
			||||||
 | 
					        RowUpdate rowUpdate = new RowUpdate();
 | 
				
			||||||
 | 
					        rowUpdate.setNew(row);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        path = "src/test/resources/Wifi_VIF_State-home-ap-l50.json";
 | 
				
			||||||
 | 
					        file = new File(path);
 | 
				
			||||||
 | 
					        absolutePath = file.getAbsolutePath();
 | 
				
			||||||
 | 
					        jsonFile = ResourceUtils.getFile(absolutePath);
 | 
				
			||||||
 | 
					        jn = JsonLoader.fromFile(jsonFile);
 | 
				
			||||||
 | 
					        Row row1 = JsonUtil.deserializeNoException(jn.toString(), Row.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RowUpdate rowUpdate1 = new RowUpdate();
 | 
				
			||||||
 | 
					        rowUpdate1.setNew(row1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        path = "src/test/resources/Wifi_VIF_State-home-ap-u50.json";
 | 
				
			||||||
 | 
					        file = new File(path);
 | 
				
			||||||
 | 
					        absolutePath = file.getAbsolutePath();
 | 
				
			||||||
 | 
					        jsonFile = ResourceUtils.getFile(absolutePath);
 | 
				
			||||||
 | 
					        jn = JsonLoader.fromFile(jsonFile);
 | 
				
			||||||
 | 
					        Row row2 = JsonUtil.deserializeNoException(jn.toString(), Row.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RowUpdate rowUpdate2 = new RowUpdate();
 | 
				
			||||||
 | 
					        rowUpdate2.setNew(row2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<OpensyncAPVIFState> vifStateList = ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, "SomeAPId", ovsdbClient);
 | 
				
			||||||
 | 
					        assert (vifStateList.size() == 1);
 | 
				
			||||||
 | 
					        vifStateList.addAll(ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate1, "SomeAPId", ovsdbClient));
 | 
				
			||||||
 | 
					        assert (vifStateList.size() == 2);
 | 
				
			||||||
 | 
					        vifStateList.addAll(ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate2, "SomeAPId", ovsdbClient));
 | 
				
			||||||
 | 
					        assert (vifStateList.size() == 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testOvsdbDaoGetOpensyncAPRadioState() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String path = "src/test/resources/Wifi_Radio_State-home-ap-24.json";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        File file = new File(path);
 | 
				
			||||||
 | 
					        String absolutePath = file.getAbsolutePath();
 | 
				
			||||||
 | 
					        File jsonFile = ResourceUtils.getFile(absolutePath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        JsonNode jn = JsonLoader.fromFile(jsonFile);
 | 
				
			||||||
 | 
					        Row row = JsonUtil.deserializeNoException(jn.toString(), Row.class);
 | 
				
			||||||
 | 
					        RowUpdate rowUpdate = new RowUpdate();
 | 
				
			||||||
 | 
					        rowUpdate.setNew(row);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        path = "src/test/resources/Wifi_Radio_State-home-ap-l50.json";
 | 
				
			||||||
 | 
					        file = new File(path);
 | 
				
			||||||
 | 
					        absolutePath = file.getAbsolutePath();
 | 
				
			||||||
 | 
					        jsonFile = ResourceUtils.getFile(absolutePath);
 | 
				
			||||||
 | 
					        jn = JsonLoader.fromFile(jsonFile);
 | 
				
			||||||
 | 
					        Row row1 = JsonUtil.deserializeNoException(jn.toString(), Row.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RowUpdate rowUpdate1 = new RowUpdate();
 | 
				
			||||||
 | 
					        rowUpdate1.setNew(row1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        path = "src/test/resources/Wifi_Radio_State-home-ap-u50.json";
 | 
				
			||||||
 | 
					        file = new File(path);
 | 
				
			||||||
 | 
					        absolutePath = file.getAbsolutePath();
 | 
				
			||||||
 | 
					        jsonFile = ResourceUtils.getFile(absolutePath);
 | 
				
			||||||
 | 
					        jn = JsonLoader.fromFile(jsonFile);
 | 
				
			||||||
 | 
					        Row row2 = JsonUtil.deserializeNoException(jn.toString(), Row.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RowUpdate rowUpdate2 = new RowUpdate();
 | 
				
			||||||
 | 
					        rowUpdate2.setNew(row2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TableUpdate tableUpdate = new TableUpdate(ImmutableMap.of(row.getUuidColumn("_uuid").getUuid(), rowUpdate,
 | 
				
			||||||
 | 
					                row1.getUuidColumn("_uuid").getUuid(), rowUpdate1, row2.getUuidColumn("_uuid").getUuid(), rowUpdate2));
 | 
				
			||||||
 | 
					        TableUpdates tableUpdates = new TableUpdates(ImmutableMap.of(OvsdbDao.wifiRadioStateDbTable, tableUpdate));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<OpensyncAPRadioState> radioStateList = ovsdbDao.getOpensyncAPRadioState(tableUpdates, "SomeAPId",
 | 
				
			||||||
 | 
					                ovsdbClient);
 | 
				
			||||||
 | 
					        assert (radioStateList.size() == 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testObsdbDaoEnableNetworkProbe() throws Exception {
 | 
					    public void testObsdbDaoEnableNetworkProbe() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -751,7 +521,48 @@ public class OvsdbDaoTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    static Row[] hs20Icons = {
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testOvsdbDaoGetOpensyncAPInetState() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String path = "src/test/resources/Wifi_Inet_State-home-ap-24.json";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        File file = new File(path);
 | 
				
			||||||
 | 
					        String absolutePath = file.getAbsolutePath();
 | 
				
			||||||
 | 
					        File jsonFile = ResourceUtils.getFile(absolutePath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        JsonNode jn = JsonLoader.fromFile(jsonFile);
 | 
				
			||||||
 | 
					        Row row = JsonUtil.deserializeNoException(jn.toString(), Row.class);
 | 
				
			||||||
 | 
					        RowUpdate rowUpdate = new RowUpdate();
 | 
				
			||||||
 | 
					        rowUpdate.setNew(row);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        path = "src/test/resources/Wifi_Inet_State-home-ap-l50.json";
 | 
				
			||||||
 | 
					        file = new File(path);
 | 
				
			||||||
 | 
					        absolutePath = file.getAbsolutePath();
 | 
				
			||||||
 | 
					        jsonFile = ResourceUtils.getFile(absolutePath);
 | 
				
			||||||
 | 
					        jn = JsonLoader.fromFile(jsonFile);
 | 
				
			||||||
 | 
					        Row row1 = JsonUtil.deserializeNoException(jn.toString(), Row.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RowUpdate rowUpdate1 = new RowUpdate();
 | 
				
			||||||
 | 
					        rowUpdate1.setNew(row1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        path = "src/test/resources/Wifi_Inet_State-home-ap-u50.json";
 | 
				
			||||||
 | 
					        file = new File(path);
 | 
				
			||||||
 | 
					        absolutePath = file.getAbsolutePath();
 | 
				
			||||||
 | 
					        jsonFile = ResourceUtils.getFile(absolutePath);
 | 
				
			||||||
 | 
					        jn = JsonLoader.fromFile(jsonFile);
 | 
				
			||||||
 | 
					        Row row2 = JsonUtil.deserializeNoException(jn.toString(), Row.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RowUpdate rowUpdate2 = new RowUpdate();
 | 
				
			||||||
 | 
					        rowUpdate2.setNew(row2);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        List<OpensyncAPInetState> inetStateList = ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, "SomeAPId", ovsdbClient);
 | 
				
			||||||
 | 
					        assert (inetStateList.size() == 1);
 | 
				
			||||||
 | 
					        inetStateList.addAll(ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate1, "SomeAPId", ovsdbClient));
 | 
				
			||||||
 | 
					        assert (inetStateList.size() == 2);
 | 
				
			||||||
 | 
					        inetStateList.addAll(ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate2, "SomeAPId", ovsdbClient));
 | 
				
			||||||
 | 
					        assert (inetStateList.size() == 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,547 +0,0 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.net.InetAddress;
 | 
					 | 
				
			||||||
import java.net.UnknownHostException;
 | 
					 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
import java.util.HashMap;
 | 
					 | 
				
			||||||
import java.util.HashSet;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
import java.util.Locale;
 | 
					 | 
				
			||||||
import java.util.Map;
 | 
					 | 
				
			||||||
import java.util.Set;
 | 
					 | 
				
			||||||
import java.util.UUID;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.customer.models.Customer;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.models.Profile;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.models.ProfileType;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.passpoint.models.PasspointDuple;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.passpoint.models.PasspointMccMnc;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.passpoint.models.PasspointProfile;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.passpoint.models.operator.PasspointOperatorProfile;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.passpoint.models.provider.PasspointNaiRealmInformation;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.passpoint.models.provider.PasspointOsuIcon;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.passpoint.models.provider.PasspointOsuProviderProfile;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.passpoint.models.venue.PasspointVenueProfile;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.radius.models.RadiusProfile;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.radius.models.RadiusServer;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.radius.models.RadiusServiceRegion;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration.SecureMode;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Atom;
 | 
					 | 
				
			||||||
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.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;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class OvsdbDaoTestUtilities {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Static creation of Profiles and Results to use with the OvsdbDao JUnit tests.
 | 
					 | 
				
			||||||
    static void createPasspointHotspot(int customerId, Profile passpointHotspotConfig,
 | 
					 | 
				
			||||||
            Profile passpointOperatorProfile, Profile passpointVenueProfile, Profile hotspot20IdProviderProfile,
 | 
					 | 
				
			||||||
            Profile hotspot20IdProviderProfile2, Profile profileSsidPsk, Profile profileSsidOsu,
 | 
					 | 
				
			||||||
            Profile hotspotProfileAp) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        profileSsidPsk = createPasspointAccessSsid(customerId);
 | 
					 | 
				
			||||||
        profileSsidOsu = createPasspointOsuSsid(customerId);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        passpointOperatorProfile = createPasspointOperatorProfile(customerId);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        passpointVenueProfile = createPasspointVenueProfile(customerId);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile = createPasspointIdProviderProfile(customerId, hotspot20IdProviderProfile,
 | 
					 | 
				
			||||||
                "TipWlan-Hotspot20-OSU-Provider", "Rogers AT&T Wireless", "Canada", "ca", 302, 720, "rogers.com", 1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile2 = createPasspointIdProviderProfile(customerId, hotspot20IdProviderProfile2,
 | 
					 | 
				
			||||||
                "TipWlan-Hotspot20-OSU-Provider-2", "Telus Mobility", "Canada", "ca", 302, 220, "telus.com", 1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        profileSsidOsu.getChildProfileIds().add(hotspot20IdProviderProfile.getId());
 | 
					 | 
				
			||||||
        profileSsidOsu.getChildProfileIds().add(hotspot20IdProviderProfile2.getId());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        passpointHotspotConfig = createPasspointHotspotConfig(customerId, hotspot20IdProviderProfile2,
 | 
					 | 
				
			||||||
                hotspot20IdProviderProfile, passpointOperatorProfile, passpointVenueProfile, profileSsidPsk,
 | 
					 | 
				
			||||||
                profileSsidOsu);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        hotspotProfileAp = createPasspointApProfile(customerId, profileSsidPsk, profileSsidOsu);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static Profile createPasspointHotspotConfig(int customerId, Profile hotspot20IdProviderProfile2,
 | 
					 | 
				
			||||||
            Profile hotspot20IdProviderProfile, Profile passpointOperatorProfile, Profile passpointVenueProfile,
 | 
					 | 
				
			||||||
            Profile profileSsidPsk, Profile profileSsidOpen) {
 | 
					 | 
				
			||||||
        Profile passpointHotspotConfig;
 | 
					 | 
				
			||||||
        passpointHotspotConfig = new Profile();
 | 
					 | 
				
			||||||
        passpointHotspotConfig.setCustomerId(customerId);
 | 
					 | 
				
			||||||
        passpointHotspotConfig.setName("TipWlan-Hotspot20-Config");
 | 
					 | 
				
			||||||
        passpointHotspotConfig.setProfileType(ProfileType.passpoint);
 | 
					 | 
				
			||||||
        Set<Long> passpointHotspotConfigChildIds = new HashSet<>();
 | 
					 | 
				
			||||||
        passpointHotspotConfigChildIds.add(passpointOperatorProfile.getId());
 | 
					 | 
				
			||||||
        passpointHotspotConfigChildIds.add(passpointVenueProfile.getId());
 | 
					 | 
				
			||||||
        passpointHotspotConfigChildIds.add(hotspot20IdProviderProfile.getId());
 | 
					 | 
				
			||||||
        passpointHotspotConfigChildIds.add(hotspot20IdProviderProfile2.getId());
 | 
					 | 
				
			||||||
        passpointHotspotConfig.setChildProfileIds(passpointHotspotConfigChildIds);
 | 
					 | 
				
			||||||
        passpointHotspotConfig.setDetails(PasspointProfile.createWithDefaults());
 | 
					 | 
				
			||||||
        Set<String> providerNames = new HashSet<>();
 | 
					 | 
				
			||||||
        providerNames.add(hotspot20IdProviderProfile.getName());
 | 
					 | 
				
			||||||
        providerNames.add(hotspot20IdProviderProfile2.getName());
 | 
					 | 
				
			||||||
        ((PasspointProfile) passpointHotspotConfig.getDetails()).setIdProviderProfileNames(providerNames);
 | 
					 | 
				
			||||||
        ((PasspointProfile) passpointHotspotConfig.getDetails())
 | 
					 | 
				
			||||||
                .setOperatorProfileName(passpointOperatorProfile.getName());
 | 
					 | 
				
			||||||
        ((PasspointProfile) passpointHotspotConfig.getDetails()).setVenueProfileName(passpointVenueProfile.getName());
 | 
					 | 
				
			||||||
        ((PasspointProfile) passpointHotspotConfig.getDetails()).setOsuSsidName(profileSsidOpen.getName());
 | 
					 | 
				
			||||||
        profileSsidPsk.getChildProfileIds().add(passpointHotspotConfig.getId());
 | 
					 | 
				
			||||||
        return passpointHotspotConfig;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static Profile createPasspointIdProviderProfile(int customerId, Profile providerProfile, String providerName,
 | 
					 | 
				
			||||||
            String network, String country, String iso, int mcc, int mnc, String naiRealm, int countryCode) {
 | 
					 | 
				
			||||||
        Profile hotspot20IdProviderProfile;
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile = new Profile();
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile.setCustomerId(customerId);
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile.setName(providerName);
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile.setProfileType(ProfileType.passpoint_osu_id_provider);
 | 
					 | 
				
			||||||
        PasspointMccMnc passpointMccMnc = PasspointMccMnc.createWithDefaults();
 | 
					 | 
				
			||||||
        passpointMccMnc.setMcc(mcc);
 | 
					 | 
				
			||||||
        passpointMccMnc.setMnc(mnc);
 | 
					 | 
				
			||||||
        passpointMccMnc.setIso(iso);
 | 
					 | 
				
			||||||
        passpointMccMnc.setCountry(country);
 | 
					 | 
				
			||||||
        passpointMccMnc.setCountryCode(1);
 | 
					 | 
				
			||||||
        passpointMccMnc.setNetwork(network);
 | 
					 | 
				
			||||||
        List<PasspointMccMnc> mccMncList = new ArrayList<>();
 | 
					 | 
				
			||||||
        mccMncList.add(passpointMccMnc);
 | 
					 | 
				
			||||||
        Set<String> naiRealms = new HashSet<>();
 | 
					 | 
				
			||||||
        naiRealms.add(naiRealm);
 | 
					 | 
				
			||||||
        naiRealm.split(".");
 | 
					 | 
				
			||||||
        List<Byte> roamingOi = new ArrayList<>();
 | 
					 | 
				
			||||||
        roamingOi.add(Byte.valueOf("1"));
 | 
					 | 
				
			||||||
        roamingOi.add(Byte.valueOf("2"));
 | 
					 | 
				
			||||||
        roamingOi.add(Byte.valueOf("3"));
 | 
					 | 
				
			||||||
        roamingOi.add(Byte.valueOf("4"));
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile = createOsuProviderProfile(customerId, hotspot20IdProviderProfile, mccMncList,
 | 
					 | 
				
			||||||
                naiRealms, "https://example.com/osu/" + naiRealm.split(".com")[0], naiRealm.split(".com")[0], naiRealm,
 | 
					 | 
				
			||||||
                roamingOi);
 | 
					 | 
				
			||||||
        return hotspot20IdProviderProfile;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static Profile createPasspointVenueProfile(int customerId) {
 | 
					 | 
				
			||||||
        Profile passpointVenueProfile;
 | 
					 | 
				
			||||||
        passpointVenueProfile = new Profile();
 | 
					 | 
				
			||||||
        passpointVenueProfile.setCustomerId(customerId);
 | 
					 | 
				
			||||||
        passpointVenueProfile.setName("TipWlan-Hotspot20-Venue");
 | 
					 | 
				
			||||||
        passpointVenueProfile.setProfileType(ProfileType.passpoint_venue);
 | 
					 | 
				
			||||||
        passpointVenueProfile.setDetails(PasspointVenueProfile.createWithDefaults());
 | 
					 | 
				
			||||||
        return passpointVenueProfile;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static Profile createPasspointOperatorProfile(int customerId) {
 | 
					 | 
				
			||||||
        Profile passpointOperatorProfile;
 | 
					 | 
				
			||||||
        passpointOperatorProfile = new Profile();
 | 
					 | 
				
			||||||
        passpointOperatorProfile.setCustomerId(customerId);
 | 
					 | 
				
			||||||
        passpointOperatorProfile.setName("TipWlan-Hotspot20-Operator");
 | 
					 | 
				
			||||||
        passpointOperatorProfile.setProfileType(ProfileType.passpoint_operator);
 | 
					 | 
				
			||||||
        passpointOperatorProfile.setDetails(PasspointOperatorProfile.createWithDefaults());
 | 
					 | 
				
			||||||
        return passpointOperatorProfile;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static Profile createPasspointAccessSsid(int customerId) {
 | 
					 | 
				
			||||||
        Profile profileSsidPsk;
 | 
					 | 
				
			||||||
        profileSsidPsk = new Profile();
 | 
					 | 
				
			||||||
        profileSsidPsk.setCustomerId(customerId);
 | 
					 | 
				
			||||||
        profileSsidPsk.setName("TipWlan-cloud-hotspot-access");
 | 
					 | 
				
			||||||
        SsidConfiguration ssidConfigPsk = SsidConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
        Set<RadioType> appliedRadiosPsk = new HashSet<RadioType>();
 | 
					 | 
				
			||||||
        appliedRadiosPsk.add(RadioType.is5GHzL);
 | 
					 | 
				
			||||||
        appliedRadiosPsk.add(RadioType.is5GHzU);
 | 
					 | 
				
			||||||
        ssidConfigPsk.setSsid("TipWlan-cloud-hotspot-access");
 | 
					 | 
				
			||||||
        ssidConfigPsk.setAppliedRadios(appliedRadiosPsk);
 | 
					 | 
				
			||||||
        ssidConfigPsk.setSecureMode(SecureMode.wpa2PSK);
 | 
					 | 
				
			||||||
        ssidConfigPsk.setKeyStr("testing123");
 | 
					 | 
				
			||||||
        profileSsidPsk.setDetails(ssidConfigPsk);
 | 
					 | 
				
			||||||
        return profileSsidPsk;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static Profile createPasspointOsuSsid(int customerId) {
 | 
					 | 
				
			||||||
        Profile profileSsidPsk;
 | 
					 | 
				
			||||||
        profileSsidPsk = new Profile();
 | 
					 | 
				
			||||||
        profileSsidPsk.setCustomerId(customerId);
 | 
					 | 
				
			||||||
        profileSsidPsk.setName("TipWlan-cloud-hotspot-osu");
 | 
					 | 
				
			||||||
        SsidConfiguration ssidConfigPsk = SsidConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
        Set<RadioType> appliedRadiosPsk = new HashSet<RadioType>();
 | 
					 | 
				
			||||||
        appliedRadiosPsk.add(RadioType.is2dot4GHz);
 | 
					 | 
				
			||||||
        ssidConfigPsk.setSsid("TipWlan-cloud-hotspot-osu");
 | 
					 | 
				
			||||||
        ssidConfigPsk.setAppliedRadios(appliedRadiosPsk);
 | 
					 | 
				
			||||||
        ssidConfigPsk.setSecureMode(SecureMode.open);
 | 
					 | 
				
			||||||
        profileSsidPsk.setDetails(ssidConfigPsk);
 | 
					 | 
				
			||||||
        return profileSsidPsk;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static Profile createPasspointApProfile(int customerId, Profile profileSsidPsk, Profile profileSsidOpen) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Profile hotspotProfileAp = new Profile();
 | 
					 | 
				
			||||||
        hotspotProfileAp.setCustomerId(customerId);
 | 
					 | 
				
			||||||
        hotspotProfileAp.setName("HotspotProfileAp");
 | 
					 | 
				
			||||||
        hotspotProfileAp.setDetails(ApNetworkConfiguration.createWithDefaults());
 | 
					 | 
				
			||||||
        hotspotProfileAp.getChildProfileIds().add(profileSsidPsk.getId());
 | 
					 | 
				
			||||||
        hotspotProfileAp.getChildProfileIds().add(profileSsidOpen.getId());
 | 
					 | 
				
			||||||
        hotspotProfileAp.getChildProfileIds().add(createPasspointRfProfile(customerId).getId());
 | 
					 | 
				
			||||||
        return hotspotProfileAp;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static Profile createPasspointRfProfile(int customerId) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Profile profileRf = new Profile();
 | 
					 | 
				
			||||||
        profileRf.setCustomerId(customerId);
 | 
					 | 
				
			||||||
        profileRf.setName("TipWlan-rf-passpoint");
 | 
					 | 
				
			||||||
        RfConfiguration rfConfig = RfConfiguration.createWithDefaults();
 | 
					 | 
				
			||||||
        rfConfig.getRfConfigMap().forEach((x, y) -> y.setRf("TipWlan-rf-passpoint"));
 | 
					 | 
				
			||||||
        profileRf.setDetails(rfConfig);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return profileRf;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static Profile createOsuProviderProfile(int customerId, Profile hotspot20IdProviderProfile,
 | 
					 | 
				
			||||||
            List<PasspointMccMnc> mccMncList, Set<String> realms, String serverUri, String suffix, String domainName,
 | 
					 | 
				
			||||||
            List<Byte> roamingOi) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        PasspointOsuProviderProfile passpointIdProviderProfile = PasspointOsuProviderProfile.createWithDefaults();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        passpointIdProviderProfile.setMccMncList(mccMncList);
 | 
					 | 
				
			||||||
        PasspointOsuIcon icon1 = new PasspointOsuIcon();
 | 
					 | 
				
			||||||
        icon1.setIconLocale(Locale.CANADA);
 | 
					 | 
				
			||||||
        icon1.setIconWidth(32);
 | 
					 | 
				
			||||||
        icon1.setIconHeight(32);
 | 
					 | 
				
			||||||
        icon1.setLanguageCode(Locale.CANADA.getISO3Language());
 | 
					 | 
				
			||||||
        icon1.setIconName("icon32eng");
 | 
					 | 
				
			||||||
        icon1.setImageUrl("https://localhost:9096/icon32eng.png");
 | 
					 | 
				
			||||||
        icon1.setFilePath("/tmp/icon32eng.png");
 | 
					 | 
				
			||||||
        PasspointOsuIcon icon2 = new PasspointOsuIcon();
 | 
					 | 
				
			||||||
        icon2.setIconLocale(Locale.CANADA_FRENCH);
 | 
					 | 
				
			||||||
        icon2.setIconWidth(32);
 | 
					 | 
				
			||||||
        icon2.setIconHeight(32);
 | 
					 | 
				
			||||||
        icon2.setLanguageCode(Locale.CANADA_FRENCH.getISO3Language());
 | 
					 | 
				
			||||||
        icon2.setIconName("icon32fra");
 | 
					 | 
				
			||||||
        icon2.setImageUrl("https://localhost:9096/icon32fra.png");
 | 
					 | 
				
			||||||
        icon2.setFilePath("/tmp/icon32fra.png");
 | 
					 | 
				
			||||||
        PasspointOsuIcon icon3 = new PasspointOsuIcon();
 | 
					 | 
				
			||||||
        icon3.setIconLocale(Locale.US);
 | 
					 | 
				
			||||||
        icon3.setIconWidth(32);
 | 
					 | 
				
			||||||
        icon3.setIconHeight(32);
 | 
					 | 
				
			||||||
        icon3.setLanguageCode(Locale.US.getISO3Language());
 | 
					 | 
				
			||||||
        icon3.setIconName("icon32usa");
 | 
					 | 
				
			||||||
        icon3.setImageUrl("https://localhost:9096/icon32usa.png");
 | 
					 | 
				
			||||||
        icon3.setFilePath("/tmp/icon32usa.png");
 | 
					 | 
				
			||||||
        List<PasspointOsuIcon> osuIconList = new ArrayList<>();
 | 
					 | 
				
			||||||
        osuIconList.add(icon1);
 | 
					 | 
				
			||||||
        osuIconList.add(icon2);
 | 
					 | 
				
			||||||
        osuIconList.add(icon3);
 | 
					 | 
				
			||||||
        passpointIdProviderProfile.setOsuIconList(osuIconList);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        passpointIdProviderProfile.setRoamingOi(roamingOi);
 | 
					 | 
				
			||||||
        List<PasspointNaiRealmInformation> naiRealmList = new ArrayList<>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        PasspointNaiRealmInformation naiRealmInfo = PasspointNaiRealmInformation.createWithDefaults();
 | 
					 | 
				
			||||||
        naiRealmInfo.setNaiRealms(realms);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        naiRealmList.add(naiRealmInfo);
 | 
					 | 
				
			||||||
        passpointIdProviderProfile.setNaiRealmList(naiRealmList);
 | 
					 | 
				
			||||||
        passpointIdProviderProfile.setDomainName(domainName);
 | 
					 | 
				
			||||||
        passpointIdProviderProfile.setOsuNaiStandalone("anonymous@" + domainName);
 | 
					 | 
				
			||||||
        passpointIdProviderProfile.setOsuNaiShared("anonymous@" + domainName);
 | 
					 | 
				
			||||||
        List<Integer> methodList = new ArrayList<>();
 | 
					 | 
				
			||||||
        methodList.add(1);
 | 
					 | 
				
			||||||
        methodList.add(0);
 | 
					 | 
				
			||||||
        passpointIdProviderProfile.setOsuMethodList(methodList);
 | 
					 | 
				
			||||||
        PasspointDuple enOsuProvider = PasspointDuple.createWithDefaults();
 | 
					 | 
				
			||||||
        enOsuProvider.setLocale(Locale.CANADA);
 | 
					 | 
				
			||||||
        enOsuProvider.setDupleName("Example provider " + suffix);
 | 
					 | 
				
			||||||
        PasspointDuple frOsuProvider = PasspointDuple.createWithDefaults();
 | 
					 | 
				
			||||||
        frOsuProvider.setLocale(Locale.CANADA_FRENCH);
 | 
					 | 
				
			||||||
        frOsuProvider.setDupleName("Exemple de fournisseur " + suffix);
 | 
					 | 
				
			||||||
        List<PasspointDuple> friendlyNameList = new ArrayList<>();
 | 
					 | 
				
			||||||
        friendlyNameList.add(enOsuProvider);
 | 
					 | 
				
			||||||
        friendlyNameList.add(frOsuProvider);
 | 
					 | 
				
			||||||
        passpointIdProviderProfile.setOsuFriendlyName(friendlyNameList);
 | 
					 | 
				
			||||||
        List<PasspointDuple> osuServiceDescription = new ArrayList<>();
 | 
					 | 
				
			||||||
        PasspointDuple enService = PasspointDuple.createWithDefaults();
 | 
					 | 
				
			||||||
        enService.setLocale(Locale.CANADA);
 | 
					 | 
				
			||||||
        enService.setDupleName("Example services " + suffix);
 | 
					 | 
				
			||||||
        osuServiceDescription.add(enService);
 | 
					 | 
				
			||||||
        PasspointDuple frService = PasspointDuple.createWithDefaults();
 | 
					 | 
				
			||||||
        frService.setLocale(Locale.CANADA_FRENCH);
 | 
					 | 
				
			||||||
        frService.setDupleName("Exemples de services " + suffix);
 | 
					 | 
				
			||||||
        osuServiceDescription.add(frService);
 | 
					 | 
				
			||||||
        passpointIdProviderProfile.setOsuServiceDescription(osuServiceDescription);
 | 
					 | 
				
			||||||
        passpointIdProviderProfile.setOsuServerUri(serverUri);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        hotspot20IdProviderProfile.setDetails(passpointIdProviderProfile);
 | 
					 | 
				
			||||||
        return hotspot20IdProviderProfile;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static OperationResult[] hs20Config() {
 | 
					 | 
				
			||||||
        List<Row> ret = new ArrayList<>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Map<String, Value> columns = new HashMap<>();
 | 
					 | 
				
			||||||
        columns.put("_uuid", new Atom<>(Uuid.of(UUID.fromString("28f2b88e-d10d-4cae-832d-784210940709"))));
 | 
					 | 
				
			||||||
        columns.put("_version", new Atom<>(Uuid.of(UUID.randomUUID())));
 | 
					 | 
				
			||||||
        columns.put("anqp_domain_id", new Atom<>(1234));
 | 
					 | 
				
			||||||
        columns.put("connection_capability", new Atom<>(" 6:8888:1"));
 | 
					 | 
				
			||||||
        columns.put("deauth_request_timeout", new Atom<>(0));
 | 
					 | 
				
			||||||
        columns.put("domain_name",
 | 
					 | 
				
			||||||
                com.vmware.ovsdb.protocol.operation.notation.Set.of(new Atom<>("rogers.com"), new Atom<>("telus.com")));
 | 
					 | 
				
			||||||
        columns.put("enable", new Atom<>(true));
 | 
					 | 
				
			||||||
        columns.put("gas_addr3_behavior", new Atom<>(0));
 | 
					 | 
				
			||||||
        columns.put("hessid", new Atom<>("26:f5:a2:ef:2e:56"));
 | 
					 | 
				
			||||||
        columns.put("ipaddr_type_availability", new Atom<>(4));
 | 
					 | 
				
			||||||
        columns.put("mcc_mnc", new Atom<>("302,720;302,220"));
 | 
					 | 
				
			||||||
        columns.put("nai_realm", com.vmware.ovsdb.protocol.operation.notation.Set
 | 
					 | 
				
			||||||
                .of(new Atom<>("0,rogers.com,21[5:7][2:4],13[5:6]"), new Atom<>("0,telus.com,21[5:7][2:4],13[5:6]")));
 | 
					 | 
				
			||||||
        columns.put("network_auth_type", new Atom<>("00"));
 | 
					 | 
				
			||||||
        columns.put("operating_class", new Atom<>(0));
 | 
					 | 
				
			||||||
        columns.put("operator_friendly_name",
 | 
					 | 
				
			||||||
                com.vmware.ovsdb.protocol.operation.notation.Set.of(new Atom<>("eng:Default friendly passpoint_operator name"),
 | 
					 | 
				
			||||||
                        new Atom<>("fra:Nom de l'opérateur convivial par défaut")));
 | 
					 | 
				
			||||||
        columns.put("operator_icons",
 | 
					 | 
				
			||||||
                com.vmware.ovsdb.protocol.operation.notation.Set.of(
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("5f2d0e46-92bd-43a1-aa66-94474deb2212"))),
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("7cf892c2-3f04-4851-986c-a7b7d8ad1dfa"))),
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("9449e6cf-de62-4805-855b-3fc9bb5cd3ec")))));
 | 
					 | 
				
			||||||
        columns.put("osen", new Atom<>(false));
 | 
					 | 
				
			||||||
        columns.put("osu_providers",
 | 
					 | 
				
			||||||
                com.vmware.ovsdb.protocol.operation.notation.Set.of(
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("33b78c84-3242-4477-831f-185c6532cfda"))),
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("ae51393c-f9e5-4021-af73-c5ad4b751f88")))));
 | 
					 | 
				
			||||||
        columns.put("osu_ssid", new Atom<>("ssid-open"));
 | 
					 | 
				
			||||||
        columns.put("roaming_oi",
 | 
					 | 
				
			||||||
                com.vmware.ovsdb.protocol.operation.notation.Set.of(new Atom<>("11223344"), new Atom<>("234433")));
 | 
					 | 
				
			||||||
        columns.put("tos", new Atom<>("https://localhost:9091/filestore/termsAndConditions"));
 | 
					 | 
				
			||||||
        columns.put("venue_group_type", new Atom<>("2:8"));
 | 
					 | 
				
			||||||
        columns.put("venue_name", com.vmware.ovsdb.protocol.operation.notation.Set.of(new Atom<>("eng:Example passpoint_venue"),
 | 
					 | 
				
			||||||
                new Atom<>("fra:Exemple de lieu")));
 | 
					 | 
				
			||||||
        columns.put("venue_url", com.vmware.ovsdb.protocol.operation.notation.Set
 | 
					 | 
				
			||||||
                .of(new Atom<>("1:http://www.example.com/info-fra"), new Atom<>("2:http://www.example.com/info-eng")));
 | 
					 | 
				
			||||||
        columns.put("vif_config",
 | 
					 | 
				
			||||||
                com.vmware.ovsdb.protocol.operation.notation.Set.of(
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("66abe4b3-2a26-4769-b684-da70e2392a07"))),
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("fad30b59-fada-41fc-ad62-2afca67cf9d5")))));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OperationResult[] operationResult = new OperationResult[1];
 | 
					 | 
				
			||||||
        SelectResult selectResult = new SelectResult(ret);
 | 
					 | 
				
			||||||
        operationResult[0] = selectResult;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return operationResult;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static OperationResult[] hs20InsertProviderRows() {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        InsertResult insertResult = new InsertResult(Uuid.of(UUID.fromString("33b78c84-3242-4477-831f-185c6532cfda")));
 | 
					 | 
				
			||||||
        InsertResult insertResult2 = new InsertResult(Uuid.of(UUID.fromString("ae51393c-f9e5-4021-af73-c5ad4b751f88")));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OperationResult[] operationResult = new OperationResult[2];
 | 
					 | 
				
			||||||
        operationResult[0] = insertResult;
 | 
					 | 
				
			||||||
        operationResult[1] = insertResult2;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return operationResult;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static OperationResult[] hs20OsuProviders() {
 | 
					 | 
				
			||||||
        List<Row> ret = new ArrayList<>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Map<String, Value> columns = new HashMap<>();
 | 
					 | 
				
			||||||
        columns.put("_uuid", new Atom<>(Uuid.of(UUID.fromString("33b78c84-3242-4477-831f-185c6532cfda"))));
 | 
					 | 
				
			||||||
        columns.put("_version", new Atom<>(Uuid.of(UUID.randomUUID())));
 | 
					 | 
				
			||||||
        columns.put("method_list", com.vmware.ovsdb.protocol.operation.notation.Set.of(new Atom<>(0), new Atom<>(1)));
 | 
					 | 
				
			||||||
        columns.put("osu_friendly_name", com.vmware.ovsdb.protocol.operation.notation.Set
 | 
					 | 
				
			||||||
                .of(new Atom<>("eng:Example provider rogers"), new Atom<>("fra:Exemple de fournisseur rogers")));
 | 
					 | 
				
			||||||
        columns.put("osu_icons",
 | 
					 | 
				
			||||||
                com.vmware.ovsdb.protocol.operation.notation.Set.of(
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("5f2d0e46-92bd-43a1-aa66-94474deb2212"))),
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("7cf892c2-3f04-4851-986c-a7b7d8ad1dfa"))),
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("9449e6cf-de62-4805-855b-3fc9bb5cd3ec")))));
 | 
					 | 
				
			||||||
        columns.put("osu_nai", new Atom<>("anonymous@rogers.com"));
 | 
					 | 
				
			||||||
        columns.put("server_uri", new Atom<>("https://example.com/osu/rogers"));
 | 
					 | 
				
			||||||
        columns.put("service_description", com.vmware.ovsdb.protocol.operation.notation.Set
 | 
					 | 
				
			||||||
                .of(new Atom<>("eng:Example provider rogers"), new Atom<>("fra:Exemple de fournisseur rogers")));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ret.add(new Row(columns));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        columns = new HashMap<>();
 | 
					 | 
				
			||||||
        columns.put("_uuid", new Atom<>(Uuid.of(UUID.fromString("ae51393c-f9e5-4021-af73-c5ad4b751f88"))));
 | 
					 | 
				
			||||||
        columns.put("_version", new Atom<>(Uuid.of(UUID.randomUUID())));
 | 
					 | 
				
			||||||
        columns.put("method_list", com.vmware.ovsdb.protocol.operation.notation.Set.of(new Atom<>(0), new Atom<>(1)));
 | 
					 | 
				
			||||||
        columns.put("osu_friendly_name", com.vmware.ovsdb.protocol.operation.notation.Set
 | 
					 | 
				
			||||||
                .of(new Atom<>("eng:Example provider telus"), new Atom<>("fra:Exemple de fournisseur telus")));
 | 
					 | 
				
			||||||
        columns.put("osu_icons",
 | 
					 | 
				
			||||||
                com.vmware.ovsdb.protocol.operation.notation.Set.of(
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("5f2d0e46-92bd-43a1-aa66-94474deb2212"))),
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("7cf892c2-3f04-4851-986c-a7b7d8ad1dfa"))),
 | 
					 | 
				
			||||||
                        new Atom<>(Uuid.of(UUID.fromString("9449e6cf-de62-4805-855b-3fc9bb5cd3ec")))));
 | 
					 | 
				
			||||||
        columns.put("osu_nai", new Atom<>("anonymous@telus.com"));
 | 
					 | 
				
			||||||
        columns.put("server_uri", new Atom<>("https://example.com/osu/telus"));
 | 
					 | 
				
			||||||
        columns.put("service_description", com.vmware.ovsdb.protocol.operation.notation.Set
 | 
					 | 
				
			||||||
                .of(new Atom<>("eng:Example provider telus"), new Atom<>("fra:Exemple de fournisseur telus")));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OperationResult[] operationResult = new OperationResult[1];
 | 
					 | 
				
			||||||
        SelectResult selectResult = new SelectResult(ret);
 | 
					 | 
				
			||||||
        operationResult[0] = selectResult;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return operationResult;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static OperationResult[] hs20InsertIconRows() {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        UpdateResult insertResult = new UpdateResult(1);
 | 
					 | 
				
			||||||
        UpdateResult insertResult2 = new UpdateResult(2);
 | 
					 | 
				
			||||||
        UpdateResult insertResult3 = new UpdateResult(3);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OperationResult[] operationResult = new OperationResult[3];
 | 
					 | 
				
			||||||
        operationResult[0] = insertResult;
 | 
					 | 
				
			||||||
        operationResult[1] = insertResult2;
 | 
					 | 
				
			||||||
        operationResult[2] = insertResult3;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return operationResult;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static OperationResult[] hs20IconRows() {
 | 
					 | 
				
			||||||
        List<Row> ret = new ArrayList<>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Map<String, Value> columns = new HashMap<>();
 | 
					 | 
				
			||||||
        columns.put("_uuid", new Atom<>(Uuid.of(UUID.fromString("5f2d0e46-92bd-43a1-aa66-94474deb2212"))));
 | 
					 | 
				
			||||||
        columns.put("_version", new Atom<>(Uuid.of(UUID.randomUUID())));
 | 
					 | 
				
			||||||
        columns.put("height", new Atom<>(32L));
 | 
					 | 
				
			||||||
        columns.put("img_type", new Atom<>("image/png"));
 | 
					 | 
				
			||||||
        columns.put("lang_code", new Atom<>("eng"));
 | 
					 | 
				
			||||||
        columns.put("name", new Atom<>("icon32usa"));
 | 
					 | 
				
			||||||
        columns.put("path", new Atom<String>("/tmp/icon32usa.png"));
 | 
					 | 
				
			||||||
        columns.put("url", new Atom<String>("https://localhost:9096/icon32usa.png"));
 | 
					 | 
				
			||||||
        columns.put("width", new Atom<>(32L));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ret.add(new Row(columns));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        columns = new HashMap<>();
 | 
					 | 
				
			||||||
        columns.put("_uuid", new Atom<>(Uuid.of(UUID.fromString("7cf892c2-3f04-4851-986c-a7b7d8ad1dfa"))));
 | 
					 | 
				
			||||||
        columns.put("_version", new Atom<>(Uuid.of(UUID.randomUUID())));
 | 
					 | 
				
			||||||
        columns.put("height", new Atom<>(32L));
 | 
					 | 
				
			||||||
        columns.put("img_type", new Atom<>("image/png"));
 | 
					 | 
				
			||||||
        columns.put("lang_code", new Atom<>("eng"));
 | 
					 | 
				
			||||||
        columns.put("name", new Atom<>("icon32eng"));
 | 
					 | 
				
			||||||
        columns.put("path", new Atom<String>("/tmp/icon32eng.png"));
 | 
					 | 
				
			||||||
        columns.put("url", new Atom<String>("https://localhost:9096/icon32eng.png"));
 | 
					 | 
				
			||||||
        columns.put("width", new Atom<>(32L));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ret.add(new Row(columns));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        columns = new HashMap<>();
 | 
					 | 
				
			||||||
        columns.put("_uuid", new Atom<>(Uuid.of(UUID.fromString("9449e6cf-de62-4805-855b-3fc9bb5cd3ec"))));
 | 
					 | 
				
			||||||
        columns.put("_version", new Atom<>(Uuid.of(UUID.randomUUID())));
 | 
					 | 
				
			||||||
        columns.put("height", new Atom<>(32L));
 | 
					 | 
				
			||||||
        columns.put("img_type", new Atom<>("image/png"));
 | 
					 | 
				
			||||||
        columns.put("lang_code", new Atom<>("fra"));
 | 
					 | 
				
			||||||
        columns.put("name", new Atom<>("icon32fra"));
 | 
					 | 
				
			||||||
        columns.put("path", new Atom<String>("/tmp/icon32fra.png"));
 | 
					 | 
				
			||||||
        columns.put("url", new Atom<String>("https://localhost:9096/icon32fra.png"));
 | 
					 | 
				
			||||||
        columns.put("width", new Atom<>(32L));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        ret.add(new Row(columns));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        SelectResult selectResult = new SelectResult(ret);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OperationResult[] operationResult = new OperationResult[1];
 | 
					 | 
				
			||||||
        operationResult[0] = selectResult;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return operationResult;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static OperationResult[] vifConfigRows() {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        List<Row> ret = new ArrayList<>();
 | 
					 | 
				
			||||||
        Row row = new Row(new HashMap<String, Value>());
 | 
					 | 
				
			||||||
        row.getColumns().put("_uuid", new Atom<>(Uuid.of(UUID.fromString("66abe4b3-2a26-4769-b684-da70e2392a07"))));
 | 
					 | 
				
			||||||
        row.getColumns().put("ssid", new Atom<>("ssid-access"));
 | 
					 | 
				
			||||||
        row.getColumns().put("mac", new Atom<>("26:f5:a2:ef:2e:56"));
 | 
					 | 
				
			||||||
        row.getColumns().put("if_name", new Atom<>("wlan0"));
 | 
					 | 
				
			||||||
        ret.add(row);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Row row2 = new Row(new HashMap<String, Value>());
 | 
					 | 
				
			||||||
        row2.getColumns().put("_uuid", new Atom<>(Uuid.of(UUID.fromString("fad30b59-fada-41fc-ad62-2afca67cf9d5"))));
 | 
					 | 
				
			||||||
        row2.getColumns().put("ssid", new Atom<>("ssid-access"));
 | 
					 | 
				
			||||||
        row2.getColumns().put("mac", new Atom<>("24:f5:a2:ef:2e:54"));
 | 
					 | 
				
			||||||
        row2.getColumns().put("if_name", new Atom<>("wlan2"));
 | 
					 | 
				
			||||||
        ret.add(row2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Row row3 = new Row(new HashMap<String, Value>());
 | 
					 | 
				
			||||||
        row3.getColumns().put("_uuid", new Atom<>(Uuid.of(UUID.randomUUID())));
 | 
					 | 
				
			||||||
        row3.getColumns().put("ssid", new Atom<>("ssid-open"));
 | 
					 | 
				
			||||||
        row3.getColumns().put("mac", new Atom<>("24:f5:a2:ef:2e:55"));
 | 
					 | 
				
			||||||
        row3.getColumns().put("if_name", new Atom<>("wlan1"));
 | 
					 | 
				
			||||||
        ret.add(row3);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        SelectResult selectResult = new SelectResult(ret);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OperationResult[] operationResult = new OperationResult[1];
 | 
					 | 
				
			||||||
        operationResult[0] = selectResult;
 | 
					 | 
				
			||||||
        return operationResult;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    static OperationResult[] vifStates() {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        List<Row> ret = new ArrayList<>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Row row = new Row(new HashMap<String, Value>());
 | 
					 | 
				
			||||||
        row.getColumns().put("_uuid", new Atom<>(Uuid.of(UUID.fromString("66abe4b3-2a26-4769-b684-da70e2392a07"))));
 | 
					 | 
				
			||||||
        row.getColumns().put("ssid", new Atom<>("ssid-access"));
 | 
					 | 
				
			||||||
        row.getColumns().put("if_name", new Atom<>("wlan0"));
 | 
					 | 
				
			||||||
        ret.add(row);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Row row2 = new Row(new HashMap<String, Value>());
 | 
					 | 
				
			||||||
        row2.getColumns().put("_uuid", new Atom<>(Uuid.of(UUID.fromString("fad30b59-fada-41fc-ad62-2afca67cf9d5"))));
 | 
					 | 
				
			||||||
        row2.getColumns().put("ssid", new Atom<>("ssid-access"));
 | 
					 | 
				
			||||||
        row2.getColumns().put("if_name", new Atom<>("wlan2"));
 | 
					 | 
				
			||||||
        ret.add(row2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Row row3 = new Row(new HashMap<String, Value>());
 | 
					 | 
				
			||||||
        row3.getColumns().put("_uuid", new Atom<>(Uuid.of(UUID.randomUUID())));
 | 
					 | 
				
			||||||
        row3.getColumns().put("ssid", new Atom<>("ssid-open"));
 | 
					 | 
				
			||||||
        row3.getColumns().put("if_name", new Atom<>("wlan1"));
 | 
					 | 
				
			||||||
        ret.add(row3);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        SelectResult selectResult = new SelectResult(ret);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        OperationResult[] operationResult = new OperationResult[1];
 | 
					 | 
				
			||||||
        operationResult[0].equals(selectResult);
 | 
					 | 
				
			||||||
        return operationResult;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    static Profile createRadiusProfile(int customerId) {
 | 
					 | 
				
			||||||
        Profile profileRadius = new Profile();
 | 
					 | 
				
			||||||
        profileRadius.setCustomerId(customerId);
 | 
					 | 
				
			||||||
        profileRadius.setProfileType(ProfileType.radius);
 | 
					 | 
				
			||||||
        profileRadius.setName("Radius-Profile");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        RadiusProfile radiusDetails = new RadiusProfile();
 | 
					 | 
				
			||||||
        RadiusServiceRegion radiusServiceRegion = new RadiusServiceRegion();
 | 
					 | 
				
			||||||
        RadiusServer radiusServer = new RadiusServer();
 | 
					 | 
				
			||||||
        radiusServer.setAuthPort(1812);
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            radiusServer.setIpAddress(InetAddress.getByName("192.168.0.1"));
 | 
					 | 
				
			||||||
        } catch (UnknownHostException e) {
 | 
					 | 
				
			||||||
            throw new IllegalArgumentException(e);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        radiusServer.setSecret("testing123");
 | 
					 | 
				
			||||||
        radiusServiceRegion.addRadiusServer("Radius-Profile", radiusServer);
 | 
					 | 
				
			||||||
        radiusServiceRegion.setRegionName("Ottawa");
 | 
					 | 
				
			||||||
        radiusDetails.addRadiusServiceRegion(radiusServiceRegion);
 | 
					 | 
				
			||||||
        profileRadius.setDetails(radiusDetails);
 | 
					 | 
				
			||||||
        return profileRadius;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -0,0 +1,110 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"vif_radio_idx": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"if_name": "home-ap-24",
 | 
				
			||||||
 | 
						"state": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac": "24:f5:a2:ef:2e:54",
 | 
				
			||||||
 | 
						"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
 | 
						"uapsd_enable": true,
 | 
				
			||||||
 | 
						"ap_bridge": false,
 | 
				
			||||||
 | 
						"wps_pbc": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac_list": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"associated_clients": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"btm": 1,
 | 
				
			||||||
 | 
						"_uuid": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"a007d865-fe4b-4265-a9a1-69d4b309e939"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ssid_broadcast": "enabled",
 | 
				
			||||||
 | 
						"wps": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mcast2ucast": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mode": "ap",
 | 
				
			||||||
 | 
						"mac_list_type": "none",
 | 
				
			||||||
 | 
						"wps_pbc_key_id": "",
 | 
				
			||||||
 | 
						"ft_psk": 0,
 | 
				
			||||||
 | 
						"channel": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"parent": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"multi_ap": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ap_vlan_sta_addr": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"security": [
 | 
				
			||||||
 | 
							"map",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
								[
 | 
				
			||||||
 | 
									"encryption",
 | 
				
			||||||
 | 
									"OPEN"
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"wds": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"enabled": true,
 | 
				
			||||||
 | 
						"vlan_id": 1,
 | 
				
			||||||
 | 
						"min_hw_mode": "11n",
 | 
				
			||||||
 | 
						"vif_config": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"fc3de7db-ee6c-452c-859c-1be81b0b5b24"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"_version": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"a96bff45-29bd-423b-9014-10a418683e5d"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"bridge": "lan",
 | 
				
			||||||
 | 
						"group_rekey": 0,
 | 
				
			||||||
 | 
						"ft_mobility_domain": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"dynamic_beacon": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"rrm": 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,109 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"vif_radio_idx": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"if_name": "home-ap-l50",
 | 
				
			||||||
 | 
						"state": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac": "24:f5:a2:ef:2e:55",
 | 
				
			||||||
 | 
						"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
 | 
						"uapsd_enable": true,
 | 
				
			||||||
 | 
						"ap_bridge": false,
 | 
				
			||||||
 | 
						"wps_pbc": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac_list": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"associated_clients": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"073c3961-33fe-4054-abc6-ae2e8b91c914"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"btm": 1,
 | 
				
			||||||
 | 
						"_uuid": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"7ebfab8d-0962-4af3-a45b-b5a9d68c86c8"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ssid_broadcast": "enabled",
 | 
				
			||||||
 | 
						"wps": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mcast2ucast": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mode": "ap",
 | 
				
			||||||
 | 
						"mac_list_type": "none",
 | 
				
			||||||
 | 
						"wps_pbc_key_id": "",
 | 
				
			||||||
 | 
						"ft_psk": 0,
 | 
				
			||||||
 | 
						"channel": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"parent": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"multi_ap": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ap_vlan_sta_addr": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"security": [
 | 
				
			||||||
 | 
							"map",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
								[
 | 
				
			||||||
 | 
									"encryption",
 | 
				
			||||||
 | 
									"OPEN"
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"wds": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"enabled": true,
 | 
				
			||||||
 | 
						"vlan_id": 1,
 | 
				
			||||||
 | 
						"min_hw_mode": "11ac",
 | 
				
			||||||
 | 
						"vif_config": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"54c01e8b-4d67-456e-ab18-cbc89c784c2a"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"_version": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"faec64fb-fbc1-417a-9ff4-f30ff2c5be94"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"bridge": "lan",
 | 
				
			||||||
 | 
						"group_rekey": 0,
 | 
				
			||||||
 | 
						"ft_mobility_domain": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"dynamic_beacon": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"rrm": 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,109 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"vif_radio_idx": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"if_name": "home-ap-u50",
 | 
				
			||||||
 | 
						"state": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac": "26:f5:a2:ef:2e:56",
 | 
				
			||||||
 | 
						"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
 | 
						"uapsd_enable": true,
 | 
				
			||||||
 | 
						"ap_bridge": false,
 | 
				
			||||||
 | 
						"wps_pbc": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac_list": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"associated_clients": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"c9f5a30d-7ccf-406f-a0d8-f108b377584e"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"btm": 1,
 | 
				
			||||||
 | 
						"_uuid": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"009e6ee9-d687-4201-9c55-f42d26cbd7b5"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ssid_broadcast": "enabled",
 | 
				
			||||||
 | 
						"wps": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mcast2ucast": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mode": "ap",
 | 
				
			||||||
 | 
						"mac_list_type": "none",
 | 
				
			||||||
 | 
						"wps_pbc_key_id": "",
 | 
				
			||||||
 | 
						"ft_psk": 0,
 | 
				
			||||||
 | 
						"channel": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"parent": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"multi_ap": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ap_vlan_sta_addr": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"security": [
 | 
				
			||||||
 | 
							"map",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
								[
 | 
				
			||||||
 | 
									"encryption",
 | 
				
			||||||
 | 
									"OPEN"
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"wds": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"enabled": true,
 | 
				
			||||||
 | 
						"vlan_id": 1,
 | 
				
			||||||
 | 
						"min_hw_mode": "11ac",
 | 
				
			||||||
 | 
						"vif_config": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"4aeefd3b-b86f-45e4-a9a1-c734363be9c8"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"_version": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"e70c7842-6257-46d1-94d3-350a55733fc4"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"bridge": "lan",
 | 
				
			||||||
 | 
						"group_rekey": 0,
 | 
				
			||||||
 | 
						"ft_mobility_domain": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"dynamic_beacon": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"rrm": 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,110 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"vif_radio_idx": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"if_name": "home-ap-24",
 | 
				
			||||||
 | 
						"state": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac": "24:f5:a2:ef:2e:54",
 | 
				
			||||||
 | 
						"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
 | 
						"uapsd_enable": true,
 | 
				
			||||||
 | 
						"ap_bridge": false,
 | 
				
			||||||
 | 
						"wps_pbc": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac_list": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"associated_clients": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"btm": 1,
 | 
				
			||||||
 | 
						"_uuid": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"a007d865-fe4b-4265-a9a1-69d4b309e939"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ssid_broadcast": "enabled",
 | 
				
			||||||
 | 
						"wps": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mcast2ucast": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mode": "ap",
 | 
				
			||||||
 | 
						"mac_list_type": "none",
 | 
				
			||||||
 | 
						"wps_pbc_key_id": "",
 | 
				
			||||||
 | 
						"ft_psk": 0,
 | 
				
			||||||
 | 
						"channel": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"parent": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"multi_ap": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ap_vlan_sta_addr": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"security": [
 | 
				
			||||||
 | 
							"map",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
								[
 | 
				
			||||||
 | 
									"encryption",
 | 
				
			||||||
 | 
									"OPEN"
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"wds": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"enabled": true,
 | 
				
			||||||
 | 
						"vlan_id": 1,
 | 
				
			||||||
 | 
						"min_hw_mode": "11n",
 | 
				
			||||||
 | 
						"vif_config": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"fc3de7db-ee6c-452c-859c-1be81b0b5b24"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"_version": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"a96bff45-29bd-423b-9014-10a418683e5d"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"bridge": "lan",
 | 
				
			||||||
 | 
						"group_rekey": 0,
 | 
				
			||||||
 | 
						"ft_mobility_domain": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"dynamic_beacon": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"rrm": 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,109 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"vif_radio_idx": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"if_name": "home-ap-l50",
 | 
				
			||||||
 | 
						"state": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac": "24:f5:a2:ef:2e:55",
 | 
				
			||||||
 | 
						"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
 | 
						"uapsd_enable": true,
 | 
				
			||||||
 | 
						"ap_bridge": false,
 | 
				
			||||||
 | 
						"wps_pbc": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac_list": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"associated_clients": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"073c3961-33fe-4054-abc6-ae2e8b91c914"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"btm": 1,
 | 
				
			||||||
 | 
						"_uuid": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"7ebfab8d-0962-4af3-a45b-b5a9d68c86c8"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ssid_broadcast": "enabled",
 | 
				
			||||||
 | 
						"wps": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mcast2ucast": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mode": "ap",
 | 
				
			||||||
 | 
						"mac_list_type": "none",
 | 
				
			||||||
 | 
						"wps_pbc_key_id": "",
 | 
				
			||||||
 | 
						"ft_psk": 0,
 | 
				
			||||||
 | 
						"channel": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"parent": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"multi_ap": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ap_vlan_sta_addr": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"security": [
 | 
				
			||||||
 | 
							"map",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
								[
 | 
				
			||||||
 | 
									"encryption",
 | 
				
			||||||
 | 
									"OPEN"
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"wds": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"enabled": true,
 | 
				
			||||||
 | 
						"vlan_id": 1,
 | 
				
			||||||
 | 
						"min_hw_mode": "11ac",
 | 
				
			||||||
 | 
						"vif_config": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"54c01e8b-4d67-456e-ab18-cbc89c784c2a"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"_version": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"faec64fb-fbc1-417a-9ff4-f30ff2c5be94"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"bridge": "lan",
 | 
				
			||||||
 | 
						"group_rekey": 0,
 | 
				
			||||||
 | 
						"ft_mobility_domain": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"dynamic_beacon": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"rrm": 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,109 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"vif_radio_idx": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"if_name": "home-ap-u50",
 | 
				
			||||||
 | 
						"state": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac": "26:f5:a2:ef:2e:56",
 | 
				
			||||||
 | 
						"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
 | 
						"uapsd_enable": true,
 | 
				
			||||||
 | 
						"ap_bridge": false,
 | 
				
			||||||
 | 
						"wps_pbc": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac_list": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"associated_clients": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"c9f5a30d-7ccf-406f-a0d8-f108b377584e"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"btm": 1,
 | 
				
			||||||
 | 
						"_uuid": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"009e6ee9-d687-4201-9c55-f42d26cbd7b5"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ssid_broadcast": "enabled",
 | 
				
			||||||
 | 
						"wps": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mcast2ucast": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mode": "ap",
 | 
				
			||||||
 | 
						"mac_list_type": "none",
 | 
				
			||||||
 | 
						"wps_pbc_key_id": "",
 | 
				
			||||||
 | 
						"ft_psk": 0,
 | 
				
			||||||
 | 
						"channel": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"parent": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"multi_ap": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ap_vlan_sta_addr": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"security": [
 | 
				
			||||||
 | 
							"map",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
								[
 | 
				
			||||||
 | 
									"encryption",
 | 
				
			||||||
 | 
									"OPEN"
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"wds": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"enabled": true,
 | 
				
			||||||
 | 
						"vlan_id": 1,
 | 
				
			||||||
 | 
						"min_hw_mode": "11ac",
 | 
				
			||||||
 | 
						"vif_config": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"4aeefd3b-b86f-45e4-a9a1-c734363be9c8"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"_version": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"e70c7842-6257-46d1-94d3-350a55733fc4"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"bridge": "lan",
 | 
				
			||||||
 | 
						"group_rekey": 0,
 | 
				
			||||||
 | 
						"ft_mobility_domain": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"dynamic_beacon": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"rrm": 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,110 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"vif_radio_idx": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"if_name": "home-ap-24",
 | 
				
			||||||
 | 
						"state": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac": "24:f5:a2:ef:2e:54",
 | 
				
			||||||
 | 
						"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
 | 
						"uapsd_enable": true,
 | 
				
			||||||
 | 
						"ap_bridge": false,
 | 
				
			||||||
 | 
						"wps_pbc": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac_list": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"associated_clients": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"btm": 1,
 | 
				
			||||||
 | 
						"_uuid": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"a007d865-fe4b-4265-a9a1-69d4b309e939"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ssid_broadcast": "enabled",
 | 
				
			||||||
 | 
						"wps": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mcast2ucast": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mode": "ap",
 | 
				
			||||||
 | 
						"mac_list_type": "none",
 | 
				
			||||||
 | 
						"wps_pbc_key_id": "",
 | 
				
			||||||
 | 
						"ft_psk": 0,
 | 
				
			||||||
 | 
						"channel": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"parent": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"multi_ap": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ap_vlan_sta_addr": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"security": [
 | 
				
			||||||
 | 
							"map",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
								[
 | 
				
			||||||
 | 
									"encryption",
 | 
				
			||||||
 | 
									"OPEN"
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"wds": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"enabled": true,
 | 
				
			||||||
 | 
						"vlan_id": 1,
 | 
				
			||||||
 | 
						"min_hw_mode": "11n",
 | 
				
			||||||
 | 
						"vif_config": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"fc3de7db-ee6c-452c-859c-1be81b0b5b24"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"_version": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"a96bff45-29bd-423b-9014-10a418683e5d"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"bridge": "lan",
 | 
				
			||||||
 | 
						"group_rekey": 0,
 | 
				
			||||||
 | 
						"ft_mobility_domain": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"dynamic_beacon": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"rrm": 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,109 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"vif_radio_idx": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"if_name": "home-ap-l50",
 | 
				
			||||||
 | 
						"state": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac": "24:f5:a2:ef:2e:55",
 | 
				
			||||||
 | 
						"ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
 | 
						"uapsd_enable": true,
 | 
				
			||||||
 | 
						"ap_bridge": false,
 | 
				
			||||||
 | 
						"wps_pbc": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mac_list": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"associated_clients": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"073c3961-33fe-4054-abc6-ae2e8b91c914"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"btm": 1,
 | 
				
			||||||
 | 
						"_uuid": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"7ebfab8d-0962-4af3-a45b-b5a9d68c86c8"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ssid_broadcast": "enabled",
 | 
				
			||||||
 | 
						"wps": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mcast2ucast": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"mode": "ap",
 | 
				
			||||||
 | 
						"mac_list_type": "none",
 | 
				
			||||||
 | 
						"wps_pbc_key_id": "",
 | 
				
			||||||
 | 
						"ft_psk": 0,
 | 
				
			||||||
 | 
						"channel": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"parent": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"multi_ap": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"ap_vlan_sta_addr": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"security": [
 | 
				
			||||||
 | 
							"map",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
								[
 | 
				
			||||||
 | 
									"encryption",
 | 
				
			||||||
 | 
									"OPEN"
 | 
				
			||||||
 | 
								]
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"wds": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"enabled": true,
 | 
				
			||||||
 | 
						"vlan_id": 1,
 | 
				
			||||||
 | 
						"min_hw_mode": "11ac",
 | 
				
			||||||
 | 
						"vif_config": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"54c01e8b-4d67-456e-ab18-cbc89c784c2a"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"_version": [
 | 
				
			||||||
 | 
							"uuid",
 | 
				
			||||||
 | 
							"faec64fb-fbc1-417a-9ff4-f30ff2c5be94"
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"bridge": "lan",
 | 
				
			||||||
 | 
						"group_rekey": 0,
 | 
				
			||||||
 | 
						"ft_mobility_domain": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"dynamic_beacon": [
 | 
				
			||||||
 | 
							"set",
 | 
				
			||||||
 | 
							[
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						"rrm": 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,96 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "vif_radio_idx": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "if_name": "home-ap-u50",
 | 
				
			||||||
 | 
					    "state": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "mac": "26:f5:a2:ef:2e:56",
 | 
				
			||||||
 | 
					    "ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
 | 
					    "uapsd_enable": true,
 | 
				
			||||||
 | 
					    "ap_bridge": false,
 | 
				
			||||||
 | 
					    "wps_pbc": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "mac_list": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "associated_clients": [
 | 
				
			||||||
 | 
					        "uuid",
 | 
				
			||||||
 | 
					        "c9f5a30d-7ccf-406f-a0d8-f108b377584e"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "btm": 1,
 | 
				
			||||||
 | 
					    "_uuid": [
 | 
				
			||||||
 | 
					        "uuid",
 | 
				
			||||||
 | 
					        "009e6ee9-d687-4201-9c55-f42d26cbd7b5"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "ssid_broadcast": "enabled",
 | 
				
			||||||
 | 
					    "wps": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "mcast2ucast": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "mode": "ap",
 | 
				
			||||||
 | 
					    "mac_list_type": "none",
 | 
				
			||||||
 | 
					    "wps_pbc_key_id": "",
 | 
				
			||||||
 | 
					    "ft_psk": 0,
 | 
				
			||||||
 | 
					    "channel": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "parent": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "multi_ap": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "ap_vlan_sta_addr": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "security": [
 | 
				
			||||||
 | 
					        "map",
 | 
				
			||||||
 | 
					        [
 | 
				
			||||||
 | 
					            [
 | 
				
			||||||
 | 
					                "encryption",
 | 
				
			||||||
 | 
					                "OPEN"
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "wds": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "enabled": true,
 | 
				
			||||||
 | 
					    "vlan_id": 1,
 | 
				
			||||||
 | 
					    "min_hw_mode": "11ac",
 | 
				
			||||||
 | 
					    "vif_config": [
 | 
				
			||||||
 | 
					        "uuid",
 | 
				
			||||||
 | 
					        "4aeefd3b-b86f-45e4-a9a1-c734363be9c8"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "_version": [
 | 
				
			||||||
 | 
					        "uuid",
 | 
				
			||||||
 | 
					        "e70c7842-6257-46d1-94d3-350a55733fc4"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "bridge": "lan",
 | 
				
			||||||
 | 
					    "group_rekey": 0,
 | 
				
			||||||
 | 
					    "ft_mobility_domain": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "dynamic_beacon": [
 | 
				
			||||||
 | 
					        "set",
 | 
				
			||||||
 | 
					        []
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "rrm": 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user