mirror of
				https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
				synced 2025-11-03 20:17:53 +00:00 
			
		
		
		
	Compare commits
	
		
			32 Commits
		
	
	
		
			feature/NE
			...
			20201204-1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					b8cd98017d | ||
| 
						 | 
					0c89e6c624 | ||
| 
						 | 
					becf59dc0f | ||
| 
						 | 
					feff3d6530 | ||
| 
						 | 
					2e7a090722 | ||
| 
						 | 
					6ece024535 | ||
| 
						 | 
					4837b0e026 | ||
| 
						 | 
					0eca082a4d | ||
| 
						 | 
					db4672a9a2 | ||
| 
						 | 
					9e58a9d7b7 | ||
| 
						 | 
					f083c3488c | ||
| 
						 | 
					b28655a5bd | ||
| 
						 | 
					124b6054b5 | ||
| 
						 | 
					d79917d20f | ||
| 
						 | 
					c0bb71aed2 | ||
| 
						 | 
					5e32798159 | ||
| 
						 | 
					01fa2d3977 | ||
| 
						 | 
					f0daa18906 | ||
| 
						 | 
					d6d454bfc1 | ||
| 
						 | 
					f30b1ca02e | ||
| 
						 | 
					84f3d4ea5d | ||
| 
						 | 
					a5fb061359 | ||
| 
						 | 
					d8ff2f1a31 | ||
| 
						 | 
					1d1b5f1c42 | ||
| 
						 | 
					74587349fe | ||
| 
						 | 
					b463d6720a | ||
| 
						 | 
					036bd8ccc2 | ||
| 
						 | 
					eebdfba431 | ||
| 
						 | 
					52a5a2ac72 | ||
| 
						 | 
					44b3d5e526 | ||
| 
						 | 
					f9ece26ccf | ||
| 
						 | 
					dc8e22a1b5 | 
@@ -13,21 +13,17 @@
 | 
			
		||||
	<name>opensync-ext-cloud</name>
 | 
			
		||||
	<description>Configuration interface that provides config from the cloud services.</description>
 | 
			
		||||
	<dependencies>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
			<artifactId>opensync-ext-interface</artifactId>
 | 
			
		||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
			
		||||
		</dependency>
 | 
			
		||||
<!-- 		<dependency> -->
 | 
			
		||||
<!-- 			<groupId>com.telecominfraproject.wlan</groupId> -->
 | 
			
		||||
<!-- 			<artifactId>opensync-ext-interface</artifactId> -->
 | 
			
		||||
<!-- 			<version>${tip-wlan-cloud.release.version}</version> -->
 | 
			
		||||
<!-- 		</dependency> -->
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
			<artifactId>opensync-gateway</artifactId>
 | 
			
		||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
			
		||||
		</dependency>
 | 
			
		||||
 	  <dependency>
 | 
			
		||||
        <artifactId>base-container</artifactId>
 | 
			
		||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
			
		||||
      </dependency>
 | 
			
		||||
 	 
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <artifactId>base-client</artifactId>
 | 
			
		||||
            <groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
 
 | 
			
		||||
@@ -11,14 +11,10 @@ import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.PostConstruct;
 | 
			
		||||
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.cache.Cache;
 | 
			
		||||
import org.springframework.cache.CacheManager;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
 | 
			
		||||
import com.google.common.collect.ImmutableSet;
 | 
			
		||||
@@ -70,8 +66,8 @@ import com.telecominfraproject.wlan.opensync.external.integration.models.Opensyn
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAWLANNode;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncWifiAssociatedClients;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.enumerations.DhcpFpDeviceType;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities.OvsdbStringConstants;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities.OvsdbToWlanCloudTypeMappingUtility;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.util.OvsdbStringConstants;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.util.OvsdbToWlanCloudTypeMappingUtility;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.models.Profile;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.models.ProfileContainer;
 | 
			
		||||
@@ -158,32 +154,10 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
	@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_wan_name:wan}")
 | 
			
		||||
	public String defaultWanInterfaceName;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private CacheManager cacheManagerShortLived;
 | 
			
		||||
    private Cache cloudEquipmentRecordCache;
 | 
			
		||||
 | 
			
		||||
    @PostConstruct
 | 
			
		||||
    private void postCreate() {
 | 
			
		||||
        LOG.info("Using Cloud integration");
 | 
			
		||||
        cloudEquipmentRecordCache = cacheManagerShortLived.getCache("equipment_record_cache");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Equipment getCustomerEquipment(String apId) {
 | 
			
		||||
        Equipment ce = null;
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            ce = cloudEquipmentRecordCache.get(apId, () -> equipmentServiceInterface.getByInventoryIdOrNull(apId));
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            LOG.error("Could not get customer equipment for {}", apId, e);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return ce;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void apConnected(String apId, ConnectNodeInfo connectNodeInfo) {
 | 
			
		||||
 | 
			
		||||
        Equipment ce = getCustomerEquipment(apId);
 | 
			
		||||
		Equipment ce = equipmentServiceInterface.getByInventoryIdOrNull(apId);
 | 
			
		||||
 | 
			
		||||
		try {
 | 
			
		||||
			if (ce == null) {
 | 
			
		||||
@@ -239,6 +213,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
				ce.setDetails(ApElementConfiguration.createWithDefaults());
 | 
			
		||||
				ce.setCustomerId(autoProvisionedCustomerId);
 | 
			
		||||
				ce.setName(apId);			
 | 
			
		||||
				ce = equipmentServiceInterface.create(ce);
 | 
			
		||||
				
 | 
			
		||||
				ApElementConfiguration apElementConfig = (ApElementConfiguration) ce.getDetails();
 | 
			
		||||
				apElementConfig.setDeviceName(ce.getName());
 | 
			
		||||
@@ -298,11 +273,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
 | 
			
		||||
				ce.setProfileId(profileId);
 | 
			
		||||
 | 
			
		||||
                ce = equipmentServiceInterface.create(ce);
 | 
			
		||||
 | 
			
		||||
                // update the cache right away, no need to wait until the
 | 
			
		||||
                // entry expires
 | 
			
		||||
                cloudEquipmentRecordCache.put(ce.getInventoryId(), ce);
 | 
			
		||||
				ce = equipmentServiceInterface.update(ce);
 | 
			
		||||
 | 
			
		||||
			} else {
 | 
			
		||||
				// equipment already exists
 | 
			
		||||
@@ -324,9 +295,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
						ce.setBaseMacAddress(reportedMacAddress);
 | 
			
		||||
						ce = equipmentServiceInterface.update(ce);
 | 
			
		||||
 | 
			
		||||
                        // update the cache right away, no need to wait
 | 
			
		||||
                        // until the entry expires
 | 
			
		||||
                        cloudEquipmentRecordCache.put(ce.getInventoryId(), ce);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
@@ -490,7 +458,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			protocolStatusData.setCloudCfgDataVersion(42L);
 | 
			
		||||
			protocolStatusData.setReportedCfgDataVersion(42L);
 | 
			
		||||
			protocolStatusData.setCountryCode("CA");
 | 
			
		||||
            protocolStatusData.setReportedCC(CountryCode.ca);
 | 
			
		||||
			protocolStatusData.setReportedCC(CountryCode.CA);
 | 
			
		||||
			protocolStatusData.setReportedHwVersion(connectNodeInfo.platformVersion);
 | 
			
		||||
			if (connectNodeInfo.versionMatrix.containsKey(OvsdbStringConstants.FW_IMAGE_ACTIVE_KEY)) {
 | 
			
		||||
				protocolStatusData.setReportedSwVersion(
 | 
			
		||||
@@ -572,6 +540,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
				networkAdminStatusRec = new Status();
 | 
			
		||||
				networkAdminStatusRec.setCustomerId(ce.getCustomerId());
 | 
			
		||||
				networkAdminStatusRec.setEquipmentId(ce.getId());
 | 
			
		||||
				networkAdminStatusRec.setStatusDataType(StatusDataType.NETWORK_ADMIN);
 | 
			
		||||
				NetworkAdminStatusData statusData = new NetworkAdminStatusData();
 | 
			
		||||
				networkAdminStatusRec.setDetails(statusData);
 | 
			
		||||
			}
 | 
			
		||||
@@ -580,13 +549,15 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			netAdminStatusData.setDhcpStatus(StatusCode.normal);
 | 
			
		||||
			netAdminStatusData.setCloudLinkStatus(StatusCode.normal);
 | 
			
		||||
			netAdminStatusData.setDnsStatus(StatusCode.normal);
 | 
			
		||||
			netAdminStatusData.setRadiusStatus(StatusCode.normal);
 | 
			
		||||
 | 
			
		||||
			networkAdminStatusRec.setDetails(netAdminStatusData);
 | 
			
		||||
 | 
			
		||||
			networkAdminStatusRec = statusServiceInterface.update(networkAdminStatusRec);
 | 
			
		||||
 | 
			
		||||
		} catch (Exception e) {
 | 
			
		||||
            LOG.debug("Exception in updateApStatus", e);
 | 
			
		||||
			LOG.error("Exception in updateApStatus", e);
 | 
			
		||||
			throw e;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
@@ -760,14 +731,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			OvsdbSession ovsdbSession = ovsdbSessionMapInterface.getSession(apId);
 | 
			
		||||
 | 
			
		||||
			if (ovsdbSession != null) {
 | 
			
		||||
                // if (ovsdbSession.getCustomerId() > 0 &&
 | 
			
		||||
                // ovsdbSession.getEquipmentId() > 0L) {
 | 
			
		||||
                // List<Status> statusForDisconnectedAp =
 | 
			
		||||
                // statusServiceInterface.delete(ovsdbSession.getCustomerId(),
 | 
			
		||||
                // ovsdbSession.getEquipmentId());
 | 
			
		||||
                // LOG.info("Deleted status records {} for AP {}",
 | 
			
		||||
                // statusForDisconnectedAp, apId);
 | 
			
		||||
                // }
 | 
			
		||||
				if (ovsdbSession.getRoutingId() > 0L) {
 | 
			
		||||
					try {
 | 
			
		||||
						routingServiceInterface.delete(ovsdbSession.getRoutingId());
 | 
			
		||||
@@ -779,12 +742,39 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			} else {
 | 
			
		||||
				LOG.warn("Cannot find ap {} in inventory", apId);
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			updateApDisconnectedStatus(apId);
 | 
			
		||||
		} catch (Exception e) {
 | 
			
		||||
			LOG.error("Exception when registering ap routing {}", apId, e);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	private void updateApDisconnectedStatus(String apId) {
 | 
			
		||||
		try {
 | 
			
		||||
			Equipment ce = equipmentServiceInterface.getByInventoryIdOrNull(apId);
 | 
			
		||||
			if (ce == null) {
 | 
			
		||||
				LOG.debug("updateDisconnectedApStatus::Cannot get Equipment for AP {}", apId);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			Status statusRecord = statusServiceInterface.getOrNull(ce.getCustomerId(), ce.getId(),
 | 
			
		||||
					StatusDataType.EQUIPMENT_ADMIN);
 | 
			
		||||
			if (statusRecord == null) {
 | 
			
		||||
				LOG.debug("updateApDisconnectedStatus::Cannot get EQUIPMENT_ADMIN status for CustomerId {} or EquipmentId {} for AP {}", 
 | 
			
		||||
						ce.getCustomerId(), ce.getId(), apId);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			((EquipmentAdminStatusData) statusRecord.getDetails()).setStatusCode(StatusCode.error);
 | 
			
		||||
			// Update the equipment admin status
 | 
			
		||||
			statusRecord = statusServiceInterface.update(statusRecord);
 | 
			
		||||
		} catch (Exception e) {
 | 
			
		||||
			LOG.error("Exception in updateApDisconnectedStatus", e);
 | 
			
		||||
			throw e;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public OpensyncAPConfig getApConfig(String apId) {
 | 
			
		||||
		LOG.info("Retrieving config for AP {} ", apId);
 | 
			
		||||
@@ -801,7 +791,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			if ((customer != null) && (customer.getDetails() != null)
 | 
			
		||||
					&& (customer.getDetails().getAutoProvisioning() != null)
 | 
			
		||||
					&& customer.getDetails().getAutoProvisioning().isEnabled()) {
 | 
			
		||||
                Equipment equipmentConfig = getCustomerEquipment(apId);
 | 
			
		||||
				Equipment equipmentConfig = equipmentServiceInterface.getByInventoryIdOrNull(apId);
 | 
			
		||||
 | 
			
		||||
				if (equipmentConfig == null) {
 | 
			
		||||
					throw new IllegalStateException("Cannot retrieve configuration for " + apId);
 | 
			
		||||
@@ -825,8 +815,8 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
				ret.setSsidProfile(
 | 
			
		||||
						profileContainer.getChildrenOfType(equipmentConfig.getProfileId(), ProfileType.ssid));
 | 
			
		||||
 | 
			
		||||
                ret.setMetricsProfiles(
 | 
			
		||||
                        profileContainer.getChildrenOfType(equipmentConfig.getProfileId(), ProfileType.metrics));
 | 
			
		||||
				ret.setMetricsProfiles(profileContainer.getChildrenOfType(equipmentConfig.getProfileId(),
 | 
			
		||||
						ProfileType.service_metrics_collection_config));
 | 
			
		||||
 | 
			
		||||
				Set<Profile> radiusSet = new HashSet<>();
 | 
			
		||||
				Set<Long> captiveProfileIds = new HashSet<>();
 | 
			
		||||
@@ -842,7 +832,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
				for (Profile ssidProfile : ret.getSsidProfile()) {
 | 
			
		||||
 | 
			
		||||
					hotspot20ProfileSet
 | 
			
		||||
                            .addAll(profileContainer.getChildrenOfType(ssidProfile.getId(), ProfileType.hotspot_2pt0));
 | 
			
		||||
							.addAll(profileContainer.getChildrenOfType(ssidProfile.getId(), ProfileType.passpoint));
 | 
			
		||||
 | 
			
		||||
					radiusSet
 | 
			
		||||
							.addAll(profileContainer.getChildrenOfType(ret.getApProfile().getId(), ProfileType.radius));
 | 
			
		||||
@@ -861,12 +851,12 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
 | 
			
		||||
				if (hotspot20ProfileSet.size() > 0) {
 | 
			
		||||
					for (Profile hotspot20Profile : hotspot20ProfileSet) {
 | 
			
		||||
                        hotspot20OperatorSet.addAll(
 | 
			
		||||
                                profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.operator));
 | 
			
		||||
                        hotspot20VenueSet.addAll(
 | 
			
		||||
                                profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.venue));
 | 
			
		||||
                        hotspot20ProviderSet.addAll(
 | 
			
		||||
                                profileContainer.getChildrenOfType(hotspot20Profile.getId(), ProfileType.id_provider));
 | 
			
		||||
						hotspot20OperatorSet.addAll(profileContainer.getChildrenOfType(hotspot20Profile.getId(),
 | 
			
		||||
								ProfileType.passpoint_operator));
 | 
			
		||||
						hotspot20VenueSet.addAll(profileContainer.getChildrenOfType(hotspot20Profile.getId(),
 | 
			
		||||
								ProfileType.passpoint_venue));
 | 
			
		||||
						hotspot20ProviderSet.addAll(profileContainer.getChildrenOfType(hotspot20Profile.getId(),
 | 
			
		||||
								ProfileType.passpoint_osu_id_provider));
 | 
			
		||||
					}
 | 
			
		||||
					hotspotConfig.setHotspot20OperatorSet(hotspot20OperatorSet);
 | 
			
		||||
					hotspotConfig.setHotspot20ProfileSet(hotspot20ProfileSet);
 | 
			
		||||
@@ -1131,9 +1121,10 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			if (protocolStatus != null) {
 | 
			
		||||
 | 
			
		||||
				protocolStatusData = (EquipmentProtocolStatusData) protocolStatus.getDetails();
 | 
			
		||||
                if (!protocolStatusData.getReportedCC()
 | 
			
		||||
                        .equals(CountryCode.valueOf(radioState.getCountry().toLowerCase()))) {
 | 
			
		||||
                    protocolStatusData.setReportedCC(CountryCode.valueOf(radioState.getCountry().toLowerCase()));
 | 
			
		||||
				if (!protocolStatusData.getReportedCC().equals(CountryCode.getByName((radioState.getCountry())))) {
 | 
			
		||||
					
 | 
			
		||||
					LOG.debug("Protocol Status reportedCC {} radioStatus.getCountry {} radioStatus CountryCode fromName {}", protocolStatusData.getReportedCC(), radioState.getCountry(), CountryCode.getByName((radioState.getCountry())));
 | 
			
		||||
					protocolStatusData.setReportedCC(CountryCode.getByName((radioState. getCountry())));
 | 
			
		||||
					protocolStatus.setDetails(protocolStatusData);
 | 
			
		||||
 | 
			
		||||
				} else {
 | 
			
		||||
@@ -1450,7 +1441,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
		OvsdbSession ovsdbSession = ovsdbSessionMapInterface.getSession(apId);
 | 
			
		||||
 | 
			
		||||
		if (ovsdbSession == null) {
 | 
			
		||||
            LOG.debug("awlanNodeDbTableUpdate::Cannot get Session for AP {}", apId);
 | 
			
		||||
			LOG.info("awlanNodeDbTableUpdate::Cannot get Session for AP {}", apId);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -1458,22 +1449,27 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
		long equipmentId = ovsdbSession.getEquipmentId();
 | 
			
		||||
 | 
			
		||||
		if ((customerId < 0) || (equipmentId < 0)) {
 | 
			
		||||
            LOG.debug("awlanNodeDbTableUpdate::Cannot get valid CustomerId {} or EquipmentId {} for AP {}", customerId,
 | 
			
		||||
			LOG.info("awlanNodeDbTableUpdate::Cannot get valid CustomerId {} or EquipmentId {} for AP {}", customerId,
 | 
			
		||||
					equipmentId, apId);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		Equipment ce = equipmentServiceInterface.getByInventoryIdOrNull(apId);
 | 
			
		||||
		if (ce == null) {
 | 
			
		||||
			LOG.info("awlanNodeDbTableUpdate::Cannot find AP {}", apId);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		int upgradeStatusFromAp = opensyncAPState.getUpgradeStatus();
 | 
			
		||||
		EquipmentUpgradeState fwUpgradeState = null;
 | 
			
		||||
		FailureReason fwUpgradeFailureReason = null;
 | 
			
		||||
 | 
			
		||||
		if (opensyncAPState.getFirmwareUrl().equals(OvsdbStringConstants.OVSDB_AWLAN_AP_FACTORY_RESET)
 | 
			
		||||
                || opensyncAPState.getFirmwareUrl().equals(OvsdbStringConstants.OVSDB_AWLAN_AP_FACTORY_RESET)
 | 
			
		||||
                || opensyncAPState.getFirmwareUrl().equals(OvsdbStringConstants.OVSDB_AWLAN_AP_FACTORY_RESET)
 | 
			
		||||
				|| opensyncAPState.getFirmwareUrl().equals(OvsdbStringConstants.OVSDB_AWLAN_AP_REBOOT)
 | 
			
		||||
				|| opensyncAPState.getFirmwareUrl().equals(OvsdbStringConstants.OVSDB_AWLAN_AP_SWITCH_SOFTWARE_BANK)
 | 
			
		||||
				|| opensyncAPState.getFirmwareUrl().equals("")) {
 | 
			
		||||
 | 
			
		||||
            fwUpgradeState = EquipmentUpgradeState.undefined;
 | 
			
		||||
 | 
			
		||||
			LOG.debug("Firmware Url {}, no fwUpgradeState", opensyncAPState.getFirmwareUrl());
 | 
			
		||||
		} else {
 | 
			
		||||
			fwUpgradeState = OvsdbToWlanCloudTypeMappingUtility
 | 
			
		||||
					.getCloudEquipmentUpgradeStateFromOpensyncUpgradeStatus(upgradeStatusFromAp);
 | 
			
		||||
@@ -1484,19 +1480,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
        Status protocolStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL);
 | 
			
		||||
        if (protocolStatus == null) {
 | 
			
		||||
            protocolStatus = new Status();
 | 
			
		||||
            protocolStatus.setCustomerId(customerId);
 | 
			
		||||
            protocolStatus.setEquipmentId(equipmentId);
 | 
			
		||||
            protocolStatus.setStatusDataType(StatusDataType.PROTOCOL);
 | 
			
		||||
            EquipmentProtocolStatusData protocolStatusData = new EquipmentProtocolStatusData();
 | 
			
		||||
            protocolStatus.setDetails(protocolStatusData);
 | 
			
		||||
 | 
			
		||||
            protocolStatus = statusServiceInterface.update(protocolStatus);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		String reportedFwImageName = null;
 | 
			
		||||
		String reportedAltFwImageName = null;
 | 
			
		||||
 | 
			
		||||
@@ -1513,63 +1496,86 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			reportedAltFwImageName = opensyncAPState.getVersionMatrix().get(OvsdbStringConstants.FW_IMAGE_NAME_KEY);
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
        EquipmentProtocolStatusData protocolStatusData = (EquipmentProtocolStatusData) protocolStatus.getDetails();
 | 
			
		||||
        protocolStatusData.setReportedSku(opensyncAPState.getSkuNumber());
 | 
			
		||||
        if (reportedFwImageName != null) {
 | 
			
		||||
            protocolStatusData.setReportedSwVersion(reportedFwImageName);
 | 
			
		||||
        }
 | 
			
		||||
        protocolStatusData.setReportedSwAltVersion(reportedAltFwImageName);
 | 
			
		||||
        protocolStatusData.setReportedHwVersion(opensyncAPState.getPlatformVersion());
 | 
			
		||||
        protocolStatusData.setSystemName(opensyncAPState.getModel());
 | 
			
		||||
 | 
			
		||||
		List<Status> updates = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
        // only post update if there is a change
 | 
			
		||||
        if (!((EquipmentProtocolStatusData) statusServiceInterface
 | 
			
		||||
                .getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL).getDetails()).equals(protocolStatusData)) {
 | 
			
		||||
            protocolStatus.setDetails(protocolStatusData);
 | 
			
		||||
		Status protocolStatus = configureProtocolStatus(opensyncAPState, customerId, equipmentId, reportedFwImageName,
 | 
			
		||||
				reportedAltFwImageName);
 | 
			
		||||
		if (protocolStatus != null) {
 | 
			
		||||
			updates.add(protocolStatus);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
        Status firmwareStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.FIRMWARE);
 | 
			
		||||
        if (firmwareStatus == null) {
 | 
			
		||||
            firmwareStatus = new Status();
 | 
			
		||||
            firmwareStatus.setCustomerId(customerId);
 | 
			
		||||
            firmwareStatus.setEquipmentId(equipmentId);
 | 
			
		||||
            firmwareStatus.setStatusDataType(StatusDataType.FIRMWARE);
 | 
			
		||||
            firmwareStatus.setDetails(new EquipmentUpgradeStatusData());
 | 
			
		||||
            firmwareStatus = statusServiceInterface.update(firmwareStatus);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Equipment ce = getCustomerEquipment(apId);
 | 
			
		||||
        if (ce != null) {
 | 
			
		||||
            ce.getDetails();
 | 
			
		||||
 | 
			
		||||
            if (fwUpgradeState.equals(EquipmentUpgradeState.up_to_date)) {
 | 
			
		||||
                LOG.info("Firmware load is up to date.");
 | 
			
		||||
 | 
			
		||||
                EquipmentUpgradeStatusData firmwareStatusData = (EquipmentUpgradeStatusData) firmwareStatus
 | 
			
		||||
                        .getDetails();
 | 
			
		||||
                if (reportedFwImageName != null) {
 | 
			
		||||
                    if (!firmwareStatusData.getActiveSwVersion().equals(reportedFwImageName)
 | 
			
		||||
                            || !firmwareStatusData.getUpgradeState().equals(fwUpgradeState)
 | 
			
		||||
                            || !firmwareStatusData.getAlternateSwVersion().equals(reportedAltFwImageName)) {
 | 
			
		||||
                        firmwareStatusData.setActiveSwVersion(reportedFwImageName);
 | 
			
		||||
                        firmwareStatusData.setAlternateSwVersion(reportedAltFwImageName);
 | 
			
		||||
                        firmwareStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason);
 | 
			
		||||
                        firmwareStatus.setDetails(firmwareStatusData);
 | 
			
		||||
		Status firmwareStatus = configureFirmwareStatus(customerId, equipmentId, fwUpgradeState, fwUpgradeFailureReason,
 | 
			
		||||
				reportedFwImageName, reportedAltFwImageName);
 | 
			
		||||
		if (firmwareStatus != null) {
 | 
			
		||||
			updates.add(firmwareStatus);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (!updates.isEmpty()) { // may be some updates from protocol
 | 
			
		||||
		if (!updates.isEmpty()) {// may be some updates from
 | 
			
		||||
			// protocol
 | 
			
		||||
			// status
 | 
			
		||||
			updates = statusServiceInterface.update(updates);
 | 
			
		||||
		} 
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private Status configureProtocolStatus(OpensyncAWLANNode opensyncAPState, int customerId, long equipmentId,
 | 
			
		||||
			String reportedSwImageName, String reportedAltSwImageName) {
 | 
			
		||||
		Status protocolStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.PROTOCOL);
 | 
			
		||||
		if (protocolStatus != null) {
 | 
			
		||||
			EquipmentProtocolStatusData protocolStatusData = ((EquipmentProtocolStatusData) protocolStatus.getDetails());
 | 
			
		||||
			if (protocolStatusData.getReportedSku() != null && protocolStatusData.getReportedSku().equals(opensyncAPState.getSkuNumber())
 | 
			
		||||
					&& protocolStatusData.getReportedSwVersion() != null && protocolStatusData.getReportedSwVersion().equals(reportedSwImageName) 
 | 
			
		||||
					&& protocolStatusData.getReportedSwAltVersion() != null && protocolStatusData.getReportedSwAltVersion().equals(reportedAltSwImageName)
 | 
			
		||||
					&& protocolStatusData.getReportedHwVersion() != null && protocolStatusData.getReportedHwVersion().equals(opensyncAPState.getPlatformVersion())
 | 
			
		||||
					&& protocolStatusData.getSystemName() != null && protocolStatusData.getSystemName().equals(opensyncAPState.getModel())) {
 | 
			
		||||
				// no changes
 | 
			
		||||
				return null;
 | 
			
		||||
			}
 | 
			
		||||
			protocolStatusData.setReportedSku(opensyncAPState.getSkuNumber());
 | 
			
		||||
			if (reportedSwImageName != null) {
 | 
			
		||||
				protocolStatusData.setReportedSwVersion(reportedSwImageName);
 | 
			
		||||
			} else {
 | 
			
		||||
				protocolStatusData.setReportedSwVersion("Unknown");
 | 
			
		||||
			}
 | 
			
		||||
			if (reportedAltSwImageName != null) {
 | 
			
		||||
				protocolStatusData.setReportedSwAltVersion(reportedAltSwImageName);
 | 
			
		||||
			} else {
 | 
			
		||||
				protocolStatusData.setReportedSwAltVersion("Unknown");
 | 
			
		||||
			}
 | 
			
		||||
			protocolStatusData
 | 
			
		||||
			.setReportedHwVersion(opensyncAPState.getPlatformVersion());
 | 
			
		||||
			protocolStatusData.setSystemName(opensyncAPState.getModel());
 | 
			
		||||
		}
 | 
			
		||||
		return protocolStatus;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private Status configureFirmwareStatus(int customerId, long equipmentId,EquipmentUpgradeState fwUpgradeState,
 | 
			
		||||
			FailureReason fwUpgradeFailureReason, String reportedFwImageName, String reportedAltFwImageName) {
 | 
			
		||||
 | 
			
		||||
		Status firmwareStatus =  statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.FIRMWARE);
 | 
			
		||||
		if (firmwareStatus != null) {
 | 
			
		||||
			EquipmentUpgradeStatusData upgradeStatusData = (EquipmentUpgradeStatusData)firmwareStatus.getDetails();
 | 
			
		||||
			if (upgradeStatusData.getActiveSwVersion() != null && upgradeStatusData.getActiveSwVersion().equals(reportedFwImageName) && upgradeStatusData.getAlternateSwVersion() != null &&upgradeStatusData.getAlternateSwVersion().equals(reportedAltFwImageName) && upgradeStatusData.getUpgradeState() != null && upgradeStatusData.getUpgradeState().equals(fwUpgradeState)) {
 | 
			
		||||
				return null; // no changes
 | 
			
		||||
			}
 | 
			
		||||
			if (reportedFwImageName != null) {
 | 
			
		||||
				upgradeStatusData.setActiveSwVersion(reportedFwImageName);
 | 
			
		||||
			} else {
 | 
			
		||||
				upgradeStatusData.setActiveSwVersion("Unknown");
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
			if (reportedAltFwImageName != null) {
 | 
			
		||||
				upgradeStatusData.setAlternateSwVersion(reportedAltFwImageName);
 | 
			
		||||
			} else {
 | 
			
		||||
				((EquipmentUpgradeStatusData) firmwareStatus.getDetails())
 | 
			
		||||
				.setAlternateSwVersion("Unknown");
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (fwUpgradeState == null) fwUpgradeState = EquipmentUpgradeState.undefined;
 | 
			
		||||
 | 
			
		||||
			if (fwUpgradeState.equals(EquipmentUpgradeState.up_to_date)) {
 | 
			
		||||
				LOG.info("Firmware load is up to date.");
 | 
			
		||||
				upgradeStatusData.setUpgradeState(fwUpgradeState);
 | 
			
		||||
				firmwareStatus.setDetails(upgradeStatusData);
 | 
			
		||||
			} else if (fwUpgradeState.equals(EquipmentUpgradeState.download_complete)
 | 
			
		||||
					|| fwUpgradeState.equals(EquipmentUpgradeState.apply_complete)
 | 
			
		||||
					|| fwUpgradeState.equals(EquipmentUpgradeState.apply_initiated)
 | 
			
		||||
@@ -1581,98 +1587,30 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
 | 
			
		||||
				LOG.info("Firmware upgrade is in state {}", fwUpgradeState);
 | 
			
		||||
 | 
			
		||||
                EquipmentUpgradeStatusData firmwareStatusData = (EquipmentUpgradeStatusData) firmwareStatus
 | 
			
		||||
                        .getDetails();
 | 
			
		||||
                if (reportedFwImageName != null) {
 | 
			
		||||
                    if (!firmwareStatusData.getActiveSwVersion().equals(reportedFwImageName)
 | 
			
		||||
                            || !firmwareStatusData.getUpgradeState().equals(fwUpgradeState)
 | 
			
		||||
                            || !firmwareStatusData.getAlternateSwVersion().equals(reportedAltFwImageName)) {
 | 
			
		||||
                        firmwareStatusData.setActiveSwVersion(reportedFwImageName);
 | 
			
		||||
                        firmwareStatusData.setAlternateSwVersion(reportedAltFwImageName);
 | 
			
		||||
                        firmwareStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason);
 | 
			
		||||
				upgradeStatusData.setUpgradeState(fwUpgradeState);
 | 
			
		||||
				if (fwUpgradeState.equals(EquipmentUpgradeState.apply_initiated)) {
 | 
			
		||||
                            firmwareStatusData.setUpgradeStartTime(System.currentTimeMillis());
 | 
			
		||||
					upgradeStatusData.setUpgradeStartTime(System.currentTimeMillis());
 | 
			
		||||
				} else if (fwUpgradeState.equals(EquipmentUpgradeState.reboot_initiated)
 | 
			
		||||
						|| fwUpgradeState.equals(EquipmentUpgradeState.rebooting)) {
 | 
			
		||||
                            firmwareStatusData.setRebooted(true);
 | 
			
		||||
					upgradeStatusData.setRebooted(true);
 | 
			
		||||
				}
 | 
			
		||||
                        firmwareStatus.setDetails(firmwareStatusData);
 | 
			
		||||
                        updates.add(firmwareStatus);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (!updates.isEmpty()) {// may be some updates from protocol
 | 
			
		||||
                                         // status
 | 
			
		||||
                    updates = statusServiceInterface.update(updates);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // no other action here, these are just transient states
 | 
			
		||||
 | 
			
		||||
				firmwareStatus.setDetails(upgradeStatusData);
 | 
			
		||||
			} else if (fwUpgradeState.equals(EquipmentUpgradeState.apply_failed)
 | 
			
		||||
					|| fwUpgradeState.equals(EquipmentUpgradeState.download_failed)
 | 
			
		||||
					|| fwUpgradeState.equals(EquipmentUpgradeState.reboot_failed)) {
 | 
			
		||||
				LOG.warn("Firmware upgrade is in a failed state {} due to {}", fwUpgradeState, fwUpgradeFailureReason);
 | 
			
		||||
 | 
			
		||||
                EquipmentUpgradeStatusData firmwareStatusData = (EquipmentUpgradeStatusData) firmwareStatus
 | 
			
		||||
                        .getDetails();
 | 
			
		||||
                if (reportedFwImageName != null) {
 | 
			
		||||
                    if (!firmwareStatusData.getActiveSwVersion().equals(reportedFwImageName)
 | 
			
		||||
                            || !firmwareStatusData.getAlternateSwVersion().equals(reportedAltFwImageName)
 | 
			
		||||
                            || !firmwareStatusData.getUpgradeState().equals(fwUpgradeState)
 | 
			
		||||
                            || !firmwareStatusData.getReason().equals(fwUpgradeFailureReason)) {
 | 
			
		||||
                        firmwareStatusData.setActiveSwVersion(reportedFwImageName);
 | 
			
		||||
                        firmwareStatusData.setAlternateSwVersion(reportedAltFwImageName);
 | 
			
		||||
                        firmwareStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason);
 | 
			
		||||
                        firmwareStatus.setDetails(firmwareStatusData);
 | 
			
		||||
                        updates.add(firmwareStatus);
 | 
			
		||||
                        updates = statusServiceInterface.update(updates);
 | 
			
		||||
                        reconcileFwVersionToTrack(ce, reportedFwImageName, opensyncAPState.getModel());
 | 
			
		||||
				upgradeStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason);
 | 
			
		||||
				firmwareStatus.setDetails(upgradeStatusData);
 | 
			
		||||
			} else {
 | 
			
		||||
                        if (!updates.isEmpty()) {
 | 
			
		||||
                            updates = statusServiceInterface.update(updates);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                } else {
 | 
			
		||||
                    if (!updates.isEmpty()) {// may be some updates from
 | 
			
		||||
                                             // protocol
 | 
			
		||||
                        // status
 | 
			
		||||
                        updates = statusServiceInterface.update(updates);
 | 
			
		||||
				((EquipmentUpgradeStatusData) firmwareStatus.getDetails())
 | 
			
		||||
				.setUpgradeState(EquipmentUpgradeState.undefined);
 | 
			
		||||
				((EquipmentUpgradeStatusData) firmwareStatus.getDetails())
 | 
			
		||||
				.setUpgradeStartTime(null);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
                LOG.info("Firmware upgrade state is {}", fwUpgradeState);
 | 
			
		||||
                EquipmentUpgradeStatusData firmwareStatusData = (EquipmentUpgradeStatusData) firmwareStatus
 | 
			
		||||
                        .getDetails();
 | 
			
		||||
                if (reportedFwImageName != null) {
 | 
			
		||||
                    if (!firmwareStatusData.getActiveSwVersion().equals(reportedFwImageName)
 | 
			
		||||
                            || !firmwareStatusData.getUpgradeState().equals(fwUpgradeState)
 | 
			
		||||
                            || !firmwareStatusData.getAlternateSwVersion().equals(reportedAltFwImageName)) {
 | 
			
		||||
                        firmwareStatusData.setActiveSwVersion(reportedFwImageName);
 | 
			
		||||
                        firmwareStatusData.setAlternateSwVersion(reportedAltFwImageName);
 | 
			
		||||
                        firmwareStatusData.setUpgradeState(fwUpgradeState, fwUpgradeFailureReason);
 | 
			
		||||
                        firmwareStatus.setDetails(firmwareStatusData);
 | 
			
		||||
                        updates.add(firmwareStatus);
 | 
			
		||||
                        updates = statusServiceInterface.update(updates);
 | 
			
		||||
                    } else {
 | 
			
		||||
                        if (!updates.isEmpty()) {// may be some updates from
 | 
			
		||||
                                                 // protocol
 | 
			
		||||
                            // status
 | 
			
		||||
                            updates = statusServiceInterface.update(updates);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                    if (!updates.isEmpty()) {// may be some updates from
 | 
			
		||||
                                             // protocol
 | 
			
		||||
                        // status
 | 
			
		||||
                        updates = statusServiceInterface.update(updates);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		return firmwareStatus;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
@@ -1695,11 +1633,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
        if (equipmentId < 0L) {
 | 
			
		||||
            LOG.debug("wifiVIFStateDbTableDelete Cannot get equipmentId {} for session {}", equipmentId);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		Status activeBssidsStatus = statusServiceInterface.getOrNull(customerId, equipmentId,
 | 
			
		||||
				StatusDataType.ACTIVE_BSSIDS);
 | 
			
		||||
 | 
			
		||||
@@ -1734,7 +1667,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
        bssidList.removeAll(toBeDeleted);
 | 
			
		||||
		if (bssidList != null) bssidList.removeAll(toBeDeleted);
 | 
			
		||||
 | 
			
		||||
		statusDetails.setActiveBSSIDs(bssidList);
 | 
			
		||||
 | 
			
		||||
@@ -1771,13 +1704,14 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
				new MacAddress(deletedClientMac));
 | 
			
		||||
 | 
			
		||||
		if (client != null) {
 | 
			
		||||
            if (clientSession != null) {
 | 
			
		||||
		    if (clientSession != null && clientSession.getDetails() != null && clientSession.getDetails().getAssociationState() != 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) {
 | 
			
		||||
 | 
			
		||||
@@ -1788,7 +1722,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
@@ -1813,7 +1746,7 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
        Equipment ce = getCustomerEquipment(apId);
 | 
			
		||||
		Equipment ce = equipmentServiceInterface.getByInventoryIdOrNull(apId);
 | 
			
		||||
 | 
			
		||||
		if (ce == null) {
 | 
			
		||||
			LOG.debug("updateDhcpIpClientFingerprints::Cannot get Equipment for AP {}", apId);
 | 
			
		||||
@@ -1843,7 +1776,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
				} 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
 | 
			
		||||
 | 
			
		||||
@@ -1857,7 +1789,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
 | 
			
		||||
					LOG.info("Deleting invalid client {}", clientServiceInterface.delete(customerId, clientMacAddress));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
					continue;
 | 
			
		||||
				} else {
 | 
			
		||||
					LOG.info("Client {} already exists on the cloud, update client values", dhcpLeasedIps);
 | 
			
		||||
@@ -1937,7 +1868,6 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
 | 
			
		||||
					LOG.info("Not a client device {} ", dhcpLeasedIps);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
					// In case somehow this equipment has accidentally been
 | 
			
		||||
					// tagged as a client, remove
 | 
			
		||||
 | 
			
		||||
@@ -1951,12 +1881,10 @@ public class OpensyncExternalIntegrationCloud implements OpensyncExternalIntegra
 | 
			
		||||
 | 
			
		||||
					LOG.info("Deleting invalid client {}", clientServiceInterface.delete(customerId, clientMacAddress));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
					continue;
 | 
			
		||||
 | 
			
		||||
				} else {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
					ClientInfoDetails clientDetails = (ClientInfoDetails) client.getDetails();
 | 
			
		||||
					if (dhcpLeasedIps.containsKey("hostname")) {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@ import com.telecominfraproject.wlan.client.session.models.ClientSessionDetails;
 | 
			
		||||
import com.telecominfraproject.wlan.client.session.models.ClientSessionMetricDetails;
 | 
			
		||||
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
 | 
			
		||||
import com.telecominfraproject.wlan.core.model.equipment.ChannelBandwidth;
 | 
			
		||||
import com.telecominfraproject.wlan.core.model.equipment.ChannelHopReason;
 | 
			
		||||
import com.telecominfraproject.wlan.core.model.equipment.DetectedAuthMode;
 | 
			
		||||
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
			
		||||
import com.telecominfraproject.wlan.core.model.equipment.NeighborScanPacketType;
 | 
			
		||||
@@ -41,7 +42,7 @@ import com.telecominfraproject.wlan.core.model.utils.DecibelUtils;
 | 
			
		||||
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
 | 
			
		||||
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
 | 
			
		||||
import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities.OvsdbToWlanCloudTypeMappingUtility;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.util.OvsdbToWlanCloudTypeMappingUtility;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.models.Profile;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.models.ProfileContainer;
 | 
			
		||||
@@ -74,7 +75,10 @@ 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.RadioUtilizationReport;
 | 
			
		||||
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.network.models.NetworkAdminStatusData;
 | 
			
		||||
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeChannelHopEvent;
 | 
			
		||||
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeEventType;
 | 
			
		||||
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallReportEvent;
 | 
			
		||||
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallStartEvent;
 | 
			
		||||
@@ -91,6 +95,7 @@ import sts.OpensyncStats.AssocType;
 | 
			
		||||
import sts.OpensyncStats.CallReport;
 | 
			
		||||
import sts.OpensyncStats.CallStart;
 | 
			
		||||
import sts.OpensyncStats.CallStop;
 | 
			
		||||
import sts.OpensyncStats.ChannelSwitchReason;
 | 
			
		||||
import sts.OpensyncStats.Client;
 | 
			
		||||
import sts.OpensyncStats.ClientReport;
 | 
			
		||||
import sts.OpensyncStats.DNSProbeMetric;
 | 
			
		||||
@@ -147,9 +152,9 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
    private CloudEventDispatcherInterface equipmentMetricsCollectorInterface;
 | 
			
		||||
 | 
			
		||||
    void processMqttMessage(String topic, WCStatsReport wcStatsReport) {
 | 
			
		||||
        LOG.debug("Received WCStatsReport {}", wcStatsReport.toString());
 | 
			
		||||
        LOG.info("Received WCStatsReport {}", wcStatsReport.toString());
 | 
			
		||||
 | 
			
		||||
        LOG.info("Received report on topic {}", topic);
 | 
			
		||||
        LOG.debug("Received report on topic {}", topic);
 | 
			
		||||
        int customerId = extractCustomerIdFromTopic(topic);
 | 
			
		||||
 | 
			
		||||
        long equipmentId = extractEquipmentIdFromTopic(topic);
 | 
			
		||||
@@ -289,14 +294,13 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    void processEventReport(Report report, int customerId, long equipmentId, String apId, long locationId) {
 | 
			
		||||
 | 
			
		||||
        report.getEventReportList().stream().forEach(e -> {
 | 
			
		||||
 | 
			
		||||
            for (sts.OpensyncStats.EventReport.ClientSession apEventClientSession : e.getClientSessionList()) {
 | 
			
		||||
 | 
			
		||||
                LOG.info("Processing EventReport::ClientSession {}", apEventClientSession);
 | 
			
		||||
                LOG.debug("Processing EventReport::ClientSession {}", apEventClientSession);
 | 
			
		||||
 | 
			
		||||
                processClientConnectEvent(customerId, equipmentId, locationId, e, apEventClientSession);
 | 
			
		||||
 | 
			
		||||
@@ -318,10 +322,74 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            publishChannelHopEvents(customerId, equipmentId, e);
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void publishChannelHopEvents(int customerId, long equipmentId, EventReport e) {
 | 
			
		||||
        
 | 
			
		||||
        LOG.info("publishChannelHopEvents for customerId {} equipmentId {}");
 | 
			
		||||
        
 | 
			
		||||
        List<SystemEvent> events = new ArrayList<>();
 | 
			
		||||
        
 | 
			
		||||
        for (sts.OpensyncStats.EventReport.ChannelSwitchEvent channelSwitchEvent : e.getChannelSwitchList()) {
 | 
			
		||||
            Equipment equipment = equipmentServiceInterface.getOrNull(equipmentId);
 | 
			
		||||
            if (equipment == null)
 | 
			
		||||
                continue;
 | 
			
		||||
            RadioType radioType = null;
 | 
			
		||||
            Long timestamp = null;
 | 
			
		||||
            ChannelHopReason reason = null;
 | 
			
		||||
            Integer channel = null;
 | 
			
		||||
            if (channelSwitchEvent.hasBand()) {                   
 | 
			
		||||
               radioType = OvsdbToWlanCloudTypeMappingUtility
 | 
			
		||||
                .getRadioTypeFromOpensyncStatsRadioBandType(channelSwitchEvent.getBand());            
 | 
			
		||||
            }
 | 
			
		||||
            if (RadioType.isUnsupported(radioType)) {
 | 
			
		||||
                LOG.warn("publishChannelHopEvents:RadioType {} is unsupported, cannot send RealTimeChannelHopEvent for {}", radioType, channelSwitchEvent);
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
            if (channelSwitchEvent.hasTimestampMs()) {
 | 
			
		||||
                timestamp = channelSwitchEvent.getTimestampMs();
 | 
			
		||||
            }
 | 
			
		||||
            if (timestamp == null) {
 | 
			
		||||
                LOG.warn("publishChannelHopEvents:timestamp is null, cannot send RealTimeChannelHopEvent for {}", channelSwitchEvent);
 | 
			
		||||
                continue;  
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            if (channelSwitchEvent.hasReason()) {
 | 
			
		||||
                if (channelSwitchEvent.getReason().equals(ChannelSwitchReason.high_interference)) reason = ChannelHopReason.HighInterference;
 | 
			
		||||
                else if (channelSwitchEvent.getReason().equals(ChannelSwitchReason.radar_detected)) reason = ChannelHopReason.RadarDetected;
 | 
			
		||||
            }
 | 
			
		||||
            if (ChannelHopReason.isUnsupported(reason)) {
 | 
			
		||||
                LOG.warn("publishChannelHopEvents:reason {} is unsupported, cannot send RealTimeChannelHopEvent for {}", channelSwitchEvent.getReason(), channelSwitchEvent);
 | 
			
		||||
                continue; 
 | 
			
		||||
            }
 | 
			
		||||
            if (channelSwitchEvent.hasChannel()) {
 | 
			
		||||
                channel = channelSwitchEvent.getChannel();
 | 
			
		||||
            }
 | 
			
		||||
            if (channel == null) {
 | 
			
		||||
                LOG.warn("publishChannelHopEvents:channel is null, cannot send RealTimeChannelHopEvent for {}", channelSwitchEvent);
 | 
			
		||||
                continue; 
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            RealTimeChannelHopEvent channelHopEvent = new RealTimeChannelHopEvent(RealTimeEventType.Channel_Hop, customerId, equipmentId, radioType, channel, ((ApElementConfiguration)equipment.getDetails()).getRadioMap().get(radioType).getChannelNumber(), reason, timestamp);
 | 
			
		||||
            
 | 
			
		||||
            events.add(channelHopEvent);
 | 
			
		||||
            
 | 
			
		||||
            LOG.debug("publishChannelHopEvents:Adding ChannelHopEvent to bulk list {}", channelHopEvent);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        if (events.size() > 0) {
 | 
			
		||||
            LOG.info("publishChannelHopEvents:publishEventsBulk: {}", events);
 | 
			
		||||
            equipmentMetricsCollectorInterface.publishEventsBulk(events);
 | 
			
		||||
        } else {
 | 
			
		||||
            LOG.info("publishChannelHopEvents:No ChannelHopEvents in report");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void processClientConnectEvent(int customerId, long equipmentId, long locationId, EventReport e,
 | 
			
		||||
            sts.OpensyncStats.EventReport.ClientSession apEventClientSession) {
 | 
			
		||||
        for (ClientConnectEvent clientConnectEvent : apEventClientSession.getClientConnectEventList()) {
 | 
			
		||||
@@ -442,7 +510,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                }
 | 
			
		||||
                clientSessionDetails.setAssociationState(AssociationState._802_11_Associated);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                if (clientSession.getDetails() == null) {
 | 
			
		||||
                    clientSession.setDetails(clientSessionDetails);
 | 
			
		||||
                } else {
 | 
			
		||||
@@ -453,7 +520,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -509,7 +575,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
                clientSessionDetails.setSessionId(apEventClientSession.getSessionId());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                if (clientDisconnectEvent.hasLrcvUpTsInUs()) {
 | 
			
		||||
                    clientSessionDetails.setLastRxTimestamp(clientDisconnectEvent.getLrcvUpTsInUs());
 | 
			
		||||
                }
 | 
			
		||||
@@ -527,7 +592,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                }
 | 
			
		||||
                clientSessionDetails.setAssociationState(AssociationState.Disconnected);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                if (clientSession.getDetails() == null) {
 | 
			
		||||
                    clientSession.setDetails(clientSessionDetails);
 | 
			
		||||
                } else {
 | 
			
		||||
@@ -536,9 +600,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
                LOG.info("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
                LOG.warn("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -589,7 +652,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                    clientSessionDetails.setAssociationState(AssociationState._802_11_Authenticated);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                if (clientSession.getDetails() == null) {
 | 
			
		||||
                    clientSession.setDetails(clientSessionDetails);
 | 
			
		||||
                } else {
 | 
			
		||||
@@ -598,9 +660,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
                LOG.info("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
                LOG.warn("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -673,7 +734,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
                LOG.info("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
                LOG.warn("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -709,7 +770,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                clientSession.setLocationId(locationId);
 | 
			
		||||
                clientSession.setMacAddress(new MacAddress(clientFailureEvent.getStaMac()));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
			
		||||
 | 
			
		||||
                if (clientFailureEvent.hasSsid()) {
 | 
			
		||||
@@ -736,7 +796,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
                LOG.info("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
                LOG.warn("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -772,10 +832,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                clientSession.setLocationId(locationId);
 | 
			
		||||
                clientSession.setMacAddress(new MacAddress(clientFirstDataEvent.getStaMac()));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                if (clientFirstDataEvent.hasFdataRxUpTsInUs()) {
 | 
			
		||||
                    clientSessionDetails.setFirstDataRcvdTimestamp(clientFirstDataEvent.getFdataRxUpTsInUs());
 | 
			
		||||
                }
 | 
			
		||||
@@ -797,7 +855,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
                LOG.info("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
                LOG.warn("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -833,12 +891,10 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                clientSession.setLocationId(locationId);
 | 
			
		||||
                clientSession.setMacAddress(new MacAddress(clientIdEvent.getCltMac()));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
			
		||||
 | 
			
		||||
                clientSessionDetails.setSessionId(apEventClientSession.getSessionId());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                if (clientSession.getDetails() == null) {
 | 
			
		||||
                    clientSession.setDetails(clientSessionDetails);
 | 
			
		||||
                } else {
 | 
			
		||||
@@ -848,7 +904,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
                LOG.info("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
                LOG.warn("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -886,10 +942,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
                ClientSessionDetails clientSessionDetails = new ClientSessionDetails();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                clientSessionDetails.setSessionId(apEventClientSession.getSessionId());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                try {
 | 
			
		||||
                    clientSessionDetails
 | 
			
		||||
                            .setIpAddress(InetAddress.getByAddress(clientIpEvent.getIpAddr().toByteArray()));
 | 
			
		||||
@@ -907,7 +961,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
                LOG.info("Cannot update client or client session when no clientmac address is present");
 | 
			
		||||
                LOG.warn("Cannot update client or client session when no clientmac address is present");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -974,7 +1028,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                clientSession = clientServiceInterface.updateSession(clientSession);
 | 
			
		||||
 | 
			
		||||
            } else {
 | 
			
		||||
                LOG.info("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
                LOG.warn("Cannot update client or client session when no client mac address is present");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -994,7 +1048,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
            LOG.debug("Received VideoVoiceReport {} for SIP call", videoVoiceReport);
 | 
			
		||||
 | 
			
		||||
            processRealTImeSipCallReportEvent(customerId, equipmentId, eventTimestamp, eventsList, videoVoiceReport);
 | 
			
		||||
            processRealTimeSipCallReportEvent(customerId, equipmentId, eventTimestamp, eventsList, videoVoiceReport);
 | 
			
		||||
 | 
			
		||||
            processRealTimeSipCallStartEvent(customerId, equipmentId, eventTimestamp, eventsList, videoVoiceReport);
 | 
			
		||||
 | 
			
		||||
@@ -1014,13 +1068,229 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void processRealTImeSipCallReportEvent(int customerId, long equipmentId, long eventTimestamp,
 | 
			
		||||
    protected void processRealTimeSipCallReportEvent(int customerId, long equipmentId, long eventTimestamp,
 | 
			
		||||
                                                     List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
			
		||||
        if (videoVoiceReport.hasCallReport()) {
 | 
			
		||||
 | 
			
		||||
            CallReport callReport = videoVoiceReport.getCallReport();
 | 
			
		||||
 | 
			
		||||
            RealTimeSipCallReportEvent cloudSipCallReportEvent = new RealTimeSipCallReportEvent(customerId, equipmentId,
 | 
			
		||||
                    eventTimestamp);
 | 
			
		||||
 | 
			
		||||
            if (callReport.hasClientMac() && callReport.getClientMac().isValidUtf8()) {
 | 
			
		||||
                cloudSipCallReportEvent.setClientMacAddress(MacAddress.valueOf(callReport.getClientMac().toStringUtf8()));
 | 
			
		||||
            }
 | 
			
		||||
            cloudSipCallReportEvent.setStatuses(processRtpFlowStats(callReport.getStatsList()));
 | 
			
		||||
            cloudSipCallReportEvent.setEventType(RealTimeEventType.SipCallReport);
 | 
			
		||||
 | 
			
		||||
            cloudSipCallReportEvent.setSipCallId(callReport.getWifiSessionId());
 | 
			
		||||
            cloudSipCallReportEvent.setAssociationId(callReport.getSessionId());
 | 
			
		||||
 | 
			
		||||
            if (callReport.hasReason()) {
 | 
			
		||||
                cloudSipCallReportEvent.setReportReason(getCallReportReason(callReport.getReason()));
 | 
			
		||||
            }
 | 
			
		||||
            if (callReport.hasProviderDomain()) {
 | 
			
		||||
                cloudSipCallReportEvent.setProviderDomain(callReport.getProviderDomain());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (callReport.getCodecsCount() > 0) {
 | 
			
		||||
                cloudSipCallReportEvent.setCodecs(callReport.getCodecsList());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (callReport.hasChannel()) {
 | 
			
		||||
                cloudSipCallReportEvent.setChannel(callReport.getChannel());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (callReport.hasBand()) {
 | 
			
		||||
                cloudSipCallReportEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
 | 
			
		||||
                        .getRadioTypeFromOpensyncStatsRadioBandType(callReport.getBand()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            eventsList.add(cloudSipCallReportEvent);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private SIPCallReportReason getCallReportReason(CallReport.CallReportReason reason) {
 | 
			
		||||
        if (reason != null) {
 | 
			
		||||
            switch (reason) {
 | 
			
		||||
                case ROAMED_TO:
 | 
			
		||||
                    return SIPCallReportReason.ROAMED_TO;
 | 
			
		||||
                case GOT_PUBLISH:
 | 
			
		||||
                    return SIPCallReportReason.GOT_PUBLISH;
 | 
			
		||||
                case ROAMED_FROM:
 | 
			
		||||
                    return SIPCallReportReason.ROAMED_FROM;
 | 
			
		||||
                default:
 | 
			
		||||
                    return SIPCallReportReason.UNSUPPORTED;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return SIPCallReportReason.UNSUPPORTED;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void processRealTimeSipCallStartEvent(int customerId, long equipmentId, long eventTimestamp,
 | 
			
		||||
            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
			
		||||
        if (videoVoiceReport.hasCallStart()) {
 | 
			
		||||
 | 
			
		||||
            CallStart apCallStart = videoVoiceReport.getCallStart();
 | 
			
		||||
 | 
			
		||||
            RealTimeSipCallStartEvent cloudSipCallStartEvent = new RealTimeSipCallStartEvent(customerId, equipmentId,
 | 
			
		||||
                    eventTimestamp);
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasClientMac() && apCallStart.getClientMac().isValidUtf8()) {
 | 
			
		||||
                cloudSipCallStartEvent.setClientMacAddress(MacAddress.valueOf(apCallStart.getClientMac().toStringUtf8()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasDeviceInfo()) {
 | 
			
		||||
                cloudSipCallStartEvent.setDeviceInfo(apCallStart.getDeviceInfo());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasProviderDomain()) {
 | 
			
		||||
                cloudSipCallStartEvent.setProviderDomain(apCallStart.getProviderDomain());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasSessionId()) {
 | 
			
		||||
                cloudSipCallStartEvent.setAssociationId(apCallStart.getSessionId());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasWifiSessionId()) {
 | 
			
		||||
                cloudSipCallStartEvent.setAssociationId(apCallStart.getWifiSessionId());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.getCodecsCount() > 0) {
 | 
			
		||||
                cloudSipCallStartEvent.setCodecs(apCallStart.getCodecsList());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasChannel()) {
 | 
			
		||||
                cloudSipCallStartEvent.setChannel(apCallStart.getChannel());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasBand()) {
 | 
			
		||||
                cloudSipCallStartEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
 | 
			
		||||
                        .getRadioTypeFromOpensyncStatsRadioBandType(apCallStart.getBand()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            eventsList.add(cloudSipCallStartEvent);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void processRealTimeSipCallStopEvent(int customerId, long equipmentId, long eventTimestamp,
 | 
			
		||||
            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
			
		||||
        if (videoVoiceReport.hasCallStop()) {
 | 
			
		||||
 | 
			
		||||
            CallStop apCallStop = videoVoiceReport.getCallStop();
 | 
			
		||||
 | 
			
		||||
            RealTimeSipCallStopEvent cloudSipCallStopEvent = new RealTimeSipCallStopEvent(customerId, equipmentId,
 | 
			
		||||
                    eventTimestamp);
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasCallDuration()) {
 | 
			
		||||
 | 
			
		||||
                cloudSipCallStopEvent.setCallDuration(apCallStop.getCallDuration());
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasClientMac() && apCallStop.getClientMac().isValidUtf8()) {
 | 
			
		||||
 | 
			
		||||
                cloudSipCallStopEvent.setClientMacAddress(MacAddress.valueOf(apCallStop.getClientMac().toStringUtf8()));
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasReason()) {
 | 
			
		||||
 | 
			
		||||
                switch (apCallStop.getReason()) {
 | 
			
		||||
                case BYE_OK:
 | 
			
		||||
                    cloudSipCallStopEvent.setReason(SipCallStopReason.BYE_OK);
 | 
			
		||||
                    break;
 | 
			
		||||
                case CALL_DROPPED:
 | 
			
		||||
                    cloudSipCallStopEvent.setReason(SipCallStopReason.DROPPED);
 | 
			
		||||
                    break;
 | 
			
		||||
 | 
			
		||||
                default:
 | 
			
		||||
                    cloudSipCallStopEvent.setReason(SipCallStopReason.UNSUPPORTED);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasSessionId()) {
 | 
			
		||||
 | 
			
		||||
                cloudSipCallStopEvent.setAssociationId(apCallStop.getSessionId());
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasWifiSessionId()) {
 | 
			
		||||
                cloudSipCallStopEvent.setSipCallId(apCallStop.getWifiSessionId());
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.getStatsCount() > 0) {
 | 
			
		||||
                cloudSipCallStopEvent.setStatuses(processRtpFlowStats(apCallStop.getStatsList()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasProviderDomain()) {
 | 
			
		||||
                cloudSipCallStopEvent.setProviderDomain(apCallStop.getProviderDomain());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.getCodecsCount() > 0) {
 | 
			
		||||
                cloudSipCallStopEvent.setCodecs(apCallStop.getCodecsList());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasChannel()) {
 | 
			
		||||
                cloudSipCallStopEvent.setChannel(apCallStop.getChannel());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasBand()) {
 | 
			
		||||
                cloudSipCallStopEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
 | 
			
		||||
                        .getRadioTypeFromOpensyncStatsRadioBandType(apCallStop.getBand()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            eventsList.add(cloudSipCallStopEvent);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void processRtsStartEvent(int customerId, long equipmentId, long eventTimestamp,
 | 
			
		||||
            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
			
		||||
        if (videoVoiceReport.hasStreamVideoServer()) {
 | 
			
		||||
            StreamingVideoServerDetected apStreamVideoServer = videoVoiceReport.getStreamVideoServer();
 | 
			
		||||
            RealTimeStreamingStartEvent rtsStartEvent = new RealTimeStreamingStartEvent(customerId, equipmentId,
 | 
			
		||||
                    eventTimestamp);
 | 
			
		||||
            if (apStreamVideoServer.hasServerIp()) {
 | 
			
		||||
                try {
 | 
			
		||||
                    rtsStartEvent
 | 
			
		||||
                            .setServerIp(InetAddress.getByAddress(apStreamVideoServer.getServerIp().toByteArray()));
 | 
			
		||||
                } catch (UnknownHostException e) {
 | 
			
		||||
                    LOG.error("Cannot get IP Address from {}", apStreamVideoServer.getServerIp(), e);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (apStreamVideoServer.hasStreamingVideoType()) {
 | 
			
		||||
                rtsStartEvent.setType(OvsdbToWlanCloudTypeMappingUtility
 | 
			
		||||
                        .getCloudStreamingVideoTypeFromApReport(apStreamVideoServer.getStreamingVideoType()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apStreamVideoServer.hasServerDnsName()) {
 | 
			
		||||
                rtsStartEvent.setServerDnsName(apStreamVideoServer.getServerDnsName());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apStreamVideoServer.hasClientMac()) {
 | 
			
		||||
                rtsStartEvent.setClientMacAddress(MacAddress.valueOf(apStreamVideoServer.getClientMac().toByteArray()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apStreamVideoServer.hasSessionId()) {
 | 
			
		||||
                rtsStartEvent.setSessionId(apStreamVideoServer.getSessionId());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apStreamVideoServer.hasVideoSessionId()) {
 | 
			
		||||
                rtsStartEvent.setVideoSessionId(apStreamVideoServer.getVideoSessionId());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            eventsList.add(rtsStartEvent);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private List<com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats> processRtpFlowStats(List<OpensyncStats.RtpFlowStats> stats) {
 | 
			
		||||
        List<com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats> cloudRtpFlowStatsList = new ArrayList<>();
 | 
			
		||||
            for (RtpFlowStats apRtpFlowStats : callReport.getStatsList()) {
 | 
			
		||||
        for (RtpFlowStats apRtpFlowStats : stats) {
 | 
			
		||||
 | 
			
		||||
            com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats cloudRtpStats = new com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats();
 | 
			
		||||
 | 
			
		||||
@@ -1101,156 +1371,10 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                cloudRtpStats.setPacketLossPercentage(apRtpFlowStats.getPacketLossPercent());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            cloudRtpFlowStatsList.add(cloudRtpStats);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            RealTimeSipCallReportEvent cloudSipCallReportEvent = new RealTimeSipCallReportEvent(customerId, equipmentId,
 | 
			
		||||
                    eventTimestamp);
 | 
			
		||||
            cloudSipCallReportEvent.setClientMacAddress(MacAddress.valueOf(callReport.getClientMac()));
 | 
			
		||||
            cloudSipCallReportEvent.setStatuses(cloudRtpFlowStatsList);
 | 
			
		||||
            cloudSipCallReportEvent.setEventType(RealTimeEventType.SipCallReport);
 | 
			
		||||
            cloudSipCallReportEvent.setReportReason(SIPCallReportReason.GOT_PUBLISH);
 | 
			
		||||
            cloudSipCallReportEvent.setSipCallId(callReport.getWifiSessionId());
 | 
			
		||||
            cloudSipCallReportEvent.setAssociationId(callReport.getSessionId());
 | 
			
		||||
 | 
			
		||||
            eventsList.add(cloudSipCallReportEvent);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void processRealTimeSipCallStartEvent(int customerId, long equipmentId, long eventTimestamp,
 | 
			
		||||
            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
			
		||||
        if (videoVoiceReport.hasCallStart()) {
 | 
			
		||||
 | 
			
		||||
            CallStart apCallStart = videoVoiceReport.getCallStart();
 | 
			
		||||
 | 
			
		||||
            RealTimeSipCallStartEvent cloudSipCallStartEvent = new RealTimeSipCallStartEvent(customerId, equipmentId,
 | 
			
		||||
                    eventTimestamp);
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasClientMac()) {
 | 
			
		||||
                cloudSipCallStartEvent.setClientMacAddress(MacAddress.valueOf(apCallStart.getClientMac()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasDeviceInfo()) {
 | 
			
		||||
                cloudSipCallStartEvent.setDeviceInfo(apCallStart.getDeviceInfo());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasProviderDomain()) {
 | 
			
		||||
                cloudSipCallStartEvent.setProviderDomain(apCallStart.getProviderDomain());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasSessionId()) {
 | 
			
		||||
                cloudSipCallStartEvent.setAssociationId(apCallStart.getSessionId());
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStart.hasWifiSessionId()) {
 | 
			
		||||
                cloudSipCallStartEvent.setAssociationId(apCallStart.getWifiSessionId());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            eventsList.add(cloudSipCallStartEvent);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void processRealTimeSipCallStopEvent(int customerId, long equipmentId, long eventTimestamp,
 | 
			
		||||
            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
			
		||||
        if (videoVoiceReport.hasCallStop()) {
 | 
			
		||||
 | 
			
		||||
            CallStop apCallStop = videoVoiceReport.getCallStop();
 | 
			
		||||
 | 
			
		||||
            RealTimeSipCallStopEvent cloudSipCallStopEvent = new RealTimeSipCallStopEvent(customerId, equipmentId,
 | 
			
		||||
                    eventTimestamp);
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasCallDuration()) {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                cloudSipCallStopEvent.setCallDuration(apCallStop.getCallDuration());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasClientMac()) {
 | 
			
		||||
 | 
			
		||||
                cloudSipCallStopEvent.setClientMacAddress(MacAddress.valueOf(apCallStop.getClientMac()));
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasReason()) {
 | 
			
		||||
 | 
			
		||||
                switch (apCallStop.getReason()) {
 | 
			
		||||
                    case BYE_OK:
 | 
			
		||||
                        cloudSipCallStopEvent.setReason(SipCallStopReason.BYE_OK);
 | 
			
		||||
                        break;
 | 
			
		||||
                    case CALL_DROPPED:
 | 
			
		||||
                        cloudSipCallStopEvent.setReason(SipCallStopReason.DROPPED);
 | 
			
		||||
                        break;
 | 
			
		||||
 | 
			
		||||
                    default:
 | 
			
		||||
                        cloudSipCallStopEvent.setReason(SipCallStopReason.UNSUPPORTED);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasSessionId()) {
 | 
			
		||||
 | 
			
		||||
                cloudSipCallStopEvent.setAssociationId(apCallStop.getSessionId());
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apCallStop.hasWifiSessionId()) {
 | 
			
		||||
                cloudSipCallStopEvent.setSipCallId(apCallStop.getWifiSessionId());
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            eventsList.add(cloudSipCallStopEvent);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void processRtsStartEvent(int customerId, long equipmentId, long eventTimestamp,
 | 
			
		||||
            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
			
		||||
        if (videoVoiceReport.hasStreamVideoServer()) {
 | 
			
		||||
            StreamingVideoServerDetected apStreamVideoServer = videoVoiceReport.getStreamVideoServer();
 | 
			
		||||
            RealTimeStreamingStartEvent rtsStartEvent = new RealTimeStreamingStartEvent(customerId, equipmentId,
 | 
			
		||||
                    eventTimestamp);
 | 
			
		||||
            if (apStreamVideoServer.hasServerIp()) {
 | 
			
		||||
                try {
 | 
			
		||||
                    rtsStartEvent
 | 
			
		||||
                            .setServerIp(InetAddress.getByAddress(apStreamVideoServer.getServerIp().toByteArray()));
 | 
			
		||||
                } catch (UnknownHostException e) {
 | 
			
		||||
                    LOG.error("Cannot get IP Address from {}", apStreamVideoServer.getServerIp(), e);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (apStreamVideoServer.hasStreamingVideoType()) {
 | 
			
		||||
                rtsStartEvent.setType(OvsdbToWlanCloudTypeMappingUtility
 | 
			
		||||
                        .getCloudStreamingVideoTypeFromApReport(apStreamVideoServer.getStreamingVideoType()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apStreamVideoServer.hasServerDnsName()) {
 | 
			
		||||
                rtsStartEvent.setServerDnsName(apStreamVideoServer.getServerDnsName());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apStreamVideoServer.hasClientMac()) {
 | 
			
		||||
                rtsStartEvent.setClientMacAddress(MacAddress.valueOf(apStreamVideoServer.getClientMac().toByteArray()));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apStreamVideoServer.hasSessionId()) {
 | 
			
		||||
                rtsStartEvent.setSessionId(apStreamVideoServer.getSessionId());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (apStreamVideoServer.hasVideoSessionId()) {
 | 
			
		||||
                rtsStartEvent.setVideoSessionId(apStreamVideoServer.getVideoSessionId());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            eventsList.add(rtsStartEvent);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        return cloudRtpFlowStatsList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void processRtsStartSessionEvent(int customerId, long equipmentId, long eventTimestamp,
 | 
			
		||||
@@ -1339,10 +1463,9 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    void populateApNodeMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId,
 | 
			
		||||
            long locationId) {
 | 
			
		||||
        LOG.debug("populateApNodeMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
			
		||||
        LOG.info("populateApNodeMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
			
		||||
        ApNodeMetrics apNodeMetrics = new ApNodeMetrics();
 | 
			
		||||
        ServiceMetric smr = new ServiceMetric(customerId, equipmentId);
 | 
			
		||||
 | 
			
		||||
@@ -1535,7 +1658,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                // we need to perform a weighted average here because the
 | 
			
		||||
                // samples are in percentage, and may be of different durations
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                busyTx += surveySample.getBusyTx() * surveySample.getDurationMs();
 | 
			
		||||
                busyRx += surveySample.getBusyRx() * surveySample.getDurationMs();
 | 
			
		||||
                busy += surveySample.getBusy() * surveySample.getDurationMs();
 | 
			
		||||
@@ -1543,7 +1665,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                totalDurationMs += surveySample.getDurationMs();
 | 
			
		||||
                noiseList.add(getNegativeSignedIntFrom8BitUnsigned(surveySample.getNoise()));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (totalDurationMs > 0) {
 | 
			
		||||
@@ -1593,6 +1714,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        populateNetworkProbeMetrics(report, apNodeMetrics);
 | 
			
		||||
        updateNetworkAdminStatusReport(customerId, equipmentId, apNodeMetrics);
 | 
			
		||||
        RadioUtilizationReport radioUtilizationReport = new RadioUtilizationReport();
 | 
			
		||||
        radioUtilizationReport.setAvgNoiseFloor(avgNoiseFloor);
 | 
			
		||||
        radioUtilizationReport.setRadioUtilization(radioUtilizationDetailsMap);
 | 
			
		||||
@@ -1601,9 +1723,78 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
        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.debug("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.debug("No DhcpState present in networkProbeMetrics, set to 'normal");
 | 
			
		||||
                statusData.setDhcpStatus(StatusCode.normal);
 | 
			
		||||
            } else {
 | 
			
		||||
                statusData.setDhcpStatus(stateUpDownErrorToStatusCode(n.getDhcpState()));
 | 
			
		||||
            }
 | 
			
		||||
            if (n.getRadiusState() == null) {
 | 
			
		||||
                LOG.debug("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.debug("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,
 | 
			
		||||
            RadioUtilizationReport radioUtilizationReport) {
 | 
			
		||||
        LOG.debug(
 | 
			
		||||
        LOG.info(
 | 
			
		||||
                "Processing updateDeviceStatusRadioUtilizationReport for equipmentId {} with RadioUtilizationReport {}",
 | 
			
		||||
                equipmentId, radioUtilizationReport);
 | 
			
		||||
 | 
			
		||||
@@ -1657,7 +1848,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                        ipAddress = InetAddress.getByName(dnsProbeMetricFromAp.getServerIP());
 | 
			
		||||
                        cloudDnsProbeMetric.setDnsServerIp(ipAddress);
 | 
			
		||||
                    } catch (UnknownHostException e) {
 | 
			
		||||
                        LOG.error("Could not get DNS Server IP from network_probe metrics", e);
 | 
			
		||||
                        LOG.error("Could not get DNS Server IP from network_probe service_metrics_collection_config",
 | 
			
		||||
                                e);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
@@ -1671,7 +1863,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                if (radiusMetrics.hasLatency()) {
 | 
			
		||||
                    networkProbeMetrics.setRadiusLatencyInMs(radiusMetrics.getLatency());
 | 
			
		||||
                }
 | 
			
		||||
                if (radiusMetrics.hasRadiusState()) {
 | 
			
		||||
 | 
			
		||||
                if (radiusMetrics.hasRadiusState()) {
 | 
			
		||||
                    StateUpDownError radiusState = OvsdbToWlanCloudTypeMappingUtility
 | 
			
		||||
@@ -1681,7 +1872,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (networkProbe.hasVlanProbe()) {
 | 
			
		||||
@@ -1693,7 +1884,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                    StateUpDownError dhcpState = OvsdbToWlanCloudTypeMappingUtility
 | 
			
		||||
                            .getCloudMetricsStateFromOpensyncStatsStateUpDown(vlanMetrics.getDhcpState());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    networkProbeMetrics.setDhcpState(dhcpState);
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
@@ -1727,14 +1917,13 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
    void populateApClientMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId,
 | 
			
		||||
            long locationId) {
 | 
			
		||||
        LOG.debug("populateApClientMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
			
		||||
        LOG.info("populateApClientMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
			
		||||
 | 
			
		||||
        for (ClientReport clReport : report.getClientsList()) {
 | 
			
		||||
            for (Client cl : clReport.getClientListList()) {
 | 
			
		||||
 | 
			
		||||
                if (cl.getMacAddress() == null) {
 | 
			
		||||
                    LOG.debug(
 | 
			
		||||
                            "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);
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
@@ -1831,7 +2020,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
    void populateNeighbourScanReports(List<ServiceMetric> metricRecordList, Report report, int customerId,
 | 
			
		||||
            long equipmentId, long locationId) {
 | 
			
		||||
        LOG.debug("populateNeighbourScanReports for Customer {} Equipment {}", customerId, equipmentId);
 | 
			
		||||
        LOG.info("populateNeighbourScanReports for Customer {} Equipment {}", customerId, equipmentId);
 | 
			
		||||
 | 
			
		||||
        for (Neighbor neighbor : report.getNeighborsList()) {
 | 
			
		||||
 | 
			
		||||
@@ -1905,18 +2094,18 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
            boolean isReassociation = true;
 | 
			
		||||
            if (clientInstance == null) {
 | 
			
		||||
 | 
			
		||||
                LOG.info("Cannot get client instance for {}", client.getMacAddress());
 | 
			
		||||
                LOG.debug("Cannot get client instance for {}", client.getMacAddress());
 | 
			
		||||
                return null;
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            LOG.info("Client {}", clientInstance);
 | 
			
		||||
            LOG.debug("Client {}", clientInstance);
 | 
			
		||||
 | 
			
		||||
            ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId,
 | 
			
		||||
                    clientInstance.getMacAddress());
 | 
			
		||||
 | 
			
		||||
            if (clientSession == null) {
 | 
			
		||||
                LOG.info("Cannot get client session for {}", clientInstance.getMacAddress());
 | 
			
		||||
                LOG.warn("Cannot get client session for {}", clientInstance.getMacAddress());
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -1956,6 +2145,9 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpa2PSK)
 | 
			
		||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpa2OnlyPSK)) {
 | 
			
		||||
                    latestClientSessionDetails.setSecurityType(SecurityType.PSK);
 | 
			
		||||
                } else if (ssidConfig.getSecureMode().equals(SecureMode.wpa3OnlySAE)
 | 
			
		||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpa3MixedSAE)){
 | 
			
		||||
                    latestClientSessionDetails.setSecurityType(SecurityType.SAE);
 | 
			
		||||
                } else if (ssidConfig.getSecureMode().equals(SecureMode.wpa2Radius)
 | 
			
		||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpaRadius)
 | 
			
		||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpa2OnlyRadius)) {
 | 
			
		||||
@@ -1963,7 +2155,9 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                    latestClientSessionDetails.setEapDetails(new ClientEapDetails());
 | 
			
		||||
                } else if (ssidConfig.getSecureMode().equals(SecureMode.wpaEAP)
 | 
			
		||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpa2EAP)
 | 
			
		||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpa2OnlyEAP)) {
 | 
			
		||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpa2OnlyEAP)
 | 
			
		||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpa3OnlyEAP)
 | 
			
		||||
                        || ssidConfig.getSecureMode().equals(SecureMode.wpa3MixedEAP)) {
 | 
			
		||||
                    latestClientSessionDetails.setSecurityType(SecurityType.RADIUS);
 | 
			
		||||
                    latestClientSessionDetails.setEapDetails(new ClientEapDetails());
 | 
			
		||||
                } else {
 | 
			
		||||
@@ -1974,7 +2168,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                    latestClientSessionDetails.setDynamicVlan(ssidConfig.getVlanId());
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                RadioBasedSsidConfiguration radioConfig = ssidConfig.getRadioBasedConfigs().get(radioType);
 | 
			
		||||
                latestClientSessionDetails
 | 
			
		||||
                        .setIs11KUsed(radioConfig.getEnable80211k() != null ? radioConfig.getEnable80211k() : false);
 | 
			
		||||
@@ -2003,12 +2196,11 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
    ClientSessionMetricDetails calculateClientSessionMetricDetails(sts.OpensyncStats.Client client, long timestamp) {
 | 
			
		||||
 | 
			
		||||
        LOG.debug("calculateClientSessionMetricDetails for Client {} at timestamp {}", client.getMacAddress(),
 | 
			
		||||
        LOG.info("calculateClientSessionMetricDetails for Client {} at timestamp {}", client.getMacAddress(),
 | 
			
		||||
                timestamp);
 | 
			
		||||
 | 
			
		||||
        ClientSessionMetricDetails metricDetails = new ClientSessionMetricDetails();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if (LOG.isDebugEnabled())
 | 
			
		||||
            LOG.debug("Stats: {} DurationMs {}", client.getStats(), client.getDurationMs());
 | 
			
		||||
        int rssi = client.getStats().getRssi();
 | 
			
		||||
@@ -2049,7 +2241,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                LOG.debug("RxMbps {} TxMbps {} ", metricDetails.getRxMbps(), metricDetails.getTxMbps());
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            LOG.info("Cannot calculate tx/rx throughput for Client {} based on duration of {} Ms",
 | 
			
		||||
            LOG.warn("Cannot calculate tx/rx throughput for Client {} based on duration of {} Ms",
 | 
			
		||||
                    client.getMacAddress(), client.getDurationMs());
 | 
			
		||||
        }
 | 
			
		||||
        metricDetails.setLastMetricTimestamp(timestamp);
 | 
			
		||||
@@ -2060,16 +2252,14 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
    void populateApSsidMetrics(List<ServiceMetric> metricRecordList, Report report, int customerId, long equipmentId,
 | 
			
		||||
            String apId, long locationId) {
 | 
			
		||||
 | 
			
		||||
        LOG.debug("populateApSsidMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
			
		||||
        LOG.info("populateApSsidMetrics for Customer {} Equipment {}", customerId, equipmentId);
 | 
			
		||||
        ServiceMetric smr = new ServiceMetric(customerId, equipmentId);
 | 
			
		||||
        smr.setLocationId(locationId);
 | 
			
		||||
        ApSsidMetrics apSsidMetrics = new ApSsidMetrics();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        smr.setDetails(apSsidMetrics);
 | 
			
		||||
        metricRecordList.add(smr);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        for (ClientReport clientReport : report.getClientsList()) {
 | 
			
		||||
 | 
			
		||||
            LOG.debug("ClientReport for channel {} RadioBand {}", clientReport.getChannel(), clientReport.getBand());
 | 
			
		||||
@@ -2120,7 +2310,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
            for (Client client : clientReport.getClientListList()) {
 | 
			
		||||
                if (client.hasStats()) {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    if (client.hasSsid()) {
 | 
			
		||||
                        ssid = client.getSsid();
 | 
			
		||||
                    }
 | 
			
		||||
@@ -2145,7 +2334,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                    try {
 | 
			
		||||
 | 
			
		||||
                        if (client.hasConnected() && client.getConnected() && client.hasMacAddress()) {
 | 
			
		||||
                            // update metrics for connected client
 | 
			
		||||
                            // update service_metrics_collection_config for
 | 
			
		||||
                            // connected client
 | 
			
		||||
                            ClientSession session = handleClientSessionMetricsUpdate(customerId, equipmentId,
 | 
			
		||||
                                    locationId, radioType, clientReport.getTimestampMs(), client);
 | 
			
		||||
                            if (session != null) {
 | 
			
		||||
@@ -2155,7 +2345,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                            // Make sure, if we have a session for this client,
 | 
			
		||||
                            // it
 | 
			
		||||
                            // shows disconnected.
 | 
			
		||||
                            // update any metrics that need update if the
 | 
			
		||||
                            // update any service_metrics_collection_config that
 | 
			
		||||
                            // need update if the
 | 
			
		||||
                            // disconnect occured during this window
 | 
			
		||||
                            if (client.hasMacAddress()) {
 | 
			
		||||
                                ClientSession session = clientServiceInterface.getSessionOrNull(customerId, equipmentId,
 | 
			
		||||
@@ -2193,9 +2384,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                            continue; // not connected
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                    } catch (Exception e) {
 | 
			
		||||
                        LOG.debug("Unabled to update client {} session {}", client, e);
 | 
			
		||||
                        LOG.error("Unabled to update client {}", client, e);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
@@ -2267,12 +2457,22 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
    void populateChannelInfoReports(List<ServiceMetric> metricRecordList, Report report, int customerId,
 | 
			
		||||
            long equipmentId, long locationId, long profileId) {
 | 
			
		||||
 | 
			
		||||
        LOG.debug("populateChannelInfoReports for Customer {} Equipment {}", customerId, equipmentId);
 | 
			
		||||
        LOG.info("populateChannelInfoReports for Customer {} Equipment {}", customerId, equipmentId);
 | 
			
		||||
 | 
			
		||||
        ProfileContainer profileContainer = new ProfileContainer(
 | 
			
		||||
                profileServiceInterface.getProfileWithChildren(profileId));
 | 
			
		||||
        RfConfiguration rfConfig = (RfConfiguration) profileContainer.getChildOfTypeOrNull(profileId, ProfileType.rf)
 | 
			
		||||
        
 | 
			
		||||
        Profile rfProfile = profileContainer.getChildOfTypeOrNull(profileId, ProfileType.rf);
 | 
			
		||||
        RfConfiguration rfConfig = null;
 | 
			
		||||
        if (rfProfile != null) {
 | 
			
		||||
         rfConfig = (RfConfiguration) profileContainer.getChildOfTypeOrNull(profileId, ProfileType.rf)
 | 
			
		||||
                .getDetails();
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        if (rfConfig == null) {
 | 
			
		||||
            LOG.warn("Cannot get RfConfiguration for customerId {} equipmentId {}", customerId,equipmentId);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for (Survey survey : report.getSurveyList()) {
 | 
			
		||||
 | 
			
		||||
@@ -2327,7 +2527,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
                channelInfoReports.setChannelInformationReportsPerRadio(channelInfoMap);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            channelInfoReports.setChannelInformationReportsPerRadio(channelInfoMap);
 | 
			
		||||
            smr.setDetails(channelInfoReports);
 | 
			
		||||
            smr.setCreatedTimestamp(survey.getTimestampMs());
 | 
			
		||||
@@ -2337,10 +2536,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessor {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    int getNegativeSignedIntFrom8BitUnsigned(int unsignedValue) {
 | 
			
		||||
        byte b = (byte) Integer.parseInt(Integer.toHexString(unsignedValue), 16);
 | 
			
		||||
        return b;
 | 
			
		||||
 
 | 
			
		||||
@@ -88,7 +88,6 @@ import sts.OpensyncStats.Client;
 | 
			
		||||
import sts.OpensyncStats.ClientReport;
 | 
			
		||||
import sts.OpensyncStats.EventReport;
 | 
			
		||||
import sts.OpensyncStats.EventReport.ClientAssocEvent;
 | 
			
		||||
import sts.OpensyncStats.EventType;
 | 
			
		||||
import sts.OpensyncStats.RadioBandType;
 | 
			
		||||
import sts.OpensyncStats.Report;
 | 
			
		||||
 | 
			
		||||
@@ -162,20 +161,6 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testGetCustomerEquipment() {
 | 
			
		||||
 | 
			
		||||
        Equipment equipment = new Equipment();
 | 
			
		||||
        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
			
		||||
 | 
			
		||||
        Mockito.when(
 | 
			
		||||
                equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
 | 
			
		||||
                .thenReturn(equipment);
 | 
			
		||||
        assertNotNull(opensyncExternalIntegrationCloud.getCustomerEquipment("Test_Client_21P10C68818122"));
 | 
			
		||||
        assertNull(opensyncExternalIntegrationCloud.getCustomerEquipment("Test_Client_21P10C68818133"));
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testApConnected() {
 | 
			
		||||
 | 
			
		||||
@@ -697,7 +682,7 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
			
		||||
        protocolStatus.setCustomerId(2);
 | 
			
		||||
        protocolStatus.setEquipmentId(1L);
 | 
			
		||||
        EquipmentProtocolStatusData protocolStatusData = new EquipmentProtocolStatusData();
 | 
			
		||||
        protocolStatusData.setReportedCC(CountryCode.ca);
 | 
			
		||||
        protocolStatusData.setReportedCC(CountryCode.CA);
 | 
			
		||||
        protocolStatus.setDetails(protocolStatusData);
 | 
			
		||||
        protocolStatus.setStatusDataType(StatusDataType.PROTOCOL);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ import java.net.InetAddress;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import com.telecominfraproject.wlan.systemevent.models.SystemEvent;
 | 
			
		||||
import org.junit.After;
 | 
			
		||||
import org.junit.Before;
 | 
			
		||||
import org.junit.Ignore;
 | 
			
		||||
@@ -39,6 +40,8 @@ import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
			
		||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
			
		||||
import com.telecominfraproject.wlan.customer.service.CustomerServiceInterface;
 | 
			
		||||
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
 | 
			
		||||
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
 | 
			
		||||
import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
			
		||||
import com.telecominfraproject.wlan.firmware.FirmwareServiceInterface;
 | 
			
		||||
import com.telecominfraproject.wlan.location.service.LocationServiceInterface;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController;
 | 
			
		||||
@@ -52,18 +55,21 @@ import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSIDs;
 | 
			
		||||
import com.telecominfraproject.wlan.status.models.Status;
 | 
			
		||||
import com.telecominfraproject.wlan.status.models.StatusDataType;
 | 
			
		||||
 | 
			
		||||
import sts.OpensyncStats;
 | 
			
		||||
import sts.OpensyncStats.AssocType;
 | 
			
		||||
import sts.OpensyncStats.ChannelSwitchReason;
 | 
			
		||||
import sts.OpensyncStats.Client;
 | 
			
		||||
import sts.OpensyncStats.ClientReport;
 | 
			
		||||
import sts.OpensyncStats.DNSProbeMetric;
 | 
			
		||||
import sts.OpensyncStats.EventReport;
 | 
			
		||||
import sts.OpensyncStats.EventReport.ChannelSwitchEvent;
 | 
			
		||||
import sts.OpensyncStats.EventReport.ClientAssocEvent;
 | 
			
		||||
import sts.OpensyncStats.NetworkProbe;
 | 
			
		||||
import sts.OpensyncStats.RADIUSMetrics;
 | 
			
		||||
import sts.OpensyncStats.RadioBandType;
 | 
			
		||||
import sts.OpensyncStats.Report;
 | 
			
		||||
import sts.OpensyncStats.StateUpDown;
 | 
			
		||||
import sts.OpensyncStats.VLANMetrics;
 | 
			
		||||
import sts.OpensyncStats.EventReport.ClientAssocEvent;
 | 
			
		||||
 | 
			
		||||
@RunWith(SpringRunner.class)
 | 
			
		||||
@ActiveProfiles(profiles = { "integration_test", })
 | 
			
		||||
@@ -164,6 +170,20 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testProcessMqttMessageStringReport() {
 | 
			
		||||
        Equipment equipment = new Equipment();
 | 
			
		||||
 | 
			
		||||
        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
			
		||||
        
 | 
			
		||||
        equipment.setId(1L);
 | 
			
		||||
 | 
			
		||||
        Mockito.when(
 | 
			
		||||
                equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
 | 
			
		||||
                .thenReturn(equipment);
 | 
			
		||||
        
 | 
			
		||||
        equipment.setProfileId(0L);
 | 
			
		||||
        
 | 
			
		||||
        Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
 | 
			
		||||
        Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
 | 
			
		||||
 | 
			
		||||
        Report report = Report.newBuilder().setNodeID("21P10C68818122")
 | 
			
		||||
                .addAllClients(getOpensyncStatsClientReportsList())
 | 
			
		||||
@@ -239,6 +259,55 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
			
		||||
        // TODO: implement me when wcs stats reports supported
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Verify CallStart, CallStop and CallReport are properly processed and published as
 | 
			
		||||
    // respective events (5 events in total)
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testProcessMqttMessageStringMultipleVideoVoiceReport() {
 | 
			
		||||
        OpensyncStats.VideoVoiceReport.Builder callStartVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
 | 
			
		||||
                setCallStart(getDefaultCallStart());
 | 
			
		||||
        OpensyncStats.VideoVoiceReport.Builder callReportGotPublishVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
 | 
			
		||||
                setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.GOT_PUBLISH, 121, 1028, 1316, 1888, 298, 2, 100, 200));
 | 
			
		||||
        OpensyncStats.VideoVoiceReport.Builder callReportRoamedToVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
 | 
			
		||||
                setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_TO, 123, 1020, 1116, 1345, 223, 0, 102, 203));
 | 
			
		||||
        OpensyncStats.VideoVoiceReport.Builder callReportRoamedFromVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
 | 
			
		||||
                setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_FROM, 122, 1029, 1300, 1234, 111, 3, 101, 201));
 | 
			
		||||
        OpensyncStats.VideoVoiceReport.Builder callStopVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
 | 
			
		||||
                setCallStop(getDefaultCallStop());
 | 
			
		||||
        // Create report with multiple voiceReports in one
 | 
			
		||||
        Report multipleVoiceReportsInOneReport = Report.newBuilder().addVideoVoiceReport(callStartVoiceReportBuilder).
 | 
			
		||||
                addVideoVoiceReport(callReportGotPublishVoiceReportBuilder).
 | 
			
		||||
                addVideoVoiceReport(callReportRoamedFromVoiceReportBuilder).
 | 
			
		||||
                addVideoVoiceReport(callReportRoamedToVoiceReportBuilder).
 | 
			
		||||
                addVideoVoiceReport(callStopVoiceReportBuilder).
 | 
			
		||||
                setNodeID("1").
 | 
			
		||||
                build();
 | 
			
		||||
 | 
			
		||||
        opensyncExternalIntegrationMqttProcessor.populateSipCallReport(null, multipleVoiceReportsInOneReport, 1, 2L, "TestAP", 12L);
 | 
			
		||||
 | 
			
		||||
        Mockito.verify(equipmentMetricsCollectorInterface, Mockito.times(1)).publishEventsBulk(Mockito.anyList());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Create report with 1 voiceReports that contains multiple Calls
 | 
			
		||||
    // Note that GOT_PUBLISH and ROAMED_FROM are ignored in the CallReport. ROAMED_TO overwrites them
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testProcessMqttMessageStringOneVideoVoiceReport() {
 | 
			
		||||
 | 
			
		||||
        OpensyncStats.VideoVoiceReport.Builder videoVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
 | 
			
		||||
                setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.GOT_PUBLISH, 121, 1028, 1316,1888, 298, 2, 100,200)).
 | 
			
		||||
                setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_FROM, 122, 1029, 1300,1234, 111, 3, 101,201)).
 | 
			
		||||
                setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_TO, 123, 1020, 1116,1345, 223, 0, 102,203)).
 | 
			
		||||
                setCallStart(getDefaultCallStart()).
 | 
			
		||||
                setCallStop(getDefaultCallStop());
 | 
			
		||||
        Report oneVoiceReportWithMultipleCallsInOneReport = Report.getDefaultInstance().toBuilder().
 | 
			
		||||
                addVideoVoiceReport(videoVoiceReportBuilder).
 | 
			
		||||
                setNodeID("1").
 | 
			
		||||
                build();
 | 
			
		||||
 | 
			
		||||
        opensyncExternalIntegrationMqttProcessor.populateSipCallReport(null, oneVoiceReportWithMultipleCallsInOneReport, 1, 2L, "TestAP", 12L);
 | 
			
		||||
 | 
			
		||||
        Mockito.verify(equipmentMetricsCollectorInterface, Mockito.times(1)).publishEventsBulk(Mockito.anyList());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testpopulateNetworkProbeMetrics() throws Exception {
 | 
			
		||||
 | 
			
		||||
@@ -297,6 +366,74 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
			
		||||
        return bssidList;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private OpensyncStats.CallStart getDefaultCallStart() {
 | 
			
		||||
        OpensyncStats.CallStart.Builder callStartBuilder = OpensyncStats.CallStart.newBuilder();
 | 
			
		||||
        callStartBuilder.setBand(RadioBandType.BAND5G);
 | 
			
		||||
        callStartBuilder.setChannel(40);
 | 
			
		||||
        callStartBuilder.addCodecs("110 opus/48000/2");
 | 
			
		||||
        callStartBuilder.addCodecs("102 iLBC/8000");
 | 
			
		||||
        callStartBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
 | 
			
		||||
        callStartBuilder.setDeviceInfo("Test Device");
 | 
			
		||||
        callStartBuilder.setProviderDomain("skype");
 | 
			
		||||
        callStartBuilder.setSessionId(123L);
 | 
			
		||||
        callStartBuilder.setWifiSessionId(1234L);
 | 
			
		||||
 | 
			
		||||
        return callStartBuilder.build();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private OpensyncStats.CallStop getDefaultCallStop() {
 | 
			
		||||
        OpensyncStats.CallStop.Builder callStopBuilder = OpensyncStats.CallStop.newBuilder();
 | 
			
		||||
        callStopBuilder.setBand(RadioBandType.BAND5G);
 | 
			
		||||
        callStopBuilder.setChannel(40);
 | 
			
		||||
        callStopBuilder.addCodecs("110 opus/48000/2");
 | 
			
		||||
        callStopBuilder.addCodecs("102 iLBC/8000");
 | 
			
		||||
        callStopBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
 | 
			
		||||
        callStopBuilder.setCallDuration(1230);
 | 
			
		||||
        callStopBuilder.setProviderDomain("skype");
 | 
			
		||||
        callStopBuilder.setSessionId(123L);
 | 
			
		||||
        callStopBuilder.setWifiSessionId(1234L);
 | 
			
		||||
        callStopBuilder.setReason(OpensyncStats.CallStop.CallStopReason.BYE_OK);
 | 
			
		||||
        callStopBuilder.addStats(getRtpFlowStats(121, 1380, 1400,3000, 119, 3, 205,350));
 | 
			
		||||
 | 
			
		||||
        return callStopBuilder.build();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    private OpensyncStats.RtpFlowStats getRtpFlowStats(int codec, int jitter, int latency, int totalPackets,
 | 
			
		||||
                                                       int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) {
 | 
			
		||||
        OpensyncStats.RtpFlowStats.Builder rtpFlowStatsBuilder = OpensyncStats.RtpFlowStats.newBuilder();
 | 
			
		||||
        rtpFlowStatsBuilder.setCodec(codec);
 | 
			
		||||
        rtpFlowStatsBuilder.setBlockCodecs(ByteString.copyFrom(new byte[] { (byte) 0xe6, 0x1 }));
 | 
			
		||||
        rtpFlowStatsBuilder.setDirection(OpensyncStats.RtpFlowStats.RtpFlowDirection.RTP_DOWNSTREAM);
 | 
			
		||||
        rtpFlowStatsBuilder.setRtpFlowType(OpensyncStats.RtpFlowStats.RtpFlowType.RTP_VOICE);
 | 
			
		||||
        rtpFlowStatsBuilder.setJitter(jitter);
 | 
			
		||||
        rtpFlowStatsBuilder.setLatency(latency);
 | 
			
		||||
        rtpFlowStatsBuilder.setTotalPacketsSent(totalPackets);
 | 
			
		||||
        rtpFlowStatsBuilder.setTotalPacketsLost(totalPacketsLost);
 | 
			
		||||
        rtpFlowStatsBuilder.setMosx100(mos);
 | 
			
		||||
        rtpFlowStatsBuilder.setRtpSeqFirst(firstRtpSeq);
 | 
			
		||||
        rtpFlowStatsBuilder.setRtpSeqLast(lastRtpSeq);
 | 
			
		||||
 | 
			
		||||
        return rtpFlowStatsBuilder.build();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private OpensyncStats.CallReport getDefaultCallReport(OpensyncStats.CallReport.CallReportReason reason, int codec,
 | 
			
		||||
                                                          int jitter, int latency, int totalPackets, int totalPacketsLost,
 | 
			
		||||
                                                          int mos, int firstRtpSeq, int lastRtpSeq) {
 | 
			
		||||
        OpensyncStats.CallReport.Builder callReportBuilder = OpensyncStats.CallReport.newBuilder();
 | 
			
		||||
        callReportBuilder.setBand(RadioBandType.BAND5G);
 | 
			
		||||
        callReportBuilder.setChannel(40);
 | 
			
		||||
        callReportBuilder.addCodecs("110 opus/48000/2");
 | 
			
		||||
        callReportBuilder.addCodecs("102 iLBC/8000");
 | 
			
		||||
        callReportBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
 | 
			
		||||
        callReportBuilder.setProviderDomain("skype");
 | 
			
		||||
        callReportBuilder.setSessionId(123L);
 | 
			
		||||
        callReportBuilder.setWifiSessionId(1234L);
 | 
			
		||||
        callReportBuilder.setReason(reason);
 | 
			
		||||
        callReportBuilder.addStats(getRtpFlowStats(codec, jitter, latency, totalPackets, totalPacketsLost,
 | 
			
		||||
                mos, firstRtpSeq, lastRtpSeq));
 | 
			
		||||
 | 
			
		||||
        return callReportBuilder.build();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private List<EventReport> getOpensyncStatsEventReportsList() {
 | 
			
		||||
 | 
			
		||||
@@ -342,7 +479,14 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
			
		||||
        List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
 | 
			
		||||
        clientSessionList.add(clientSessionBuilder.build());
 | 
			
		||||
        
 | 
			
		||||
        sts.OpensyncStats.EventReport.ChannelSwitchEvent.Builder channelSwitchEventBuilder = sts.OpensyncStats.EventReport.ChannelSwitchEvent.getDefaultInstance().toBuilder();
 | 
			
		||||
        channelSwitchEventBuilder.setBand(RadioBandType.BAND5GL).setChannel(40).setReason(ChannelSwitchReason.high_interference).setTimestampMs(System.currentTimeMillis());
 | 
			
		||||
 | 
			
		||||
        List<ChannelSwitchEvent> channelSwitchEventList = new ArrayList<>();
 | 
			
		||||
        channelSwitchEventList.add(channelSwitchEventBuilder.build());
 | 
			
		||||
        
 | 
			
		||||
        eventReportBuilder.addAllClientSession(clientSessionList);
 | 
			
		||||
        eventReportBuilder.addAllChannelSwitch(channelSwitchEventList);
 | 
			
		||||
 | 
			
		||||
        eventReportList.add(eventReportBuilder.build());
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,11 +22,7 @@
 | 
			
		||||
			<artifactId>tip-wlan-opensync-protobuf</artifactId>
 | 
			
		||||
			<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>
 | 
			
		||||
			<artifactId>equipment-models</artifactId>
 | 
			
		||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
@@ -47,11 +43,7 @@
 | 
			
		||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<artifactId>client-models</artifactId>
 | 
			
		||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>com.vmware.ovsdb</groupId>
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
  <dependencies>
 | 
			
		||||
  	<dependency>
 | 
			
		||||
  		<groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
  		<artifactId>opensync-ext-interface</artifactId>
 | 
			
		||||
  		<artifactId>opensync-gateway</artifactId>
 | 
			
		||||
  		<version>${tip-wlan-cloud.release.version}</version>
 | 
			
		||||
  	</dependency>
 | 
			
		||||
  </dependencies>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  "model_type": "Equipment",
 | 
			
		||||
  "id": 51,
 | 
			
		||||
  "customerId": 2,
 | 
			
		||||
  "profileId": 5,
 | 
			
		||||
  "profileId": 12,
 | 
			
		||||
  "locationId": 8,
 | 
			
		||||
  "equipmentType": "AP",
 | 
			
		||||
  "inventoryId": "Test_Client_21P10C68818122",
 | 
			
		||||
 
 | 
			
		||||
@@ -10,55 +10,48 @@
 | 
			
		||||
    "countryCode" : "ca",
 | 
			
		||||
    "maintenanceWindow" : null,
 | 
			
		||||
    "rrmEnabled" : true,
 | 
			
		||||
    "dailyRebalancingDetails" : {
 | 
			
		||||
    "dailyActivityDetails" : {
 | 
			
		||||
      "SUNDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "MONDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "TUESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "WEDNESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "THURSDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "FRIDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "SATURDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "model_type": "Profile",
 | 
			
		||||
    "id": 17,
 | 
			
		||||
    "id": 12,
 | 
			
		||||
    "customerId": 2,
 | 
			
		||||
    "profileType": "equipment_ap",
 | 
			
		||||
    "name": "ApProfile-3-radios",
 | 
			
		||||
@@ -20,6 +20,11 @@
 | 
			
		||||
        "syntheticClientEnabled": true,
 | 
			
		||||
        "ledControlEnabled": true,
 | 
			
		||||
        "equipmentDiscovery": false,
 | 
			
		||||
        "greTunnelName": null,
 | 
			
		||||
        "greParentIfName": null,
 | 
			
		||||
        "greLocalInetAddr": null,
 | 
			
		||||
        "greRemoteInetAddr": null,
 | 
			
		||||
        "greRemoteMacAddr": null,
 | 
			
		||||
        "radioMap": {
 | 
			
		||||
            "is2dot4GHz": {
 | 
			
		||||
                "model_type": "RadioProfileConfiguration",
 | 
			
		||||
@@ -39,12 +44,13 @@
 | 
			
		||||
        },
 | 
			
		||||
        "profileType": "equipment_ap"
 | 
			
		||||
    },
 | 
			
		||||
    "createdTimestamp": 1602182806348,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806348,
 | 
			
		||||
    "createdTimestamp": 1606778369934,
 | 
			
		||||
    "lastModifiedTimestamp": 1606778443413,
 | 
			
		||||
    "childProfileIds": [
 | 
			
		||||
        2,
 | 
			
		||||
        16,
 | 
			
		||||
        5,
 | 
			
		||||
        10,
 | 
			
		||||
        11,
 | 
			
		||||
        13
 | 
			
		||||
        15
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 10,
 | 
			
		||||
		"id": 24,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "hotspot_2pt0",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-Config",
 | 
			
		||||
		"profileType": "passpoint",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Config",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot2Profile",
 | 
			
		||||
			"model_type": "PasspointProfile",
 | 
			
		||||
			"enableInterworkingAndHs20": true,
 | 
			
		||||
			"hessid": null,
 | 
			
		||||
        "accessNetworkType": "free_public_network",
 | 
			
		||||
        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"passpointAccessNetworkType": "free_public_network",
 | 
			
		||||
			"passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"additionalStepsRequiredForAccess": 0,
 | 
			
		||||
			"deauthRequestTimeout": 0,
 | 
			
		||||
			"operatingClass": 0,
 | 
			
		||||
@@ -29,10 +29,10 @@
 | 
			
		||||
			"internetConnectivity": true,
 | 
			
		||||
			"connectionCapabilitySet": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "ConnectionCapability",
 | 
			
		||||
					"model_type": "PasspointConnectionCapability",
 | 
			
		||||
					"connectionCapabilitiesPortNumber": 8888,
 | 
			
		||||
                "connectionCapabilitiesIpProtocol": "TCP",
 | 
			
		||||
                "connectionCapabilitiesStatus": "open"
 | 
			
		||||
					"connectionCapabilitiesStatus": "open",
 | 
			
		||||
					"connectionCapabilitiesIpProtocol": "TCP"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
			"ipAddressTypeAvailability": "public_IPv4_address_available",
 | 
			
		||||
@@ -45,28 +45,27 @@
 | 
			
		||||
			"disableDownstreamGroupAddressedForwarding": false,
 | 
			
		||||
			"enable2pt4GHz": true,
 | 
			
		||||
			"enable5GHz": true,
 | 
			
		||||
        "associatedAccessSsidNames": [
 | 
			
		||||
            "TipWlan-cloud-hotspot-access"
 | 
			
		||||
			"associatedAccessSsidProfileIds": [
 | 
			
		||||
				15
 | 
			
		||||
			],
 | 
			
		||||
        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
			
		||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
			
		||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
			
		||||
        "idProviderProfileNames": [
 | 
			
		||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
			
		||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
			
		||||
			"osuSsidProfileId": 16,
 | 
			
		||||
			"passpointOperatorProfileId": 17,
 | 
			
		||||
			"passpointVenueProfileId": 18,
 | 
			
		||||
			"passpointOsuProviderProfileIds": [
 | 
			
		||||
				19,
 | 
			
		||||
				20
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "hotspot_2pt0",
 | 
			
		||||
        "associatedSsids": [
 | 
			
		||||
            "TipWlan-cloud-hotspot-access"
 | 
			
		||||
        ]
 | 
			
		||||
			"accessNetworkType": "free_public_network",
 | 
			
		||||
			"networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"profileType": "passpoint"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182806040,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806040,
 | 
			
		||||
		"createdTimestamp": 1606778370807,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370807,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
        6,
 | 
			
		||||
        7,
 | 
			
		||||
        8,
 | 
			
		||||
        9
 | 
			
		||||
			17,
 | 
			
		||||
			18,
 | 
			
		||||
			19,
 | 
			
		||||
			20
 | 
			
		||||
		]
 | 
			
		||||
}
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 8,
 | 
			
		||||
		"id": 19,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "id_provider",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
			
		||||
		"profileType": "passpoint_osu_id_provider",
 | 
			
		||||
		"name": "TipWlan-Passpoint-OSU-Provider",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
			
		||||
			"model_type": "PasspointOsuProviderProfile",
 | 
			
		||||
			"domainName": "rogers.com",
 | 
			
		||||
			"mccMncList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "MccMnc",
 | 
			
		||||
					"model_type": "PasspointMccMnc",
 | 
			
		||||
					"mcc": 302,
 | 
			
		||||
					"mnc": 720,
 | 
			
		||||
					"iso": "ca",
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"naiRealmList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "NaiRealmInformation",
 | 
			
		||||
					"model_type": "PasspointNaiRealmInformation",
 | 
			
		||||
					"naiRealms": [
 | 
			
		||||
						"rogers.com"
 | 
			
		||||
					],
 | 
			
		||||
@@ -44,7 +44,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuIconList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -55,7 +55,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "fra",
 | 
			
		||||
@@ -66,7 +66,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -77,10 +77,10 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "osuServerUri": "https://example.com/osu/rogers/",
 | 
			
		||||
			"osuServerUri": "https://example.com/osu/rogers",
 | 
			
		||||
			"osuFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example provider rogers",
 | 
			
		||||
@@ -88,7 +88,7 @@
 | 
			
		||||
					"asDuple": "eng:Example provider rogers"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de fournisseur rogers",
 | 
			
		||||
@@ -104,7 +104,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuServiceDescription": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example services rogers",
 | 
			
		||||
@@ -112,7 +112,7 @@
 | 
			
		||||
					"asDuple": "eng:Example services rogers"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemples de services rogers",
 | 
			
		||||
@@ -120,24 +120,31 @@
 | 
			
		||||
					"asDuple": "fra:Exemples de services rogers"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "id_provider"
 | 
			
		||||
			"roamingOi": [
 | 
			
		||||
				1,
 | 
			
		||||
				2,
 | 
			
		||||
				3,
 | 
			
		||||
				4
 | 
			
		||||
			],
 | 
			
		||||
			"profileType": "passpoint_osu_id_provider"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182805654,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182805654,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
},
 | 
			
		||||
{
 | 
			
		||||
		"createdTimestamp": 1606778370345,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370345,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 9,
 | 
			
		||||
		"id": 20,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "id_provider",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
			
		||||
		"profileType": "passpoint_osu_id_provider",
 | 
			
		||||
		"name": "TipWlan-Passpoint-OSU-Provider-2",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
			
		||||
			"model_type": "PasspointOsuProviderProfile",
 | 
			
		||||
			"domainName": "telus.com",
 | 
			
		||||
			"mccMncList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "MccMnc",
 | 
			
		||||
					"model_type": "PasspointMccMnc",
 | 
			
		||||
					"mcc": 302,
 | 
			
		||||
					"mnc": 220,
 | 
			
		||||
					"iso": "ca",
 | 
			
		||||
@@ -149,7 +156,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"naiRealmList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "NaiRealmInformation",
 | 
			
		||||
					"model_type": "PasspointNaiRealmInformation",
 | 
			
		||||
					"naiRealms": [
 | 
			
		||||
						"telus.com"
 | 
			
		||||
					],
 | 
			
		||||
@@ -171,7 +178,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuIconList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -182,7 +189,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "fra",
 | 
			
		||||
@@ -193,7 +200,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -204,10 +211,10 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "osuServerUri": "https://example.com/osu/telus/",
 | 
			
		||||
			"osuServerUri": "https://example.com/osu/telus",
 | 
			
		||||
			"osuFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example provider telus",
 | 
			
		||||
@@ -215,7 +222,7 @@
 | 
			
		||||
					"asDuple": "eng:Example provider telus"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de fournisseur telus",
 | 
			
		||||
@@ -231,7 +238,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuServiceDescription": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example services telus",
 | 
			
		||||
@@ -239,7 +246,7 @@
 | 
			
		||||
					"asDuple": "eng:Example services telus"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemples de services telus",
 | 
			
		||||
@@ -247,10 +254,17 @@
 | 
			
		||||
					"asDuple": "fra:Exemples de services telus"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "id_provider"
 | 
			
		||||
			"roamingOi": [
 | 
			
		||||
				1,
 | 
			
		||||
				2,
 | 
			
		||||
				3,
 | 
			
		||||
				4
 | 
			
		||||
			],
 | 
			
		||||
			"profileType": "passpoint_osu_id_provider"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182805660,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182805660,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
}
 | 
			
		||||
		"createdTimestamp": 1606778370351,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370351,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 2,
 | 
			
		||||
		"id": 10,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "metrics",
 | 
			
		||||
        "name": "Metrics-Profile-3-radios",
 | 
			
		||||
		"profileType": "service_metrics_collection_config",
 | 
			
		||||
		"name": "Metrics-Profile-3-Radios",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
			
		||||
			"radioTypes": [
 | 
			
		||||
                "is5GHzU",
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
                "is2dot4GHz"
 | 
			
		||||
				"is2dot4GHz",
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"serviceMetricDataTypes": [
 | 
			
		||||
				"ApNode",
 | 
			
		||||
@@ -29,9 +29,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -41,9 +41,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -53,9 +53,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -65,33 +65,33 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
				"ApSsid": [
 | 
			
		||||
@@ -99,7 +99,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "ApSsid"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
@@ -113,7 +113,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "ApSsid"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
@@ -122,7 +122,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Client"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
@@ -136,7 +136,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Client"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
@@ -144,38 +144,14 @@
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -185,95 +161,83 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
				"Neighbour": [
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Neighbour"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "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"
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"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": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Neighbour"
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -283,16 +247,53 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"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"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				]
 | 
			
		||||
			},
 | 
			
		||||
            "profileType": "metrics"
 | 
			
		||||
			"profileType": "service_metrics_collection_config"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058699,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058699,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369931,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369931,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -1,25 +1,25 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 6,
 | 
			
		||||
		"id": 17,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "operator",
 | 
			
		||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
			
		||||
		"profileType": "passpoint_operator",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Operator",
 | 
			
		||||
		"details": {
 | 
			
		||||
            "model_type": "OperatorProfile",
 | 
			
		||||
			"model_type": "PasspointOperatorProfile",
 | 
			
		||||
			"serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
			
		||||
			"x509CertificateLocation": "/etc/ca.pem",
 | 
			
		||||
			"operatorFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
                    "dupleName": "Default friendly operator name",
 | 
			
		||||
					"dupleName": "Default friendly passpoint_operator name",
 | 
			
		||||
					"defaultDupleSeparator": ":",
 | 
			
		||||
                    "asDuple": "eng:Default friendly operator name"
 | 
			
		||||
					"asDuple": "eng:Default friendly passpoint_operator name"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Nom de l'opérateur convivial par défaut",
 | 
			
		||||
@@ -27,10 +27,11 @@
 | 
			
		||||
					"asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
            "profileType": "operator"
 | 
			
		||||
			"profileType": "passpoint_operator"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058719,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058719,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369945,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369945,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "model_type": "Profile",
 | 
			
		||||
    "id": 13,
 | 
			
		||||
    "id": 11,
 | 
			
		||||
    "customerId": 2,
 | 
			
		||||
    "profileType": "rf",
 | 
			
		||||
    "name": "TipWlan-rf",
 | 
			
		||||
@@ -9,16 +9,15 @@
 | 
			
		||||
        "rfConfigMap": {
 | 
			
		||||
            "is5GHz": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHz",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -26,17 +25,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -46,26 +40,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is2dot4GHz": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is2dot4GHz",
 | 
			
		||||
                "radioMode": "modeN",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is20MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -73,17 +72,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -93,26 +87,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 20,
 | 
			
		||||
                    "minLoadFactor": 50
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is5GHzU": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHzU",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -120,17 +119,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -140,26 +134,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is5GHzL": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHzL",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -167,17 +166,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -187,18 +181,24 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "profileType": "rf"
 | 
			
		||||
    },
 | 
			
		||||
    "createdTimestamp": 1602182806063,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806063,
 | 
			
		||||
    "createdTimestamp": 1606778369933,
 | 
			
		||||
    "lastModifiedTimestamp": 1606778369933,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
}
 | 
			
		||||
@@ -4,72 +4,6 @@
 | 
			
		||||
		"id": 5,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is5GHzU",
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
				"is2dot4GHz"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "wpa2PSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": "testing123",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1602113058718,
 | 
			
		||||
		"lastModifiedTimestamp": 1602113059547,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			10
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 11,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-3-radios",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
@@ -80,13 +14,15 @@
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "open",
 | 
			
		||||
			"secureMode": "wpa2OnlyPSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": null,
 | 
			
		||||
			"keyStr": "openwifi",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
@@ -94,7 +30,7 @@
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
@@ -106,17 +42,83 @@
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": "BRIDGE",
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1606778369598,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369598,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 15,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-passpoint-access",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-passpoint-access",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "wpa2PSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": "testing123",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
@@ -125,10 +127,77 @@
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1602183994766,
 | 
			
		||||
		"lastModifiedTimestamp": 1602183994766,
 | 
			
		||||
		"createdTimestamp": 1606778369943,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370811,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			10
 | 
			
		||||
			24
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 16,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-passpoint-osu",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-passpoint-osu",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is2dot4GHz"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "open",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": null,
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1606778369944,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370352,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			19,
 | 
			
		||||
			20
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,15 @@
 | 
			
		||||
[
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 7,
 | 
			
		||||
		"id": 18,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "venue",
 | 
			
		||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
			
		||||
		"profileType": "passpoint_venue",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Venue",
 | 
			
		||||
		"details": {
 | 
			
		||||
            "model_type": "VenueProfile",
 | 
			
		||||
			"model_type": "PasspointVenueProfile",
 | 
			
		||||
			"venueNameSet": [
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "VenueName",
 | 
			
		||||
					"model_type": "PasspointVenueName",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de lieu",
 | 
			
		||||
@@ -18,25 +18,26 @@
 | 
			
		||||
					"asDuple": "fra:Exemple de lieu"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "VenueName",
 | 
			
		||||
					"model_type": "PasspointVenueName",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
                    "dupleName": "Example venue",
 | 
			
		||||
					"dupleName": "Example passpoint_venue",
 | 
			
		||||
					"defaultDupleSeparator": ":",
 | 
			
		||||
					"venueUrl": "http://www.example.com/info-eng",
 | 
			
		||||
                    "asDuple": "eng:Example venue"
 | 
			
		||||
					"asDuple": "eng:Example passpoint_venue"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
			"venueTypeAssignment": {
 | 
			
		||||
                "model_type": "VenueTypeAssignment",
 | 
			
		||||
				"model_type": "PasspointVenueTypeAssignment",
 | 
			
		||||
				"venueDescription": "Research and Development Facility",
 | 
			
		||||
				"venueGroupId": 2,
 | 
			
		||||
				"venueTypeId": 8
 | 
			
		||||
			},
 | 
			
		||||
            "profileType": "venue"
 | 
			
		||||
			"profileType": "passpoint_venue"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058725,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058725,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369950,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369950,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -7,6 +7,7 @@
 | 
			
		||||
        <listEntry value="1"/>
 | 
			
		||||
    </listAttribute>
 | 
			
		||||
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/>
 | 
			
		||||
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/>
 | 
			
		||||
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
 | 
			
		||||
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
 | 
			
		||||
    <listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  "model_type": "Equipment",
 | 
			
		||||
  "id": 51,
 | 
			
		||||
  "customerId": 2,
 | 
			
		||||
  "profileId": 5,
 | 
			
		||||
  "profileId": 12,
 | 
			
		||||
  "locationId": 8,
 | 
			
		||||
  "equipmentType": "AP",
 | 
			
		||||
  "inventoryId": "Test_Client_21P10C68818122",
 | 
			
		||||
 
 | 
			
		||||
@@ -10,55 +10,48 @@
 | 
			
		||||
    "countryCode" : "ca",
 | 
			
		||||
    "maintenanceWindow" : null,
 | 
			
		||||
    "rrmEnabled" : true,
 | 
			
		||||
    "dailyRebalancingDetails" : {
 | 
			
		||||
    "dailyActivityDetails" : {
 | 
			
		||||
      "SUNDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "MONDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "TUESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "WEDNESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "THURSDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "FRIDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "SATURDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -10,55 +10,48 @@
 | 
			
		||||
    "countryCode" : "usa",
 | 
			
		||||
    "maintenanceWindow" : null,
 | 
			
		||||
    "rrmEnabled" : true,
 | 
			
		||||
    "dailyRebalancingDetails" : {
 | 
			
		||||
    "dailyActivityDetails" : {
 | 
			
		||||
      "SUNDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "MONDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "TUESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "WEDNESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "THURSDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "FRIDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "SATURDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "model_type": "Profile",
 | 
			
		||||
    "id": 17,
 | 
			
		||||
    "id": 12,
 | 
			
		||||
    "customerId": 2,
 | 
			
		||||
    "profileType": "equipment_ap",
 | 
			
		||||
    "name": "ApProfile-3-radios",
 | 
			
		||||
@@ -20,6 +20,11 @@
 | 
			
		||||
        "syntheticClientEnabled": true,
 | 
			
		||||
        "ledControlEnabled": true,
 | 
			
		||||
        "equipmentDiscovery": false,
 | 
			
		||||
        "greTunnelName": null,
 | 
			
		||||
        "greParentIfName": null,
 | 
			
		||||
        "greLocalInetAddr": null,
 | 
			
		||||
        "greRemoteInetAddr": null,
 | 
			
		||||
        "greRemoteMacAddr": null,
 | 
			
		||||
        "radioMap": {
 | 
			
		||||
            "is2dot4GHz": {
 | 
			
		||||
                "model_type": "RadioProfileConfiguration",
 | 
			
		||||
@@ -39,12 +44,13 @@
 | 
			
		||||
        },
 | 
			
		||||
        "profileType": "equipment_ap"
 | 
			
		||||
    },
 | 
			
		||||
    "createdTimestamp": 1602182806348,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806348,
 | 
			
		||||
    "createdTimestamp": 1606778369934,
 | 
			
		||||
    "lastModifiedTimestamp": 1606778443413,
 | 
			
		||||
    "childProfileIds": [
 | 
			
		||||
        2,
 | 
			
		||||
        16,
 | 
			
		||||
        5,
 | 
			
		||||
        10,
 | 
			
		||||
        11,
 | 
			
		||||
        13
 | 
			
		||||
        15
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 10,
 | 
			
		||||
		"id": 24,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "hotspot_2pt0",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-Config",
 | 
			
		||||
		"profileType": "passpoint",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Config",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot2Profile",
 | 
			
		||||
			"model_type": "PasspointProfile",
 | 
			
		||||
			"enableInterworkingAndHs20": true,
 | 
			
		||||
			"hessid": null,
 | 
			
		||||
        "accessNetworkType": "free_public_network",
 | 
			
		||||
        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"passpointAccessNetworkType": "free_public_network",
 | 
			
		||||
			"passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"additionalStepsRequiredForAccess": 0,
 | 
			
		||||
			"deauthRequestTimeout": 0,
 | 
			
		||||
			"operatingClass": 0,
 | 
			
		||||
@@ -29,10 +29,10 @@
 | 
			
		||||
			"internetConnectivity": true,
 | 
			
		||||
			"connectionCapabilitySet": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "ConnectionCapability",
 | 
			
		||||
					"model_type": "PasspointConnectionCapability",
 | 
			
		||||
					"connectionCapabilitiesPortNumber": 8888,
 | 
			
		||||
                "connectionCapabilitiesIpProtocol": "TCP",
 | 
			
		||||
                "connectionCapabilitiesStatus": "open"
 | 
			
		||||
					"connectionCapabilitiesStatus": "open",
 | 
			
		||||
					"connectionCapabilitiesIpProtocol": "TCP"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
			"ipAddressTypeAvailability": "public_IPv4_address_available",
 | 
			
		||||
@@ -45,28 +45,27 @@
 | 
			
		||||
			"disableDownstreamGroupAddressedForwarding": false,
 | 
			
		||||
			"enable2pt4GHz": true,
 | 
			
		||||
			"enable5GHz": true,
 | 
			
		||||
        "associatedAccessSsidNames": [
 | 
			
		||||
            "TipWlan-cloud-hotspot-access"
 | 
			
		||||
			"associatedAccessSsidProfileIds": [
 | 
			
		||||
				15
 | 
			
		||||
			],
 | 
			
		||||
        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
			
		||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
			
		||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
			
		||||
        "idProviderProfileNames": [
 | 
			
		||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
			
		||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
			
		||||
			"osuSsidProfileId": 16,
 | 
			
		||||
			"passpointOperatorProfileId": 17,
 | 
			
		||||
			"passpointVenueProfileId": 18,
 | 
			
		||||
			"passpointOsuProviderProfileIds": [
 | 
			
		||||
				19,
 | 
			
		||||
				20
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "hotspot_2pt0",
 | 
			
		||||
        "associatedSsids": [
 | 
			
		||||
            "TipWlan-cloud-hotspot-access"
 | 
			
		||||
        ]
 | 
			
		||||
			"accessNetworkType": "free_public_network",
 | 
			
		||||
			"networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"profileType": "passpoint"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182806040,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806040,
 | 
			
		||||
		"createdTimestamp": 1606778370807,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370807,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
        6,
 | 
			
		||||
        7,
 | 
			
		||||
        8,
 | 
			
		||||
        9
 | 
			
		||||
			17,
 | 
			
		||||
			18,
 | 
			
		||||
			19,
 | 
			
		||||
			20
 | 
			
		||||
		]
 | 
			
		||||
}
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 8,
 | 
			
		||||
		"id": 19,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "id_provider",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
			
		||||
		"profileType": "passpoint_osu_id_provider",
 | 
			
		||||
		"name": "TipWlan-Passpoint-OSU-Provider",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
			
		||||
			"model_type": "PasspointOsuProviderProfile",
 | 
			
		||||
			"domainName": "rogers.com",
 | 
			
		||||
			"mccMncList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "MccMnc",
 | 
			
		||||
					"model_type": "PasspointMccMnc",
 | 
			
		||||
					"mcc": 302,
 | 
			
		||||
					"mnc": 720,
 | 
			
		||||
					"iso": "ca",
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"naiRealmList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "NaiRealmInformation",
 | 
			
		||||
					"model_type": "PasspointNaiRealmInformation",
 | 
			
		||||
					"naiRealms": [
 | 
			
		||||
						"rogers.com"
 | 
			
		||||
					],
 | 
			
		||||
@@ -44,7 +44,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuIconList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -55,7 +55,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "fra",
 | 
			
		||||
@@ -66,7 +66,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -77,10 +77,10 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "osuServerUri": "https://example.com/osu/rogers/",
 | 
			
		||||
			"osuServerUri": "https://example.com/osu/rogers",
 | 
			
		||||
			"osuFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example provider rogers",
 | 
			
		||||
@@ -88,7 +88,7 @@
 | 
			
		||||
					"asDuple": "eng:Example provider rogers"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de fournisseur rogers",
 | 
			
		||||
@@ -104,7 +104,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuServiceDescription": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example services rogers",
 | 
			
		||||
@@ -112,7 +112,7 @@
 | 
			
		||||
					"asDuple": "eng:Example services rogers"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemples de services rogers",
 | 
			
		||||
@@ -120,24 +120,31 @@
 | 
			
		||||
					"asDuple": "fra:Exemples de services rogers"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "id_provider"
 | 
			
		||||
			"roamingOi": [
 | 
			
		||||
				1,
 | 
			
		||||
				2,
 | 
			
		||||
				3,
 | 
			
		||||
				4
 | 
			
		||||
			],
 | 
			
		||||
			"profileType": "passpoint_osu_id_provider"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182805654,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182805654,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
},
 | 
			
		||||
{
 | 
			
		||||
		"createdTimestamp": 1606778370345,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370345,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 9,
 | 
			
		||||
		"id": 20,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "id_provider",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
			
		||||
		"profileType": "passpoint_osu_id_provider",
 | 
			
		||||
		"name": "TipWlan-Passpoint-OSU-Provider-2",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
			
		||||
			"model_type": "PasspointOsuProviderProfile",
 | 
			
		||||
			"domainName": "telus.com",
 | 
			
		||||
			"mccMncList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "MccMnc",
 | 
			
		||||
					"model_type": "PasspointMccMnc",
 | 
			
		||||
					"mcc": 302,
 | 
			
		||||
					"mnc": 220,
 | 
			
		||||
					"iso": "ca",
 | 
			
		||||
@@ -149,7 +156,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"naiRealmList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "NaiRealmInformation",
 | 
			
		||||
					"model_type": "PasspointNaiRealmInformation",
 | 
			
		||||
					"naiRealms": [
 | 
			
		||||
						"telus.com"
 | 
			
		||||
					],
 | 
			
		||||
@@ -171,7 +178,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuIconList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -182,7 +189,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "fra",
 | 
			
		||||
@@ -193,7 +200,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -204,10 +211,10 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "osuServerUri": "https://example.com/osu/telus/",
 | 
			
		||||
			"osuServerUri": "https://example.com/osu/telus",
 | 
			
		||||
			"osuFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example provider telus",
 | 
			
		||||
@@ -215,7 +222,7 @@
 | 
			
		||||
					"asDuple": "eng:Example provider telus"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de fournisseur telus",
 | 
			
		||||
@@ -231,7 +238,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuServiceDescription": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example services telus",
 | 
			
		||||
@@ -239,7 +246,7 @@
 | 
			
		||||
					"asDuple": "eng:Example services telus"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemples de services telus",
 | 
			
		||||
@@ -247,10 +254,17 @@
 | 
			
		||||
					"asDuple": "fra:Exemples de services telus"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "id_provider"
 | 
			
		||||
			"roamingOi": [
 | 
			
		||||
				1,
 | 
			
		||||
				2,
 | 
			
		||||
				3,
 | 
			
		||||
				4
 | 
			
		||||
			],
 | 
			
		||||
			"profileType": "passpoint_osu_id_provider"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182805660,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182805660,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
}
 | 
			
		||||
		"createdTimestamp": 1606778370351,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370351,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 2,
 | 
			
		||||
		"id": 10,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "metrics",
 | 
			
		||||
        "name": "Metrics-Profile-3-radios",
 | 
			
		||||
		"profileType": "service_metrics_collection_config",
 | 
			
		||||
		"name": "Metrics-Profile-3-Radios",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
			
		||||
			"radioTypes": [
 | 
			
		||||
                "is5GHzU",
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
                "is2dot4GHz"
 | 
			
		||||
				"is2dot4GHz",
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"serviceMetricDataTypes": [
 | 
			
		||||
				"ApNode",
 | 
			
		||||
@@ -29,9 +29,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -41,9 +41,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -53,9 +53,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -65,33 +65,33 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
				"ApSsid": [
 | 
			
		||||
@@ -99,7 +99,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "ApSsid"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
@@ -113,7 +113,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "ApSsid"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
@@ -122,7 +122,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Client"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
@@ -136,7 +136,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Client"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
@@ -144,38 +144,14 @@
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -185,95 +161,83 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
				"Neighbour": [
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Neighbour"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "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"
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"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": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Neighbour"
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -283,16 +247,53 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"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"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				]
 | 
			
		||||
			},
 | 
			
		||||
            "profileType": "metrics"
 | 
			
		||||
			"profileType": "service_metrics_collection_config"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058699,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058699,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369931,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369931,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -1,25 +1,25 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 6,
 | 
			
		||||
		"id": 17,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "operator",
 | 
			
		||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
			
		||||
		"profileType": "passpoint_operator",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Operator",
 | 
			
		||||
		"details": {
 | 
			
		||||
            "model_type": "OperatorProfile",
 | 
			
		||||
			"model_type": "PasspointOperatorProfile",
 | 
			
		||||
			"serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
			
		||||
			"x509CertificateLocation": "/etc/ca.pem",
 | 
			
		||||
			"operatorFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
                    "dupleName": "Default friendly operator name",
 | 
			
		||||
					"dupleName": "Default friendly passpoint_operator name",
 | 
			
		||||
					"defaultDupleSeparator": ":",
 | 
			
		||||
                    "asDuple": "eng:Default friendly operator name"
 | 
			
		||||
					"asDuple": "eng:Default friendly passpoint_operator name"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Nom de l'opérateur convivial par défaut",
 | 
			
		||||
@@ -27,10 +27,11 @@
 | 
			
		||||
					"asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
            "profileType": "operator"
 | 
			
		||||
			"profileType": "passpoint_operator"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058719,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058719,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369945,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369945,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "model_type": "Profile",
 | 
			
		||||
    "id": 13,
 | 
			
		||||
    "id": 11,
 | 
			
		||||
    "customerId": 2,
 | 
			
		||||
    "profileType": "rf",
 | 
			
		||||
    "name": "TipWlan-rf",
 | 
			
		||||
@@ -9,16 +9,15 @@
 | 
			
		||||
        "rfConfigMap": {
 | 
			
		||||
            "is5GHz": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHz",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -26,17 +25,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -46,26 +40,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is2dot4GHz": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is2dot4GHz",
 | 
			
		||||
                "radioMode": "modeN",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is20MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -73,17 +72,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -93,26 +87,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 20,
 | 
			
		||||
                    "minLoadFactor": 50
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is5GHzU": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHzU",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -120,17 +119,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -140,26 +134,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is5GHzL": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHzL",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -167,17 +166,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -187,18 +181,24 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "profileType": "rf"
 | 
			
		||||
    },
 | 
			
		||||
    "createdTimestamp": 1602182806063,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806063,
 | 
			
		||||
    "createdTimestamp": 1606778369933,
 | 
			
		||||
    "lastModifiedTimestamp": 1606778369933,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
}
 | 
			
		||||
@@ -4,72 +4,6 @@
 | 
			
		||||
		"id": 5,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is5GHzU",
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
				"is2dot4GHz"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "wpa2PSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": "testing123",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1602113058718,
 | 
			
		||||
		"lastModifiedTimestamp": 1602113059547,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			10
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 11,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-3-radios",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
@@ -80,13 +14,15 @@
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "open",
 | 
			
		||||
			"secureMode": "wpa2OnlyPSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": null,
 | 
			
		||||
			"keyStr": "openwifi",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
@@ -94,7 +30,7 @@
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
@@ -106,17 +42,83 @@
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": "BRIDGE",
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1606778369598,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369598,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 15,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-passpoint-access",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-passpoint-access",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "wpa2PSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": "testing123",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
@@ -125,10 +127,77 @@
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1602183994766,
 | 
			
		||||
		"lastModifiedTimestamp": 1602183994766,
 | 
			
		||||
		"createdTimestamp": 1606778369943,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370811,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			10
 | 
			
		||||
			24
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 16,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-passpoint-osu",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-passpoint-osu",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is2dot4GHz"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "open",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": null,
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1606778369944,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370352,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			19,
 | 
			
		||||
			20
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,15 @@
 | 
			
		||||
[
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 7,
 | 
			
		||||
		"id": 18,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "venue",
 | 
			
		||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
			
		||||
		"profileType": "passpoint_venue",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Venue",
 | 
			
		||||
		"details": {
 | 
			
		||||
            "model_type": "VenueProfile",
 | 
			
		||||
			"model_type": "PasspointVenueProfile",
 | 
			
		||||
			"venueNameSet": [
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "VenueName",
 | 
			
		||||
					"model_type": "PasspointVenueName",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de lieu",
 | 
			
		||||
@@ -18,25 +18,26 @@
 | 
			
		||||
					"asDuple": "fra:Exemple de lieu"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "VenueName",
 | 
			
		||||
					"model_type": "PasspointVenueName",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
                    "dupleName": "Example venue",
 | 
			
		||||
					"dupleName": "Example passpoint_venue",
 | 
			
		||||
					"defaultDupleSeparator": ":",
 | 
			
		||||
					"venueUrl": "http://www.example.com/info-eng",
 | 
			
		||||
                    "asDuple": "eng:Example venue"
 | 
			
		||||
					"asDuple": "eng:Example passpoint_venue"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
			"venueTypeAssignment": {
 | 
			
		||||
                "model_type": "VenueTypeAssignment",
 | 
			
		||||
				"model_type": "PasspointVenueTypeAssignment",
 | 
			
		||||
				"venueDescription": "Research and Development Facility",
 | 
			
		||||
				"venueGroupId": 2,
 | 
			
		||||
				"venueTypeId": 8
 | 
			
		||||
			},
 | 
			
		||||
            "profileType": "venue"
 | 
			
		||||
			"profileType": "passpoint_venue"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058725,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058725,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369950,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369950,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  "model_type": "Equipment",
 | 
			
		||||
  "id": 51,
 | 
			
		||||
  "customerId": 2,
 | 
			
		||||
  "profileId": 5,
 | 
			
		||||
  "profileId": 12,
 | 
			
		||||
  "locationId": 8,
 | 
			
		||||
  "equipmentType": "AP",
 | 
			
		||||
  "inventoryId": "Test_Client_21P10C68818122",
 | 
			
		||||
 
 | 
			
		||||
@@ -10,55 +10,48 @@
 | 
			
		||||
    "countryCode" : "ca",
 | 
			
		||||
    "maintenanceWindow" : null,
 | 
			
		||||
    "rrmEnabled" : true,
 | 
			
		||||
    "dailyRebalancingDetails" : {
 | 
			
		||||
    "dailyActivityDetails" : {
 | 
			
		||||
      "SUNDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "MONDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "TUESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "WEDNESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "THURSDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "FRIDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "SATURDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -10,55 +10,48 @@
 | 
			
		||||
    "countryCode" : "usa",
 | 
			
		||||
    "maintenanceWindow" : null,
 | 
			
		||||
    "rrmEnabled" : true,
 | 
			
		||||
    "dailyRebalancingDetails" : {
 | 
			
		||||
    "dailyActivityDetails" : {
 | 
			
		||||
      "SUNDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "MONDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "TUESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "WEDNESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "THURSDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "FRIDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "SATURDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "model_type": "Profile",
 | 
			
		||||
    "id": 17,
 | 
			
		||||
    "id": 12,
 | 
			
		||||
    "customerId": 2,
 | 
			
		||||
    "profileType": "equipment_ap",
 | 
			
		||||
    "name": "ApProfile-3-radios",
 | 
			
		||||
@@ -20,6 +20,11 @@
 | 
			
		||||
        "syntheticClientEnabled": true,
 | 
			
		||||
        "ledControlEnabled": true,
 | 
			
		||||
        "equipmentDiscovery": false,
 | 
			
		||||
        "greTunnelName": null,
 | 
			
		||||
        "greParentIfName": null,
 | 
			
		||||
        "greLocalInetAddr": null,
 | 
			
		||||
        "greRemoteInetAddr": null,
 | 
			
		||||
        "greRemoteMacAddr": null,
 | 
			
		||||
        "radioMap": {
 | 
			
		||||
            "is2dot4GHz": {
 | 
			
		||||
                "model_type": "RadioProfileConfiguration",
 | 
			
		||||
@@ -39,12 +44,13 @@
 | 
			
		||||
        },
 | 
			
		||||
        "profileType": "equipment_ap"
 | 
			
		||||
    },
 | 
			
		||||
    "createdTimestamp": 1602182806348,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806348,
 | 
			
		||||
    "createdTimestamp": 1606778369934,
 | 
			
		||||
    "lastModifiedTimestamp": 1606778443413,
 | 
			
		||||
    "childProfileIds": [
 | 
			
		||||
        2,
 | 
			
		||||
        16,
 | 
			
		||||
        5,
 | 
			
		||||
        10,
 | 
			
		||||
        11,
 | 
			
		||||
        13
 | 
			
		||||
        15
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 10,
 | 
			
		||||
		"id": 24,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "hotspot_2pt0",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-Config",
 | 
			
		||||
		"profileType": "passpoint",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Config",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot2Profile",
 | 
			
		||||
			"model_type": "PasspointProfile",
 | 
			
		||||
			"enableInterworkingAndHs20": true,
 | 
			
		||||
			"hessid": null,
 | 
			
		||||
        "accessNetworkType": "free_public_network",
 | 
			
		||||
        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"passpointAccessNetworkType": "free_public_network",
 | 
			
		||||
			"passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"additionalStepsRequiredForAccess": 0,
 | 
			
		||||
			"deauthRequestTimeout": 0,
 | 
			
		||||
			"operatingClass": 0,
 | 
			
		||||
@@ -29,10 +29,10 @@
 | 
			
		||||
			"internetConnectivity": true,
 | 
			
		||||
			"connectionCapabilitySet": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "ConnectionCapability",
 | 
			
		||||
					"model_type": "PasspointConnectionCapability",
 | 
			
		||||
					"connectionCapabilitiesPortNumber": 8888,
 | 
			
		||||
                "connectionCapabilitiesIpProtocol": "TCP",
 | 
			
		||||
                "connectionCapabilitiesStatus": "open"
 | 
			
		||||
					"connectionCapabilitiesStatus": "open",
 | 
			
		||||
					"connectionCapabilitiesIpProtocol": "TCP"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
			"ipAddressTypeAvailability": "public_IPv4_address_available",
 | 
			
		||||
@@ -45,28 +45,27 @@
 | 
			
		||||
			"disableDownstreamGroupAddressedForwarding": false,
 | 
			
		||||
			"enable2pt4GHz": true,
 | 
			
		||||
			"enable5GHz": true,
 | 
			
		||||
        "associatedAccessSsidNames": [
 | 
			
		||||
            "TipWlan-cloud-hotspot-access"
 | 
			
		||||
			"associatedAccessSsidProfileIds": [
 | 
			
		||||
				15
 | 
			
		||||
			],
 | 
			
		||||
        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
			
		||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
			
		||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
			
		||||
        "idProviderProfileNames": [
 | 
			
		||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
			
		||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
			
		||||
			"osuSsidProfileId": 16,
 | 
			
		||||
			"passpointOperatorProfileId": 17,
 | 
			
		||||
			"passpointVenueProfileId": 18,
 | 
			
		||||
			"passpointOsuProviderProfileIds": [
 | 
			
		||||
				19,
 | 
			
		||||
				20
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "hotspot_2pt0",
 | 
			
		||||
        "associatedSsids": [
 | 
			
		||||
            "TipWlan-cloud-hotspot-access"
 | 
			
		||||
        ]
 | 
			
		||||
			"accessNetworkType": "free_public_network",
 | 
			
		||||
			"networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"profileType": "passpoint"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182806040,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806040,
 | 
			
		||||
		"createdTimestamp": 1606778370807,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370807,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
        6,
 | 
			
		||||
        7,
 | 
			
		||||
        8,
 | 
			
		||||
        9
 | 
			
		||||
			17,
 | 
			
		||||
			18,
 | 
			
		||||
			19,
 | 
			
		||||
			20
 | 
			
		||||
		]
 | 
			
		||||
}
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 8,
 | 
			
		||||
		"id": 19,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "id_provider",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
			
		||||
		"profileType": "passpoint_osu_id_provider",
 | 
			
		||||
		"name": "TipWlan-Passpoint-OSU-Provider",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
			
		||||
			"model_type": "PasspointOsuProviderProfile",
 | 
			
		||||
			"domainName": "rogers.com",
 | 
			
		||||
			"mccMncList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "MccMnc",
 | 
			
		||||
					"model_type": "PasspointMccMnc",
 | 
			
		||||
					"mcc": 302,
 | 
			
		||||
					"mnc": 720,
 | 
			
		||||
					"iso": "ca",
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"naiRealmList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "NaiRealmInformation",
 | 
			
		||||
					"model_type": "PasspointNaiRealmInformation",
 | 
			
		||||
					"naiRealms": [
 | 
			
		||||
						"rogers.com"
 | 
			
		||||
					],
 | 
			
		||||
@@ -44,7 +44,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuIconList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -55,7 +55,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "fra",
 | 
			
		||||
@@ -66,7 +66,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -77,10 +77,10 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "osuServerUri": "https://example.com/osu/rogers/",
 | 
			
		||||
			"osuServerUri": "https://example.com/osu/rogers",
 | 
			
		||||
			"osuFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example provider rogers",
 | 
			
		||||
@@ -88,7 +88,7 @@
 | 
			
		||||
					"asDuple": "eng:Example provider rogers"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de fournisseur rogers",
 | 
			
		||||
@@ -104,7 +104,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuServiceDescription": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example services rogers",
 | 
			
		||||
@@ -112,7 +112,7 @@
 | 
			
		||||
					"asDuple": "eng:Example services rogers"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemples de services rogers",
 | 
			
		||||
@@ -120,24 +120,31 @@
 | 
			
		||||
					"asDuple": "fra:Exemples de services rogers"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "id_provider"
 | 
			
		||||
			"roamingOi": [
 | 
			
		||||
				1,
 | 
			
		||||
				2,
 | 
			
		||||
				3,
 | 
			
		||||
				4
 | 
			
		||||
			],
 | 
			
		||||
			"profileType": "passpoint_osu_id_provider"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182805654,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182805654,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
},
 | 
			
		||||
{
 | 
			
		||||
		"createdTimestamp": 1606778370345,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370345,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 9,
 | 
			
		||||
		"id": 20,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "id_provider",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
			
		||||
		"profileType": "passpoint_osu_id_provider",
 | 
			
		||||
		"name": "TipWlan-Passpoint-OSU-Provider-2",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
			
		||||
			"model_type": "PasspointOsuProviderProfile",
 | 
			
		||||
			"domainName": "telus.com",
 | 
			
		||||
			"mccMncList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "MccMnc",
 | 
			
		||||
					"model_type": "PasspointMccMnc",
 | 
			
		||||
					"mcc": 302,
 | 
			
		||||
					"mnc": 220,
 | 
			
		||||
					"iso": "ca",
 | 
			
		||||
@@ -149,7 +156,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"naiRealmList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "NaiRealmInformation",
 | 
			
		||||
					"model_type": "PasspointNaiRealmInformation",
 | 
			
		||||
					"naiRealms": [
 | 
			
		||||
						"telus.com"
 | 
			
		||||
					],
 | 
			
		||||
@@ -171,7 +178,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuIconList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -182,7 +189,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "fra",
 | 
			
		||||
@@ -193,7 +200,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -204,10 +211,10 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "osuServerUri": "https://example.com/osu/telus/",
 | 
			
		||||
			"osuServerUri": "https://example.com/osu/telus",
 | 
			
		||||
			"osuFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example provider telus",
 | 
			
		||||
@@ -215,7 +222,7 @@
 | 
			
		||||
					"asDuple": "eng:Example provider telus"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de fournisseur telus",
 | 
			
		||||
@@ -231,7 +238,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuServiceDescription": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example services telus",
 | 
			
		||||
@@ -239,7 +246,7 @@
 | 
			
		||||
					"asDuple": "eng:Example services telus"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemples de services telus",
 | 
			
		||||
@@ -247,10 +254,17 @@
 | 
			
		||||
					"asDuple": "fra:Exemples de services telus"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "id_provider"
 | 
			
		||||
			"roamingOi": [
 | 
			
		||||
				1,
 | 
			
		||||
				2,
 | 
			
		||||
				3,
 | 
			
		||||
				4
 | 
			
		||||
			],
 | 
			
		||||
			"profileType": "passpoint_osu_id_provider"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182805660,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182805660,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
}
 | 
			
		||||
		"createdTimestamp": 1606778370351,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370351,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 2,
 | 
			
		||||
		"id": 10,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "metrics",
 | 
			
		||||
        "name": "Metrics-Profile-3-radios",
 | 
			
		||||
		"profileType": "service_metrics_collection_config",
 | 
			
		||||
		"name": "Metrics-Profile-3-Radios",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
			
		||||
			"radioTypes": [
 | 
			
		||||
                "is5GHzU",
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
                "is2dot4GHz"
 | 
			
		||||
				"is2dot4GHz",
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"serviceMetricDataTypes": [
 | 
			
		||||
				"ApNode",
 | 
			
		||||
@@ -29,9 +29,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -41,9 +41,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -53,9 +53,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -65,33 +65,33 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
				"ApSsid": [
 | 
			
		||||
@@ -99,7 +99,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "ApSsid"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
@@ -113,7 +113,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "ApSsid"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
@@ -122,7 +122,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Client"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
@@ -136,7 +136,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Client"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
@@ -144,38 +144,14 @@
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -185,95 +161,83 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
				"Neighbour": [
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Neighbour"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "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"
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"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": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Neighbour"
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -283,16 +247,53 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"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"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				]
 | 
			
		||||
			},
 | 
			
		||||
            "profileType": "metrics"
 | 
			
		||||
			"profileType": "service_metrics_collection_config"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058699,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058699,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369931,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369931,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -1,25 +1,25 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 6,
 | 
			
		||||
		"id": 17,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "operator",
 | 
			
		||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
			
		||||
		"profileType": "passpoint_operator",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Operator",
 | 
			
		||||
		"details": {
 | 
			
		||||
            "model_type": "OperatorProfile",
 | 
			
		||||
			"model_type": "PasspointOperatorProfile",
 | 
			
		||||
			"serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
			
		||||
			"x509CertificateLocation": "/etc/ca.pem",
 | 
			
		||||
			"operatorFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
                    "dupleName": "Default friendly operator name",
 | 
			
		||||
					"dupleName": "Default friendly passpoint_operator name",
 | 
			
		||||
					"defaultDupleSeparator": ":",
 | 
			
		||||
                    "asDuple": "eng:Default friendly operator name"
 | 
			
		||||
					"asDuple": "eng:Default friendly passpoint_operator name"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Nom de l'opérateur convivial par défaut",
 | 
			
		||||
@@ -27,10 +27,11 @@
 | 
			
		||||
					"asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
            "profileType": "operator"
 | 
			
		||||
			"profileType": "passpoint_operator"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058719,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058719,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369945,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369945,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "model_type": "Profile",
 | 
			
		||||
    "id": 13,
 | 
			
		||||
    "id": 11,
 | 
			
		||||
    "customerId": 2,
 | 
			
		||||
    "profileType": "rf",
 | 
			
		||||
    "name": "TipWlan-rf",
 | 
			
		||||
@@ -9,16 +9,15 @@
 | 
			
		||||
        "rfConfigMap": {
 | 
			
		||||
            "is5GHz": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHz",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -26,17 +25,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -46,26 +40,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is2dot4GHz": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is2dot4GHz",
 | 
			
		||||
                "radioMode": "modeN",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is20MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -73,17 +72,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -93,26 +87,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 20,
 | 
			
		||||
                    "minLoadFactor": 50
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is5GHzU": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHzU",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -120,17 +119,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -140,26 +134,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is5GHzL": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHzL",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -167,17 +166,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -187,18 +181,24 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "profileType": "rf"
 | 
			
		||||
    },
 | 
			
		||||
    "createdTimestamp": 1602182806063,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806063,
 | 
			
		||||
    "createdTimestamp": 1606778369933,
 | 
			
		||||
    "lastModifiedTimestamp": 1606778369933,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
}
 | 
			
		||||
@@ -4,72 +4,6 @@
 | 
			
		||||
		"id": 5,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is5GHzU",
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
				"is2dot4GHz"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "wpa2PSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": "testing123",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1602113058718,
 | 
			
		||||
		"lastModifiedTimestamp": 1602113059547,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			10
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 11,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-3-radios",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
@@ -80,13 +14,15 @@
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "open",
 | 
			
		||||
			"secureMode": "wpa2OnlyPSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": null,
 | 
			
		||||
			"keyStr": "openwifi",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
@@ -94,7 +30,7 @@
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
@@ -106,17 +42,83 @@
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": "BRIDGE",
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1606778369598,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369598,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 15,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-passpoint-access",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-passpoint-access",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "wpa2PSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": "testing123",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
@@ -125,10 +127,77 @@
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1602183994766,
 | 
			
		||||
		"lastModifiedTimestamp": 1602183994766,
 | 
			
		||||
		"createdTimestamp": 1606778369943,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370811,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			10
 | 
			
		||||
			24
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 16,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-passpoint-osu",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-passpoint-osu",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is2dot4GHz"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "open",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": null,
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1606778369944,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370352,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			19,
 | 
			
		||||
			20
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,15 @@
 | 
			
		||||
[
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 7,
 | 
			
		||||
		"id": 18,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "venue",
 | 
			
		||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
			
		||||
		"profileType": "passpoint_venue",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Venue",
 | 
			
		||||
		"details": {
 | 
			
		||||
            "model_type": "VenueProfile",
 | 
			
		||||
			"model_type": "PasspointVenueProfile",
 | 
			
		||||
			"venueNameSet": [
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "VenueName",
 | 
			
		||||
					"model_type": "PasspointVenueName",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de lieu",
 | 
			
		||||
@@ -18,25 +18,26 @@
 | 
			
		||||
					"asDuple": "fra:Exemple de lieu"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "VenueName",
 | 
			
		||||
					"model_type": "PasspointVenueName",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
                    "dupleName": "Example venue",
 | 
			
		||||
					"dupleName": "Example passpoint_venue",
 | 
			
		||||
					"defaultDupleSeparator": ":",
 | 
			
		||||
					"venueUrl": "http://www.example.com/info-eng",
 | 
			
		||||
                    "asDuple": "eng:Example venue"
 | 
			
		||||
					"asDuple": "eng:Example passpoint_venue"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
			"venueTypeAssignment": {
 | 
			
		||||
                "model_type": "VenueTypeAssignment",
 | 
			
		||||
				"model_type": "PasspointVenueTypeAssignment",
 | 
			
		||||
				"venueDescription": "Research and Development Facility",
 | 
			
		||||
				"venueGroupId": 2,
 | 
			
		||||
				"venueTypeId": 8
 | 
			
		||||
			},
 | 
			
		||||
            "profileType": "venue"
 | 
			
		||||
			"profileType": "passpoint_venue"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058725,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058725,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369950,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369950,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -15,11 +15,6 @@
 | 
			
		||||
	</properties>
 | 
			
		||||
 | 
			
		||||
	<dependencies>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
			<artifactId>opensync-gateway</artifactId>
 | 
			
		||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
			
		||||
		</dependency>
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
			<artifactId>opensync-ext-static</artifactId>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  "model_type": "Equipment",
 | 
			
		||||
  "id": 51,
 | 
			
		||||
  "customerId": 2,
 | 
			
		||||
  "profileId": 5,
 | 
			
		||||
  "profileId": 12,
 | 
			
		||||
  "locationId": 8,
 | 
			
		||||
  "equipmentType": "AP",
 | 
			
		||||
  "inventoryId": "Test_Client_21P10C68818122",
 | 
			
		||||
 
 | 
			
		||||
@@ -10,55 +10,48 @@
 | 
			
		||||
    "countryCode" : "ca",
 | 
			
		||||
    "maintenanceWindow" : null,
 | 
			
		||||
    "rrmEnabled" : true,
 | 
			
		||||
    "dailyRebalancingDetails" : {
 | 
			
		||||
    "dailyActivityDetails" : {
 | 
			
		||||
      "SUNDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "MONDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "TUESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "WEDNESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "THURSDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "FRIDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "SATURDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -10,55 +10,48 @@
 | 
			
		||||
    "countryCode" : "usa",
 | 
			
		||||
    "maintenanceWindow" : null,
 | 
			
		||||
    "rrmEnabled" : true,
 | 
			
		||||
    "dailyRebalancingDetails" : {
 | 
			
		||||
    "dailyActivityDetails" : {
 | 
			
		||||
      "SUNDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "MONDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "TUESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "WEDNESDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "THURSDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "FRIDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      },
 | 
			
		||||
      "SATURDAY" : {
 | 
			
		||||
        "model_type" : "LocationActivityDetails",
 | 
			
		||||
        "busyTime" : "13:30",
 | 
			
		||||
        "quietTime" : "3:30",
 | 
			
		||||
        "timezone" : "US/Eastern",
 | 
			
		||||
        "lastBusySnapshot" : 0
 | 
			
		||||
        "timezone" : "US/Eastern"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "model_type": "Profile",
 | 
			
		||||
    "id": 17,
 | 
			
		||||
    "id": 12,
 | 
			
		||||
    "customerId": 2,
 | 
			
		||||
    "profileType": "equipment_ap",
 | 
			
		||||
    "name": "ApProfile-3-radios",
 | 
			
		||||
@@ -20,6 +20,11 @@
 | 
			
		||||
        "syntheticClientEnabled": true,
 | 
			
		||||
        "ledControlEnabled": true,
 | 
			
		||||
        "equipmentDiscovery": false,
 | 
			
		||||
        "greTunnelName": null,
 | 
			
		||||
        "greParentIfName": null,
 | 
			
		||||
        "greLocalInetAddr": null,
 | 
			
		||||
        "greRemoteInetAddr": null,
 | 
			
		||||
        "greRemoteMacAddr": null,
 | 
			
		||||
        "radioMap": {
 | 
			
		||||
            "is2dot4GHz": {
 | 
			
		||||
                "model_type": "RadioProfileConfiguration",
 | 
			
		||||
@@ -39,12 +44,13 @@
 | 
			
		||||
        },
 | 
			
		||||
        "profileType": "equipment_ap"
 | 
			
		||||
    },
 | 
			
		||||
    "createdTimestamp": 1602182806348,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806348,
 | 
			
		||||
    "createdTimestamp": 1606778369934,
 | 
			
		||||
    "lastModifiedTimestamp": 1606778443413,
 | 
			
		||||
    "childProfileIds": [
 | 
			
		||||
        2,
 | 
			
		||||
        16,
 | 
			
		||||
        5,
 | 
			
		||||
        10,
 | 
			
		||||
        11,
 | 
			
		||||
        13
 | 
			
		||||
        15
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 10,
 | 
			
		||||
		"id": 24,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "hotspot_2pt0",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-Config",
 | 
			
		||||
		"profileType": "passpoint",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Config",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot2Profile",
 | 
			
		||||
			"model_type": "PasspointProfile",
 | 
			
		||||
			"enableInterworkingAndHs20": true,
 | 
			
		||||
			"hessid": null,
 | 
			
		||||
        "accessNetworkType": "free_public_network",
 | 
			
		||||
        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"passpointAccessNetworkType": "free_public_network",
 | 
			
		||||
			"passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"additionalStepsRequiredForAccess": 0,
 | 
			
		||||
			"deauthRequestTimeout": 0,
 | 
			
		||||
			"operatingClass": 0,
 | 
			
		||||
@@ -29,10 +29,10 @@
 | 
			
		||||
			"internetConnectivity": true,
 | 
			
		||||
			"connectionCapabilitySet": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "ConnectionCapability",
 | 
			
		||||
					"model_type": "PasspointConnectionCapability",
 | 
			
		||||
					"connectionCapabilitiesPortNumber": 8888,
 | 
			
		||||
                "connectionCapabilitiesIpProtocol": "TCP",
 | 
			
		||||
                "connectionCapabilitiesStatus": "open"
 | 
			
		||||
					"connectionCapabilitiesStatus": "open",
 | 
			
		||||
					"connectionCapabilitiesIpProtocol": "TCP"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
			"ipAddressTypeAvailability": "public_IPv4_address_available",
 | 
			
		||||
@@ -45,28 +45,27 @@
 | 
			
		||||
			"disableDownstreamGroupAddressedForwarding": false,
 | 
			
		||||
			"enable2pt4GHz": true,
 | 
			
		||||
			"enable5GHz": true,
 | 
			
		||||
        "associatedAccessSsidNames": [
 | 
			
		||||
            "TipWlan-cloud-hotspot-access"
 | 
			
		||||
			"associatedAccessSsidProfileIds": [
 | 
			
		||||
				15
 | 
			
		||||
			],
 | 
			
		||||
        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
			
		||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
			
		||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
			
		||||
        "idProviderProfileNames": [
 | 
			
		||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
			
		||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
			
		||||
			"osuSsidProfileId": 16,
 | 
			
		||||
			"passpointOperatorProfileId": 17,
 | 
			
		||||
			"passpointVenueProfileId": 18,
 | 
			
		||||
			"passpointOsuProviderProfileIds": [
 | 
			
		||||
				19,
 | 
			
		||||
				20
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "hotspot_2pt0",
 | 
			
		||||
        "associatedSsids": [
 | 
			
		||||
            "TipWlan-cloud-hotspot-access"
 | 
			
		||||
        ]
 | 
			
		||||
			"accessNetworkType": "free_public_network",
 | 
			
		||||
			"networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
			
		||||
			"profileType": "passpoint"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182806040,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806040,
 | 
			
		||||
		"createdTimestamp": 1606778370807,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370807,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
        6,
 | 
			
		||||
        7,
 | 
			
		||||
        8,
 | 
			
		||||
        9
 | 
			
		||||
			17,
 | 
			
		||||
			18,
 | 
			
		||||
			19,
 | 
			
		||||
			20
 | 
			
		||||
		]
 | 
			
		||||
}
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 8,
 | 
			
		||||
		"id": 19,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "id_provider",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
			
		||||
		"profileType": "passpoint_osu_id_provider",
 | 
			
		||||
		"name": "TipWlan-Passpoint-OSU-Provider",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
			
		||||
			"model_type": "PasspointOsuProviderProfile",
 | 
			
		||||
			"domainName": "rogers.com",
 | 
			
		||||
			"mccMncList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "MccMnc",
 | 
			
		||||
					"model_type": "PasspointMccMnc",
 | 
			
		||||
					"mcc": 302,
 | 
			
		||||
					"mnc": 720,
 | 
			
		||||
					"iso": "ca",
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"naiRealmList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "NaiRealmInformation",
 | 
			
		||||
					"model_type": "PasspointNaiRealmInformation",
 | 
			
		||||
					"naiRealms": [
 | 
			
		||||
						"rogers.com"
 | 
			
		||||
					],
 | 
			
		||||
@@ -44,7 +44,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuIconList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -55,7 +55,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "fra",
 | 
			
		||||
@@ -66,7 +66,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -77,10 +77,10 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "osuServerUri": "https://example.com/osu/rogers/",
 | 
			
		||||
			"osuServerUri": "https://example.com/osu/rogers",
 | 
			
		||||
			"osuFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example provider rogers",
 | 
			
		||||
@@ -88,7 +88,7 @@
 | 
			
		||||
					"asDuple": "eng:Example provider rogers"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de fournisseur rogers",
 | 
			
		||||
@@ -104,7 +104,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuServiceDescription": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example services rogers",
 | 
			
		||||
@@ -112,7 +112,7 @@
 | 
			
		||||
					"asDuple": "eng:Example services rogers"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemples de services rogers",
 | 
			
		||||
@@ -120,24 +120,31 @@
 | 
			
		||||
					"asDuple": "fra:Exemples de services rogers"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "id_provider"
 | 
			
		||||
			"roamingOi": [
 | 
			
		||||
				1,
 | 
			
		||||
				2,
 | 
			
		||||
				3,
 | 
			
		||||
				4
 | 
			
		||||
			],
 | 
			
		||||
			"profileType": "passpoint_osu_id_provider"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182805654,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182805654,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
},
 | 
			
		||||
{
 | 
			
		||||
		"createdTimestamp": 1606778370345,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370345,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
    "id": 9,
 | 
			
		||||
		"id": 20,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
    "profileType": "id_provider",
 | 
			
		||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
			
		||||
		"profileType": "passpoint_osu_id_provider",
 | 
			
		||||
		"name": "TipWlan-Passpoint-OSU-Provider-2",
 | 
			
		||||
		"details": {
 | 
			
		||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
			
		||||
			"model_type": "PasspointOsuProviderProfile",
 | 
			
		||||
			"domainName": "telus.com",
 | 
			
		||||
			"mccMncList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "MccMnc",
 | 
			
		||||
					"model_type": "PasspointMccMnc",
 | 
			
		||||
					"mcc": 302,
 | 
			
		||||
					"mnc": 220,
 | 
			
		||||
					"iso": "ca",
 | 
			
		||||
@@ -149,7 +156,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"naiRealmList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "NaiRealmInformation",
 | 
			
		||||
					"model_type": "PasspointNaiRealmInformation",
 | 
			
		||||
					"naiRealms": [
 | 
			
		||||
						"telus.com"
 | 
			
		||||
					],
 | 
			
		||||
@@ -171,7 +178,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuIconList": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -182,7 +189,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "fra",
 | 
			
		||||
@@ -193,7 +200,7 @@
 | 
			
		||||
					"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "OsuIcon",
 | 
			
		||||
					"model_type": "PasspointOsuIcon",
 | 
			
		||||
					"iconWidth": 32,
 | 
			
		||||
					"iconHeight": 32,
 | 
			
		||||
					"languageCode": "eng",
 | 
			
		||||
@@ -204,10 +211,10 @@
 | 
			
		||||
					"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "osuServerUri": "https://example.com/osu/telus/",
 | 
			
		||||
			"osuServerUri": "https://example.com/osu/telus",
 | 
			
		||||
			"osuFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example provider telus",
 | 
			
		||||
@@ -215,7 +222,7 @@
 | 
			
		||||
					"asDuple": "eng:Example provider telus"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de fournisseur telus",
 | 
			
		||||
@@ -231,7 +238,7 @@
 | 
			
		||||
			],
 | 
			
		||||
			"osuServiceDescription": [
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
					"dupleName": "Example services telus",
 | 
			
		||||
@@ -239,7 +246,7 @@
 | 
			
		||||
					"asDuple": "eng:Example services telus"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemples de services telus",
 | 
			
		||||
@@ -247,10 +254,17 @@
 | 
			
		||||
					"asDuple": "fra:Exemples de services telus"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
        "profileType": "id_provider"
 | 
			
		||||
			"roamingOi": [
 | 
			
		||||
				1,
 | 
			
		||||
				2,
 | 
			
		||||
				3,
 | 
			
		||||
				4
 | 
			
		||||
			],
 | 
			
		||||
			"profileType": "passpoint_osu_id_provider"
 | 
			
		||||
		},
 | 
			
		||||
    "createdTimestamp": 1602182805660,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182805660,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
}
 | 
			
		||||
		"createdTimestamp": 1606778370351,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370351,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,16 @@
 | 
			
		||||
[
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 2,
 | 
			
		||||
		"id": 10,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "metrics",
 | 
			
		||||
        "name": "Metrics-Profile-3-radios",
 | 
			
		||||
		"profileType": "service_metrics_collection_config",
 | 
			
		||||
		"name": "Metrics-Profile-3-Radios",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
			
		||||
			"radioTypes": [
 | 
			
		||||
                "is5GHzU",
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
                "is2dot4GHz"
 | 
			
		||||
				"is2dot4GHz",
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"serviceMetricDataTypes": [
 | 
			
		||||
				"ApNode",
 | 
			
		||||
@@ -29,9 +29,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -41,9 +41,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -53,9 +53,9 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -65,33 +65,33 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "ApNode"
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "ApNode",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
				"ApSsid": [
 | 
			
		||||
@@ -99,7 +99,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "ApSsid"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
@@ -113,7 +113,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "ApSsid"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
@@ -122,7 +122,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Client"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
@@ -136,7 +136,7 @@
 | 
			
		||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Client"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
@@ -144,38 +144,14 @@
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -185,95 +161,83 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzU",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is2dot4GHz",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzU",
 | 
			
		||||
                        "serviceMetricDataType": "Channel"
 | 
			
		||||
						"serviceMetricDataType": "Channel",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				],
 | 
			
		||||
				"Neighbour": [
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
                        "radioType": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Neighbour"
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
                        "samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 60,
 | 
			
		||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
                        "scanIntervalMillis": 0,
 | 
			
		||||
                        "percentUtilizationThreshold": 10,
 | 
			
		||||
                        "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"
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
                        "reportingIntervalSeconds": 120,
 | 
			
		||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"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": "is5GHzL",
 | 
			
		||||
                        "serviceMetricDataType": "Neighbour"
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
@@ -283,16 +247,53 @@
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
                        "statsReportFormat": "RAW",
 | 
			
		||||
						"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"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 120,
 | 
			
		||||
						"channelSurveyType": "OFF_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is5GHzL",
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
			
		||||
						"samplingInterval": 30,
 | 
			
		||||
						"reportingIntervalSeconds": 60,
 | 
			
		||||
						"channelSurveyType": "ON_CHANNEL",
 | 
			
		||||
						"scanIntervalMillis": 0,
 | 
			
		||||
						"percentUtilizationThreshold": 10,
 | 
			
		||||
						"delayMillisecondsThreshold": 600,
 | 
			
		||||
						"radioType": "is2dot4GHz",
 | 
			
		||||
						"serviceMetricDataType": "Neighbour",
 | 
			
		||||
						"statsReportFormat": "RAW"
 | 
			
		||||
					}
 | 
			
		||||
				]
 | 
			
		||||
			},
 | 
			
		||||
            "profileType": "metrics"
 | 
			
		||||
			"profileType": "service_metrics_collection_config"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058699,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058699,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369931,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369931,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -1,25 +1,25 @@
 | 
			
		||||
[
 | 
			
		||||
{
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 6,
 | 
			
		||||
		"id": 17,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "operator",
 | 
			
		||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
			
		||||
		"profileType": "passpoint_operator",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Operator",
 | 
			
		||||
		"details": {
 | 
			
		||||
            "model_type": "OperatorProfile",
 | 
			
		||||
			"model_type": "PasspointOperatorProfile",
 | 
			
		||||
			"serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
			
		||||
			"x509CertificateLocation": "/etc/ca.pem",
 | 
			
		||||
			"operatorFriendlyName": [
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
                    "dupleName": "Default friendly operator name",
 | 
			
		||||
					"dupleName": "Default friendly passpoint_operator name",
 | 
			
		||||
					"defaultDupleSeparator": ":",
 | 
			
		||||
                    "asDuple": "eng:Default friendly operator name"
 | 
			
		||||
					"asDuple": "eng:Default friendly passpoint_operator name"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "Hotspot20Duple",
 | 
			
		||||
					"model_type": "PasspointDuple",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Nom de l'opérateur convivial par défaut",
 | 
			
		||||
@@ -27,10 +27,11 @@
 | 
			
		||||
					"asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
            "profileType": "operator"
 | 
			
		||||
			"profileType": "passpoint_operator"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058719,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058719,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369945,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369945,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "model_type": "Profile",
 | 
			
		||||
    "id": 13,
 | 
			
		||||
    "id": 11,
 | 
			
		||||
    "customerId": 2,
 | 
			
		||||
    "profileType": "rf",
 | 
			
		||||
    "name": "TipWlan-rf",
 | 
			
		||||
@@ -9,16 +9,15 @@
 | 
			
		||||
        "rfConfigMap": {
 | 
			
		||||
            "is5GHz": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHz",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -26,17 +25,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -46,26 +40,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is2dot4GHz": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is2dot4GHz",
 | 
			
		||||
                "radioMode": "modeN",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is20MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -73,17 +72,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -93,26 +87,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 20,
 | 
			
		||||
                    "minLoadFactor": 50
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is5GHzU": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHzU",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -120,17 +119,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -140,26 +134,31 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "is5GHzL": {
 | 
			
		||||
                "model_type": "RfElementConfiguration",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "radioType": "is5GHzL",
 | 
			
		||||
                "radioMode": "modeAC",
 | 
			
		||||
                "rf": "TipWlan-rf",
 | 
			
		||||
                "beaconInterval": 100,
 | 
			
		||||
                "forceScanDuringVoice": "disabled",
 | 
			
		||||
                "rtsCtsThreshold": 65535,
 | 
			
		||||
                "channelBandwidth": "is80MHz",
 | 
			
		||||
                "mimoMode": "twoByTwo",
 | 
			
		||||
                "maxNumClients": 100,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "autoChannelSelection": false,
 | 
			
		||||
                "activeScanSettings": {
 | 
			
		||||
                    "model_type": "ActiveScanSettings",
 | 
			
		||||
@@ -167,17 +166,12 @@
 | 
			
		||||
                    "scanFrequencySeconds": 10,
 | 
			
		||||
                    "scanDurationMillis": 65
 | 
			
		||||
                },
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "neighbouringListApConfig": {
 | 
			
		||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
			
		||||
                    "minSignal": -85,
 | 
			
		||||
                    "maxAps": 25
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65,
 | 
			
		||||
                "perimeterDetectionEnabled": true,
 | 
			
		||||
                "channelHopSettings": {
 | 
			
		||||
                    "model_type": "ChannelHopSettings",
 | 
			
		||||
@@ -187,18 +181,24 @@
 | 
			
		||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
			
		||||
                    "obssHopMode": "NON_WIFI"
 | 
			
		||||
                },
 | 
			
		||||
                "bestApEnabled": null,
 | 
			
		||||
                "multicastRate": "auto",
 | 
			
		||||
                "managementRate": "auto",
 | 
			
		||||
                "rxCellSizeDb": -90,
 | 
			
		||||
                "probeResponseThresholdDb": -90,
 | 
			
		||||
                "clientDisconnectThresholdDb": -90,
 | 
			
		||||
                "eirpTxPower": 18,
 | 
			
		||||
                "bestApSettings": {
 | 
			
		||||
                    "model_type": "RadioBestApSettings",
 | 
			
		||||
                    "mlComputed": true,
 | 
			
		||||
                    "dropInSnrPercentage": 30,
 | 
			
		||||
                    "minLoadFactor": 40
 | 
			
		||||
                },
 | 
			
		||||
                "minAutoCellSize": -65
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "profileType": "rf"
 | 
			
		||||
    },
 | 
			
		||||
    "createdTimestamp": 1602182806063,
 | 
			
		||||
    "lastModifiedTimestamp": 1602182806063,
 | 
			
		||||
    "createdTimestamp": 1606778369933,
 | 
			
		||||
    "lastModifiedTimestamp": 1606778369933,
 | 
			
		||||
    "childProfileIds": []
 | 
			
		||||
}
 | 
			
		||||
@@ -4,72 +4,6 @@
 | 
			
		||||
		"id": 5,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is5GHzU",
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
				"is2dot4GHz"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "wpa2PSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": "testing123",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1602113058718,
 | 
			
		||||
		"lastModifiedTimestamp": 1602113059547,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			10
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 11,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-3-radios",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
@@ -80,13 +14,15 @@
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "open",
 | 
			
		||||
			"secureMode": "wpa2OnlyPSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": null,
 | 
			
		||||
			"keyStr": "openwifi",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
@@ -94,7 +30,7 @@
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
@@ -106,17 +42,83 @@
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": "BRIDGE",
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1606778369598,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369598,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 15,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-passpoint-access",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-passpoint-access",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is5GHzL",
 | 
			
		||||
				"is5GHzU"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "wpa2PSK",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": "testing123",
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
@@ -125,10 +127,77 @@
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1602183994766,
 | 
			
		||||
		"lastModifiedTimestamp": 1602183994766,
 | 
			
		||||
		"createdTimestamp": 1606778369943,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370811,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			10
 | 
			
		||||
			24
 | 
			
		||||
		]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
		"id": 16,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
		"profileType": "ssid",
 | 
			
		||||
		"name": "TipWlan-cloud-passpoint-osu",
 | 
			
		||||
		"details": {
 | 
			
		||||
			"model_type": "SsidConfiguration",
 | 
			
		||||
			"ssid": "TipWlan-cloud-passpoint-osu",
 | 
			
		||||
			"appliedRadios": [
 | 
			
		||||
				"is2dot4GHz"
 | 
			
		||||
			],
 | 
			
		||||
			"ssidAdminState": "enabled",
 | 
			
		||||
			"secureMode": "open",
 | 
			
		||||
			"vlanId": 1,
 | 
			
		||||
			"keyStr": null,
 | 
			
		||||
			"broadcastSsid": "enabled",
 | 
			
		||||
			"keyRefresh": 0,
 | 
			
		||||
			"noLocalSubnets": false,
 | 
			
		||||
			"radiusServiceName": null,
 | 
			
		||||
			"radiusAccountingServiceName": null,
 | 
			
		||||
			"radiusAcountingServiceInterval": null,
 | 
			
		||||
			"captivePortalId": null,
 | 
			
		||||
			"bandwidthLimitDown": 0,
 | 
			
		||||
			"bandwidthLimitUp": 0,
 | 
			
		||||
			"clientBandwidthLimitDown": 0,
 | 
			
		||||
			"clientBandwidthLimitUp": 0,
 | 
			
		||||
			"videoTrafficOnly": false,
 | 
			
		||||
			"radioBasedConfigs": {
 | 
			
		||||
				"is5GHzL": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is2dot4GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHz": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				},
 | 
			
		||||
				"is5GHzU": {
 | 
			
		||||
					"model_type": "RadioBasedSsidConfiguration",
 | 
			
		||||
					"enable80211r": null,
 | 
			
		||||
					"enable80211k": null,
 | 
			
		||||
					"enable80211v": null
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"bonjourGatewayProfileId": null,
 | 
			
		||||
			"enable80211w": null,
 | 
			
		||||
			"wepConfig": null,
 | 
			
		||||
			"forwardMode": null,
 | 
			
		||||
			"profileType": "ssid"
 | 
			
		||||
		},
 | 
			
		||||
		"createdTimestamp": 1606778369944,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778370352,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
			19,
 | 
			
		||||
			20
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,15 @@
 | 
			
		||||
[
 | 
			
		||||
	{
 | 
			
		||||
		"model_type": "Profile",
 | 
			
		||||
        "id": 7,
 | 
			
		||||
		"id": 18,
 | 
			
		||||
		"customerId": 2,
 | 
			
		||||
        "profileType": "venue",
 | 
			
		||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
			
		||||
		"profileType": "passpoint_venue",
 | 
			
		||||
		"name": "TipWlan-Passpoint-Venue",
 | 
			
		||||
		"details": {
 | 
			
		||||
            "model_type": "VenueProfile",
 | 
			
		||||
			"model_type": "PasspointVenueProfile",
 | 
			
		||||
			"venueNameSet": [
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "VenueName",
 | 
			
		||||
					"model_type": "PasspointVenueName",
 | 
			
		||||
					"locale": "fr_CA",
 | 
			
		||||
					"dupleIso3Language": "fra",
 | 
			
		||||
					"dupleName": "Exemple de lieu",
 | 
			
		||||
@@ -18,25 +18,26 @@
 | 
			
		||||
					"asDuple": "fra:Exemple de lieu"
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
                    "model_type": "VenueName",
 | 
			
		||||
					"model_type": "PasspointVenueName",
 | 
			
		||||
					"locale": "en_CA",
 | 
			
		||||
					"dupleIso3Language": "eng",
 | 
			
		||||
                    "dupleName": "Example venue",
 | 
			
		||||
					"dupleName": "Example passpoint_venue",
 | 
			
		||||
					"defaultDupleSeparator": ":",
 | 
			
		||||
					"venueUrl": "http://www.example.com/info-eng",
 | 
			
		||||
                    "asDuple": "eng:Example venue"
 | 
			
		||||
					"asDuple": "eng:Example passpoint_venue"
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
			"venueTypeAssignment": {
 | 
			
		||||
                "model_type": "VenueTypeAssignment",
 | 
			
		||||
				"model_type": "PasspointVenueTypeAssignment",
 | 
			
		||||
				"venueDescription": "Research and Development Facility",
 | 
			
		||||
				"venueGroupId": 2,
 | 
			
		||||
				"venueTypeId": 8
 | 
			
		||||
			},
 | 
			
		||||
            "profileType": "venue"
 | 
			
		||||
			"profileType": "passpoint_venue"
 | 
			
		||||
		},
 | 
			
		||||
        "createdTimestamp": 1602113058725,
 | 
			
		||||
        "lastModifiedTimestamp": 1602113058725,
 | 
			
		||||
        "childProfileIds": []
 | 
			
		||||
		"createdTimestamp": 1606778369950,
 | 
			
		||||
		"lastModifiedTimestamp": 1606778369950,
 | 
			
		||||
		"childProfileIds": [
 | 
			
		||||
		]
 | 
			
		||||
	}
 | 
			
		||||
]
 | 
			
		||||
@@ -7,6 +7,7 @@
 | 
			
		||||
        <listEntry value="1"/>
 | 
			
		||||
    </listAttribute>
 | 
			
		||||
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/>
 | 
			
		||||
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/>
 | 
			
		||||
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
 | 
			
		||||
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
 | 
			
		||||
    <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,16 @@
 | 
			
		||||
			<artifactId>opensync-ext-interface</artifactId>
 | 
			
		||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
			
		||||
		</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>
 | 
			
		||||
			<groupId>com.vmware.ovsdb</groupId>
 | 
			
		||||
			<artifactId>ovsdb-client</artifactId>
 | 
			
		||||
@@ -37,12 +46,6 @@
 | 
			
		||||
		</dependency>
 | 
			
		||||
 | 
			
		||||
		<!-- MQTT dependencies BEGIN -->
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
			<artifactId>tip-wlan-opensync-protobuf</artifactId>
 | 
			
		||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
			
		||||
		</dependency>
 | 
			
		||||
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<artifactId>service-metric-service-interface</artifactId>
 | 
			
		||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ import com.telecominfraproject.wlan.opensync.external.integration.models.Opensyn
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncWifiAssociatedClients;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbDao;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities.OvsdbStringConstants;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.util.OvsdbStringConstants;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.util.SslUtil;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
 | 
			
		||||
import com.vmware.ovsdb.callback.ConnectionCallback;
 | 
			
		||||
@@ -193,38 +193,36 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
 | 
			
		||||
        LOG.debug("Client {} connect for AP {}", clientCn, apId);
 | 
			
		||||
        
 | 
			
		||||
        ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
 | 
			
		||||
        ovsdbDao.removeAllSsids(ovsdbClient); // always    
 | 
			
		||||
        ovsdbDao.removeAllInetConfigs(ovsdbClient);       
 | 
			
		||||
        ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
			
		||||
        ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
			
		||||
        
 | 
			
		||||
        OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId);
 | 
			
		||||
 | 
			
		||||
        if (opensyncAPConfig != null) {
 | 
			
		||||
            ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
 | 
			
		||||
            ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
			
		||||
            ovsdbDao.removeAllSsids(ovsdbClient, opensyncAPConfig); // always
 | 
			
		||||
            ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
			
		||||
            ovsdbDao.removeAllGreTunnels(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
            
 | 
			
		||||
            ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
            ovsdbDao.configureInterfaces(ovsdbClient);
 | 
			
		||||
            ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
            ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
            ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);       
 | 
			
		||||
            ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
            
 | 
			
		||||
            ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
            if (opensyncAPConfig.getHotspotConfig() != null) {
 | 
			
		||||
                ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
            }
 | 
			
		||||
            ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
            if (((ApNetworkConfiguration) opensyncAPConfig.getApProfile().getDetails()).getSyntheticClientEnabled()) {
 | 
			
		||||
                ovsdbDao.enableNetworkProbeForSyntheticClient(ovsdbClient);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
 | 
			
		||||
            ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
			
		||||
            ovsdbDao.removeAllSsids(ovsdbClient); // always
 | 
			
		||||
            ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
			
		||||
            ovsdbDao.removeAllGreTunnels(ovsdbClient, null);
 | 
			
		||||
        }
 | 
			
		||||
            
 | 
			
		||||
            ovsdbDao.configureInterfaces(ovsdbClient);
 | 
			
		||||
 | 
			
		||||
            ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
            if (ovsdbDao.getDeviceStatsReportingInterval(ovsdbClient) != collectionIntervalSecDeviceStats) {
 | 
			
		||||
                ovsdbDao.updateDeviceStatsReportingInterval(ovsdbClient, collectionIntervalSecDeviceStats);
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
        } else {
 | 
			
		||||
            LOG.info("No Configuration available for {}", apId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        LOG.debug("Client connect Done");
 | 
			
		||||
        return connectNodeInfo;
 | 
			
		||||
@@ -270,19 +268,23 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
 | 
			
		||||
        ovsdbDao.removeAllSsids(ovsdbClient, opensyncAPConfig); // always
 | 
			
		||||
        ovsdbDao.removeAllGreTunnels(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
        ovsdbDao.removeAllSsids(ovsdbClient); // always    
 | 
			
		||||
        ovsdbDao.removeAllInetConfigs(ovsdbClient);       
 | 
			
		||||
        ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
			
		||||
        ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
			
		||||
 | 
			
		||||
        ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
        ovsdbDao.configureInterfaces(ovsdbClient);
 | 
			
		||||
        ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
        ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
        ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);       
 | 
			
		||||
        ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
        
 | 
			
		||||
        ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
        if (opensyncAPConfig.getHotspotConfig() != null) {
 | 
			
		||||
            ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        ovsdbDao.configureInterfaces(ovsdbClient);
 | 
			
		||||
 | 
			
		||||
        ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig);
 | 
			
		||||
        if (ovsdbDao.getDeviceStatsReportingInterval(ovsdbClient) != collectionIntervalSecDeviceStats) {
 | 
			
		||||
            ovsdbDao.updateDeviceStatsReportingInterval(ovsdbClient, collectionIntervalSecDeviceStats);
 | 
			
		||||
@@ -372,6 +374,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void update(TableUpdates tableUpdates) {
 | 
			
		||||
                        try {
 | 
			
		||||
                            LOG.info(OvsdbDao.dhcpLeasedIpDbTable + "_" + key + " monitor callback received {}",
 | 
			
		||||
                                    tableUpdates);
 | 
			
		||||
 | 
			
		||||
@@ -429,6 +432,9 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
                                extIntegrationInterface.dhcpLeasedIpDbTableUpdate(update, key, RowUpdateOperation.MODIFY);
 | 
			
		||||
 | 
			
		||||
                            }
 | 
			
		||||
                        } catch (Exception e) {
 | 
			
		||||
                            LOG.error("dhcpLeasedIpDbTableUpdate failed", e);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
@@ -447,6 +453,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void update(TableUpdates tableUpdates) {
 | 
			
		||||
                        try {
 | 
			
		||||
                            LOG.info(OvsdbDao.commandStateDbTable + "_" + key + " monitor callback received {}",
 | 
			
		||||
                                    tableUpdates);
 | 
			
		||||
 | 
			
		||||
@@ -504,6 +511,9 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
                                extIntegrationInterface.commandStateDbTableUpdate(update, key, RowUpdateOperation.MODIFY);
 | 
			
		||||
 | 
			
		||||
                            }
 | 
			
		||||
                        } catch (Exception e) {
 | 
			
		||||
                            LOG.error("commandStateDbTableUpdate failed", e);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
@@ -521,10 +531,14 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void update(TableUpdates tableUpdates) {
 | 
			
		||||
                        try {
 | 
			
		||||
                            LOG.info(OvsdbDao.awlanNodeDbTable + "_" + key + " monitor callback received {}", tableUpdates);
 | 
			
		||||
 | 
			
		||||
                            extIntegrationInterface.awlanNodeDbTableUpdate(
 | 
			
		||||
                                    ovsdbDao.getOpensyncAWLANNode(tableUpdates, key, ovsdbClient), key);
 | 
			
		||||
                        } catch (Exception e) {
 | 
			
		||||
                            LOG.error("awlanNodeDbTableUpdate failed",e);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                });
 | 
			
		||||
@@ -542,6 +556,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void update(TableUpdates tableUpdates) {
 | 
			
		||||
 | 
			
		||||
                        try {
 | 
			
		||||
                            LOG.info(OvsdbDao.wifiAssociatedClientsDbTable + "_" + key + " monitor callback received {}",
 | 
			
		||||
                                    tableUpdates);
 | 
			
		||||
 | 
			
		||||
@@ -567,6 +582,9 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
 | 
			
		||||
                            // now address the update/add
 | 
			
		||||
                            extIntegrationInterface.wifiAssociatedClientsDbTableUpdate(associatedClients, key);
 | 
			
		||||
                        } catch (Exception e) {
 | 
			
		||||
                           LOG.error("wifiAssociatedClientsDbTableUpdate failed", e);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
@@ -585,6 +603,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void update(TableUpdates tableUpdates) {
 | 
			
		||||
                        try {
 | 
			
		||||
                            LOG.info(OvsdbDao.ovsdbName,
 | 
			
		||||
                                    OvsdbDao.wifiInetStateDbTable + "_" + key + " monitor callback received {}",
 | 
			
		||||
                                    tableUpdates);
 | 
			
		||||
@@ -612,6 +631,9 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
 | 
			
		||||
                            // now process updates and mutations
 | 
			
		||||
                            extIntegrationInterface.wifiInetStateDbTableUpdate(inetStateInsertOrUpdate, key);
 | 
			
		||||
                        } catch (Exception e) {
 | 
			
		||||
                            LOG.error("wifiInetStateDbTableUpdate failed",e);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
@@ -629,11 +651,15 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void update(TableUpdates tableUpdates) {
 | 
			
		||||
                        try {
 | 
			
		||||
                            LOG.info(OvsdbDao.wifiRadioStateDbTable + "_" + key + " monitor callback received {}",
 | 
			
		||||
                                    tableUpdates);
 | 
			
		||||
 | 
			
		||||
                            extIntegrationInterface.wifiRadioStatusDbTableUpdate(
 | 
			
		||||
                                    ovsdbDao.getOpensyncAPRadioState(tableUpdates, key, ovsdbClient), key);
 | 
			
		||||
                        } catch (Exception e) {
 | 
			
		||||
                            LOG.error("wifiRadioStatusDbTableUpdate failed",e);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                });
 | 
			
		||||
@@ -650,6 +676,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void update(TableUpdates tableUpdates) {
 | 
			
		||||
                        try {
 | 
			
		||||
                            LOG.info(OvsdbDao.wifiVifStateDbTable + "_" + key + " monitor callback received {}",
 | 
			
		||||
                                    tableUpdates);
 | 
			
		||||
 | 
			
		||||
@@ -683,6 +710,9 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
			
		||||
                                }
 | 
			
		||||
 | 
			
		||||
                            }
 | 
			
		||||
                        } catch (Exception e) {
 | 
			
		||||
                            LOG.error("wifiVIFStateDbTableUpdate failed", e);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -8,7 +8,10 @@ import java.util.Set;
 | 
			
		||||
 | 
			
		||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
			
		||||
 | 
			
		||||
public class WifiVifConfigInfo implements Cloneable{
 | 
			
		||||
public class WifiVifConfigInfo implements Cloneable {
 | 
			
		||||
 | 
			
		||||
    // multi_ap
 | 
			
		||||
    // {"key":{"enum":["set",["backhaul_bss","backhaul_sta","fronthaul_backhaul_bss","fronthaul_bss","none"]],"type":"string"},"min":0}
 | 
			
		||||
 | 
			
		||||
    public String bridge;
 | 
			
		||||
    public int btm;
 | 
			
		||||
@@ -22,7 +25,11 @@ public class WifiVifConfigInfo implements Cloneable{
 | 
			
		||||
    public String ssidBroadcast;
 | 
			
		||||
    public boolean uapsdEnable;
 | 
			
		||||
    public int vifRadioIdx;
 | 
			
		||||
    public Map<String,String> security;
 | 
			
		||||
    public Map<String, String> security;
 | 
			
		||||
    public Map<String, String> captivePortal;
 | 
			
		||||
    public Set<String> captiveAllowlist;
 | 
			
		||||
    public Map<String, String> customOptions;
 | 
			
		||||
    public Map<String, String> meshOptions;
 | 
			
		||||
 | 
			
		||||
    public Uuid uuid;
 | 
			
		||||
    public int vlanId;
 | 
			
		||||
@@ -31,56 +38,96 @@ public class WifiVifConfigInfo implements Cloneable{
 | 
			
		||||
    public Set<String> macList;
 | 
			
		||||
    public String macListType;
 | 
			
		||||
    public int ftMobilityDomain;
 | 
			
		||||
    public boolean wpsPbc;
 | 
			
		||||
    public boolean wps;
 | 
			
		||||
    public boolean wds;
 | 
			
		||||
    public String wpsPbcKeyId;
 | 
			
		||||
    public boolean mcast2ucast;
 | 
			
		||||
    public boolean dynamicBeacon;
 | 
			
		||||
    public int vifDbgLvl;
 | 
			
		||||
    public Set<Uuid> credentialConfigs;
 | 
			
		||||
    public String parent;
 | 
			
		||||
    public String multiAp;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public WifiVifConfigInfo clone() {
 | 
			
		||||
        try {
 | 
			
		||||
            WifiVifConfigInfo ret = (WifiVifConfigInfo)super.clone();
 | 
			
		||||
            WifiVifConfigInfo ret = (WifiVifConfigInfo) super.clone();
 | 
			
		||||
 | 
			
		||||
            if(security!=null) {
 | 
			
		||||
            if (security != null) {
 | 
			
		||||
                ret.security = new HashMap<>(this.security);
 | 
			
		||||
            }
 | 
			
		||||
            if (macList!=null) {
 | 
			
		||||
            if (macList != null) {
 | 
			
		||||
                ret.macList = new HashSet<>(this.macList);
 | 
			
		||||
            }
 | 
			
		||||
            if (captivePortal != null) {
 | 
			
		||||
                ret.captivePortal = new HashMap<>(this.captivePortal);
 | 
			
		||||
            }
 | 
			
		||||
            if (captiveAllowlist != null) {
 | 
			
		||||
                ret.captiveAllowlist = new HashSet<>(this.captiveAllowlist);
 | 
			
		||||
            }
 | 
			
		||||
            if (customOptions != null) {
 | 
			
		||||
                ret.customOptions = new HashMap<>(this.customOptions);
 | 
			
		||||
            }
 | 
			
		||||
            if (meshOptions != null) {
 | 
			
		||||
                ret.meshOptions = new HashMap<>(this.meshOptions);
 | 
			
		||||
            }
 | 
			
		||||
            if (credentialConfigs != null) {
 | 
			
		||||
                ret.credentialConfigs = new HashSet<>(this.credentialConfigs);
 | 
			
		||||
            }
 | 
			
		||||
            return ret;
 | 
			
		||||
        }catch(CloneNotSupportedException e) {                
 | 
			
		||||
        } catch (CloneNotSupportedException 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);
 | 
			
		||||
        return Objects.hash(apBridge, bridge, btm, captiveAllowlist, captivePortal, credentialConfigs, customOptions,
 | 
			
		||||
                dynamicBeacon, enabled, ftMobilityDomain, ftPsk, groupRekey, ifName, macList, macListType, mcast2ucast,
 | 
			
		||||
                meshOptions, minHwMode, mode, multiAp, parent, rrm, security, ssid, ssidBroadcast, uapsdEnable, uuid,
 | 
			
		||||
                vifDbgLvl, vifRadioIdx, vlanId, wds, wps, wpsPbc, wpsPbcKeyId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean equals(Object obj) {
 | 
			
		||||
        if (this == obj) {
 | 
			
		||||
        if (this == obj)
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        if (!(obj instanceof WifiVifConfigInfo)) {
 | 
			
		||||
        if (obj == null)
 | 
			
		||||
            return false;
 | 
			
		||||
        if (getClass() != obj.getClass())
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        WifiVifConfigInfo other = (WifiVifConfigInfo) obj;
 | 
			
		||||
        return Objects.equals(apBridge, other.apBridge) && Objects.equals(bridge, other.bridge) && btm == other.btm
 | 
			
		||||
                && Objects.equals(captiveAllowlist, other.captiveAllowlist)
 | 
			
		||||
                && Objects.equals(captivePortal, other.captivePortal)
 | 
			
		||||
                && Objects.equals(credentialConfigs, other.credentialConfigs)
 | 
			
		||||
                && Objects.equals(customOptions, other.customOptions) && dynamicBeacon == other.dynamicBeacon
 | 
			
		||||
                && 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
 | 
			
		||||
                && mcast2ucast == other.mcast2ucast && Objects.equals(meshOptions, other.meshOptions)
 | 
			
		||||
                && Objects.equals(minHwMode, other.minHwMode) && Objects.equals(mode, other.mode)
 | 
			
		||||
                && Objects.equals(multiAp, other.multiAp) && Objects.equals(parent, other.parent) && 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;
 | 
			
		||||
                && Objects.equals(uuid, other.uuid) && vifDbgLvl == other.vifDbgLvl && vifRadioIdx == other.vifRadioIdx
 | 
			
		||||
                && vlanId == other.vlanId && wds == other.wds && wps == other.wps && wpsPbc == other.wpsPbc
 | 
			
		||||
                && Objects.equals(wpsPbcKeyId, other.wpsPbcKeyId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String toString() {
 | 
			
		||||
        return String.format(
 | 
			
		||||
                "WifiVifConfigInfo [bridge=%s, ap_bridge=%s, btm=%s, enabled=%s, ftPsk=%s, ftMobilityDomain=%s, groupRekey=%s, ifName=%s, minHwMode=%s, mode=%s, rrm=%s, ssid=%s, ssidBroadcast=%s, uapsdEnable=%s, vifRadioIdx=%s, security=%s, uuid=%s, vlanId=%s, macList=%s, macListType=%s]",
 | 
			
		||||
                bridge, apBridge, btm, enabled, ftPsk, ftMobilityDomain, groupRekey, ifName, minHwMode, mode, rrm, ssid, ssidBroadcast, uapsdEnable,
 | 
			
		||||
                vifRadioIdx, security, uuid, vlanId, macList, macListType);
 | 
			
		||||
        return "WifiVifConfigInfo [bridge=" + bridge + ", btm=" + btm + ", enabled=" + enabled + ", ftPsk=" + ftPsk
 | 
			
		||||
                + ", groupRekey=" + groupRekey + ", ifName=" + ifName + ", mode=" + mode + ", rrm=" + rrm + ", ssid="
 | 
			
		||||
                + ssid + ", ssidBroadcast=" + ssidBroadcast + ", uapsdEnable=" + uapsdEnable + ", vifRadioIdx="
 | 
			
		||||
                + vifRadioIdx + ", security=" + security + ", captivePortal=" + captivePortal + ", captiveAllowlist="
 | 
			
		||||
                + captiveAllowlist + ", customOptions=" + customOptions + ", meshOptions=" + meshOptions + ", uuid="
 | 
			
		||||
                + uuid + ", vlanId=" + vlanId + ", apBridge=" + apBridge + ", minHwMode=" + minHwMode + ", macList="
 | 
			
		||||
                + macList + ", macListType=" + macListType + ", ftMobilityDomain=" + ftMobilityDomain + ", wpsPbc="
 | 
			
		||||
                + wpsPbc + ", wps=" + wps + ", wds=" + wds + ", wpsPbcKeyId=" + wpsPbcKeyId + ", mcast2ucast="
 | 
			
		||||
                + mcast2ucast + ", dynamicBeacon=" + dynamicBeacon + ", vifDbgLvl=" + vifDbgLvl + ", credentialConfigs="
 | 
			
		||||
                + credentialConfigs + ", parent=" + parent + ", multiAp=" + multiAp + "]";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities;
 | 
			
		||||
package com.telecominfraproject.wlan.opensync.util;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public class OvsdbStringConstants {
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
package com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities;
 | 
			
		||||
package com.telecominfraproject.wlan.opensync.util;
 | 
			
		||||
 | 
			
		||||
import com.telecominfraproject.wlan.client.models.ClientType;
 | 
			
		||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
			
		||||
import com.telecominfraproject.wlan.core.model.equipment.SecurityType;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.enumerations.DhcpFpDeviceType;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.metrics.ChannelUtilizationSurveyType;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.metrics.ServiceMetricsChannelUtilizationSurveyType;
 | 
			
		||||
import com.telecominfraproject.wlan.servicemetric.apnode.models.StateUpDownError;
 | 
			
		||||
import com.telecominfraproject.wlan.servicemetric.models.ServiceMetricDataType;
 | 
			
		||||
import com.telecominfraproject.wlan.status.equipment.models.EquipmentUpgradeState;
 | 
			
		||||
@@ -83,7 +83,7 @@ public class OvsdbToWlanCloudTypeMappingUtility {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static String getOvsdbStatsSurveyTypeFromProfileSurveyType(ChannelUtilizationSurveyType surveyType) {
 | 
			
		||||
    public static String getOvsdbStatsSurveyTypeFromProfileSurveyType(ServiceMetricsChannelUtilizationSurveyType surveyType) {
 | 
			
		||||
        switch (surveyType) {
 | 
			
		||||
            case FULL:
 | 
			
		||||
                return "full";
 | 
			
		||||
@@ -126,7 +126,7 @@ public class OpensyncGatewayTipWlanOvsdbClientTest {
 | 
			
		||||
        Mockito.verify(ovsdbSessionMapInterface).getSession("Test_Client_21P10C68818122");
 | 
			
		||||
        Mockito.verify(ovsdbSession).getOvsdbClient();
 | 
			
		||||
        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).configureWifiRadios(ovsdbClient, apConfig);
 | 
			
		||||
        Mockito.verify(ovsdbDao).configureSsids(ovsdbClient, apConfig);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
 | 
			
		||||
 | 
			
		||||
import static org.junit.Assert.assertFalse;
 | 
			
		||||
import static org.junit.Assert.assertNotNull;
 | 
			
		||||
import static org.junit.Assert.assertNull;
 | 
			
		||||
 | 
			
		||||
@@ -7,6 +8,7 @@ import java.net.InetAddress;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
import java.util.concurrent.CompletableFuture;
 | 
			
		||||
@@ -32,13 +34,15 @@ import org.springframework.test.context.junit4.SpringRunner;
 | 
			
		||||
 | 
			
		||||
import com.google.common.collect.ImmutableList;
 | 
			
		||||
import com.google.common.collect.ImmutableMap;
 | 
			
		||||
import com.telecominfraproject.wlan.customer.models.Customer;
 | 
			
		||||
import com.telecominfraproject.wlan.location.models.Location;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
 | 
			
		||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPHotspot20Config;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.models.Profile;
 | 
			
		||||
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.protocol.operation.notation.Atom;
 | 
			
		||||
import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
			
		||||
@@ -62,6 +66,8 @@ import com.vmware.ovsdb.service.OvsdbClient;
 | 
			
		||||
})
 | 
			
		||||
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;
 | 
			
		||||
@@ -136,48 +142,6 @@ public class OvsdbDaoTest {
 | 
			
		||||
        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<>();
 | 
			
		||||
@@ -207,8 +171,60 @@ public class OvsdbDaoTest {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @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 {
 | 
			
		||||
@@ -225,36 +241,35 @@ public class OvsdbDaoTest {
 | 
			
		||||
 | 
			
		||||
        OpensyncAPConfig apConfig = new OpensyncAPConfig();
 | 
			
		||||
        OpensyncAPHotspot20Config hsConfig = new OpensyncAPHotspot20Config();
 | 
			
		||||
        Customer customer = new Customer();
 | 
			
		||||
 | 
			
		||||
        Profile profileSsidPsk = OvsdbDaoTestUtilities.createPasspointAccessSsid(customer);
 | 
			
		||||
        Profile profileSsidPsk = OvsdbDaoTestUtilities.createPasspointAccessSsid(DEFAULT_CUSTOMER_ID);
 | 
			
		||||
        profileSsidPsk.setId(SSID_PSK_ID);
 | 
			
		||||
        Profile profileSsidOsu = OvsdbDaoTestUtilities.createPasspointOsuSsid(customer);
 | 
			
		||||
        Profile profileSsidOsu = OvsdbDaoTestUtilities.createPasspointOsuSsid(DEFAULT_CUSTOMER_ID);
 | 
			
		||||
        profileSsidOsu.setId(SSID_OSU_ID);
 | 
			
		||||
        Profile passpointOperatorProfile = OvsdbDaoTestUtilities.createPasspointOperatorProfile(customer);
 | 
			
		||||
        Profile passpointOperatorProfile = OvsdbDaoTestUtilities.createPasspointOperatorProfile(DEFAULT_CUSTOMER_ID);
 | 
			
		||||
        passpointOperatorProfile.setId(OPERATOR_ID);
 | 
			
		||||
        Profile passpointVenueProfile = OvsdbDaoTestUtilities.createPasspointVenueProfile(customer);
 | 
			
		||||
        Profile passpointVenueProfile = OvsdbDaoTestUtilities.createPasspointVenueProfile(DEFAULT_CUSTOMER_ID);
 | 
			
		||||
        passpointVenueProfile.setId(VENUE_ID);
 | 
			
		||||
        Profile hotspot20IdProviderProfile = new Profile();
 | 
			
		||||
        hotspot20IdProviderProfile.setId(HOTSPOT_PROVIDER_ID_1);
 | 
			
		||||
        hotspot20IdProviderProfile = OvsdbDaoTestUtilities.createPasspointIdProviderProfile(customer,
 | 
			
		||||
        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(customer,
 | 
			
		||||
        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(customer,
 | 
			
		||||
        Profile passpointHotspotConfig = OvsdbDaoTestUtilities.createPasspointHotspotConfig(DEFAULT_CUSTOMER_ID,
 | 
			
		||||
                hotspot20IdProviderProfile2, hotspot20IdProviderProfile, passpointOperatorProfile,
 | 
			
		||||
                passpointVenueProfile, profileSsidPsk, profileSsidOsu);
 | 
			
		||||
        passpointHotspotConfig.setId(HOTSPOT_CONFIG_ID);
 | 
			
		||||
 | 
			
		||||
        Profile hotspotProfileAp = OvsdbDaoTestUtilities.createPasspointApProfile(customer, profileSsidPsk,
 | 
			
		||||
        Profile hotspotProfileAp = OvsdbDaoTestUtilities.createPasspointApProfile(DEFAULT_CUSTOMER_ID, profileSsidPsk,
 | 
			
		||||
                profileSsidOsu);
 | 
			
		||||
        hotspotProfileAp.setId(EQUIPMENT_AP_ID);
 | 
			
		||||
 | 
			
		||||
@@ -269,21 +284,23 @@ public class OvsdbDaoTest {
 | 
			
		||||
 | 
			
		||||
        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())
 | 
			
		||||
        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));
 | 
			
		||||
        Mockito.verify(futureResult, Mockito.times(13)).get(Mockito.anyLong(), Mockito.eq(TimeUnit.SECONDS));
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testConfigureGreTunnelsWithNoLocalAddress() throws Exception {
 | 
			
		||||
        List<Row> rows = new ArrayList<>();
 | 
			
		||||
@@ -692,9 +709,7 @@ public class OvsdbDaoTest {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    static Row[] hs20Icons = {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,7 @@
 | 
			
		||||
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;
 | 
			
		||||
@@ -10,18 +12,20 @@ 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.hotspot.models.Hotspot2Profile;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.passpoint.models.Hotspot20Duple;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.passpoint.models.MccMnc;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.passpoint.operator.models.OperatorProfile;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.passpoint.provider.models.Hotspot20IdProviderProfile;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.passpoint.provider.models.NaiRealmInformation;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.passpoint.provider.models.OsuIcon;
 | 
			
		||||
import com.telecominfraproject.wlan.profile.passpoint.venue.models.VenueProfile;
 | 
			
		||||
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;
 | 
			
		||||
@@ -36,119 +40,122 @@ 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) {
 | 
			
		||||
 | 
			
		||||
    // Static creation of Profiles and Results to use with the OvsdbDao JUnit tests.
 | 
			
		||||
        profileSsidPsk = createPasspointAccessSsid(customerId);
 | 
			
		||||
        profileSsidPsk.setId(1L);
 | 
			
		||||
        profileSsidOsu = createPasspointOsuSsid(customerId);
 | 
			
		||||
        profileSsidOsu.setId(2L);
 | 
			
		||||
 | 
			
		||||
    static void createPasspointHotspot(Customer customer, Profile passpointHotspotConfig,
 | 
			
		||||
            Profile passpointOperatorProfile, Profile passpointVenueProfile, Profile hotspot20IdProviderProfile,
 | 
			
		||||
            Profile hotspot20IdProviderProfile2, Profile profileSsidPsk, Profile profileSsidOsu,
 | 
			
		||||
            Profile hotspotProfileAp) {
 | 
			
		||||
 | 
			
		||||
        profileSsidPsk = createPasspointAccessSsid(customer);
 | 
			
		||||
        profileSsidOsu = createPasspointOsuSsid(customer);
 | 
			
		||||
 | 
			
		||||
        passpointOperatorProfile = createPasspointOperatorProfile(customer);
 | 
			
		||||
 | 
			
		||||
        passpointVenueProfile = createPasspointVenueProfile(customer);
 | 
			
		||||
 | 
			
		||||
        hotspot20IdProviderProfile = createPasspointIdProviderProfile(customer, hotspot20IdProviderProfile,
 | 
			
		||||
        passpointOperatorProfile = createPasspointOperatorProfile(customerId);
 | 
			
		||||
        passpointOperatorProfile.setId(3L);
 | 
			
		||||
        passpointVenueProfile = createPasspointVenueProfile(customerId);
 | 
			
		||||
        passpointVenueProfile.setId(4L);
 | 
			
		||||
        hotspot20IdProviderProfile = createPasspointIdProviderProfile(customerId, hotspot20IdProviderProfile,
 | 
			
		||||
                "TipWlan-Hotspot20-OSU-Provider", "Rogers AT&T Wireless", "Canada", "ca", 302, 720, "rogers.com", 1);
 | 
			
		||||
 | 
			
		||||
        hotspot20IdProviderProfile2 = createPasspointIdProviderProfile(customer, hotspot20IdProviderProfile2,
 | 
			
		||||
        hotspot20IdProviderProfile.setId(5L);
 | 
			
		||||
        hotspot20IdProviderProfile2 = createPasspointIdProviderProfile(customerId, hotspot20IdProviderProfile2,
 | 
			
		||||
                "TipWlan-Hotspot20-OSU-Provider-2", "Telus Mobility", "Canada", "ca", 302, 220, "telus.com", 1);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        hotspot20IdProviderProfile2.setId(6L);
 | 
			
		||||
        profileSsidOsu.getChildProfileIds().add(hotspot20IdProviderProfile.getId());
 | 
			
		||||
        profileSsidOsu.getChildProfileIds().add(hotspot20IdProviderProfile2.getId());
 | 
			
		||||
 | 
			
		||||
        passpointHotspotConfig = createPasspointHotspotConfig(customer, hotspot20IdProviderProfile2,
 | 
			
		||||
        passpointHotspotConfig = createPasspointHotspotConfig(customerId, hotspot20IdProviderProfile2,
 | 
			
		||||
                hotspot20IdProviderProfile, passpointOperatorProfile, passpointVenueProfile, profileSsidPsk,
 | 
			
		||||
                profileSsidOsu);
 | 
			
		||||
        passpointHotspotConfig.setId(7L);
 | 
			
		||||
 | 
			
		||||
        hotspotProfileAp = createPasspointApProfile(customer, profileSsidPsk, profileSsidOsu);
 | 
			
		||||
        hotspotProfileAp = createPasspointApProfile(customerId, profileSsidPsk, profileSsidOsu);
 | 
			
		||||
        hotspotProfileAp.setId(8L);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static Profile createPasspointHotspotConfig(Customer customer, Profile hotspot20IdProviderProfile2,
 | 
			
		||||
    static Profile createPasspointHotspotConfig(int customerId, Profile hotspot20IdProviderProfile2,
 | 
			
		||||
            Profile hotspot20IdProviderProfile, Profile passpointOperatorProfile, Profile passpointVenueProfile,
 | 
			
		||||
            Profile profileSsidPsk, Profile profileSsidOpen) {
 | 
			
		||||
        Profile passpointHotspotConfig;
 | 
			
		||||
        passpointHotspotConfig = new Profile();
 | 
			
		||||
        passpointHotspotConfig.setCustomerId(customer.getId());
 | 
			
		||||
        passpointHotspotConfig.setCustomerId(customerId);
 | 
			
		||||
        passpointHotspotConfig.setName("TipWlan-Hotspot20-Config");
 | 
			
		||||
        passpointHotspotConfig.setProfileType(ProfileType.hotspot_2pt0);
 | 
			
		||||
        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(Hotspot2Profile.createWithDefaults());
 | 
			
		||||
        Set<String> providerNames = new HashSet<>();
 | 
			
		||||
        providerNames.add(hotspot20IdProviderProfile.getName());
 | 
			
		||||
        providerNames.add(hotspot20IdProviderProfile2.getName());
 | 
			
		||||
        ((Hotspot2Profile) passpointHotspotConfig.getDetails()).setIdProviderProfileNames(providerNames);
 | 
			
		||||
        ((Hotspot2Profile) passpointHotspotConfig.getDetails())
 | 
			
		||||
                .setOperatorProfileName(passpointOperatorProfile.getName());
 | 
			
		||||
        ((Hotspot2Profile) passpointHotspotConfig.getDetails()).setVenueProfileName(passpointVenueProfile.getName());
 | 
			
		||||
        ((Hotspot2Profile) passpointHotspotConfig.getDetails()).setOsuSsidName(profileSsidOpen.getName());
 | 
			
		||||
        passpointHotspotConfig.setDetails(PasspointProfile.createWithDefaults());
 | 
			
		||||
        Set<Long> providerIds = new HashSet<>();
 | 
			
		||||
        providerIds.add(hotspot20IdProviderProfile.getId());
 | 
			
		||||
        providerIds.add(hotspot20IdProviderProfile2.getId());
 | 
			
		||||
        ((PasspointProfile) passpointHotspotConfig.getDetails()).setPasspointOsuProviderProfileIds(providerIds);
 | 
			
		||||
        ((PasspointProfile) passpointHotspotConfig.getDetails())
 | 
			
		||||
                .setPasspointOperatorProfileId(passpointOperatorProfile.getId());
 | 
			
		||||
        ((PasspointProfile) passpointHotspotConfig.getDetails())
 | 
			
		||||
                .setPasspointVenueProfileId(passpointVenueProfile.getId());
 | 
			
		||||
        ((PasspointProfile) passpointHotspotConfig.getDetails()).setOsuSsidProfileId(profileSsidOpen.getId());
 | 
			
		||||
        profileSsidPsk.getChildProfileIds().add(passpointHotspotConfig.getId());
 | 
			
		||||
        ((PasspointProfile) passpointHotspotConfig.getDetails())
 | 
			
		||||
                .setAssociatedAccessSsidProfileIds(List.of(profileSsidPsk.getId()));
 | 
			
		||||
        return passpointHotspotConfig;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static Profile createPasspointIdProviderProfile(Customer customer, Profile providerProfile, String providerName,
 | 
			
		||||
    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(customer.getId());
 | 
			
		||||
        hotspot20IdProviderProfile.setCustomerId(customerId);
 | 
			
		||||
        hotspot20IdProviderProfile.setName(providerName);
 | 
			
		||||
        hotspot20IdProviderProfile.setProfileType(ProfileType.id_provider);
 | 
			
		||||
        MccMnc mccMnc = MccMnc.createWithDefaults();
 | 
			
		||||
        mccMnc.setMcc(mcc);
 | 
			
		||||
        mccMnc.setMnc(mnc);
 | 
			
		||||
        mccMnc.setIso(iso);
 | 
			
		||||
        mccMnc.setCountry(country);
 | 
			
		||||
        mccMnc.setCountryCode(1);
 | 
			
		||||
        mccMnc.setNetwork(network);
 | 
			
		||||
        List<MccMnc> mccMncList = new ArrayList<>();
 | 
			
		||||
        mccMncList.add(mccMnc);
 | 
			
		||||
        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(customer, hotspot20IdProviderProfile, mccMncList,
 | 
			
		||||
                naiRealms, "https://example.com/osu/" + naiRealm.split(".com")[0], naiRealm.split(".com")[0], naiRealm,
 | 
			
		||||
        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(Customer customer) {
 | 
			
		||||
    static Profile createPasspointVenueProfile(int customerId) {
 | 
			
		||||
        Profile passpointVenueProfile;
 | 
			
		||||
        passpointVenueProfile = new Profile();
 | 
			
		||||
        passpointVenueProfile.setCustomerId(customer.getId());
 | 
			
		||||
        passpointVenueProfile.setCustomerId(customerId);
 | 
			
		||||
        passpointVenueProfile.setName("TipWlan-Hotspot20-Venue");
 | 
			
		||||
        passpointVenueProfile.setProfileType(ProfileType.venue);
 | 
			
		||||
        passpointVenueProfile.setDetails(VenueProfile.createWithDefaults());
 | 
			
		||||
        passpointVenueProfile.setProfileType(ProfileType.passpoint_venue);
 | 
			
		||||
        passpointVenueProfile.setDetails(PasspointVenueProfile.createWithDefaults());
 | 
			
		||||
        return passpointVenueProfile;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static Profile createPasspointOperatorProfile(Customer customer) {
 | 
			
		||||
    static Profile createPasspointOperatorProfile(int customerId) {
 | 
			
		||||
        Profile passpointOperatorProfile;
 | 
			
		||||
        passpointOperatorProfile = new Profile();
 | 
			
		||||
        passpointOperatorProfile.setCustomerId(customer.getId());
 | 
			
		||||
        passpointOperatorProfile.setCustomerId(customerId);
 | 
			
		||||
        passpointOperatorProfile.setName("TipWlan-Hotspot20-Operator");
 | 
			
		||||
        passpointOperatorProfile.setProfileType(ProfileType.operator);
 | 
			
		||||
        passpointOperatorProfile.setDetails(OperatorProfile.createWithDefaults());
 | 
			
		||||
        passpointOperatorProfile.setProfileType(ProfileType.passpoint_operator);
 | 
			
		||||
        passpointOperatorProfile.setDetails(PasspointOperatorProfile.createWithDefaults());
 | 
			
		||||
        return passpointOperatorProfile;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static Profile createPasspointAccessSsid(Customer customer) {
 | 
			
		||||
    static Profile createPasspointAccessSsid(int customerId) {
 | 
			
		||||
        Profile profileSsidPsk;
 | 
			
		||||
        profileSsidPsk = new Profile();
 | 
			
		||||
        profileSsidPsk.setCustomerId(customer.getId());
 | 
			
		||||
        profileSsidPsk.setCustomerId(customerId);
 | 
			
		||||
        profileSsidPsk.setName("TipWlan-cloud-hotspot-access");
 | 
			
		||||
        SsidConfiguration ssidConfigPsk = SsidConfiguration.createWithDefaults();
 | 
			
		||||
        Set<RadioType> appliedRadiosPsk = new HashSet<RadioType>();
 | 
			
		||||
@@ -162,10 +169,10 @@ public class OvsdbDaoTestUtilities {
 | 
			
		||||
        return profileSsidPsk;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static Profile createPasspointOsuSsid(Customer customer) {
 | 
			
		||||
    static Profile createPasspointOsuSsid(int customerId) {
 | 
			
		||||
        Profile profileSsidPsk;
 | 
			
		||||
        profileSsidPsk = new Profile();
 | 
			
		||||
        profileSsidPsk.setCustomerId(customer.getId());
 | 
			
		||||
        profileSsidPsk.setCustomerId(customerId);
 | 
			
		||||
        profileSsidPsk.setName("TipWlan-cloud-hotspot-osu");
 | 
			
		||||
        SsidConfiguration ssidConfigPsk = SsidConfiguration.createWithDefaults();
 | 
			
		||||
        Set<RadioType> appliedRadiosPsk = new HashSet<RadioType>();
 | 
			
		||||
@@ -177,23 +184,23 @@ public class OvsdbDaoTestUtilities {
 | 
			
		||||
        return profileSsidPsk;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static Profile createPasspointApProfile(Customer customer, Profile profileSsidPsk, Profile profileSsidOpen) {
 | 
			
		||||
    static Profile createPasspointApProfile(int customerId, Profile profileSsidPsk, Profile profileSsidOpen) {
 | 
			
		||||
 | 
			
		||||
        Profile hotspotProfileAp = new Profile();
 | 
			
		||||
        hotspotProfileAp.setCustomerId(customer.getId());
 | 
			
		||||
        hotspotProfileAp.setCustomerId(customerId);
 | 
			
		||||
        hotspotProfileAp.setName("HotspotProfileAp");
 | 
			
		||||
        hotspotProfileAp.setDetails(ApNetworkConfiguration.createWithDefaults());
 | 
			
		||||
        hotspotProfileAp.getChildProfileIds().add(profileSsidPsk.getId());
 | 
			
		||||
        hotspotProfileAp.getChildProfileIds().add(profileSsidOpen.getId());
 | 
			
		||||
        hotspotProfileAp.getChildProfileIds().add(createPasspointRfProfile(customer).getId());
 | 
			
		||||
        hotspotProfileAp.getChildProfileIds().add(createPasspointRfProfile(customerId).getId());
 | 
			
		||||
        return hotspotProfileAp;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static Profile createPasspointRfProfile(Customer customer) {
 | 
			
		||||
    static Profile createPasspointRfProfile(int customerId) {
 | 
			
		||||
 | 
			
		||||
        Profile profileRf = new Profile();
 | 
			
		||||
        profileRf.setCustomerId(customer.getId());
 | 
			
		||||
        profileRf.setCustomerId(customerId);
 | 
			
		||||
        profileRf.setName("TipWlan-rf-passpoint");
 | 
			
		||||
        RfConfiguration rfConfig = RfConfiguration.createWithDefaults();
 | 
			
		||||
        rfConfig.getRfConfigMap().forEach((x, y) -> y.setRf("TipWlan-rf-passpoint"));
 | 
			
		||||
@@ -202,14 +209,14 @@ public class OvsdbDaoTestUtilities {
 | 
			
		||||
        return profileRf;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static Profile createOsuProviderProfile(Customer customer, Profile hotspot20IdProviderProfile,
 | 
			
		||||
            List<MccMnc> mccMncList, Set<String> realms, String serverUri, String suffix, String domainName,
 | 
			
		||||
    static Profile createOsuProviderProfile(int customerId, Profile hotspot20IdProviderProfile,
 | 
			
		||||
            List<PasspointMccMnc> mccMncList, Set<String> realms, String serverUri, String suffix, String domainName,
 | 
			
		||||
            List<Byte> roamingOi) {
 | 
			
		||||
 | 
			
		||||
        Hotspot20IdProviderProfile passpointIdProviderProfile = Hotspot20IdProviderProfile.createWithDefaults();
 | 
			
		||||
        PasspointOsuProviderProfile passpointIdProviderProfile = PasspointOsuProviderProfile.createWithDefaults();
 | 
			
		||||
 | 
			
		||||
        passpointIdProviderProfile.setMccMncList(mccMncList);
 | 
			
		||||
        OsuIcon icon1 = new OsuIcon();
 | 
			
		||||
        PasspointOsuIcon icon1 = new PasspointOsuIcon();
 | 
			
		||||
        icon1.setIconLocale(Locale.CANADA);
 | 
			
		||||
        icon1.setIconWidth(32);
 | 
			
		||||
        icon1.setIconHeight(32);
 | 
			
		||||
@@ -217,7 +224,7 @@ public class OvsdbDaoTestUtilities {
 | 
			
		||||
        icon1.setIconName("icon32eng");
 | 
			
		||||
        icon1.setImageUrl("https://localhost:9096/icon32eng.png");
 | 
			
		||||
        icon1.setFilePath("/tmp/icon32eng.png");
 | 
			
		||||
        OsuIcon icon2 = new OsuIcon();
 | 
			
		||||
        PasspointOsuIcon icon2 = new PasspointOsuIcon();
 | 
			
		||||
        icon2.setIconLocale(Locale.CANADA_FRENCH);
 | 
			
		||||
        icon2.setIconWidth(32);
 | 
			
		||||
        icon2.setIconHeight(32);
 | 
			
		||||
@@ -225,7 +232,7 @@ public class OvsdbDaoTestUtilities {
 | 
			
		||||
        icon2.setIconName("icon32fra");
 | 
			
		||||
        icon2.setImageUrl("https://localhost:9096/icon32fra.png");
 | 
			
		||||
        icon2.setFilePath("/tmp/icon32fra.png");
 | 
			
		||||
        OsuIcon icon3 = new OsuIcon();
 | 
			
		||||
        PasspointOsuIcon icon3 = new PasspointOsuIcon();
 | 
			
		||||
        icon3.setIconLocale(Locale.US);
 | 
			
		||||
        icon3.setIconWidth(32);
 | 
			
		||||
        icon3.setIconHeight(32);
 | 
			
		||||
@@ -233,16 +240,16 @@ public class OvsdbDaoTestUtilities {
 | 
			
		||||
        icon3.setIconName("icon32usa");
 | 
			
		||||
        icon3.setImageUrl("https://localhost:9096/icon32usa.png");
 | 
			
		||||
        icon3.setFilePath("/tmp/icon32usa.png");
 | 
			
		||||
        List<OsuIcon> osuIconList = new ArrayList<>();
 | 
			
		||||
        List<PasspointOsuIcon> osuIconList = new ArrayList<>();
 | 
			
		||||
        osuIconList.add(icon1);
 | 
			
		||||
        osuIconList.add(icon2);
 | 
			
		||||
        osuIconList.add(icon3);
 | 
			
		||||
        passpointIdProviderProfile.setOsuIconList(osuIconList);
 | 
			
		||||
 | 
			
		||||
        passpointIdProviderProfile.setRoamingOi(roamingOi);
 | 
			
		||||
        List<NaiRealmInformation> naiRealmList = new ArrayList<>();
 | 
			
		||||
        List<PasspointNaiRealmInformation> naiRealmList = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
        NaiRealmInformation naiRealmInfo = NaiRealmInformation.createWithDefaults();
 | 
			
		||||
        PasspointNaiRealmInformation naiRealmInfo = PasspointNaiRealmInformation.createWithDefaults();
 | 
			
		||||
        naiRealmInfo.setNaiRealms(realms);
 | 
			
		||||
 | 
			
		||||
        naiRealmList.add(naiRealmInfo);
 | 
			
		||||
@@ -254,22 +261,22 @@ public class OvsdbDaoTestUtilities {
 | 
			
		||||
        methodList.add(1);
 | 
			
		||||
        methodList.add(0);
 | 
			
		||||
        passpointIdProviderProfile.setOsuMethodList(methodList);
 | 
			
		||||
        Hotspot20Duple enOsuProvider = Hotspot20Duple.createWithDefaults();
 | 
			
		||||
        PasspointDuple enOsuProvider = PasspointDuple.createWithDefaults();
 | 
			
		||||
        enOsuProvider.setLocale(Locale.CANADA);
 | 
			
		||||
        enOsuProvider.setDupleName("Example provider " + suffix);
 | 
			
		||||
        Hotspot20Duple frOsuProvider = Hotspot20Duple.createWithDefaults();
 | 
			
		||||
        PasspointDuple frOsuProvider = PasspointDuple.createWithDefaults();
 | 
			
		||||
        frOsuProvider.setLocale(Locale.CANADA_FRENCH);
 | 
			
		||||
        frOsuProvider.setDupleName("Exemple de fournisseur " + suffix);
 | 
			
		||||
        List<Hotspot20Duple> friendlyNameList = new ArrayList<>();
 | 
			
		||||
        List<PasspointDuple> friendlyNameList = new ArrayList<>();
 | 
			
		||||
        friendlyNameList.add(enOsuProvider);
 | 
			
		||||
        friendlyNameList.add(frOsuProvider);
 | 
			
		||||
        passpointIdProviderProfile.setOsuFriendlyName(friendlyNameList);
 | 
			
		||||
        List<Hotspot20Duple> osuServiceDescription = new ArrayList<>();
 | 
			
		||||
        Hotspot20Duple enService = Hotspot20Duple.createWithDefaults();
 | 
			
		||||
        List<PasspointDuple> osuServiceDescription = new ArrayList<>();
 | 
			
		||||
        PasspointDuple enService = PasspointDuple.createWithDefaults();
 | 
			
		||||
        enService.setLocale(Locale.CANADA);
 | 
			
		||||
        enService.setDupleName("Example services " + suffix);
 | 
			
		||||
        osuServiceDescription.add(enService);
 | 
			
		||||
        Hotspot20Duple frService = Hotspot20Duple.createWithDefaults();
 | 
			
		||||
        PasspointDuple frService = PasspointDuple.createWithDefaults();
 | 
			
		||||
        frService.setLocale(Locale.CANADA_FRENCH);
 | 
			
		||||
        frService.setDupleName("Exemples de services " + suffix);
 | 
			
		||||
        osuServiceDescription.add(frService);
 | 
			
		||||
@@ -301,7 +308,8 @@ public class OvsdbDaoTestUtilities {
 | 
			
		||||
        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 operator 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(
 | 
			
		||||
@@ -318,8 +326,8 @@ public class OvsdbDaoTestUtilities {
 | 
			
		||||
                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 venue"),
 | 
			
		||||
                new Atom<>("fra:Exemple de lieu")));
 | 
			
		||||
        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",
 | 
			
		||||
@@ -404,7 +412,6 @@ public class OvsdbDaoTestUtilities {
 | 
			
		||||
        return operationResult;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    static OperationResult[] hs20IconRows() {
 | 
			
		||||
        List<Row> ret = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
@@ -510,12 +517,32 @@ public class OvsdbDaoTestUtilities {
 | 
			
		||||
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user