Compare commits

..

1 Commits

Author SHA1 Message Date
Akshay Jagadish
aac02cb1c9 link test 2020-12-03 16:09:20 -05:00
128 changed files with 17089 additions and 19533 deletions

View File

@@ -1,5 +1,5 @@
# wlan-opensync-wifi-controller # wlan-opensync-wifi-controller #TESTING
Opensync Wifi Controller - accepts connections from the access points, pushes configuration, reads metrics from the topics on MQTT broker. Opensync Wifi Controller - accepts connections from the access points, pushes configuration, reads metrics from the topics on MQTT broker.
Components in this repository depend on other wlan-cloud repositories. Components in this repository depend on other wlan-cloud repositories.

View File

@@ -1,139 +1,123 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-ext-cloud</artifactId> <artifactId>opensync-ext-cloud</artifactId>
<name>opensync-ext-cloud</name> <name>opensync-ext-cloud</name>
<description>Configuration interface that provides config from the cloud services.</description> <description>Configuration interface that provides config from the cloud services.</description>
<dependencies> <dependencies>
<dependency> <!-- <dependency> -->
<groupId>com.telecominfraproject.wlan</groupId> <!-- <groupId>com.telecominfraproject.wlan</groupId> -->
<artifactId>opensync-ext-interface</artifactId> <!-- <artifactId>opensync-ext-interface</artifactId> -->
<version>1.2.0-SNAPSHOT</version> <!-- <version>${tip-wlan-cloud.release.version}</version> -->
</dependency> <!-- </dependency> -->
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway</artifactId> <artifactId>opensync-gateway</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>base-client</artifactId> <artifactId>base-client</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>equipment-gateway-models</artifactId> <artifactId>equipment-gateway-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>customer-service-interface</artifactId> <artifactId>customer-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>location-service-interface</artifactId> <artifactId>location-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>equipment-service-interface</artifactId> <artifactId>equipment-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>profile-service-interface</artifactId> <artifactId>profile-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>portal-user-service-interface</artifactId> <artifactId>portal-user-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>service-metric-service-interface</artifactId> <artifactId>service-metric-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency>
<artifactId>service-metric-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency> <dependency>
<artifactId>system-event-service-interface</artifactId> <artifactId>system-event-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency>
<dependency>
<artifactId>system-event-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>alarm-service-interface</artifactId> <artifactId>alarm-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>status-service-interface</artifactId> <artifactId>status-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>client-service-interface</artifactId> <artifactId>client-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency>
<dependency>
<artifactId>client-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>routing-service-interface</artifactId> <artifactId>routing-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>firmware-service-interface</artifactId> <artifactId>firmware-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>manufacturer-service-interface</artifactId> <artifactId>manufacturer-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>cloud-event-dispatcher-interface</artifactId> <artifactId>cloud-event-dispatcher-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -1,4 +1,3 @@
package com.telecominfraproject.wlan.opensync.external.integration.controller; package com.telecominfraproject.wlan.opensync.external.integration.controller;
import java.util.ArrayList; import java.util.ArrayList;
@@ -25,7 +24,6 @@ import org.springframework.security.web.bind.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.telecominfraproject.wlan.core.client.PingClient; import com.telecominfraproject.wlan.core.client.PingClient;
@@ -34,7 +32,6 @@ import com.telecominfraproject.wlan.core.model.service.GatewayType;
import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation; import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation;
import com.telecominfraproject.wlan.core.server.container.ConnectorProperties; import com.telecominfraproject.wlan.core.server.container.ConnectorProperties;
import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException; import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWChangeRedirectorHost; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWChangeRedirectorHost;
@@ -45,13 +42,11 @@ import com.telecominfraproject.wlan.equipmentgateway.models.CEGWConfigChangeNoti
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareFlashRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareFlashRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCellSizeAttributesRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRadioResetRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRadioResetRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRebootRequest; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRebootRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStartDebugEngine; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStartDebugEngine;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStopDebugEngine; import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStopDebugEngine;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGatewayCommand;
import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommand; import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommand;
import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommandResponse; import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommandResponse;
import com.telecominfraproject.wlan.equipmentgateway.models.GatewayDefaults; import com.telecominfraproject.wlan.equipmentgateway.models.GatewayDefaults;
@@ -152,16 +147,19 @@ public class OpensyncCloudGatewayController {
String inventoryId = command.getInventoryId(); String inventoryId = command.getInventoryId();
if (com.telecominfraproject.wlan.core.model.json.BaseJsonModel.hasUnsupportedValue(command)) { if (com.telecominfraproject.wlan.core.model.json.BaseJsonModel.hasUnsupportedValue(command)) {
LOG.error("[{}] Failed to deliver command {}, command contains unsupported value", inventoryId, command); LOG.error("[{}] Failed to deliver command {}, command contains unsupported value", inventoryId,
ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, "Unsupported value in command for " + inventoryId, command, command);
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort())); ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
"Unsupported value in command for " + inventoryId, command, registeredGateway.getHostname(),
registeredGateway.getPort()));
return; return;
} }
OvsdbSession session = ovsdbSessionMapInterface.getSession(inventoryId); OvsdbSession session = ovsdbSessionMapInterface.getSession(inventoryId);
if (session == null) { if (session == null) {
LOG.warn("[{}] Failed to deliver command {}, equipment session not found", inventoryId, command); LOG.warn("[{}] Failed to deliver command {}, equipment session not found", inventoryId, command);
ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "No session found for " + inventoryId, command, ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort())); "No session found for " + inventoryId, command, registeredGateway.getHostname(),
registeredGateway.getPort()));
return; return;
} }
@@ -201,35 +199,30 @@ public class OpensyncCloudGatewayController {
ret.add(processRadioReboot(session, (CEGWRebootRequest) command)); ret.add(processRadioReboot(session, (CEGWRebootRequest) command));
break; break;
case ClientBlocklistChangeNotification: case ClientBlocklistChangeNotification:
ret.add(sendClientBlocklistChangeNotification(session, (CEGWClientBlocklistChangeNotification) command)); ret.add(sendClientBlocklistChangeNotification(session,
(CEGWClientBlocklistChangeNotification) command));
break; break;
case NewChannelRequest: case NewChannelRequest:
ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command)); ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command));
break; break;
case CellSizeAttributesRequest:
ret.add(sendCellSizeRequest(session, (CEGWCellSizeAttributesRequest) command));
break;
case MostRecentStatsTimestamp:
ret.add(sendGetMostRecentStatsTimestampRequest(command, inventoryId));
break;
default: default:
LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command); LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command);
ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, ret.add(new EquipmentCommandResponse(
"Invalid command type (" + command.getCommandType() + ") for equipment (" + inventoryId + ")", command, CEGWCommandResultCode.UnsupportedCommand, "Invalid command type ("
registeredGateway == null ? null : registeredGateway.getHostname(), + command.getCommandType() + ") for equipment (" + inventoryId + ")",
registeredGateway == null ? -1 : registeredGateway.getPort())); command, registeredGateway.getHostname(), registeredGateway.getPort()));
} }
} }
}); });
return ret; return ret;
} }
private EquipmentCommandResponse processFirmwareDownload(OvsdbSession session, CEGWFirmwareDownloadRequest command) { private EquipmentCommandResponse processFirmwareDownload(OvsdbSession session,
CEGWFirmwareDownloadRequest command) {
return sendMessage(session, command.getInventoryId(), command); return sendMessage(session, command.getInventoryId(), command);
} }
@@ -249,33 +242,6 @@ public class OpensyncCloudGatewayController {
public GatewayDefaults retrieveGatewayDefaults() { public GatewayDefaults retrieveGatewayDefaults() {
return new GatewayDefaults(); return new GatewayDefaults();
} }
private EquipmentCommandResponse sendGetMostRecentStatsTimestampRequest(CEGWBaseCommand command, String inventoryId) {
Long ts = lastReceivedStatsTimestamp(inventoryId);
if (ts == null) {
return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE,
null, command,
registeredGateway == null ? null : registeredGateway.getHostname(),
registeredGateway == null ? -1 : registeredGateway.getPort());
} else {
return new EquipmentCommandResponse(CEGWCommandResultCode.Success,
ts.toString(), command,
registeredGateway == null ? null : registeredGateway.getHostname(),
registeredGateway == null ? -1 : registeredGateway.getPort());
}
}
@RequestMapping(value = "/lastReceivedStatsTimestamp", method = RequestMethod.GET)
public Long lastReceivedStatsTimestamp(@RequestParam String apId) {
Long ret = null;
if (ovsdbSessionMapInterface.getSession(apId) != null) {
ret = ovsdbSessionMapInterface.getSession(apId).getMostRecentStatsTimestamp();
LOG.debug("lastReceivedStatsTimestamp for apId {} {}",apId,ret);
} else {
LOG.warn("lastReceivedStatsTimestamp found no session for {}, cannot get timestamp",apId);
}
return ret;
}
/** /**
* Verify a route to customer equipment * Verify a route to customer equipment
@@ -288,18 +254,19 @@ public class OpensyncCloudGatewayController {
if (null != command.getRoutingId()) { if (null != command.getRoutingId()) {
if (!command.getRoutingId().equals(session.getRoutingId())) { if (!command.getRoutingId().equals(session.getRoutingId())) {
LOG.info("[E:{} R:{}] Stale routing entry ({}) detected", command.getInventoryId(), session.getRoutingId(), LOG.info("[C:{} E:{} R:{}] Stale routing entry ({}) detected", session.getCustomerId(),
command.getRoutingId()); command.getInventoryId(), session.getRoutingId(), command.getRoutingId());
return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "Inactive Route Identifer", command, return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "Inactive Route Identifer",
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); command, registeredGateway.getHostname(), registeredGateway.getPort());
} }
} }
return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Route active", command, return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Route active", command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); registeredGateway.getHostname(), registeredGateway.getPort());
} }
private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session, CEGWConfigChangeNotification command) { private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session,
CEGWConfigChangeNotification command) {
return sendMessage(session, command.getInventoryId(), command); return sendMessage(session, command.getInventoryId(), command);
} }
@@ -309,17 +276,20 @@ public class OpensyncCloudGatewayController {
session.getOvsdbClient().shutdown(); session.getOvsdbClient().shutdown();
} catch (Exception e) { } catch (Exception e) {
LOG.error("[{}] Failed to close session on CE: {}", command.getInventoryId(), e.getLocalizedMessage()); LOG.error("[{}] Failed to close session on CE: {}", command.getInventoryId(), e.getLocalizedMessage());
return new EquipmentCommandResponse(CEGWCommandResultCode.FailedToSend, return new EquipmentCommandResponse(
"Failed to send command " + command.getCommandType() + " to " + command.getInventoryId() + ": " + e.getMessage(), command, CEGWCommandResultCode.FailedToSend, "Failed to send command " + command.getCommandType() + " to "
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); + command.getInventoryId() + ": " + e.getMessage(),
command, registeredGateway.getHostname(), registeredGateway.getPort());
} }
LOG.debug("[{}] Closed session to CE", command.getInventoryId()); LOG.debug("[{}] Closed session to CE", command.getInventoryId());
return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Closed session to " + command.getInventoryId(), command, return new EquipmentCommandResponse(CEGWCommandResultCode.Success,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); "Closed session to " + command.getInventoryId(), command, registeredGateway.getHostname(),
registeredGateway.getPort());
} }
private EquipmentCommandResponse sendClientBlocklistChangeNotification(OvsdbSession session, CEGWClientBlocklistChangeNotification command) { private EquipmentCommandResponse sendClientBlocklistChangeNotification(OvsdbSession session,
CEGWClientBlocklistChangeNotification command) {
return sendMessage(session, command.getInventoryId(), command); return sendMessage(session, command.getInventoryId(), command);
} }
@@ -327,10 +297,6 @@ public class OpensyncCloudGatewayController {
return sendMessage(session, command.getInventoryId(), command); return sendMessage(session, command.getInventoryId(), command);
} }
private EquipmentCommandResponse sendCellSizeRequest(OvsdbSession session, CEGWCellSizeAttributesRequest command) {
return sendMessage(session, command.getInventoryId(), command);
}
/** /**
* Deliver a message in payload to the CE * Deliver a message in payload to the CE
* *
@@ -342,17 +308,15 @@ public class OpensyncCloudGatewayController {
private EquipmentCommandResponse sendMessage(OvsdbSession session, String inventoryId, EquipmentCommand command) { private EquipmentCommandResponse sendMessage(OvsdbSession session, String inventoryId, EquipmentCommand command) {
LOG.debug("Received command {} for {}", command.getCommandType(), inventoryId); LOG.debug("Received command {} for {}", command.getCommandType(), inventoryId);
EquipmentCommandResponse response = EquipmentCommandResponse response = new EquipmentCommandResponse(CEGWCommandResultCode.Success,
new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Received Command " + command.getCommandType() + " for " + inventoryId, command, "Received Command " + command.getCommandType() + " for " + inventoryId, command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); registeredGateway.getHostname(), registeredGateway.getPort());
if (command instanceof CEGWBlinkRequest) { if (command instanceof CEGWConfigChangeNotification) {
String resultDetails = tipwlanOvsdbClient.processBlinkRequest(inventoryId, ((CEGWBlinkRequest)command).getBlinkAllLEDs());
response.setResultDetail(resultDetails);
} else if (command instanceof CEGWConfigChangeNotification) {
tipwlanOvsdbClient.processConfigChanged(inventoryId); tipwlanOvsdbClient.processConfigChanged(inventoryId);
} else if (command instanceof CEGWClientBlocklistChangeNotification) { } else if (command instanceof CEGWClientBlocklistChangeNotification) {
tipwlanOvsdbClient.processClientBlocklistChange(inventoryId, ((CEGWClientBlocklistChangeNotification) command).getBlockList()); tipwlanOvsdbClient.processClientBlocklistChange(inventoryId,
((CEGWClientBlocklistChangeNotification) command).getBlockList());
} else if (command instanceof CEGWChangeRedirectorHost) { } else if (command instanceof CEGWChangeRedirectorHost) {
String newRedirectorAddress = ((CEGWChangeRedirectorHost) command).getRedirectorHost(); String newRedirectorAddress = ((CEGWChangeRedirectorHost) command).getRedirectorHost();
tipwlanOvsdbClient.changeRedirectorHost(inventoryId, newRedirectorAddress); tipwlanOvsdbClient.changeRedirectorHost(inventoryId, newRedirectorAddress);
@@ -365,15 +329,7 @@ public class OpensyncCloudGatewayController {
} else if (command instanceof CEGWNewChannelRequest) { } else if (command instanceof CEGWNewChannelRequest) {
CEGWNewChannelRequest request = (CEGWNewChannelRequest) command; CEGWNewChannelRequest request = (CEGWNewChannelRequest) command;
Map<RadioType, Integer> newBackupChannels = request.getNewBackupChannels(); Map<RadioType, Integer> newBackupChannels = request.getNewBackupChannels();
Map<RadioType, Integer> newPrimaryChannels = request.getNewPrimaryChannels(); String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels);
String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels, newPrimaryChannels);
response.setResultDetail(resultDetails);
} else if (command instanceof CEGWCellSizeAttributesRequest) {
CEGWCellSizeAttributesRequest request = (CEGWCellSizeAttributesRequest) command;
Map<RadioType, CellSizeAttributes> cellSizeAttributeMap = request.getCellSizeAttributesMap();
String resultDetails = tipwlanOvsdbClient.processCellSizeAttributesRequest(inventoryId, cellSizeAttributeMap);
response.setResultDetail(resultDetails); response.setResultDetail(resultDetails);
} else if (command instanceof CEGWFirmwareDownloadRequest) { } else if (command instanceof CEGWFirmwareDownloadRequest) {
@@ -383,8 +339,10 @@ public class OpensyncCloudGatewayController {
String filepath = dlRequest.getFilePath(); String filepath = dlRequest.getFilePath();
String firmwareVersion = dlRequest.getFirmwareVersion(); String firmwareVersion = dlRequest.getFirmwareVersion();
String username = dlRequest.getUsername(); String username = dlRequest.getUsername();
String validationCode = dlRequest.getValidationCode();
String resultDetails = tipwlanOvsdbClient.processFirmwareDownload(inventoryId, filepath, firmwareVersion, username); String resultDetails = tipwlanOvsdbClient.processFirmwareDownload(inventoryId, filepath, firmwareVersion,
username, validationCode);
response.setResultDetail(resultDetails); response.setResultDetail(resultDetails);
@@ -396,15 +354,15 @@ public class OpensyncCloudGatewayController {
flashRequest.getInventoryId(); flashRequest.getInventoryId();
flashRequest.getUsername(); flashRequest.getUsername();
String resultDetails = String resultDetails = tipwlanOvsdbClient.processFirmwareFlash(flashRequest.getInventoryId(),
tipwlanOvsdbClient.processFirmwareFlash(flashRequest.getInventoryId(), flashRequest.getFirmwareVersion(), flashRequest.getUsername()); flashRequest.getFirmwareVersion(), flashRequest.getUsername());
response.setResultDetail(resultDetails); response.setResultDetail(resultDetails);
} else if (command instanceof CEGWRadioResetRequest) { } else if (command instanceof CEGWRadioResetRequest) {
response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
"Received Command " + command.getCommandType() + " for " + inventoryId, command, "Received Command " + command.getCommandType() + " for " + inventoryId, command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); registeredGateway.getHostname(), registeredGateway.getPort());
} else if (command instanceof CEGWRebootRequest) { } else if (command instanceof CEGWRebootRequest) {
CEGWRebootRequest rebootRequest = (CEGWRebootRequest) command; CEGWRebootRequest rebootRequest = (CEGWRebootRequest) command;
@@ -428,9 +386,10 @@ public class OpensyncCloudGatewayController {
default: default:
response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
"Received Command " + command.getCommandType() + " for " + inventoryId, command, "Received Command " + command.getCommandType() + " for " + inventoryId, command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()); registeredGateway.getHostname(), registeredGateway.getPort());
} }
} }
return response; return response;
@@ -448,14 +407,15 @@ public class OpensyncCloudGatewayController {
return sendMessage(session, command.getInventoryId(), command); return sendMessage(session, command.getInventoryId(), command);
} }
private EquipmentCommandResponse processBlinkRequest(OvsdbSession session, CEGWBlinkRequest command) { private EquipmentCommandResponse processBlinkRequest(OvsdbSession session, CEGWBlinkRequest command) {
return sendMessage(session, command.getInventoryId(), command); return sendMessage(session, command.getInventoryId(), command);
} }
@RequestMapping(value = "/commandWithUser", method = RequestMethod.POST) @RequestMapping(value = "/commandWithUser", method = RequestMethod.POST)
public EquipmentCommandResponse sendCommandWithAuthUser(@RequestBody EquipmentCommand command, @AuthenticationPrincipal Object requestUser, public EquipmentCommandResponse sendCommandWithAuthUser(@RequestBody EquipmentCommand command,
HttpServletRequest httpServletRequest) { @AuthenticationPrincipal Object requestUser, HttpServletRequest httpServletRequest) {
// use these properties to get address and port where request has // use these properties to get address and port where request has
// arrived // arrived
@@ -488,7 +448,8 @@ public class OpensyncCloudGatewayController {
} }
if (eqRoutingSvc == null) { if (eqRoutingSvc == null) {
throw new ConfigurationException("Unable to register gateway with routing service: routing service interface not initialized"); throw new ConfigurationException(
"Unable to register gateway with routing service: routing service interface not initialized");
} }
cleanupStaleGwRecord(); cleanupStaleGwRecord();
@@ -504,11 +465,13 @@ public class OpensyncCloudGatewayController {
EquipmentGatewayRecord result = eqRoutingSvc.registerGateway(gwRecord); EquipmentGatewayRecord result = eqRoutingSvc.registerGateway(gwRecord);
registeredGwId = result.getId(); registeredGwId = result.getId();
registeredGateway = result; registeredGateway = result;
LOG.info("Successfully registered (name={}, id={}) with Routing Service", result.getHostname(), registeredGwId); LOG.info("Successfully registered (name={}, id={}) with Routing Service", result.getHostname(),
registeredGwId);
registeredWithRoutingService = true; registeredWithRoutingService = true;
} catch (RuntimeException e) { } catch (RuntimeException e) {
// failed // failed
LOG.error("Failed to register Customer Equipment Gateway (name={}) with Routing Service : {}", getGatewayName(), e.getLocalizedMessage()); LOG.error("Failed to register Customer Equipment Gateway (name={}) with Routing Service : {}",
getGatewayName(), e.getLocalizedMessage());
} }
} }
} }
@@ -533,7 +496,8 @@ public class OpensyncCloudGatewayController {
eqRoutingSvc.deleteGateway(eqpRec.getId()); eqRoutingSvc.deleteGateway(eqpRec.getId());
} catch (RuntimeException e) { } catch (RuntimeException e) {
// failed // failed
LOG.error("Failed to delete Equipment Gateway (name={}) from Routing Service: {}", eqpRec.getHostname(), e.getLocalizedMessage()); LOG.error("Failed to delete Equipment Gateway (name={}) from Routing Service: {}",
eqpRec.getHostname(), e.getLocalizedMessage());
} }
} else { } else {
LOG.debug("Gateway {} is reachable.", eqpRec.getHostname()); LOG.debug("Gateway {} is reachable.", eqpRec.getHostname());
@@ -544,8 +508,9 @@ public class OpensyncCloudGatewayController {
} }
} catch (Exception ex) { // Catching Exception to prevent crashing the } catch (Exception ex) { // Catching Exception to prevent crashing the
// register thread // register thread
LOG.debug("Generic Exception encountered when trying to cleanup " + "the stale not-reachable GateWays. Continuing to register the new Gateway." LOG.debug("Generic Exception encountered when trying to cleanup "
+ " Error: {} ", ex.getMessage()); + "the stale not-reachable GateWays. Continuing to register the new Gateway." + " Error: {} ",
ex.getMessage());
} }
} }
@@ -569,13 +534,14 @@ public class OpensyncCloudGatewayController {
if (registeredWithRoutingService) { if (registeredWithRoutingService) {
try { try {
eqRoutingSvc.deleteGateway(registeredGwId); eqRoutingSvc.deleteGateway(registeredGwId);
LOG.info("Deregistered Customer Equipment Gateway (name={},id={}) with Routing Service", getGatewayName(), registeredGwId); LOG.info("Deregistered Customer Equipment Gateway (name={},id={}) with Routing Service",
getGatewayName(), registeredGwId);
registeredGwId = -1; registeredGwId = -1;
registeredGateway = null; registeredGateway = null;
} catch (Exception e) { } catch (Exception e) {
// failed // failed
LOG.error("Failed to deregister Customer Equipment Gateway (name={},id={}) with Routing Service: {}", getGatewayName(), registeredGwId, LOG.error("Failed to deregister Customer Equipment Gateway (name={},id={}) with Routing Service: {}",
e.getLocalizedMessage()); getGatewayName(), registeredGwId, e.getLocalizedMessage());
} }
registeredWithRoutingService = false; registeredWithRoutingService = false;
} }
@@ -593,10 +559,12 @@ public class OpensyncCloudGatewayController {
* @param equipmentId * @param equipmentId
* @return associationId * @return associationId
*/ */
public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId, Long equipmentId) { public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId,
Long equipmentId) {
registerWithRoutingService(); registerWithRoutingService();
if (!registeredWithRoutingService) { if (!registeredWithRoutingService) {
LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName, equipmentId); LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName,
equipmentId);
return null; return null;
} }
// Clean up stale records // Clean up stale records
@@ -608,11 +576,13 @@ public class OpensyncCloudGatewayController {
try { try {
routingRecord = eqRoutingSvc.create(routingRecord); routingRecord = eqRoutingSvc.create(routingRecord);
LOG.debug("Registered customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingRecord.getId()); LOG.debug("Registered customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId,
routingRecord.getId());
return routingRecord; return routingRecord;
} catch (Exception e) { } catch (Exception e) {
LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId, e.getLocalizedMessage()); LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId,
e.getLocalizedMessage());
} }
return null; return null;
} }
@@ -625,7 +595,7 @@ public class OpensyncCloudGatewayController {
* Gateway does not exist, delete the equipmentRouting entry. * Gateway does not exist, delete the equipmentRouting entry.
* *
* @param equipmentId: * @param equipmentId:
* Equipment's ID * Equipment's ID
*/ */
protected void cleanupStaleEqptRoutingRecord(Long equipmentId) { protected void cleanupStaleEqptRoutingRecord(Long equipmentId) {
LOG.debug("In Clean Up stale Equipment Routing record for Equipment ID {}", equipmentId); LOG.debug("In Clean Up stale Equipment Routing record for Equipment ID {}", equipmentId);
@@ -638,17 +608,20 @@ public class OpensyncCloudGatewayController {
if (gwRec != null) { if (gwRec != null) {
if (!isGwReachable(gwRec.getIpAddr(), gwRec.getPort())) { if (!isGwReachable(gwRec.getIpAddr(), gwRec.getPort())) {
// GW isn't reachable --> invoke unregister // GW isn't reachable --> invoke unregister
LOG.debug("Gateway {} is not-reachable... Deleting the equipment routing entry", gwRec.getHostname()); LOG.debug("Gateway {} is not-reachable... Deleting the equipment routing entry",
gwRec.getHostname());
deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId); deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
} else { } else {
LOG.debug("Gateway {} is reachable.", gwRec.getHostname()); LOG.debug("Gateway {} is reachable.", gwRec.getHostname());
} }
} else { } else {
LOG.debug("Gateway with ID {} not found. Deleting the equipment routing entry ", eqRouting.getGatewayId()); LOG.debug("Gateway with ID {} not found. Deleting the equipment routing entry ",
eqRouting.getGatewayId());
deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId); deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
} }
} catch (DsEntityNotFoundException entityNotFoundException) { } catch (DsEntityNotFoundException entityNotFoundException) {
LOG.debug("Gateway ID: {} not found... Deleting the equipment routing entry", eqRouting.getGatewayId()); LOG.debug("Gateway ID: {} not found... Deleting the equipment routing entry",
eqRouting.getGatewayId());
deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId); deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
} }
} }
@@ -657,10 +630,9 @@ public class OpensyncCloudGatewayController {
} }
} catch (Exception genericException) { // Catching Exception to prevent } catch (Exception genericException) { // Catching Exception to prevent
// crashing the register thread // crashing the register thread
LOG.debug( LOG.debug("Generic Exception encountered when trying to cleanup "
"Generic Exception encountered when trying to cleanup " + "the stale routing records for equipment ID: {}. Continuing to register the new RoutingRecord."
+ "the stale routing records for equipment ID: {}. Continuing to register the new RoutingRecord." + " Error: {} ", + " Error: {} ", equipmentId, genericException.getMessage());
equipmentId, genericException.getMessage());
} }
} }
@@ -669,7 +641,8 @@ public class OpensyncCloudGatewayController {
eqRoutingSvc.delete(routingId); eqRoutingSvc.delete(routingId);
} catch (RuntimeException e) { } catch (RuntimeException e) {
// failed // failed
LOG.error("Failed to delete Equipment routing record (ID={}) from Routing Service: {}", eqptId, e.getLocalizedMessage()); LOG.error("Failed to delete Equipment routing record (ID={}) from Routing Service: {}", eqptId,
e.getLocalizedMessage());
return false; return false;
} }
return true; return true;
@@ -677,16 +650,18 @@ public class OpensyncCloudGatewayController {
public void deregisterCustomerEquipment(Long routingId, String equipmentName, Long equipmentId) { public void deregisterCustomerEquipment(Long routingId, String equipmentName, Long equipmentId) {
if (!registeredWithRoutingService) { if (!registeredWithRoutingService) {
LOG.error("Unable to deregister customer equipement (name={},id={}): gateway not registered", equipmentName, equipmentId); LOG.error("Unable to deregister customer equipement (name={},id={}): gateway not registered", equipmentName,
equipmentId);
return; return;
} }
try { try {
LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingId); LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId,
routingId);
eqRoutingSvc.delete(routingId); eqRoutingSvc.delete(routingId);
} catch (Exception e) { } catch (Exception e) {
LOG.error("Failed to deregister customer equipement (name={},id={}) with route id={}: {}", equipmentName, equipmentId, routingId, LOG.error("Failed to deregister customer equipement (name={},id={}) with route id={}: {}", equipmentName,
e.getLocalizedMessage()); equipmentId, routingId, e.getLocalizedMessage());
} }
} }

View File

@@ -1,4 +1,3 @@
package com.telecominfraproject.wlan.opensync.external.integration; package com.telecominfraproject.wlan.opensync.external.integration;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
@@ -6,7 +5,6 @@ import static org.junit.Assert.assertNull;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@@ -50,8 +48,6 @@ import com.telecominfraproject.wlan.core.model.entity.CountryCode;
import com.telecominfraproject.wlan.core.model.equipment.EquipmentType; import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress; import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
import com.telecominfraproject.wlan.customer.models.Customer; import com.telecominfraproject.wlan.customer.models.Customer;
import com.telecominfraproject.wlan.customer.models.CustomerDetails; import com.telecominfraproject.wlan.customer.models.CustomerDetails;
import com.telecominfraproject.wlan.customer.models.EquipmentAutoProvisioningSettings; import com.telecominfraproject.wlan.customer.models.EquipmentAutoProvisioningSettings;
@@ -70,7 +66,6 @@ import com.telecominfraproject.wlan.opensync.external.integration.controller.Ope
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo; import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
import com.telecominfraproject.wlan.opensync.external.integration.utils.MqttStatsPublisher;
import com.telecominfraproject.wlan.profile.ProfileServiceInterface; import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
import com.telecominfraproject.wlan.profile.models.Profile; import com.telecominfraproject.wlan.profile.models.Profile;
import com.telecominfraproject.wlan.profile.models.ProfileType; import com.telecominfraproject.wlan.profile.models.ProfileType;
@@ -79,7 +74,6 @@ import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration; import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
import com.telecominfraproject.wlan.routing.RoutingServiceInterface; import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
import com.telecominfraproject.wlan.status.StatusServiceInterface; import com.telecominfraproject.wlan.status.StatusServiceInterface;
import com.telecominfraproject.wlan.status.equipment.models.EquipmentChannelStatusData;
import com.telecominfraproject.wlan.status.equipment.models.EquipmentProtocolStatusData; import com.telecominfraproject.wlan.status.equipment.models.EquipmentProtocolStatusData;
import com.telecominfraproject.wlan.status.equipment.models.EquipmentUpgradeStatusData; import com.telecominfraproject.wlan.status.equipment.models.EquipmentUpgradeStatusData;
import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSID; import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSID;
@@ -98,9 +92,10 @@ import sts.OpensyncStats.RadioBandType;
import sts.OpensyncStats.Report; import sts.OpensyncStats.Report;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@ActiveProfiles(profiles = {"integration_test",}) @ActiveProfiles(profiles = { "integration_test", })
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OpensyncExternalIntegrationCloudTest.class) @SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OpensyncExternalIntegrationCloudTest.class)
@Import(value = {AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class, OpensyncExternalIntegrationCloudTest.Config.class, @Import(value = { AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class,
OpensyncExternalIntegrationCloudTest.Config.class,
}) })
public class OpensyncExternalIntegrationCloudTest { public class OpensyncExternalIntegrationCloudTest {
@@ -130,11 +125,12 @@ public class OpensyncExternalIntegrationCloudTest {
@MockBean(answer = Answers.RETURNS_MOCKS) @MockBean(answer = Answers.RETURNS_MOCKS)
OpensyncCloudGatewayController gatewayController; OpensyncCloudGatewayController gatewayController;
@MockBean @MockBean
MqttStatsPublisher opensyncExternalIntegrationMqttProcessor; OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttProcessor;
@Autowired @Autowired
OpensyncExternalIntegrationCloud opensyncExternalIntegrationCloud; OpensyncExternalIntegrationCloud opensyncExternalIntegrationCloud;
MockitoSession mockito; MockitoSession mockito;
@Configuration @Configuration
@@ -171,12 +167,10 @@ public class OpensyncExternalIntegrationCloudTest {
Location location = new Location(); Location location = new Location();
location.setId(8L); location.setId(8L);
location.setCustomerId(2); location.setCustomerId(2);
LocationDetails details = LocationDetails.createWithDefaults(); location.setDetails(LocationDetails.createWithDefaults());
details.setCountryCode(CountryCode.CA);
location.setDetails(details);
location.setName("Location-UT"); location.setName("Location-UT");
location.setLocationType(LocationType.BUILDING); location.setLocationType(LocationType.BUILDING);
Mockito.when(locationServiceInterface.get(8L)).thenReturn(location);
Customer customer = new Customer(); Customer customer = new Customer();
customer.setId(2); customer.setId(2);
CustomerDetails customerDetails = new CustomerDetails(); CustomerDetails customerDetails = new CustomerDetails();
@@ -195,21 +189,25 @@ public class OpensyncExternalIntegrationCloudTest {
ssidProfile.setDetails(SsidConfiguration.createWithDefaults()); ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId())); apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId()));
Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]); Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class)))
.thenAnswer(i -> i.getArguments()[0]);
// .thenReturn(ssidProfile); // .thenReturn(ssidProfile);
Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]); Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class)))
.thenAnswer(i -> i.getArguments()[0]);
Status fwStatus = new Status(); Status fwStatus = new Status();
fwStatus.setDetails(new EquipmentUpgradeStatusData()); fwStatus.setDetails(new EquipmentUpgradeStatusData());
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE))) Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
.thenReturn(fwStatus); ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus);
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings()); Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting())
.thenReturn(new CustomerFirmwareTrackSettings());
CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord(); CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings()); fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
fwTrackRecord.setTrackRecordId(3); fwTrackRecord.setTrackRecordId(3);
fwTrackRecord.setCustomerId(2); fwTrackRecord.setCustomerId(2);
Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord); Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt()))
.thenReturn(fwTrackRecord);
Equipment equipment = new Equipment(); Equipment equipment = new Equipment();
equipment.setCustomerId(2); equipment.setCustomerId(2);
@@ -221,18 +219,24 @@ public class OpensyncExternalIntegrationCloudTest {
equipment.setDetails(ApElementConfiguration.createWithDefaults()); equipment.setDetails(ApElementConfiguration.createWithDefaults());
Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment); Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment); Mockito.when(
equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
.thenReturn(equipment);
Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class)))
Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); .thenAnswer(i -> i.getArguments()[0]);
Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class)))
.thenAnswer(i -> i.getArguments()[0]);
OvsdbSession session = Mockito.mock(OvsdbSession.class); OvsdbSession session = Mockito.mock(OvsdbSession.class);
Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session); Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
opensyncExternalIntegrationCloud.apConnected("Test_Client_21P10C68818122", createConnectNodeInfo()); opensyncExternalIntegrationCloud.apConnected("Test_Client_21P10C68818122", createConnectNodeInfo());
Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting(); Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting();
Mockito.verify(locationServiceInterface).get(8L); Mockito.verifyNoInteractions(locationServiceInterface);
} }
@@ -241,11 +245,10 @@ public class OpensyncExternalIntegrationCloudTest {
Location location = new Location(); Location location = new Location();
location.setId(8L); location.setId(8L);
location.setCustomerId(2); location.setCustomerId(2);
LocationDetails details = LocationDetails.createWithDefaults(); location.setDetails(LocationDetails.createWithDefaults());
details.setCountryCode(CountryCode.CA);
location.setDetails(details);
location.setName("Location-UT"); location.setName("Location-UT");
location.setLocationType(LocationType.BUILDING); location.setLocationType(LocationType.BUILDING);
Mockito.when(locationServiceInterface.get(8L)).thenReturn(location); Mockito.when(locationServiceInterface.get(8L)).thenReturn(location);
Customer customer = new Customer(); Customer customer = new Customer();
@@ -258,7 +261,7 @@ public class OpensyncExternalIntegrationCloudTest {
customer.setDetails(customerDetails); customer.setDetails(customerDetails);
Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer); Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
Profile rfProfile = new Profile(); Profile rfProfile = new Profile();
rfProfile.setId(1); rfProfile.setId(1);
rfProfile.setName("testRfProfile"); rfProfile.setName("testRfProfile");
@@ -273,20 +276,21 @@ public class OpensyncExternalIntegrationCloudTest {
Profile ssidProfile = new Profile(); Profile ssidProfile = new Profile();
ssidProfile.setId(2); ssidProfile.setId(2);
ssidProfile.setDetails(SsidConfiguration.createWithDefaults()); ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
Set<Long> childProfileIds = new HashSet<>(); Set<Long> childProfileIds = new HashSet<>();
childProfileIds.add(rfProfile.getId()); childProfileIds.add(rfProfile.getId());
childProfileIds.add(ssidProfile.getId()); childProfileIds.add(ssidProfile.getId());
apProfile.setChildProfileIds(childProfileIds); apProfile.setChildProfileIds(childProfileIds);
Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile).thenReturn(ssidProfile).thenReturn(rfProfile); Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile)
.thenReturn(ssidProfile).thenReturn(rfProfile);
Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile); Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile);
List<Profile> profileList = new ArrayList<>(); List<Profile> profileList = new ArrayList<>();
profileList.add(apProfile); profileList.add(apProfile);
profileList.add(rfProfile); profileList.add(rfProfile);
profileList.add(ssidProfile); profileList.add(ssidProfile);
Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList); Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList);
Equipment equipment = new Equipment(); Equipment equipment = new Equipment();
@@ -300,21 +304,27 @@ public class OpensyncExternalIntegrationCloudTest {
Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment); Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class)))
Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); .thenAnswer(i -> i.getArguments()[0]);
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(null); Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class)))
.thenAnswer(i -> i.getArguments()[0]);
Mockito.when(
equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
.thenReturn(null);
Status fwStatus = new Status(); Status fwStatus = new Status();
fwStatus.setDetails(new EquipmentUpgradeStatusData()); fwStatus.setDetails(new EquipmentUpgradeStatusData());
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE))) Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
.thenReturn(fwStatus); ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus);
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings()); Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting())
.thenReturn(new CustomerFirmwareTrackSettings());
CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord(); CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings()); fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
fwTrackRecord.setTrackRecordId(3); fwTrackRecord.setTrackRecordId(3);
fwTrackRecord.setCustomerId(2); fwTrackRecord.setCustomerId(2);
Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord); Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt()))
.thenReturn(fwTrackRecord);
OvsdbSession session = Mockito.mock(OvsdbSession.class); OvsdbSession session = Mockito.mock(OvsdbSession.class);
@@ -326,7 +336,7 @@ public class OpensyncExternalIntegrationCloudTest {
Mockito.verify(customerServiceInterface).getOrNull(ArgumentMatchers.anyInt()); Mockito.verify(customerServiceInterface).getOrNull(ArgumentMatchers.anyInt());
Mockito.verify(equipmentServiceInterface).getByInventoryIdOrNull("Test_Client_21P10C68818122"); Mockito.verify(equipmentServiceInterface).getByInventoryIdOrNull("Test_Client_21P10C68818122");
Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting(); Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting();
Mockito.verify(locationServiceInterface, Mockito.times(2)).get(ArgumentMatchers.anyLong()); Mockito.verify(locationServiceInterface).get(ArgumentMatchers.anyLong());
} }
@@ -339,19 +349,18 @@ public class OpensyncExternalIntegrationCloudTest {
ssidProfile.setDetails(SsidConfiguration.createWithDefaults()); ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId())); apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId()));
Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]); Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class)))
.thenAnswer(i -> i.getArguments()[0]);
// .thenReturn(ssidProfile); // .thenReturn(ssidProfile);
Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]); Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class)))
.thenAnswer(i -> i.getArguments()[0]);
Location location = new Location(); Location location = new Location();
location.setId(8L); location.setId(8L);
location.setCustomerId(2); location.setCustomerId(2);
LocationDetails details = LocationDetails.createWithDefaults(); location.setDetails(LocationDetails.createWithDefaults());
details.setCountryCode(CountryCode.CA);
location.setDetails(details);
location.setName("Location-UT"); location.setName("Location-UT");
location.setLocationType(LocationType.BUILDING); location.setLocationType(LocationType.BUILDING);
Mockito.when(locationServiceInterface.get(8L)).thenReturn(location);
Equipment equipment = new Equipment(); Equipment equipment = new Equipment();
equipment.setCustomerId(2); equipment.setCustomerId(2);
@@ -363,20 +372,26 @@ public class OpensyncExternalIntegrationCloudTest {
equipment.setDetails(ApElementConfiguration.createWithDefaults()); equipment.setDetails(ApElementConfiguration.createWithDefaults());
Status fwStatus = new Status(); Status fwStatus = new Status();
fwStatus.setDetails(new EquipmentUpgradeStatusData()); fwStatus.setDetails(new EquipmentUpgradeStatusData());
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE))) Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
.thenReturn(fwStatus); ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus);
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings()); Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting())
.thenReturn(new CustomerFirmwareTrackSettings());
CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord(); CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings()); fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
fwTrackRecord.setTrackRecordId(3); fwTrackRecord.setTrackRecordId(3);
fwTrackRecord.setCustomerId(2); fwTrackRecord.setCustomerId(2);
Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord); Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt()))
.thenReturn(fwTrackRecord);
Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment); Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class)))
Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]); .thenAnswer(i -> i.getArguments()[0]);
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment); Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class)))
.thenAnswer(i -> i.getArguments()[0]);
Mockito.when(
equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
.thenReturn(equipment);
Customer customer = new Customer(); Customer customer = new Customer();
customer.setId(2); customer.setId(2);
@@ -422,7 +437,8 @@ public class OpensyncExternalIntegrationCloudTest {
ssidProfile.setDetails(SsidConfiguration.createWithDefaults()); ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
List<Profile> profileWithChildren = ImmutableList.of(apProfile, ssidProfile); List<Profile> profileWithChildren = ImmutableList.of(apProfile, ssidProfile);
Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileWithChildren); Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong()))
.thenReturn(profileWithChildren);
assertNotNull(opensyncExternalIntegrationCloud.getApConfig("Test_Client_21P10C68818122")); assertNotNull(opensyncExternalIntegrationCloud.getApConfig("Test_Client_21P10C68818122"));
@@ -445,10 +461,21 @@ public class OpensyncExternalIntegrationCloudTest {
} }
@Test
public void testExtractApIdFromTopic() {
String topic = "/ap/Test_Client_21P10C68818122/opensync";
assertEquals("Test_Client_21P10C68818122",
OpensyncExternalIntegrationMqttMessageProcessor.extractApIdFromTopic(topic));
}
@Test @Test
public void testProcessMqttMessageStringReport() { public void testProcessMqttMessageStringReport() {
Report report = Report.newBuilder().setNodeID("21P10C68818122").addAllClients(getOpensyncStatsClientReportsList()) Report report = Report.newBuilder().setNodeID("21P10C68818122")
.addAllClients(getOpensyncStatsClientReportsList())
.addAllEventReport(getOpensyncStatsEventReportsList()).build(); .addAllEventReport(getOpensyncStatsEventReportsList()).build();
String topic = "/ap/Test_Client_21P10C68818122/opensync"; String topic = "/ap/Test_Client_21P10C68818122/opensync";
@@ -461,31 +488,39 @@ public class OpensyncExternalIntegrationCloudTest {
activeBssidsDetails.setActiveBSSIDs(getActiveBssidList()); activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
bssidStatus.setDetails(activeBssidsDetails); bssidStatus.setDetails(activeBssidsDetails);
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))) Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
.thenReturn(bssidStatus); ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))).thenReturn(bssidStatus);
Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus); Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus);
com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client(); com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client();
clientInstance.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D")); clientInstance.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D"));
clientInstance.setDetails(new ClientInfoDetails()); clientInstance.setDetails(new ClientInfoDetails());
com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client(); com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client();
clientInstance2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69")); clientInstance2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69"));
clientInstance2.setDetails(new ClientInfoDetails()); clientInstance2.setDetails(new ClientInfoDetails());
Mockito.when(clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class))).thenReturn(clientInstance) Mockito.when(
.thenReturn(clientInstance2); clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class)))
Mockito.when(clientServiceInterface.update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class))).thenReturn(clientInstance) .thenReturn(clientInstance).thenReturn(clientInstance2);
.thenReturn(clientInstance2); Mockito.when(clientServiceInterface
.update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class)))
.thenReturn(clientInstance).thenReturn(clientInstance2);
ClientSession clientSession = new ClientSession(); ClientSession clientSession = new ClientSession();
clientSession.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D")); clientSession.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D"));
clientSession.setDetails(new ClientSessionDetails()); clientSession.setDetails(new ClientSessionDetails());
ClientSession clientSession2 = new ClientSession(); ClientSession clientSession2 = new ClientSession();
clientSession2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69")); clientSession2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69"));
clientSession2.setDetails(new ClientSessionDetails()); clientSession2.setDetails(new ClientSessionDetails());
Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.any(MacAddress.class))) Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2);
Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class)))
.thenReturn(clientSession).thenReturn(clientSession2); .thenReturn(clientSession).thenReturn(clientSession2);
Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class))).thenReturn(clientSession).thenReturn(clientSession2); opensyncExternalIntegrationCloud.processMqttMessage(topic, report);
Mockito.verify(opensyncExternalIntegrationMqttProcessor, Mockito.times(1)).processMqttMessage(topic, report);
} }
@Ignore @Ignore
@@ -553,19 +588,19 @@ public class OpensyncExternalIntegrationCloudTest {
OvsdbSession session = Mockito.mock(OvsdbSession.class); OvsdbSession session = Mockito.mock(OvsdbSession.class);
Mockito.when(session.getEquipmentId()).thenReturn(1L); Mockito.when(session.getEquipmentId()).thenReturn(1L);
Mockito.when(session.getCustomerId()).thenReturn(2);
Equipment equipment = new Equipment(); Equipment equipment = new Equipment();
equipment.setCustomerId(2); equipment.setCustomerId(1);
equipment.setId(1L);
equipment.setEquipmentType(EquipmentType.AP); equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId(apId); equipment.setInventoryId(apId);
equipment.setProfileId(1); equipment.setProfileId(1);
equipment.setDetails(ApElementConfiguration.createWithDefaults()); equipment.setDetails(ApElementConfiguration.createWithDefaults());
Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment); Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.get(equipment.getId())).thenReturn(equipment); Mockito.when(equipmentServiceInterface.get(equipment.getId())).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.update(equipment)).thenReturn(equipment); Mockito.when(equipmentServiceInterface.update(equipment)).thenReturn(equipment);
Profile rfProfile = new Profile(); Profile rfProfile = new Profile();
rfProfile.setName("testRfProfile"); rfProfile.setName("testRfProfile");
rfProfile.setId(2); rfProfile.setId(2);
@@ -573,28 +608,30 @@ public class OpensyncExternalIntegrationCloudTest {
rfProfile.setProfileType(ProfileType.rf); rfProfile.setProfileType(ProfileType.rf);
Set<Long> childProfileIds = new HashSet<>(); Set<Long> childProfileIds = new HashSet<>();
childProfileIds.add(rfProfile.getId()); childProfileIds.add(rfProfile.getId());
Profile apProfile = new Profile(); Profile apProfile = new Profile();
apProfile.setName("testApProfile"); apProfile.setName("testApProfile");
apProfile.setId(1); apProfile.setId(1);
apProfile.setProfileType(ProfileType.equipment_ap); apProfile.setProfileType(ProfileType.equipment_ap);
apProfile.setChildProfileIds(childProfileIds); apProfile.setChildProfileIds(childProfileIds);
List<Profile> profileList = new ArrayList<>(); List<Profile> profileList = new ArrayList<>();
profileList.add(apProfile); profileList.add(apProfile);
profileList.add(rfProfile); profileList.add(rfProfile);
Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList); Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList);
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session); Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
opensyncExternalIntegrationCloud.wifiVIFStateDbTableUpdate(ImmutableList.of(vifState1, vifState2, vifState3), apId); opensyncExternalIntegrationCloud.wifiVIFStateDbTableUpdate(ImmutableList.of(vifState1, vifState2, vifState3),
apId);
Mockito.verify(session).getCustomerId();
Mockito.verify(session).getEquipmentId(); Mockito.verify(session).getEquipmentId();
Mockito.verify(ovsdbSessionMapInterface).getSession(apId); Mockito.verify(ovsdbSessionMapInterface).getSession(apId);
Mockito.verify(equipmentServiceInterface).getOrNull(1L); Mockito.verify(equipmentServiceInterface).getByInventoryIdOrNull(apId);
Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS);
Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS);
Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS); Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS);
Mockito.verify(statusServiceInterface).update(clientStatus); Mockito.verify(statusServiceInterface).update(clientStatus);
@@ -626,7 +663,8 @@ public class OpensyncExternalIntegrationCloudTest {
radioState3.setChannel(149); radioState3.setChannel(149);
radioState3.setVifStates(ImmutableSet.of(new Uuid(UUID.randomUUID()))); radioState3.setVifStates(ImmutableSet.of(new Uuid(UUID.randomUUID())));
radioState3.setFreqBand(RadioType.is5GHzL); radioState3.setFreqBand(RadioType.is5GHzL);
radioState3.setAllowedChannels(ImmutableSet.of(00, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165)); radioState3.setAllowedChannels(
ImmutableSet.of(00, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165));
radioState3.setTxPower(32); radioState3.setTxPower(32);
radioState3.setEnabled(true); radioState3.setEnabled(true);
radioState3.setCountry("CA"); radioState3.setCountry("CA");
@@ -650,18 +688,6 @@ public class OpensyncExternalIntegrationCloudTest {
Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.PROTOCOL)).thenReturn(protocolStatus); Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.PROTOCOL)).thenReturn(protocolStatus);
Status channelStatus = new Status();
channelStatus.setCustomerId(2);
channelStatus.setEquipmentId(1L);
EquipmentChannelStatusData channelStatusData = new EquipmentChannelStatusData();
Map<RadioType, Integer> channelStatusDataMap = new EnumMap<>(RadioType.class);
channelStatusDataMap.put(RadioType.is2dot4GHz, 6);
channelStatusDataMap.put(RadioType.is5GHzL, 36);
channelStatusDataMap.put(RadioType.is5GHzU, 157);
channelStatusData.setChannelNumberStatusDataMap(channelStatusDataMap);
channelStatus.setDetails(channelStatusData);
Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.RADIO_CHANNEL)).thenReturn(channelStatus);
Status bssidStatus = new Status(); Status bssidStatus = new Status();
bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS); bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
bssidStatus.setCustomerId(2); bssidStatus.setCustomerId(2);
@@ -672,6 +698,8 @@ public class OpensyncExternalIntegrationCloudTest {
Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS)).thenReturn(bssidStatus); Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS)).thenReturn(bssidStatus);
Mockito.when(statusServiceInterface.update(bssidStatus)).thenReturn(bssidStatus);
Status clientStatus = new Status(); Status clientStatus = new Status();
clientStatus.setCustomerId(2); clientStatus.setCustomerId(2);
clientStatus.setEquipmentId(1L); clientStatus.setEquipmentId(1L);
@@ -683,22 +711,24 @@ public class OpensyncExternalIntegrationCloudTest {
clientStatus.setDetails(clientConnectionDetails); clientStatus.setDetails(clientConnectionDetails);
Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS)).thenReturn(clientStatus); Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS)).thenReturn(clientStatus);
Mockito.when(statusServiceInterface.update(Mockito.any(Status.class))).thenReturn(channelStatus).thenReturn(bssidStatus).thenReturn(clientStatus); Mockito.when(statusServiceInterface.update(clientStatus)).thenReturn(clientStatus);
OvsdbSession session = Mockito.mock(OvsdbSession.class); OvsdbSession session = Mockito.mock(OvsdbSession.class);
Mockito.when(session.getEquipmentId()).thenReturn(1L); Mockito.when(session.getEquipmentId()).thenReturn(1L);
Mockito.when(session.getCustomerId()).thenReturn(2);
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session); Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
opensyncExternalIntegrationCloud.wifiRadioStatusDbTableUpdate(ImmutableList.of(radioState1, radioState2, radioState3), apId); opensyncExternalIntegrationCloud
.wifiRadioStatusDbTableUpdate(ImmutableList.of(radioState1, radioState2, radioState3), apId);
Mockito.verify(session).getCustomerId();
Mockito.verify(session).getEquipmentId(); Mockito.verify(session).getEquipmentId();
Mockito.verify(ovsdbSessionMapInterface).getSession(apId); Mockito.verify(ovsdbSessionMapInterface).getSession(apId);
Mockito.verify(equipmentServiceInterface, Mockito.times(1)).getByInventoryIdOrNull(apId); Mockito.verify(equipmentServiceInterface, Mockito.times(2)).getByInventoryIdOrNull(apId);
Mockito.verify(statusServiceInterface, Mockito.times(1)).getOrNull(1, 1L, StatusDataType.RADIO_CHANNEL);
Mockito.verify(statusServiceInterface, Mockito.times(3)).getOrNull(1, 1L, StatusDataType.PROTOCOL); Mockito.verify(statusServiceInterface, Mockito.times(3)).getOrNull(2, 1L, StatusDataType.PROTOCOL);
Mockito.verify(statusServiceInterface, Mockito.never()).update(bssidStatus); Mockito.verify(statusServiceInterface, Mockito.never()).update(bssidStatus);
} }
@@ -720,23 +750,6 @@ public class OpensyncExternalIntegrationCloudTest {
@Test @Test
public void testWifiVIFStateDbTableDelete() { public void testWifiVIFStateDbTableDelete() {
String apId = "Test_Client_21P10C68818122";
Equipment equipment = new Equipment();
equipment.setCustomerId(2);
equipment.setId(1L);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId(apId);
equipment.setProfileId(1);
equipment.setDetails(ApElementConfiguration.createWithDefaults());
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
OvsdbSession session = new OvsdbSession();
session.setApId(apId);
session.setEquipmentId(1L);
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
Status bssidStatus = new Status(); Status bssidStatus = new Status();
bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS); bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
@@ -746,36 +759,16 @@ public class OpensyncExternalIntegrationCloudTest {
activeBssidsDetails.setActiveBSSIDs(getActiveBssidList()); activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
bssidStatus.setDetails(activeBssidsDetails); bssidStatus.setDetails(activeBssidsDetails);
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))) Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
.thenReturn(bssidStatus); ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))).thenReturn(bssidStatus);
PaginationResponse<ClientSession> pr = Mockito.mock(PaginationResponse.class,Mockito.RETURNS_MOCKS);
Mockito.when(clientServiceInterface.getSessionsForCustomer(Mockito.anyInt(), Mockito.anySet(),
Mockito.anySet(), Mockito.isNull(), Mockito.isNull(), Mockito.any())).thenReturn(pr);
opensyncExternalIntegrationCloud.wifiVIFStateDbTableDelete(ImmutableList.of(new OpensyncAPVIFState()), "apId");
opensyncExternalIntegrationCloud.wifiVIFStateDbTableDelete(ImmutableList.of(new OpensyncAPVIFState()), "Test_Client_21P10C68818122");
} }
@Test @Test
public void testWifiAssociatedClientsDbTableDelete() { public void testWifiAssociatedClientsDbTableDelete() {
String apId = "Test_Client_21P10C68818122";
Equipment equipment = new Equipment(); opensyncExternalIntegrationCloud.wifiAssociatedClientsDbTableDelete("7C:AB:60:E6:EA:4D", "apId");
equipment.setCustomerId(2);
equipment.setId(1L);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId(apId);
equipment.setProfileId(1);
equipment.setDetails(ApElementConfiguration.createWithDefaults());
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
OvsdbSession session = new OvsdbSession();
session.setApId(apId);
session.setEquipmentId(1L);
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
opensyncExternalIntegrationCloud.wifiAssociatedClientsDbTableDelete("7C:AB:60:E6:EA:4D", "Test_Client_21P10C68818122");
} }
// Helper methods // Helper methods
@@ -803,9 +796,13 @@ public class OpensyncExternalIntegrationCloudTest {
return bssidList; return bssidList;
} }
private List<EventReport> getOpensyncStatsEventReportsList() { private List<EventReport> getOpensyncStatsEventReportsList() {
sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent.getDefaultInstance().toBuilder();
List<ClientAssocEvent> clientAssocEventList = new ArrayList<>();
sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent
.getDefaultInstance().toBuilder();
clientAssocBuilder.setAssocType(AssocType.ASSOC); clientAssocBuilder.setAssocType(AssocType.ASSOC);
clientAssocBuilder.setBand(RadioBandType.BAND5GU); clientAssocBuilder.setBand(RadioBandType.BAND5GU);
clientAssocBuilder.setRssi(-65); clientAssocBuilder.setRssi(-65);
@@ -815,8 +812,22 @@ public class OpensyncExternalIntegrationCloudTest {
clientAssocBuilder.setInternalSc(1); clientAssocBuilder.setInternalSc(1);
clientAssocBuilder.setSsid("ssid-3"); clientAssocBuilder.setSsid("ssid-3");
clientAssocBuilder.setStatus(1); clientAssocBuilder.setStatus(1);
clientAssocBuilder.setTimestampMs(System.currentTimeMillis());
sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder2 = EventReport.ClientAssocEvent
.getDefaultInstance().toBuilder();
clientAssocBuilder2.setAssocType(AssocType.ASSOC);
clientAssocBuilder2.setBand(RadioBandType.BAND2G);
clientAssocBuilder2.setRssi(-65);
clientAssocBuilder2.setStaMac("7C:AB:60:E6:EA:4D");
clientAssocBuilder2.setStaMacBytes(ByteString.copyFrom("7C:AB:60:E6:EA:4D".getBytes()));
clientAssocBuilder2.setSessionId(1000L);
clientAssocBuilder2.setInternalSc(1);
clientAssocBuilder2.setSsid("ssid-1");
clientAssocBuilder2.setStatus(1);
clientAssocEventList.add(clientAssocBuilder.build());
clientAssocEventList.add(clientAssocBuilder2.build());
List<EventReport> eventReportList = new ArrayList<>(); List<EventReport> eventReportList = new ArrayList<>();
EventReport.Builder eventReportBuilder = EventReport.getDefaultInstance().toBuilder(); EventReport.Builder eventReportBuilder = EventReport.getDefaultInstance().toBuilder();
@@ -825,7 +836,7 @@ public class OpensyncExternalIntegrationCloudTest {
clientSessionBuilder.setSessionId(1000L); clientSessionBuilder.setSessionId(1000L);
clientSessionBuilder.setClientAssocEvent(clientAssocBuilder.build()); clientSessionBuilder.addAllClientAssocEvent(clientAssocEventList);
List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>(); List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
clientSessionList.add(clientSessionBuilder.build()); clientSessionList.add(clientSessionBuilder.build());
@@ -833,26 +844,29 @@ public class OpensyncExternalIntegrationCloudTest {
eventReportList.add(eventReportBuilder.build()); eventReportList.add(eventReportBuilder.build());
return eventReportList; return eventReportList;
} }
private List<ClientReport> getOpensyncStatsClientReportsList() { private List<ClientReport> getOpensyncStatsClientReportsList() {
int rssi = Long.valueOf(4294967239L).intValue(); int rssi = Long.valueOf(4294967239L).intValue();
Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786).setRxRate(24000.0).setTxBytes(1208133026) Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786)
.setTxRate(433300.0).setRssi(758722570).setRxFrames(10000).setTxFrames(10000).setTxRate(24000.0).build(); .setRxRate(24000.0).setTxBytes(1208133026).setTxRate(433300.0).setRssi(758722570).setRxFrames(10000)
Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1").setConnected(true).setDurationMs(59977) .setTxFrames(10000).setTxRate(24000.0).build();
.setStats(clientStats).build(); Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1")
Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3").setConnected(true).setDurationMs(298127) .setConnected(true).setDurationMs(59977).setStats(clientStats).build();
.setStats(clientStats).build(); Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3")
.setConnected(true).setDurationMs(298127).setStats(clientStats).build();
ClientReport clientReport2g = ClientReport clientReport2g = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G)
ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G).setChannel(6).addAllClientList(ImmutableList.of(client2g)).build(); .setChannel(6).addAllClientList(ImmutableList.of(client2g)).build();
ClientReport clientReport5gl = ClientReport clientReport5gl = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL)
ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL).setChannel(36).addAllClientList(new ArrayList<Client>()).build(); .setChannel(36).addAllClientList(new ArrayList<Client>()).build();
ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU).setChannel(157) ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU)
.addAllClientList(ImmutableList.of(client5gu)).build(); .setChannel(157).addAllClientList(ImmutableList.of(client5gu)).build();
List<ClientReport> clients = new ArrayList<>(); List<ClientReport> clients = new ArrayList<>();
clients.add(clientReport2g); clients.add(clientReport2g);
@@ -881,7 +895,8 @@ public class OpensyncExternalIntegrationCloudTest {
connectNodeInfo.skuNumber = "connectus.ai_21P10C68818122"; connectNodeInfo.skuNumber = "connectus.ai_21P10C68818122";
connectNodeInfo.redirectorAddr = "ssl:opensync.zone1.art2wave.com:6643"; connectNodeInfo.redirectorAddr = "ssl:opensync.zone1.art2wave.com:6643";
connectNodeInfo.platformVersion = "OPENWRT_EA8300"; connectNodeInfo.platformVersion = "OPENWRT_EA8300";
connectNodeInfo.wifiRadioStates = ImmutableMap.of("2.4G", "home-ap-24", "5GL", "home-ap-l50", "5GU", "home-ap-u50"); connectNodeInfo.wifiRadioStates = ImmutableMap.of("2.4G", "home-ap-24", "5GL", "home-ap-l50", "5GU",
"home-ap-u50");
Map<String, String> versionMatrix = new HashMap<>(); Map<String, String> versionMatrix = new HashMap<>();
versionMatrix.put("DATE", "Thu Jul 16 18:52:06 UTC 2020"); versionMatrix.put("DATE", "Thu Jul 16 18:52:06 UTC 2020");

View File

@@ -1,4 +1,4 @@
package com.telecominfraproject.wlan.opensync.external.integration.utils; package com.telecominfraproject.wlan.opensync.external.integration;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -43,11 +43,11 @@ import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
import com.telecominfraproject.wlan.equipment.models.Equipment; import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.firmware.FirmwareServiceInterface; import com.telecominfraproject.wlan.firmware.FirmwareServiceInterface;
import com.telecominfraproject.wlan.location.service.LocationServiceInterface; import com.telecominfraproject.wlan.location.service.LocationServiceInterface;
import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationCloud;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController; import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController;
import com.telecominfraproject.wlan.profile.ProfileServiceInterface; import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
import com.telecominfraproject.wlan.profile.models.ProfileContainer;
import com.telecominfraproject.wlan.profile.models.ProfileType;
import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
import com.telecominfraproject.wlan.routing.RoutingServiceInterface; import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
import com.telecominfraproject.wlan.servicemetric.apnode.models.ApNodeMetrics; import com.telecominfraproject.wlan.servicemetric.apnode.models.ApNodeMetrics;
import com.telecominfraproject.wlan.servicemetric.apnode.models.StateUpDownError; import com.telecominfraproject.wlan.servicemetric.apnode.models.StateUpDownError;
@@ -74,12 +74,12 @@ import sts.OpensyncStats.VLANMetrics;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@ActiveProfiles(profiles = { "integration_test", }) @ActiveProfiles(profiles = { "integration_test", })
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = MqttStatsPublisherTest.class) @SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OpensyncExternalIntegrationMqttMessageProcessorTest.class)
@Import(value = { AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class, @Import(value = { AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class,
MqttStatsPublisherTest.Config.class, OpensyncExternalIntegrationMqttMessageProcessorTest.Config.class,
}) })
public class MqttStatsPublisherTest { public class OpensyncExternalIntegrationMqttMessageProcessorTest {
@MockBean @MockBean
AlarmServiceInterface alarmServiceInterface; AlarmServiceInterface alarmServiceInterface;
@@ -105,10 +105,9 @@ public class MqttStatsPublisherTest {
FirmwareServiceInterface firmwareServiceInterface; FirmwareServiceInterface firmwareServiceInterface;
@MockBean(answer = Answers.RETURNS_MOCKS) @MockBean(answer = Answers.RETURNS_MOCKS)
OpensyncCloudGatewayController gatewayController; OpensyncCloudGatewayController gatewayController;
@MockBean
RealtimeEventPublisher realtimeEventPublisher;
@Autowired @Autowired
MqttStatsPublisher opensyncExternalIntegrationMqttProcessor; OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttProcessor;
MockitoSession mockito; MockitoSession mockito;
@@ -116,8 +115,8 @@ public class MqttStatsPublisherTest {
static class Config { static class Config {
@Bean @Bean
public StatsPublisherInterface mqttStatsPublisher() { public OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttMessageProcessor() {
return new MqttStatsPublisher(); return new OpensyncExternalIntegrationMqttMessageProcessor();
} }
} }
@@ -125,7 +124,7 @@ public class MqttStatsPublisherTest {
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.LENIENT).startMocking(); mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking();
} }
@@ -135,12 +134,14 @@ public class MqttStatsPublisherTest {
} }
@Test @Test
public void testExtractApIdFromTopic() { public void testExtractApIdFromTopic() {
String topic = "/ap/Test_Client_21P10C68818122/opensync"; String topic = "/ap/Test_Client_21P10C68818122/opensync";
assertEquals("Test_Client_21P10C68818122", MqttStatsPublisher.extractApIdFromTopic(topic)); assertEquals("Test_Client_21P10C68818122",
OpensyncExternalIntegrationMqttMessageProcessor.extractApIdFromTopic(topic));
} }
@@ -148,12 +149,8 @@ public class MqttStatsPublisherTest {
public void testExtractCustomerIdFromTopic() { public void testExtractCustomerIdFromTopic() {
String topic = "/ap/Test_Client_21P10C68818122/opensync"; String topic = "/ap/Test_Client_21P10C68818122/opensync";
OvsdbSession session = Mockito.mock(OvsdbSession.class); OvsdbSession session = Mockito.mock(OvsdbSession.class);
Equipment ce = Mockito.mock(Equipment.class); Mockito.when(session.getCustomerId()).thenReturn(2);
Mockito.when(ce.getCustomerId()).thenReturn(2);
Mockito.when(
equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
.thenReturn(ce);
Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session); Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
assertEquals(2, opensyncExternalIntegrationMqttProcessor.extractCustomerIdFromTopic(topic)); assertEquals(2, opensyncExternalIntegrationMqttProcessor.extractCustomerIdFromTopic(topic));
@@ -177,14 +174,15 @@ public class MqttStatsPublisherTest {
Equipment equipment = new Equipment(); Equipment equipment = new Equipment();
equipment.setDetails(ApElementConfiguration.createWithDefaults()); equipment.setDetails(ApElementConfiguration.createWithDefaults());
equipment.setId(1L); equipment.setCustomerId(2);
equipment.setId(1L);
Mockito.when( Mockito.when(
equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))) equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
.thenReturn(equipment); .thenReturn(equipment);
equipment.setProfileId(0L); equipment.setProfileId(0L);
Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment); Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment); Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
@@ -196,6 +194,7 @@ public class MqttStatsPublisherTest {
OvsdbSession session = Mockito.mock(OvsdbSession.class); OvsdbSession session = Mockito.mock(OvsdbSession.class);
Mockito.when(session.getEquipmentId()).thenReturn(1L); Mockito.when(session.getEquipmentId()).thenReturn(1L);
Mockito.when(session.getCustomerId()).thenReturn(2);
Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session); Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
@@ -212,10 +211,10 @@ public class MqttStatsPublisherTest {
Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus); Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus);
com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client(); com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client();
clientInstance.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D")); clientInstance.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D"));
clientInstance.setDetails(new ClientInfoDetails()); clientInstance.setDetails(new ClientInfoDetails());
com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client(); com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client();
clientInstance2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69")); clientInstance2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69"));
clientInstance2.setDetails(new ClientInfoDetails()); clientInstance2.setDetails(new ClientInfoDetails());
Mockito.when( Mockito.when(
clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class))) clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class)))
@@ -225,10 +224,10 @@ public class MqttStatsPublisherTest {
.thenReturn(clientInstance).thenReturn(clientInstance2); .thenReturn(clientInstance).thenReturn(clientInstance2);
ClientSession clientSession = new ClientSession(); ClientSession clientSession = new ClientSession();
clientSession.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D")); clientSession.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D"));
clientSession.setDetails(new ClientSessionDetails()); clientSession.setDetails(new ClientSessionDetails());
ClientSession clientSession2 = new ClientSession(); ClientSession clientSession2 = new ClientSession();
clientSession2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69")); clientSession2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69"));
clientSession2.setDetails(new ClientSessionDetails()); clientSession2.setDetails(new ClientSessionDetails());
Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2); ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2);
@@ -318,8 +317,12 @@ public class MqttStatsPublisherTest {
bssidList.add(activeBssid3); bssidList.add(activeBssid3);
return bssidList; return bssidList;
} }
private List<EventReport> getOpensyncStatsEventReportsList() { private List<EventReport> getOpensyncStatsEventReportsList() {
List<ClientAssocEvent> clientAssocEventList = new ArrayList<>();
sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent
.getDefaultInstance().toBuilder(); .getDefaultInstance().toBuilder();
clientAssocBuilder.setAssocType(AssocType.ASSOC); clientAssocBuilder.setAssocType(AssocType.ASSOC);
@@ -331,7 +334,21 @@ public class MqttStatsPublisherTest {
clientAssocBuilder.setInternalSc(1); clientAssocBuilder.setInternalSc(1);
clientAssocBuilder.setSsid("ssid-3"); clientAssocBuilder.setSsid("ssid-3");
clientAssocBuilder.setStatus(1); clientAssocBuilder.setStatus(1);
clientAssocBuilder.setTimestampMs(System.currentTimeMillis());
sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder2 = EventReport.ClientAssocEvent
.getDefaultInstance().toBuilder();
clientAssocBuilder2.setAssocType(AssocType.ASSOC);
clientAssocBuilder2.setBand(RadioBandType.BAND2G);
clientAssocBuilder2.setRssi(-65);
clientAssocBuilder2.setStaMac("7C:AB:60:E6:EA:4D");
clientAssocBuilder2.setStaMacBytes(ByteString.copyFrom("7C:AB:60:E6:EA:4D".getBytes()));
clientAssocBuilder2.setSessionId(1000L);
clientAssocBuilder2.setInternalSc(1);
clientAssocBuilder2.setSsid("ssid-1");
clientAssocBuilder2.setStatus(1);
clientAssocEventList.add(clientAssocBuilder.build());
clientAssocEventList.add(clientAssocBuilder2.build());
List<EventReport> eventReportList = new ArrayList<>(); List<EventReport> eventReportList = new ArrayList<>();
@@ -342,25 +359,25 @@ public class MqttStatsPublisherTest {
clientSessionBuilder.setSessionId(1000L); clientSessionBuilder.setSessionId(1000L);
clientSessionBuilder.setClientAssocEvent(clientAssocBuilder.build()); clientSessionBuilder.addAllClientAssocEvent(clientAssocEventList);
List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>(); List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
clientSessionList.add(clientSessionBuilder.build()); clientSessionList.add(clientSessionBuilder.build());
sts.OpensyncStats.EventReport.ChannelSwitchEvent.Builder channelSwitchEventBuilder = sts.OpensyncStats.EventReport.ChannelSwitchEvent sts.OpensyncStats.EventReport.ChannelSwitchEvent.Builder channelSwitchEventBuilder = sts.OpensyncStats.EventReport.ChannelSwitchEvent.getDefaultInstance().toBuilder();
.getDefaultInstance().toBuilder(); channelSwitchEventBuilder.setBand(RadioBandType.BAND5GL).setChannel(40).setReason(ChannelSwitchReason.high_interference).setTimestampMs(System.currentTimeMillis());
channelSwitchEventBuilder.setBand(RadioBandType.BAND5GL).setChannel(40)
.setReason(ChannelSwitchReason.high_interference).setTimestampMs(System.currentTimeMillis());
List<ChannelSwitchEvent> channelSwitchEventList = new ArrayList<>(); List<ChannelSwitchEvent> channelSwitchEventList = new ArrayList<>();
channelSwitchEventList.add(channelSwitchEventBuilder.build()); channelSwitchEventList.add(channelSwitchEventBuilder.build());
eventReportBuilder.addAllClientSession(clientSessionList); eventReportBuilder.addAllClientSession(clientSessionList);
eventReportBuilder.addAllChannelSwitch(channelSwitchEventList); eventReportBuilder.addAllChannelSwitch(channelSwitchEventList);
eventReportList.add(eventReportBuilder.build()); eventReportList.add(eventReportBuilder.build());
return eventReportList; return eventReportList;
} }
private List<ClientReport> getOpensyncStatsClientReportsList() { private List<ClientReport> getOpensyncStatsClientReportsList() {

View File

@@ -1,382 +0,0 @@
package com.telecominfraproject.wlan.opensync.external.integration.utils;
import java.net.InetAddress;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.mockito.MockitoSession;
import org.mockito.quality.Strictness;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import com.google.protobuf.ByteString;
import com.telecominfraproject.wlan.client.models.events.realtime.ClientAssocEvent;
import com.telecominfraproject.wlan.client.models.events.realtime.ClientAuthEvent;
import com.telecominfraproject.wlan.client.models.events.utils.WlanStatusCode;
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationCloud;
import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
import sts.OpensyncStats.EventReport.DhcpNakEvent;
import sts.OpensyncStats.EventReport.DhcpOfferEvent;
import sts.OpensyncStats.EventReport.DhcpRequestEvent;
import sts.OpensyncStats;
import sts.OpensyncStats.EventReport.DhcpAckEvent;
import sts.OpensyncStats.EventReport.DhcpCommonData;
import sts.OpensyncStats.EventReport.DhcpDeclineEvent;
import sts.OpensyncStats.EventReport.DhcpDiscoverEvent;
import sts.OpensyncStats.EventReport.DhcpInformEvent;
import sts.OpensyncStats.EventReport.DhcpTransaction;
import sts.OpensyncStats.RadioBandType;
import sts.OpensyncStats.Report;
@RunWith(SpringRunner.class)
@ActiveProfiles(profiles = { "integration_test", })
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = RealtimeEventPublisherTest.class)
@Import(value = { OpensyncExternalIntegrationCloud.class, RealtimeEventPublisherTest.Config.class,
})
public class RealtimeEventPublisherTest {
@MockBean
private CloudEventDispatcherInterface cloudEventDispatcherInterface;
@MockBean
private EquipmentServiceInterface equipmentServiceInterface;
@MockBean
private ProfileServiceInterface profileServiceInterface;
@Autowired
RealtimeEventPublisher realtimeEventPublisher;
MockitoSession mockito;
@Configuration
static class Config {
@Bean
public RealtimeEventPublisher realtimeEventPublisher() {
return new RealtimeEventPublisher();
}
}
@Before
public void setUp() throws Exception {
mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking();
}
@After
public void tearDown() throws Exception {
mockito.finishMocking();
}
@Ignore
public void testPublishChannelHopEvents() {
// TODO: implement
}
@Ignore
public void testPublishClientConnectSuccessEvent() {
// TODO: implement
}
@Ignore
public void testPublishClientDisconnectEvent() {
// TODO: implement
}
@Test
public void testPublishClientAuthSystemEvent() throws Exception {
OpensyncStats.EventReport.ClientAuthEvent clientAuthEvent = OpensyncStats.EventReport.ClientAuthEvent
.newBuilder().setBand(RadioBandType.BAND5GL).setSsid("TipWlan-cloud-3-radios")
.setStaMac("c0:9a:d0:76:a9:69").setSessionId(Long.parseUnsignedLong("12377998144488079334"))
.setAuthStatus(WlanStatusCode.WLAN_STATUS_SUCCESS.getId()).setTimestampMs(1610050309).build();
realtimeEventPublisher.publishClientAuthSystemEvent(2, 1L, 0L, clientAuthEvent);
Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1))
.publishEvent(Mockito.any(ClientAuthEvent.class));
}
@Test
public void testPublishClientAssocEvent() throws Exception {
OpensyncStats.EventReport.ClientAssocEvent clientAssocEvent = OpensyncStats.EventReport.ClientAssocEvent
.newBuilder().setBand(RadioBandType.BAND5GL).setRssi(-37).setSsid("TipWlan-cloud-3-radios")
.setStaMac("c0:9a:d0:76:a9:69").setSessionId(Long.parseUnsignedLong("12377998144488079334"))
.setUsing11K(true).setUsing11V(true).setStatus(WlanStatusCode.WLAN_STATUS_SUCCESS.getId())
.setTimestampMs(1610050309).build();
realtimeEventPublisher.publishClientAssocEvent(2, 1L, 0L, clientAssocEvent);
Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1))
.publishEvent(Mockito.any(ClientAssocEvent.class));
}
@Ignore
public void testPublishClientFailureEvent() {
// TODO: implement
}
@Ignore
public void testPublishClientFirstDataEvent() {
// TODO: implement
}
@Ignore
public void testPublishClientIdEvent() {
// TODO: implement
}
@Ignore
public void testPublishClientIpEvent() {
// TODO: implement
}
@Ignore
public void testPublishClientTimeoutEvent() {
// TODO: implement
}
@Test
public void testPublishDhcpTransactionEvents() throws Exception {
long timestamp = System.currentTimeMillis();
List<DhcpTransaction> dhcpTransactionList = new ArrayList<>();
DhcpAckEvent ackEvent = DhcpAckEvent.newBuilder()
.setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
.setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.250").getAddress()))
.setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setDeviceMacAddress("c0:9a:d0:76:a9:69")
.setXId(123456789)
.setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build())
.setGatewayIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setPrimaryDns(ByteString.copyFrom(InetAddress.getByName("64.71.255.204").getAddress()))
.setSecondaryDns(ByteString.copyFrom(InetAddress.getByName("64.71.255.198").getAddress()))
.setSubnetMask(ByteString.copyFrom(InetAddress.getByName("255.255.255.0").getAddress()))
.setLeaseTime(172800).setTimeOffset(10).build();
DhcpAckEvent ackEvent2 = DhcpAckEvent.newBuilder()
.setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
.setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.65").getAddress()))
.setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setDeviceMacAddress("f6:f0:65:99:e2:33")
.setXId(123456789)
.setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build())
.setGatewayIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setPrimaryDns(ByteString.copyFrom(InetAddress.getByName("64.71.255.204").getAddress()))
.setSecondaryDns(ByteString.copyFrom(InetAddress.getByName("64.71.255.198").getAddress()))
.setSubnetMask(ByteString.copyFrom(InetAddress.getByName("255.255.255.0").getAddress()))
.setLeaseTime(172800).setTimeOffset(10).build();
List<DhcpAckEvent> ackEventList = List.of(ackEvent, ackEvent2);
DhcpNakEvent nakEvent1 = DhcpNakEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
.setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.129").getAddress()))
.setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setDeviceMacAddress("24:f5:a2:ef:2e:53")
.setXId(123456789)
.setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setFromInternal(true).build();
List<DhcpNakEvent> nakEventList = List.of(nakEvent1);
DhcpOfferEvent offerEvent1 = DhcpOfferEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
.setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.250").getAddress()))
.setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setDeviceMacAddress("c0:9a:d0:76:a9:69")
.setXId(123456789)
.setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setFromInternal(true).build();
DhcpOfferEvent offerEvent2 = DhcpOfferEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
.setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.65").getAddress()))
.setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setDeviceMacAddress("f6:f0:65:99:e2:33")
.setXId(123456789)
.setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setFromInternal(true).build();
List<DhcpOfferEvent> offerEventList = List.of(offerEvent1,offerEvent2);
DhcpDiscoverEvent discoverEvent1 = DhcpDiscoverEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
.setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.250").getAddress()))
.setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setDeviceMacAddress("c0:9a:d0:76:a9:69")
.setXId(123456789)
.setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setHostname("My-iPhone").build();
DhcpDiscoverEvent discoverEvent2 = DhcpDiscoverEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
.setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.65").getAddress()))
.setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setDeviceMacAddress("f6:f0:65:99:e2:33")
.setXId(123456789)
.setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setHostname("My-iPad").build();
List<DhcpDiscoverEvent> discoverEventList = List.of(discoverEvent1,discoverEvent2);
DhcpRequestEvent requestEvent1 = DhcpRequestEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
.setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.250").getAddress()))
.setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setDeviceMacAddress("c0:9a:d0:76:a9:69")
.setXId(123456789)
.setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setHostname("My-iPhone").build();
DhcpRequestEvent requestEvent2 = DhcpRequestEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
.setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.65").getAddress()))
.setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setDeviceMacAddress("f6:f0:65:99:e2:33")
.setXId(123456789)
.setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setHostname("My-iPad").build();
List<DhcpRequestEvent> requestEventList = List.of(requestEvent1,requestEvent2);
DhcpInformEvent informEvent = DhcpInformEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
.setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.250").getAddress()))
.setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setDeviceMacAddress("c0:9a:d0:76:a9:69")
.setXId(123456789)
.setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).build();
List<DhcpInformEvent> informEventList = List.of(informEvent);
DhcpDeclineEvent declineEvent = DhcpDeclineEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
.setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.129").getAddress()))
.setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
.setDeviceMacAddress("24:f5:a2:ef:2e:53")
.setXId(123456789)
.setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).build();
List<DhcpDeclineEvent> declineEventList = List.of(declineEvent);
DhcpTransaction dhcpTransaction = DhcpTransaction.newBuilder(DhcpTransaction.getDefaultInstance())
.addAllDhcpAckEvent(ackEventList).addAllDhcpNakEvent(nakEventList).addAllDhcpOfferEvent(offerEventList)
.addAllDhcpInformEvent(informEventList).addAllDhcpDeclineEvent(declineEventList)
.addAllDhcpDiscoverEvent(discoverEventList).addAllDhcpRequestEvent(requestEventList).setXId(123456789)
.build();
dhcpTransactionList.add(dhcpTransaction);
realtimeEventPublisher.publishDhcpTransactionEvents(2, 1L, 0L, dhcpTransactionList);
Mockito.verify(cloudEventDispatcherInterface,Mockito.times(1)).publishEventsBulk(Mockito.anyList());
}
@Test
public void testPublishSipCallEvents() throws Exception {
OpensyncStats.VideoVoiceReport.Builder callStartVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder()
.setCallStart(getDefaultCallStart());
OpensyncStats.VideoVoiceReport.Builder callReportGotPublishVoiceReportBuilder = OpensyncStats.VideoVoiceReport
.newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.GOT_PUBLISH,
121, 1028, 1316, 1888, 298, 2, 100, 200));
OpensyncStats.VideoVoiceReport.Builder callReportRoamedToVoiceReportBuilder = OpensyncStats.VideoVoiceReport
.newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_TO,
123, 1020, 1116, 1345, 223, 0, 102, 203));
OpensyncStats.VideoVoiceReport.Builder callReportRoamedFromVoiceReportBuilder = OpensyncStats.VideoVoiceReport
.newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_FROM,
122, 1029, 1300, 1234, 111, 3, 101, 201));
OpensyncStats.VideoVoiceReport.Builder callStopVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder()
.setCallStop(getDefaultCallStop());
// Create report with multiple voiceReports in one
Report multipleVoiceReportsInOneReport = Report.newBuilder().addVideoVoiceReport(callStartVoiceReportBuilder)
.addVideoVoiceReport(callReportGotPublishVoiceReportBuilder)
.addVideoVoiceReport(callReportRoamedFromVoiceReportBuilder)
.addVideoVoiceReport(callReportRoamedToVoiceReportBuilder)
.addVideoVoiceReport(callStopVoiceReportBuilder).setNodeID("1").build();
realtimeEventPublisher.publishSipCallEvents(1, 2L, 0L, multipleVoiceReportsInOneReport.getVideoVoiceReportList());
Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1)).publishEventsBulk(Mockito.anyList());
}
private OpensyncStats.CallStart getDefaultCallStart() {
OpensyncStats.CallStart.Builder callStartBuilder = OpensyncStats.CallStart.newBuilder();
callStartBuilder.setBand(RadioBandType.BAND5G);
callStartBuilder.setChannel(40);
callStartBuilder.addCodecs("110 opus/48000/2");
callStartBuilder.addCodecs("102 iLBC/8000");
callStartBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
callStartBuilder.setDeviceInfo("Test Device");
callStartBuilder.setProviderDomain("skype");
callStartBuilder.setSessionId(123L);
callStartBuilder.setWifiSessionId(1234L);
return callStartBuilder.build();
}
private OpensyncStats.CallStop getDefaultCallStop() {
OpensyncStats.CallStop.Builder callStopBuilder = OpensyncStats.CallStop.newBuilder();
callStopBuilder.setBand(RadioBandType.BAND5G);
callStopBuilder.setChannel(40);
callStopBuilder.addCodecs("110 opus/48000/2");
callStopBuilder.addCodecs("102 iLBC/8000");
callStopBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
callStopBuilder.setCallDuration(1230);
callStopBuilder.setProviderDomain("skype");
callStopBuilder.setSessionId(123L);
callStopBuilder.setWifiSessionId(1234L);
callStopBuilder.setReason(OpensyncStats.CallStop.CallStopReason.BYE_OK);
callStopBuilder.addStats(getRtpFlowStats(121, 1380, 1400, 3000, 119, 3, 205, 350));
return callStopBuilder.build();
}
private OpensyncStats.RtpFlowStats getRtpFlowStats(int codec, int jitter, int latency, int totalPackets,
int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) {
OpensyncStats.RtpFlowStats.Builder rtpFlowStatsBuilder = OpensyncStats.RtpFlowStats.newBuilder();
rtpFlowStatsBuilder.setCodec(codec);
rtpFlowStatsBuilder.setBlockCodecs(ByteString.copyFrom(new byte[] { (byte) 0xe6, 0x1 }));
rtpFlowStatsBuilder.setDirection(OpensyncStats.RtpFlowStats.RtpFlowDirection.RTP_DOWNSTREAM);
rtpFlowStatsBuilder.setRtpFlowType(OpensyncStats.RtpFlowStats.RtpFlowType.RTP_VOICE);
rtpFlowStatsBuilder.setJitter(jitter);
rtpFlowStatsBuilder.setLatency(latency);
rtpFlowStatsBuilder.setTotalPacketsSent(totalPackets);
rtpFlowStatsBuilder.setTotalPacketsLost(totalPacketsLost);
rtpFlowStatsBuilder.setMosx100(mos);
rtpFlowStatsBuilder.setRtpSeqFirst(firstRtpSeq);
rtpFlowStatsBuilder.setRtpSeqLast(lastRtpSeq);
return rtpFlowStatsBuilder.build();
}
private OpensyncStats.CallReport getDefaultCallReport(OpensyncStats.CallReport.CallReportReason reason, int codec,
int jitter, int latency, int totalPackets, int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) {
OpensyncStats.CallReport.Builder callReportBuilder = OpensyncStats.CallReport.newBuilder();
callReportBuilder.setBand(RadioBandType.BAND5G);
callReportBuilder.setChannel(40);
callReportBuilder.addCodecs("110 opus/48000/2");
callReportBuilder.addCodecs("102 iLBC/8000");
callReportBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
callReportBuilder.setProviderDomain("skype");
callReportBuilder.setSessionId(123L);
callReportBuilder.setWifiSessionId(1234L);
callReportBuilder.setReason(reason);
callReportBuilder.addStats(
getRtpFlowStats(codec, jitter, latency, totalPackets, totalPacketsLost, mos, firstRtpSeq, lastRtpSeq));
return callReportBuilder.build();
}
}

View File

@@ -1,9 +1,11 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-ext-interface</artifactId> <artifactId>opensync-ext-interface</artifactId>
@@ -13,33 +15,33 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId> <artifactId>base-models</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-opensync-protobuf</artifactId> <artifactId>tip-wlan-opensync-protobuf</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>equipment-models</artifactId> <artifactId>equipment-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>profile-models</artifactId> <artifactId>profile-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>location-models</artifactId> <artifactId>location-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>routing-models</artifactId> <artifactId>routing-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>

View File

@@ -35,23 +35,20 @@ public interface OpensyncExternalIntegrationInterface {
void wifiInetStateDbTableUpdate(List<OpensyncAPInetState> inetStateTables, String apId); void wifiInetStateDbTableUpdate(List<OpensyncAPInetState> inetStateTables, String apId);
void wifiInetStateDbTableDelete(List<OpensyncAPInetState> inetStateTables, String apId); void wifiInetStateDbTableDelete(List<OpensyncAPInetState> inetStateTables, String apId);
void processMqttMessage(String topic, Report report);
void processMqttMessage(String topic, FlowReport flowReport);
void processMqttMessage(String topic, WCStatsReport wcStatsReport);
void wifiAssociatedClientsDbTableUpdate(List<OpensyncWifiAssociatedClients> wifiAssociatedClients, String apId); void wifiAssociatedClientsDbTableUpdate(List<OpensyncWifiAssociatedClients> wifiAssociatedClients, String apId);
void wifiAssociatedClientsDbTableDelete(String deletedClientMac, String apId); void wifiAssociatedClientsDbTableDelete(String deletedClientMac, String apId);
void awlanNodeDbTableUpdate(OpensyncAWLANNode opensyncAPState, String apId); void awlanNodeDbTableUpdate(OpensyncAWLANNode opensyncAPState, String apId);
void dhcpLeasedIpDbTableUpdate(List<Map<String, String>> dhcpAttributes, String apId,
RowUpdateOperation rowUpdateOperation);
void commandStateDbTableUpdate(List<Map<String, String>> commandStateAttributes, String apId,
RowUpdateOperation rowUpdateOperation);
void apcStateDbTableUpdate(Map<String, String> apcStateAttributes, String apId,
RowUpdateOperation rowUpdateOperation);
void nodeStateDbTableUpdate(List<Map<String, String>> nodeStateAttributes, String apId); void dhcpLeasedIpDbTableUpdate(List<Map<String,String>> dhcpAttributes, String apId, RowUpdateOperation rowUpdateOperation);
void clearEquipmentStatus(String apId); void commandStateDbTableUpdate(List<Map<String,String>> commandStateAttributes, String apId, RowUpdateOperation rowUpdateOperation);
} }

View File

@@ -6,7 +6,6 @@ import java.util.Set;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress; import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
public interface OvsdbClientInterface { public interface OvsdbClientInterface {
@@ -17,14 +16,13 @@ public interface OvsdbClientInterface {
String startDebugEngine(String apId, String gatewayHostname, Integer gatewayPort); String startDebugEngine(String apId, String gatewayHostname, Integer gatewayPort);
String stopDebugEngine(String apId); String stopDebugEngine(String apId);
String processBlinkRequest(String apId, boolean blinkAllLEDs);
void processConfigChanged(String apId); void processConfigChanged(String apId);
void processClientBlocklistChange(String apId, List<MacAddress> blockList); void processClientBlocklistChange(String apId, List<MacAddress> blockList);
String processFirmwareDownload(String apId, String firmwareUrl, String firmwareVersion, String username); String processFirmwareDownload(String apId, String firmwareUrl, String firmwareVersion, String username,
String validationCode);
String closeSession(String apId); String closeSession(String apId);
@@ -34,8 +32,6 @@ public interface OvsdbClientInterface {
String processFactoryResetRequest(String apId); String processFactoryResetRequest(String apId);
String processNewChannelsRequest(String apId, Map<RadioType,Integer> backupChannelMap, Map<RadioType,Integer> primaryChannelMap); String processNewChannelsRequest(String apId, Map<RadioType,Integer> channelMap);
String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap);
} }

View File

@@ -1,7 +1,5 @@
package com.telecominfraproject.wlan.opensync.external.integration; package com.telecominfraproject.wlan.opensync.external.integration;
import java.util.Objects;
import com.vmware.ovsdb.service.OvsdbClient; import com.vmware.ovsdb.service.OvsdbClient;
public class OvsdbSession { public class OvsdbSession {
@@ -9,7 +7,7 @@ public class OvsdbSession {
private String apId; private String apId;
private long routingId; private long routingId;
private long equipmentId; private long equipmentId;
private long mostRecentStatsTimestamp; private int customerId;
public OvsdbClient getOvsdbClient() { public OvsdbClient getOvsdbClient() {
return ovsdbClient; return ovsdbClient;
@@ -35,34 +33,12 @@ public class OvsdbSession {
public void setEquipmentId(long equipmentId) { public void setEquipmentId(long equipmentId) {
this.equipmentId = equipmentId; this.equipmentId = equipmentId;
} }
public long getMostRecentStatsTimestamp() { public int getCustomerId() {
return mostRecentStatsTimestamp; return customerId;
} }
public void setMostRecentStatsTimestamp(long mostRecentStatsTimestamp) { public void setCustomerId(int customerId) {
this.mostRecentStatsTimestamp = mostRecentStatsTimestamp; this.customerId = customerId;
}
@Override
public int hashCode() {
return Objects.hash(apId, equipmentId, mostRecentStatsTimestamp, ovsdbClient, routingId);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
OvsdbSession other = (OvsdbSession) obj;
return Objects.equals(apId, other.apId) && equipmentId == other.equipmentId && mostRecentStatsTimestamp == other.mostRecentStatsTimestamp
&& Objects.equals(ovsdbClient, other.ovsdbClient) && routingId == other.routingId;
} }
@Override
public String toString() {
return "OvsdbSession [ovsdbClient=" + ovsdbClient + ", apId=" + apId + ", routingId=" + routingId + ", equipmentId=" + equipmentId
+ ", mostRecentStatsTimestamp=" + mostRecentStatsTimestamp + "]";
}
} }

View File

@@ -1,4 +1,3 @@
package com.telecominfraproject.wlan.opensync.external.integration.models; package com.telecominfraproject.wlan.opensync.external.integration.models;
import java.util.HashMap; import java.util.HashMap;
@@ -27,13 +26,6 @@ public class ConnectNodeInfo implements Cloneable {
public String lanIfName; public String lanIfName;
public String lanIfType; public String lanIfType;
public String lanMacAddress; public String lanMacAddress;
public String referenceDesign;
public Map<String, String> qrCode;
public String modelDescription;
public String manufacturerUrl;
public String manufacturerName;
public String manufacturerDate;
public String certificationRegion;
@Override @Override
public ConnectNodeInfo clone() { public ConnectNodeInfo clone() {
@@ -48,9 +40,6 @@ public class ConnectNodeInfo implements Cloneable {
if (this.versionMatrix != null) { if (this.versionMatrix != null) {
ret.versionMatrix = new HashMap<>(this.versionMatrix); ret.versionMatrix = new HashMap<>(this.versionMatrix);
} }
if (this.qrCode != null) {
ret.qrCode = new HashMap<>(this.qrCode);
}
return ret; return ret;
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {
throw new IllegalStateException("Cannot clone ", e); throw new IllegalStateException("Cannot clone ", e);
@@ -59,44 +48,44 @@ public class ConnectNodeInfo implements Cloneable {
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(certificationRegion, country, firmwareVersion, ifName, ifType, ipV4Address, lanIfName, lanIfType, lanIpV4Address, lanMacAddress, return Objects.hash(country, firmwareVersion, ifName, ifType, ipV4Address, lanIfName, lanIfType, lanIpV4Address,
macAddress, managerAddr, manufacturerDate, manufacturerName, manufacturerUrl, model, modelDescription, mqttSettings, platformVersion, qrCode, lanMacAddress, macAddress, managerAddr, model, mqttSettings, platformVersion, redirectorAddr, revision,
redirectorAddr, referenceDesign, revision, serialNumber, skuNumber, versionMatrix, wifiRadioStates); serialNumber, skuNumber, versionMatrix, wifiRadioStates);
} }
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (this == obj) if (this == obj) {
return true; return true;
if (obj == null) }
return false; if (!(obj instanceof ConnectNodeInfo)) {
if (getClass() != obj.getClass())
return false; return false;
}
ConnectNodeInfo other = (ConnectNodeInfo) obj; ConnectNodeInfo other = (ConnectNodeInfo) obj;
return Objects.equals(certificationRegion, other.certificationRegion) && Objects.equals(country, other.country) return Objects.equals(country, other.country) && Objects.equals(firmwareVersion, other.firmwareVersion)
&& Objects.equals(firmwareVersion, other.firmwareVersion) && Objects.equals(ifName, other.ifName) && Objects.equals(ifType, other.ifType) && Objects.equals(ifName, other.ifName) && Objects.equals(ifType, other.ifType)
&& Objects.equals(ipV4Address, other.ipV4Address) && Objects.equals(lanIfName, other.lanIfName) && Objects.equals(lanIfType, other.lanIfType) && Objects.equals(ipV4Address, other.ipV4Address) && Objects.equals(lanIfName, other.lanIfName)
&& Objects.equals(lanIpV4Address, other.lanIpV4Address) && Objects.equals(lanMacAddress, other.lanMacAddress) && Objects.equals(lanIfType, other.lanIfType) && Objects.equals(lanIpV4Address, other.lanIpV4Address)
&& Objects.equals(macAddress, other.macAddress) && Objects.equals(managerAddr, other.managerAddr) && Objects.equals(lanMacAddress, other.lanMacAddress) && Objects.equals(macAddress, other.macAddress)
&& Objects.equals(manufacturerDate, other.manufacturerDate) && Objects.equals(manufacturerName, other.manufacturerName) && Objects.equals(managerAddr, other.managerAddr) && Objects.equals(model, other.model)
&& Objects.equals(manufacturerUrl, other.manufacturerUrl) && Objects.equals(model, other.model) && Objects.equals(mqttSettings, other.mqttSettings)
&& Objects.equals(modelDescription, other.modelDescription) && Objects.equals(mqttSettings, other.mqttSettings) && Objects.equals(platformVersion, other.platformVersion)
&& Objects.equals(platformVersion, other.platformVersion) && Objects.equals(qrCode, other.qrCode) && Objects.equals(redirectorAddr, other.redirectorAddr) && Objects.equals(revision, other.revision)
&& Objects.equals(redirectorAddr, other.redirectorAddr) && Objects.equals(referenceDesign, other.referenceDesign) && Objects.equals(serialNumber, other.serialNumber) && Objects.equals(skuNumber, other.skuNumber)
&& Objects.equals(revision, other.revision) && Objects.equals(serialNumber, other.serialNumber) && Objects.equals(skuNumber, other.skuNumber) && Objects.equals(versionMatrix, other.versionMatrix)
&& Objects.equals(versionMatrix, other.versionMatrix) && Objects.equals(wifiRadioStates, other.wifiRadioStates); && Objects.equals(wifiRadioStates, other.wifiRadioStates);
} }
@Override @Override
public String toString() { public String toString() {
return "ConnectNodeInfo [mqttSettings=" + mqttSettings + ", versionMatrix=" + versionMatrix + ", wifiRadioStates=" + wifiRadioStates return "ConnectNodeInfo [mqttSettings=" + mqttSettings + ", versionMatrix=" + versionMatrix
+ ", redirectorAddr=" + redirectorAddr + ", managerAddr=" + managerAddr + ", skuNumber=" + skuNumber + ", serialNumber=" + serialNumber + ", wifiRadioStates=" + wifiRadioStates + ", redirectorAddr=" + redirectorAddr + ", managerAddr="
+ ", macAddress=" + macAddress + ", ipV4Address=" + ipV4Address + ", platformVersion=" + platformVersion + ", firmwareVersion=" + managerAddr + ", skuNumber=" + skuNumber + ", serialNumber=" + serialNumber + ", macAddress="
+ firmwareVersion + ", revision=" + revision + ", model=" + model + ", ifName=" + ifName + ", ifType=" + ifType + ", country=" + country + macAddress + ", ipV4Address=" + ipV4Address + ", platformVersion=" + platformVersion
+ ", lanIpV4Address=" + lanIpV4Address + ", lanIfName=" + lanIfName + ", lanIfType=" + lanIfType + ", lanMacAddress=" + lanMacAddress + ", firmwareVersion=" + firmwareVersion + ", revision=" + revision + ", model=" + model + ", ifName="
+ ", referenceDesign=" + referenceDesign + ", qrCode=" + qrCode + ", modelDescription=" + modelDescription + ", manufacturerUrl=" + ifName + ", ifType=" + ifType + ", country=" + country + ", lanIpV4Address=" + lanIpV4Address
+ manufacturerUrl + ", manufacturerName=" + manufacturerName + ", manufacturerDate=" + manufacturerDate + ", certificationRegion=" + ", lanIfName=" + lanIfName + ", lanIfType=" + lanIfType + ", lanMacAddress=" + lanMacAddress + "]";
+ certificationRegion + "]";
} }
} }

View File

@@ -1,30 +0,0 @@
package com.telecominfraproject.wlan.opensync.external.integration.models;
import java.util.Set;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.vmware.ovsdb.protocol.operation.notation.Row;
public abstract class OpensyncAPBase extends BaseJsonModel {
private static final long serialVersionUID = -68509242520818671L;
public static <T> T getSingleValueFromSet(Row row, String columnName) {
Set<T> set = row != null ? row.getSetColumn(columnName) : null;
T ret = (set != null) && !set.isEmpty() ? set.iterator().next() : null;
return ret;
}
public OpensyncAPBase() {
}
public <T> Set<T> getSet(Row row, String columnName) {
Set<T> set = row != null ? row.getSetColumn(columnName) : null;
return set;
}
}

View File

@@ -10,6 +10,7 @@ import com.telecominfraproject.wlan.core.model.entity.CountryCode;
import com.telecominfraproject.wlan.core.model.equipment.EquipmentType; import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress; import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration; import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
import com.telecominfraproject.wlan.equipment.models.Equipment; import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.equipment.models.StateSetting; import com.telecominfraproject.wlan.equipment.models.StateSetting;
@@ -23,14 +24,10 @@ import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration.Secure
import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord; import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord;
import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord; import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord;
public class OpensyncAPConfig extends OpensyncAPBase { public class OpensyncAPConfig extends BaseJsonModel {
private static final long serialVersionUID = 3917975477206236668L; private static final long serialVersionUID = 3917975477206236668L;
public static long getSerialversionuid() {
return serialVersionUID;
}
private Equipment customerEquipment; private Equipment customerEquipment;
private OpensyncAPHotspot20Config hotspotConfig; private OpensyncAPHotspot20Config hotspotConfig;
private Profile apProfile; private Profile apProfile;
@@ -43,205 +40,8 @@ public class OpensyncAPConfig extends OpensyncAPBase {
private EquipmentGatewayRecord equipmentGateway; private EquipmentGatewayRecord equipmentGateway;
private List<Profile> captiveProfiles; private List<Profile> captiveProfiles;
private List<Profile> bonjourGatewayProfiles; private List<Profile> bonjourGatewayProfiles;
private List<MacAddress> blockedClients; private List<MacAddress> blockedClients;
@Override
public OpensyncAPConfig clone() {
OpensyncAPConfig ret = (OpensyncAPConfig) super.clone();
if (customerEquipment != null) {
ret.customerEquipment = customerEquipment.clone();
}
if (hotspotConfig != null) {
ret.hotspotConfig = hotspotConfig.clone();
}
if (equipmentLocation != null) {
ret.equipmentLocation = equipmentLocation.clone();
}
if (ssidProfile != null) {
List<Profile> ssidList = new ArrayList<Profile>();
for (Profile profile : ssidProfile) {
ssidList.add(profile.clone());
}
ret.ssidProfile = ssidList;
}
if (metricsProfile != null) {
List<Profile> metricsList = new ArrayList<Profile>();
for (Profile profile : metricsProfile) {
metricsList.add(profile.clone());
}
ret.metricsProfile = metricsList;
}
if (bonjourGatewayProfiles != null) {
List<Profile> bonjourGatewayProfilesList = new ArrayList<Profile>();
for (Profile profile : bonjourGatewayProfiles) {
bonjourGatewayProfilesList.add(profile.clone());
}
ret.bonjourGatewayProfiles = bonjourGatewayProfilesList;
}
if (apProfile != null) {
ret.apProfile = apProfile.clone();
}
if (rfProfile != null) {
ret.rfProfile = rfProfile.clone();
}
if (equipmentRouting != null) {
ret.equipmentRouting = equipmentRouting.clone();
}
if (equipmentGateway != null) {
ret.equipmentGateway = equipmentGateway.clone();
}
if (radiusProfiles != null) {
ret.radiusProfiles = new ArrayList<>();
for (Profile radiusProfile : this.radiusProfiles) {
ret.radiusProfiles.add(radiusProfile);
}
}
if (captiveProfiles != null) {
ret.captiveProfiles = new ArrayList<>();
for (Profile cpConfig : this.captiveProfiles) {
ret.captiveProfiles.add(cpConfig);
}
}
if (blockedClients != null) {
ret.blockedClients = new ArrayList<MacAddress>();
for (MacAddress blockedClient : this.blockedClients) {
ret.blockedClients.add(blockedClient);
}
}
return ret;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
OpensyncAPConfig other = (OpensyncAPConfig) obj;
return Objects.equals(apProfile, other.apProfile) && Objects.equals(blockedClients, other.blockedClients)
&& Objects.equals(bonjourGatewayProfiles, other.bonjourGatewayProfiles)
&& Objects.equals(captiveProfiles, other.captiveProfiles)
&& Objects.equals(customerEquipment, other.customerEquipment)
&& Objects.equals(equipmentGateway, other.equipmentGateway)
&& Objects.equals(equipmentLocation, other.equipmentLocation)
&& Objects.equals(equipmentRouting, other.equipmentRouting)
&& Objects.equals(hotspotConfig, other.hotspotConfig)
&& Objects.equals(metricsProfile, other.metricsProfile)
&& Objects.equals(radiusProfiles, other.radiusProfiles) && Objects.equals(rfProfile, other.rfProfile)
&& Objects.equals(ssidProfile, other.ssidProfile);
}
public Profile getApProfile() {
return apProfile;
}
public List<MacAddress> getBlockedClients() {
return blockedClients;
}
public List<Profile> getBonjourGatewayProfiles() {
return bonjourGatewayProfiles;
}
public List<Profile> getCaptiveProfiles() {
return captiveProfiles;
}
public String getCountryCode() {
return Location.getCountryCode(this.equipmentLocation).toString();
}
public Equipment getCustomerEquipment() {
return customerEquipment;
}
public EquipmentGatewayRecord getEquipmentGateway() {
return equipmentGateway;
}
public Location getEquipmentLocation() {
return equipmentLocation;
}
public EquipmentRoutingRecord getEquipmentRouting() {
return equipmentRouting;
}
public OpensyncAPHotspot20Config getHotspotConfig() {
return hotspotConfig;
}
public List<Profile> getMetricsProfiles() {
return metricsProfile;
}
public List<Profile> getRadiusProfiles() {
return radiusProfiles;
}
public Profile getRfProfile() {
return rfProfile;
}
public List<Profile> getSsidProfile() {
return ssidProfile;
}
@Override
public int hashCode() {
return Objects.hash(apProfile, blockedClients, bonjourGatewayProfiles, captiveProfiles, customerEquipment,
equipmentGateway, equipmentLocation, equipmentRouting, hotspotConfig, metricsProfile, radiusProfiles,
rfProfile, ssidProfile);
}
public void setApProfile(Profile apProfile) {
this.apProfile = apProfile;
}
public void setBlockedClients(List<MacAddress> blockedClients) {
this.blockedClients = blockedClients;
}
public void setBonjourGatewayProfiles(List<Profile> bonjourGatewayProfiles) {
this.bonjourGatewayProfiles = bonjourGatewayProfiles;
}
public void setCaptiveProfiles(List<Profile> captiveProfiles) {
this.captiveProfiles = captiveProfiles;
}
public void setCustomerEquipment(Equipment customerEquipment) {
this.customerEquipment = customerEquipment;
}
public void setEquipmentGateway(EquipmentGatewayRecord equipmentGateway) {
this.equipmentGateway = equipmentGateway;
}
public void setEquipmentLocation(Location equipmentLocation) {
this.equipmentLocation = equipmentLocation;
}
public void setEquipmentRouting(EquipmentRoutingRecord equipmentRouting) {
this.equipmentRouting = equipmentRouting;
}
public void setHotspotConfig(OpensyncAPHotspot20Config hotspotConfig) {
this.hotspotConfig = hotspotConfig;
}
public void setMetricsProfiles(List<Profile> metricsProfileList) {
metricsProfile = metricsProfileList;
}
// Handle Legacy Config Support // Handle Legacy Config Support
public void setRadioConfig(OpensyncAPRadioConfig radioConfig) { public void setRadioConfig(OpensyncAPRadioConfig radioConfig) {
@@ -261,21 +61,13 @@ public class OpensyncAPConfig extends OpensyncAPBase {
equipmentLocation = new Location(); equipmentLocation = new Location();
equipmentLocation.setId(1); equipmentLocation.setId(1);
equipmentLocation.setDetails(LocationDetails.createWithDefaults()); equipmentLocation.setDetails(LocationDetails.createWithDefaults());
equipmentLocation.getDetails() ((LocationDetails) equipmentLocation.getDetails())
.setCountryCode(CountryCode.getByName(radioConfig.getCountry().toLowerCase())); .setCountryCode(CountryCode.getByName(radioConfig.getCountry().toLowerCase()));
customerEquipment.setLocationId(equipmentLocation.getId()); customerEquipment.setLocationId(equipmentLocation.getId());
} }
} }
public void setRadiusProfiles(List<Profile> radiusProfiles) {
this.radiusProfiles = radiusProfiles;
}
public void setRfProfile(Profile rfProfile) {
this.rfProfile = rfProfile;
}
// Handle Legacy Config Support // Handle Legacy Config Support
public void setSsidConfigs(List<OpensyncAPSsidConfig> ssidConfigs) { public void setSsidConfigs(List<OpensyncAPSsidConfig> ssidConfigs) {
@@ -297,18 +89,16 @@ public class OpensyncAPConfig extends OpensyncAPBase {
appliedRadios.add(ssidConfig.getRadioType()); appliedRadios.add(ssidConfig.getRadioType());
cfg.setAppliedRadios(appliedRadios); cfg.setAppliedRadios(appliedRadios);
cfg.setSsid(ssidConfig.getSsid()); cfg.setSsid(ssidConfig.getSsid());
if (ssidConfig.getEncryption().equals("WPA-PSK") && ssidConfig.getMode().equals("1")) { if (ssidConfig.getEncryption().equals("WPA-PSK") && ssidConfig.getMode().equals("1"))
cfg.setSecureMode(SecureMode.wpaPSK); cfg.setSecureMode(SecureMode.wpaPSK);
} else { else
cfg.setSecureMode(SecureMode.wpa2PSK); cfg.setSecureMode(SecureMode.wpa2PSK);
}
cfg.setBroadcastSsid(ssidConfig.isBroadcast() ? StateSetting.enabled : StateSetting.disabled); cfg.setBroadcastSsid(ssidConfig.isBroadcast() ? StateSetting.enabled : StateSetting.disabled);
profile.setDetails(cfg); profile.setDetails(cfg);
profile.setId(ssidProfileId); profile.setId(ssidProfileId);
if (this.ssidProfile == null) { if (this.ssidProfile == null)
this.ssidProfile = new ArrayList<Profile>(); this.ssidProfile = new ArrayList<Profile>();
}
this.ssidProfile.add(profile); this.ssidProfile.add(profile);
apProfile.getChildProfileIds().add(ssidProfileId); apProfile.getChildProfileIds().add(ssidProfileId);
ssidProfileId++; ssidProfileId++;
@@ -321,8 +111,206 @@ public class OpensyncAPConfig extends OpensyncAPBase {
} }
public EquipmentGatewayRecord getEquipmentGateway() {
return equipmentGateway;
}
public void setEquipmentGateway(EquipmentGatewayRecord equipmentGateway) {
this.equipmentGateway = equipmentGateway;
}
public EquipmentRoutingRecord getEquipmentRouting() {
return equipmentRouting;
}
public void setEquipmentRouting(EquipmentRoutingRecord equipmentRouting) {
this.equipmentRouting = equipmentRouting;
}
public Equipment getCustomerEquipment() {
return customerEquipment;
}
public void setCustomerEquipment(Equipment customerEquipment) {
this.customerEquipment = customerEquipment;
}
public OpensyncAPHotspot20Config getHotspotConfig() {
return hotspotConfig;
}
public void setHotspotConfig(OpensyncAPHotspot20Config hotspotConfig) {
this.hotspotConfig = hotspotConfig;
}
public Profile getApProfile() {
return apProfile;
}
public void setApProfile(Profile apProfile) {
this.apProfile = apProfile;
}
public Profile getRfProfile() {
return rfProfile;
}
public void setRfProfile(Profile rfProfile) {
this.rfProfile = rfProfile;
}
public List<Profile> getSsidProfile() {
return ssidProfile;
}
public void setSsidProfile(List<Profile> ssidProfile) { public void setSsidProfile(List<Profile> ssidProfile) {
this.ssidProfile = ssidProfile; this.ssidProfile = ssidProfile;
} }
public List<Profile> getBonjourGatewayProfiles() {
return bonjourGatewayProfiles;
}
public void setBonjourGatewayProfiles(List<Profile> bonjourGatewayProfiles) {
this.bonjourGatewayProfiles = bonjourGatewayProfiles;
}
public Location getEquipmentLocation() {
return equipmentLocation;
}
public void setEquipmentLocation(Location equipmentLocation) {
this.equipmentLocation = equipmentLocation;
}
public String getCountryCode() {
return Location.getCountryCode(this.equipmentLocation).toString();
}
public static long getSerialversionuid() {
return serialVersionUID;
}
@Override
public OpensyncAPConfig clone() {
OpensyncAPConfig ret = (OpensyncAPConfig) super.clone();
if (customerEquipment != null)
ret.customerEquipment = customerEquipment.clone();
if (hotspotConfig != null)
ret.hotspotConfig = hotspotConfig.clone();
if (equipmentLocation != null)
ret.equipmentLocation = equipmentLocation.clone();
if (ssidProfile != null) {
List<Profile> ssidList = new ArrayList<Profile>();
for (Profile profile : ssidProfile) {
ssidList.add(profile.clone());
}
ret.ssidProfile = ssidList;
}
if (metricsProfile != null) {
List<Profile> metricsList = new ArrayList<Profile>();
for (Profile profile : metricsProfile) {
metricsList.add(profile.clone());
}
ret.metricsProfile = metricsList;
}
if (bonjourGatewayProfiles != null) {
List<Profile> bonjourGatewayProfilesList = new ArrayList<Profile>();
for (Profile profile : bonjourGatewayProfiles) {
bonjourGatewayProfilesList.add(profile.clone());
}
ret.bonjourGatewayProfiles = bonjourGatewayProfilesList;
}
if (apProfile != null)
ret.apProfile = apProfile.clone();
if (rfProfile != null)
ret.rfProfile = rfProfile.clone();
if (equipmentRouting != null)
ret.equipmentRouting = equipmentRouting.clone();
if (equipmentGateway != null)
ret.equipmentGateway = equipmentGateway.clone();
if (radiusProfiles != null) {
ret.radiusProfiles = new ArrayList<>();
for (Profile radiusProfile : this.radiusProfiles) {
ret.radiusProfiles.add(radiusProfile);
}
}
if (captiveProfiles != null) {
ret.captiveProfiles = new ArrayList<>();
for (Profile cpConfig : this.captiveProfiles) {
ret.captiveProfiles.add(cpConfig);
}
}
if (blockedClients != null) {
ret.blockedClients = new ArrayList<MacAddress>();
for (MacAddress blockedClient : this.blockedClients) {
ret.blockedClients.add(blockedClient);
}
}
return ret;
}
public List<Profile> getRadiusProfiles() {
return radiusProfiles;
}
public void setRadiusProfiles(List<Profile> radiusProfiles) {
this.radiusProfiles = radiusProfiles;
}
public List<Profile> getCaptiveProfiles() {
return captiveProfiles;
}
public void setCaptiveProfiles(List<Profile> captiveProfiles) {
this.captiveProfiles = captiveProfiles;
}
public List<MacAddress> getBlockedClients() {
return blockedClients;
}
public void setBlockedClients(List<MacAddress> blockedClients) {
this.blockedClients = blockedClients;
}
public void setMetricsProfiles(List<Profile> metricsProfileList) {
metricsProfile = metricsProfileList;
}
public List<Profile> getMetricsProfiles() {
return metricsProfile;
}
@Override
public int hashCode() {
return Objects.hash(apProfile, blockedClients, bonjourGatewayProfiles, captiveProfiles, customerEquipment,
equipmentGateway, equipmentLocation, equipmentRouting, hotspotConfig, metricsProfile,
radiusProfiles, rfProfile, ssidProfile);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof OpensyncAPConfig)) {
return false;
}
OpensyncAPConfig other = (OpensyncAPConfig) obj;
return Objects.equals(apProfile, other.apProfile) && Objects.equals(blockedClients, other.blockedClients)
&& Objects.equals(bonjourGatewayProfiles, other.bonjourGatewayProfiles)
&& Objects.equals(captiveProfiles, other.captiveProfiles)
&& Objects.equals(customerEquipment, other.customerEquipment)
&& Objects.equals(equipmentGateway, other.equipmentGateway)
&& Objects.equals(equipmentLocation, other.equipmentLocation)
&& Objects.equals(equipmentRouting, other.equipmentRouting)
&& Objects.equals(hotspotConfig, other.hotspotConfig)
&& Objects.equals(metricsProfile, other.metricsProfile)
&& Objects.equals(radiusProfiles, other.radiusProfiles) && Objects.equals(rfProfile, other.rfProfile)
&& Objects.equals(ssidProfile, other.ssidProfile);
}
} }

View File

@@ -4,12 +4,13 @@ import java.util.HashSet;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.telecominfraproject.wlan.profile.models.Profile; import com.telecominfraproject.wlan.profile.models.Profile;
public class OpensyncAPHotspot20Config extends OpensyncAPBase { public class OpensyncAPHotspot20Config extends BaseJsonModel {
private static final long serialVersionUID = -8495473152523219578L; private static final long serialVersionUID = -8495473152523219578L;
public static long getSerialversionuid() { public static long getSerialversionuid() {
return serialVersionUID; return serialVersionUID;
} }
@@ -19,6 +20,40 @@ public class OpensyncAPHotspot20Config extends OpensyncAPBase {
private Set<Profile> hotspot20VenueSet; private Set<Profile> hotspot20VenueSet;
private Set<Profile> hotspot20ProviderSet; private Set<Profile> hotspot20ProviderSet;
public Set<Profile> getHotspot20ProfileSet() {
return hotspot20ProfileSet;
}
public void setHotspot20ProfileSet(Set<Profile> hotspot20ProfileSet) {
this.hotspot20ProfileSet = hotspot20ProfileSet;
}
public Set<Profile> getHotspot20OperatorSet() {
return hotspot20OperatorSet;
}
public void setHotspot20OperatorSet(Set<Profile> hotspot20OperatorSet) {
this.hotspot20OperatorSet = hotspot20OperatorSet;
}
public Set<Profile> getHotspot20VenueSet() {
return hotspot20VenueSet;
}
public void setHotspot20VenueSet(Set<Profile> hotspot20VenueSet) {
this.hotspot20VenueSet = hotspot20VenueSet;
}
public Set<Profile> getHotspot20ProviderSet() {
return hotspot20ProviderSet;
}
public void setHotspot20ProviderSet(Set<Profile> hotspot20ProviderSet) {
this.hotspot20ProviderSet = hotspot20ProviderSet;
}
@Override @Override
public OpensyncAPHotspot20Config clone() { public OpensyncAPHotspot20Config clone() {
OpensyncAPHotspot20Config ret = (OpensyncAPHotspot20Config) super.clone(); OpensyncAPHotspot20Config ret = (OpensyncAPHotspot20Config) super.clone();
@@ -42,15 +77,17 @@ public class OpensyncAPHotspot20Config extends OpensyncAPBase {
return ret; return ret;
} }
@Override
public int hashCode() {
return Objects.hash(hotspot20OperatorSet, hotspot20ProfileSet, hotspot20ProviderSet, hotspot20VenueSet);
}
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (this == obj) { if (this == obj) {
return true; return true;
} }
if (obj == null) { if (!(obj instanceof OpensyncAPHotspot20Config)) {
return false;
}
if (getClass() != obj.getClass()) {
return false; return false;
} }
OpensyncAPHotspot20Config other = (OpensyncAPHotspot20Config) obj; OpensyncAPHotspot20Config other = (OpensyncAPHotspot20Config) obj;
@@ -60,41 +97,4 @@ public class OpensyncAPHotspot20Config extends OpensyncAPBase {
&& Objects.equals(hotspot20VenueSet, other.hotspot20VenueSet); && Objects.equals(hotspot20VenueSet, other.hotspot20VenueSet);
} }
public Set<Profile> getHotspot20OperatorSet() {
return hotspot20OperatorSet;
}
public Set<Profile> getHotspot20ProfileSet() {
return hotspot20ProfileSet;
}
public Set<Profile> getHotspot20ProviderSet() {
return hotspot20ProviderSet;
}
public Set<Profile> getHotspot20VenueSet() {
return hotspot20VenueSet;
}
@Override
public int hashCode() {
return Objects.hash(hotspot20OperatorSet, hotspot20ProfileSet, hotspot20ProviderSet, hotspot20VenueSet);
}
public void setHotspot20OperatorSet(Set<Profile> hotspot20OperatorSet) {
this.hotspot20OperatorSet = hotspot20OperatorSet;
}
public void setHotspot20ProfileSet(Set<Profile> hotspot20ProfileSet) {
this.hotspot20ProfileSet = hotspot20ProfileSet;
}
public void setHotspot20ProviderSet(Set<Profile> hotspot20ProviderSet) {
this.hotspot20ProviderSet = hotspot20ProviderSet;
}
public void setHotspot20VenueSet(Set<Profile> hotspot20VenueSet) {
this.hotspot20VenueSet = hotspot20VenueSet;
}
} }

View File

@@ -2,479 +2,457 @@ package com.telecominfraproject.wlan.opensync.external.integration.models;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import com.vmware.ovsdb.protocol.operation.notation.Row; import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.vmware.ovsdb.protocol.operation.notation.Uuid; import com.vmware.ovsdb.protocol.operation.notation.Uuid;
import com.vmware.ovsdb.protocol.operation.notation.Value;
public class OpensyncAPInetState extends OpensyncAPBase {
private static final long serialVersionUID = 1707053648715030173L;
public static long getSerialversionuid() {
return serialVersionUID;
}
public String ifName;
public Map<String, String> dhcpd;
public String unpnpMode;
public String ifType;
public String softwdsMacAddr;
public boolean enabled;
public boolean sofwdsWrap;
public int vlanId;
public String netmask;
public boolean nat;
public String greRemoteInetAddr;
public String ifUuid;
public String inetAddr;
public String hwAddr;
public int mtw;
public boolean network;
public Map<String, String> dns;
public String parentIfName;
public String greIfName;
public String broadcast;
public Map<String, String> dhcpc;
public String gateway;
public String ipAssignScheme;
public String inetConfig;
public Uuid _uuid;
public Uuid version;
public String greLocalInetAddr;
public String greRemoteMacAddr;
public OpensyncAPInetState() {
dns = new HashMap<>();
dhcpc = new HashMap<>();
}
public OpensyncAPInetState(Row row) {
dns = new HashMap<>();
dhcpc = new HashMap<>();
Map<String, Value> map = row.getColumns();
if ((map.get("NAT") != null)
&& map.get("NAT").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setNat(row.getBooleanColumn("NAT"));
}
if ((map.get("enabled") != null)
&& map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setEnabled(row.getBooleanColumn("enabled"));
}
if ((map.get("if_name") != null)
&& map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setIfName(row.getStringColumn("if_name"));
}
if ((map.get("if_type") != null)
&& map.get("if_type").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setIfType(row.getStringColumn("if_type"));
}
if (map.containsKey("dhcpc")) {
this.setDhcpc(row.getMapColumn("dhcpc"));
}
if (map.containsKey("dhcpd")) {
this.setDhcpd(row.getMapColumn("dhcpd"));
}
if (map.containsKey("dns")) {
this.setDns(row.getMapColumn("dns"));
}
if (map.get("inet_addr") != null
&& map.get("inet_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setInetAddr(row.getStringColumn("inet_addr"));
}
if (map.containsKey("netmask")) {
this.setNetmask(getSingleValueFromSet(row, "netmask"));
}
if (map.get("vlan_id") != null
&& map.get("vlan_id").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVlanId(row.getIntegerColumn("vlan_id").intValue());
}
if (map.get("gre_ifname") != null
&& map.get("gre_ifname").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setGreIfName(row.getStringColumn("gre_ifname"));
}
if (map.get("gre_remote_inet_addr") != null && map.get("gre_remote_inet_addr").getClass()
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setGreRemoteInetAddr(row.getStringColumn("gre_remote_inet_addr"));
}
if (map.get("gre_local_inet_addr") != null && map.get("gre_local_inet_addr").getClass()
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setGreLocalInetAddr(row.getStringColumn("gre_local_inet_addr"));
}
if (map.get("gre_remote_mac_addr") != null && map.get("gre_remote_mac_addr").getClass()
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setGreRemoteMacAddr(row.getStringColumn("gre_remote_mac_addr"));
}
if ((map.get("ip_assign_scheme") != null) && map.get("ip_assign_scheme").getClass()
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setIpAssignScheme(row.getStringColumn("ip_assign_scheme"));
}
if ((map.get("network") != null)
&& map.get("network").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setNetwork(row.getBooleanColumn("network"));
}
if ((map.get("hwaddr") != null)
&& map.get("hwaddr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setHwAddr(row.getStringColumn("hwaddr"));
}
if ((map.get("_version") != null)
&& map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_version"));
}
if ((map.get("_uuid") != null)
&& map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_uuid"));
}
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
OpensyncAPInetState other = (OpensyncAPInetState) obj;
if (!Objects.equals(_uuid, other._uuid)) {
return false;
}
if (!Objects.equals(broadcast, other.broadcast)) {
return false;
}
if (!Objects.equals(dhcpc, other.dhcpc)) {
return false;
}
if (!Objects.equals(dhcpd, other.dhcpd)) {
return false;
}
if (!Objects.equals(dns, other.dns)) {
return false;
}
if (enabled != other.enabled) {
return false;
}
if (!Objects.equals(gateway, other.gateway)) {
return false;
}
if (!Objects.equals(greIfName, other.greIfName)) {
return false;
}
if (!Objects.equals(greLocalInetAddr, other.greLocalInetAddr)) {
return false;
}
if (!Objects.equals(greRemoteInetAddr, other.greRemoteInetAddr)) {
return false;
}
if (!Objects.equals(hwAddr, other.hwAddr)) {
return false;
}
if (!Objects.equals(ifName, other.ifName)) {
return false;
}
if (!Objects.equals(ifType, other.ifType)) {
return false;
}
if (!Objects.equals(ifUuid, other.ifUuid)) {
return false;
}
if (!Objects.equals(inetAddr, other.inetAddr)) {
return false;
}
if (!Objects.equals(inetConfig, other.inetConfig)) {
return false;
}
if (!Objects.equals(ipAssignScheme, other.ipAssignScheme)) {
return false;
}
if (mtw != other.mtw) {
return false;
}
if (nat != other.nat) {
return false;
}
if (!Objects.equals(netmask, other.netmask)) {
return false;
}
if (network != other.network) {
return false;
}
if (!Objects.equals(parentIfName, other.parentIfName)) {
return false;
}
if (!Objects.equals(greRemoteMacAddr, other.greRemoteMacAddr)) {
return false;
}
if (!Objects.equals(softwdsMacAddr, other.softwdsMacAddr)) {
return false;
}
if (sofwdsWrap != other.sofwdsWrap) {
return false;
}
if (!Objects.equals(unpnpMode, other.unpnpMode)) {
return false;
}
if (!Objects.equals(version, other.version)) {
return false;
}
if (vlanId != other.vlanId) {
return false;
}
return true;
}
public Uuid get_uuid() {
return _uuid;
}
public String getBroadcast() {
return broadcast;
}
public Map<String, String> getDhcpc() {
return dhcpc;
}
public Map<String, String> getDhcpd() {
return dhcpd;
}
public Map<String, String> getDns() {
return dns;
}
public String getGateway() {
return gateway;
}
public String getGreIfName() {
return greIfName;
}
public String getGreLocalInetAddr() {
return greLocalInetAddr;
}
public String getGreRemoteInetAddr() {
return greRemoteInetAddr;
}
public String getGreRemoteMacAddr() {
return this.greRemoteMacAddr;
}
public String getHwAddr() {
return hwAddr;
}
public String getIfName() {
return ifName;
}
public String getIfType() {
return ifType;
}
public String getIfUuid() {
return ifUuid;
}
public String getInetAddr() {
return inetAddr;
}
public String getInetConfig() {
return inetConfig;
}
public String getIpAssignScheme() {
return ipAssignScheme;
}
public int getMtw() {
return mtw;
}
public String getNetmask() {
return netmask;
}
public String getParentIfName() {
return parentIfName;
}
public String getSoftwdsMacAddr() {
return softwdsMacAddr;
}
public String getUnpnpMode() {
return unpnpMode;
}
public Uuid getVersion() {
return version;
}
public int getVlanId() {
return vlanId;
}
@Override public class OpensyncAPInetState extends BaseJsonModel {
public int hashCode() {
return Objects.hash(_uuid, broadcast, dhcpc, dhcpd, dns, enabled, gateway, greIfName, greLocalInetAddr, greRemoteInetAddr, private static final long serialVersionUID = 1707053648715030173L;
hwAddr, ifName, ifType, ifUuid, inetAddr, inetConfig, ipAssignScheme, mtw, nat, netmask, network,
parentIfName, greRemoteMacAddr, softwdsMacAddr, sofwdsWrap, unpnpMode, version, vlanId); public String ifName;
} public Map<String, String> dhcpd;
public String unpnpMode;
public String ifType;
public String softwdsMacAddr;
public boolean enabled;
public boolean sofwdsWrap;
public int vlanId;
public String netmask;
public boolean nat;
public String greRemoteInetAddr;
public String ifUuid;
public String inetAddr;
public String hwAddr;
public int mtw;
public boolean network;
public Map<String, String> dns;
public String parentIfName;
public String greIfName;
public String broadcast;
public Map<String, String> dhcpc;
public String gateway;
public String ipAssignScheme;
public String inetConfig;
public Uuid _uuid;
public Uuid version;
public String greLocalInetAddr;
public String greRemoteMacAddr;
public OpensyncAPInetState() {
super();
dns = new HashMap<>();
dhcpc = new HashMap<>();
}
public String getIfName() {
return ifName;
}
public void setIfName(String ifName) {
this.ifName = ifName;
}
public Map<String, String> getDhcpd() {
return dhcpd;
}
public void setDhcpd(Map<String, String> dhcpd) {
this.dhcpd = dhcpd;
}
public String getUnpnpMode() {
return unpnpMode;
}
public void setUnpnpMode(String unpnpMode) {
this.unpnpMode = unpnpMode;
}
public String getIfType() {
return ifType;
}
public void setIfType(String ifType) {
this.ifType = ifType;
}
public String getSoftwdsMacAddr() {
return softwdsMacAddr;
}
public void setSoftwdsMacAddr(String softwdsMacAddr) {
this.softwdsMacAddr = softwdsMacAddr;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public boolean isSofwdsWrap() {
return sofwdsWrap;
}
public void setSofwdsWrap(boolean sofwdsWrap) {
this.sofwdsWrap = sofwdsWrap;
}
public int getVlanId() {
return vlanId;
}
public void setVlanId(int vlanId) {
this.vlanId = vlanId;
}
public String getNetmask() {
return netmask;
}
public void setNetmask(String netmask) {
this.netmask = netmask;
}
public boolean isNat() {
return nat;
}
public void setNat(boolean nat) {
this.nat = nat;
}
public String getGreRemoteInetAddr() {
return greRemoteInetAddr;
}
public void setGreRemoteInetAddr(String greRemoteInetAddr) {
this.greRemoteInetAddr = greRemoteInetAddr;
}
public String getIfUuid() {
return ifUuid;
}
public boolean isEnabled() { public void setIfUuid(String ifUuid) {
return enabled; this.ifUuid = ifUuid;
} }
public boolean isNat() { public String getInetAddr() {
return nat; return inetAddr;
} }
public boolean isNetwork() { public void setInetAddr(String inetAddr) {
return network; this.inetAddr = inetAddr;
} }
public boolean isSofwdsWrap() { public String getHwAddr() {
return sofwdsWrap; return hwAddr;
} }
public void set_uuid(Uuid _uuid) { public void setHwAddr(String hwAddr) {
this._uuid = _uuid; this.hwAddr = hwAddr;
} }
public void setBroadcast(String broadcast) { public int getMtw() {
this.broadcast = broadcast; return mtw;
} }
public void setDhcpc(Map<String, String> dhcpc) { public void setMtw(int mtw) {
this.dhcpc = dhcpc; this.mtw = mtw;
} }
public void setDhcpd(Map<String, String> dhcpd) { public boolean isNetwork() {
this.dhcpd = dhcpd; return network;
} }
public void setDns(Map<String, String> dns) { public void setNetwork(boolean network) {
this.dns = dns; this.network = network;
} }
public void setEnabled(boolean enabled) { public Map<String, String> getDns() {
this.enabled = enabled; return dns;
} }
public void setGateway(String gateway) { public void setDns(Map<String, String> dns) {
this.gateway = gateway; this.dns = dns;
} }
public void setGreIfName(String greIfName) { public String getParentIfName() {
this.greIfName = greIfName; return parentIfName;
} }
public void setGreLocalInetAddr(String greLocalInetAddr) { public void setParentIfName(String parentIfName) {
this.greLocalInetAddr = greLocalInetAddr; this.parentIfName = parentIfName;
}
}
public String getGreIfName() {
public void setGreRemoteInetAddr(String greRemoteInetAddr) { return greIfName;
this.greRemoteInetAddr = greRemoteInetAddr; }
}
public void setGreIfName(String greIfName) {
public void setGreRemoteMacAddr(String greRemoteMacAddr) { this.greIfName = greIfName;
this.greRemoteMacAddr = greRemoteMacAddr; }
}
public String getBroadcast() {
public void setHwAddr(String hwAddr) { return broadcast;
this.hwAddr = hwAddr; }
}
public void setBroadcast(String broadcast) {
public void setIfName(String ifName) { this.broadcast = broadcast;
this.ifName = ifName; }
}
public Map<String, String> getDhcpc() {
public void setIfType(String ifType) { return dhcpc;
this.ifType = ifType; }
}
public void setDhcpc(Map<String, String> dhcpc) {
public void setIfUuid(String ifUuid) { this.dhcpc = dhcpc;
this.ifUuid = ifUuid; }
}
public String getGateway() {
public void setInetAddr(String inetAddr) { return gateway;
this.inetAddr = inetAddr; }
}
public void setGateway(String gateway) {
public void setInetConfig(String inetConfig) { this.gateway = gateway;
this.inetConfig = inetConfig; }
}
public String getIpAssignScheme() {
public void setIpAssignScheme(String ipAssignScheme) { return ipAssignScheme;
this.ipAssignScheme = ipAssignScheme; }
}
public void setIpAssignScheme(String ipAssignScheme) {
public void setMtw(int mtw) { this.ipAssignScheme = ipAssignScheme;
this.mtw = mtw; }
}
public String getInetConfig() {
public void setNat(boolean nat) { return inetConfig;
this.nat = nat; }
}
public void setInetConfig(String inetConfig) {
public void setNetmask(String netmask) { this.inetConfig = inetConfig;
this.netmask = netmask; }
}
public static long getSerialversionuid() {
public void setNetwork(boolean network) { return serialVersionUID;
this.network = network; }
}
public Uuid get_uuid() {
public void setParentIfName(String parentIfName) { return _uuid;
this.parentIfName = parentIfName; }
}
public void set_uuid(Uuid _uuid) {
public void setSoftwdsMacAddr(String softwdsMacAddr) { this._uuid = _uuid;
this.softwdsMacAddr = softwdsMacAddr; }
}
public Uuid getVersion() {
public void setSofwdsWrap(boolean sofwdsWrap) { return version;
this.sofwdsWrap = sofwdsWrap; }
}
public void setVersion(Uuid version) {
public void setUnpnpMode(String unpnpMode) { this.version = version;
this.unpnpMode = unpnpMode; }
}
public void setGreLocalInetAddr(String greLocalInetAddr) {
public void setVersion(Uuid version) { this.greLocalInetAddr = greLocalInetAddr;
this.version = version;
} }
public void setVlanId(int vlanId) { public String getGreLocalInetAddr() {
this.vlanId = vlanId; return greLocalInetAddr;
} }
@Override public void setGreRemoteMacAddr(String greRemoteMacAddr) {
public String toString() { this.greRemoteMacAddr = greRemoteMacAddr;
return "OpensyncAPInetState [ifName=" + ifName + ", dhcpd=" + dhcpd + ", unpnpMode=" + unpnpMode + ", ifType=" }
+ ifType + ", softwdsMacAddr=" + softwdsMacAddr + ", enabled=" + enabled + ", sofwdsWrap=" + sofwdsWrap
+ ", vlanId=" + vlanId + ", netmask=" + netmask + ", nat=" + nat + ", greRemoteInetAddr=" public String getGreRemoteMacAddr(){
+ greRemoteInetAddr + ", ifUuid=" + ifUuid + ", inetAddr=" + inetAddr + ", hwAddr=" + hwAddr + ", mtw=" return this.greRemoteMacAddr;
+ mtw + ", network=" + network + ", dns=" + dns + ", parentIfName=" + parentIfName + ", greIfName=" }
+ greIfName + ", broadcast=" + broadcast + ", dhcpc=" + dhcpc + ", gateway=" + gateway @Override
+ ", ipAssignScheme=" + ipAssignScheme + ", inetConfig=" + inetConfig + ", _uuid=" + _uuid public int hashCode() {
+ ", version=" + version + ", greLocalInetAddr=" + greLocalInetAddr + ", greRemoteMacAddr=" final int prime = 31;
+ greRemoteMacAddr + "]"; int result = 1;
} result = prime * result + ((_uuid == null) ? 0 : _uuid.hashCode());
result = prime * result + ((broadcast == null) ? 0 : broadcast.hashCode());
result = prime * result + ((dhcpc == null) ? 0 : dhcpc.hashCode());
result = prime * result + ((dhcpd == null) ? 0 : dhcpd.hashCode());
result = prime * result + ((dns == null) ? 0 : dns.hashCode());
result = prime * result + (enabled ? 1231 : 1237);
result = prime * result + ((gateway == null) ? 0 : gateway.hashCode());
result = prime * result + ((greIfName == null) ? 0 : greIfName.hashCode());
result = prime * result + ((greLocalInetAddr == null) ? 0 : greLocalInetAddr.hashCode());
result = prime * result + ((greRemoteInetAddr == null) ? 0 : greRemoteInetAddr.hashCode());
result = prime * result + ((hwAddr == null) ? 0 : hwAddr.hashCode());
result = prime * result + ((ifName == null) ? 0 : ifName.hashCode());
result = prime * result + ((ifType == null) ? 0 : ifType.hashCode());
result = prime * result + ((ifUuid == null) ? 0 : ifUuid.hashCode());
result = prime * result + ((inetAddr == null) ? 0 : inetAddr.hashCode());
result = prime * result + ((inetConfig == null) ? 0 : inetConfig.hashCode());
result = prime * result + ((ipAssignScheme == null) ? 0 : ipAssignScheme.hashCode());
result = prime * result + mtw;
result = prime * result + (nat ? 1231 : 1237);
result = prime * result + ((netmask == null) ? 0 : netmask.hashCode());
result = prime * result + (network ? 1231 : 1237);
result = prime * result + ((parentIfName == null) ? 0 : parentIfName.hashCode());
result = prime * result + ((greRemoteMacAddr == null) ? 0 : greRemoteMacAddr.hashCode());
result = prime * result + ((softwdsMacAddr == null) ? 0 : softwdsMacAddr.hashCode());
result = prime * result + (sofwdsWrap ? 1231 : 1237);
result = prime * result + ((unpnpMode == null) ? 0 : unpnpMode.hashCode());
result = prime * result + ((version == null) ? 0 : version.hashCode());
result = prime * result + vlanId;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
OpensyncAPInetState other = (OpensyncAPInetState) obj;
if (_uuid == null) {
if (other._uuid != null)
return false;
} else if (!_uuid.equals(other._uuid))
return false;
if (broadcast == null) {
if (other.broadcast != null)
return false;
} else if (!broadcast.equals(other.broadcast))
return false;
if (dhcpc == null) {
if (other.dhcpc != null)
return false;
} else if (!dhcpc.equals(other.dhcpc))
return false;
if (dhcpd == null) {
if (other.dhcpd != null)
return false;
} else if (!dhcpd.equals(other.dhcpd))
return false;
if (dns == null) {
if (other.dns != null)
return false;
} else if (!dns.equals(other.dns))
return false;
if (enabled != other.enabled)
return false;
if (gateway == null) {
if (other.gateway != null)
return false;
} else if (!gateway.equals(other.gateway))
return false;
if (greIfName == null) {
if (other.greIfName != null)
return false;
} else if (!greIfName.equals(other.greIfName))
return false;
if (greLocalInetAddr == null) {
if (other.greLocalInetAddr != null)
return false;
} else if (!greLocalInetAddr.equals(other.greLocalInetAddr))
return false;
if (greRemoteInetAddr == null) {
if (other.greRemoteInetAddr != null)
return false;
} else if (!greRemoteInetAddr.equals(other.greRemoteInetAddr))
return false;
if (hwAddr == null) {
if (other.hwAddr != null)
return false;
} else if (!hwAddr.equals(other.hwAddr))
return false;
if (ifName == null) {
if (other.ifName != null)
return false;
} else if (!ifName.equals(other.ifName))
return false;
if (ifType == null) {
if (other.ifType != null)
return false;
} else if (!ifType.equals(other.ifType))
return false;
if (ifUuid == null) {
if (other.ifUuid != null)
return false;
} else if (!ifUuid.equals(other.ifUuid))
return false;
if (inetAddr == null) {
if (other.inetAddr != null)
return false;
} else if (!inetAddr.equals(other.inetAddr))
return false;
if (inetConfig == null) {
if (other.inetConfig != null)
return false;
} else if (!inetConfig.equals(other.inetConfig))
return false;
if (ipAssignScheme == null) {
if (other.ipAssignScheme != null)
return false;
} else if (!ipAssignScheme.equals(other.ipAssignScheme))
return false;
if (mtw != other.mtw)
return false;
if (nat != other.nat)
return false;
if (netmask == null) {
if (other.netmask != null)
return false;
} else if (!netmask.equals(other.netmask))
return false;
if (network != other.network)
return false;
if (parentIfName == null) {
if (other.parentIfName != null)
return false;
} else if (!parentIfName.equals(other.parentIfName))
return false;
if (greRemoteMacAddr == null) {
if (other.greRemoteMacAddr != null)
return false;
} else if (!greRemoteMacAddr.equals(other.greRemoteMacAddr))
return false;
if (softwdsMacAddr == null) {
if (other.softwdsMacAddr != null)
return false;
} else if (!softwdsMacAddr.equals(other.softwdsMacAddr))
return false;
if (sofwdsWrap != other.sofwdsWrap)
return false;
if (unpnpMode == null) {
if (other.unpnpMode != null)
return false;
} else if (!unpnpMode.equals(other.unpnpMode))
return false;
if (version == null) {
if (other.version != null)
return false;
} else if (!version.equals(other.version))
return false;
if (vlanId != other.vlanId)
return false;
return true;
}
@Override
public String toString() {
return "OpensyncAPInetState [ifName=" + ifName + ", dhcpd=" + dhcpd + ", unpnpMode=" + unpnpMode + ", ifType="
+ ifType + ", softwdsMacAddr=" + softwdsMacAddr + ", enabled=" + enabled + ", sofwdsWrap=" + sofwdsWrap
+ ", vlanId=" + vlanId + ", netmask=" + netmask + ", nat=" + nat + ", greRemoteInetAddr="
+ greRemoteInetAddr + ", ifUuid=" + ifUuid + ", inetAddr=" + inetAddr + ", hwAddr=" + hwAddr + ", mtw="
+ mtw + ", network=" + network + ", dns=" + dns + ", parentIfName=" + parentIfName + ", greIfName="
+ greIfName + ", broadcast=" + broadcast + ", dhcpc=" + dhcpc + ", gateway=" + gateway
+ ", ipAssignScheme=" + ipAssignScheme + ", inetConfig=" + inetConfig + ", _uuid=" + _uuid
+ ", version=" + version + ", greLocalInetAddr=" + greLocalInetAddr + ", greRemoteMacAddr="
+ greRemoteMacAddr + "]";
}
} }

View File

@@ -1,6 +1,8 @@
package com.telecominfraproject.wlan.opensync.external.integration.models; package com.telecominfraproject.wlan.opensync.external.integration.models;
public class OpensyncAPRadioConfig extends OpensyncAPBase { import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
public class OpensyncAPRadioConfig extends BaseJsonModel {
private static final long serialVersionUID = 5683558403622855381L; private static final long serialVersionUID = 5683558403622855381L;
@@ -8,41 +10,41 @@ public class OpensyncAPRadioConfig extends OpensyncAPBase {
private int radioChannel24G; private int radioChannel24G;
private int radioChannel5LG; private int radioChannel5LG;
private int radioChannel5HG; private int radioChannel5HG;
@Override
public OpensyncAPRadioConfig clone() {
return (OpensyncAPRadioConfig) super.clone();
}
public String getCountry() {
return country;
}
public int getRadioChannel24G() { public int getRadioChannel24G() {
return radioChannel24G; return radioChannel24G;
} }
public int getRadioChannel5HG() {
return radioChannel5HG;
}
public int getRadioChannel5LG() {
return radioChannel5LG;
}
public void setCountry(String country) {
this.country = country;
}
public void setRadioChannel24G(int radioChannel24G) { public void setRadioChannel24G(int radioChannel24G) {
this.radioChannel24G = radioChannel24G; this.radioChannel24G = radioChannel24G;
} }
public void setRadioChannel5HG(int radioChannel5HG) { public int getRadioChannel5LG() {
this.radioChannel5HG = radioChannel5HG; return radioChannel5LG;
} }
public void setRadioChannel5LG(int radioChannel5LG) { public void setRadioChannel5LG(int radioChannel5LG) {
this.radioChannel5LG = radioChannel5LG; this.radioChannel5LG = radioChannel5LG;
} }
public int getRadioChannel5HG() {
return radioChannel5HG;
}
public void setRadioChannel5HG(int radioChannel5HG) {
this.radioChannel5HG = radioChannel5HG;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
@Override
public OpensyncAPRadioConfig clone() {
return (OpensyncAPRadioConfig)super.clone();
}
} }

View File

@@ -1,30 +1,27 @@
/** /**
* *
*/ */
package com.telecominfraproject.wlan.opensync.external.integration.models; package com.telecominfraproject.wlan.opensync.external.integration.models;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.vmware.ovsdb.protocol.operation.notation.Row; import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.vmware.ovsdb.protocol.operation.notation.Uuid; import com.vmware.ovsdb.protocol.operation.notation.Uuid;
import com.vmware.ovsdb.protocol.operation.notation.Value;
/** /**
* @author mikehansen * @author mikehansen
* *
*/ */
public class OpensyncAPRadioState extends OpensyncAPBase { public class OpensyncAPRadioState extends BaseJsonModel {
private static final long serialVersionUID = 5003143778489404219L; private static final long serialVersionUID = 5003143778489404219L;
public static long getSerialversionuid() {
return serialVersionUID;
}
public int temperatureControl; public int temperatureControl;
public boolean thermalDowngraded; public boolean thermalDowngraded;
public boolean dfsDemo; public boolean dfsDemo;
@@ -51,15 +48,10 @@ public class OpensyncAPRadioState extends OpensyncAPBase {
public Map<String, String> hwParams; public Map<String, String> hwParams;
public RadioType freqBand; public RadioType freqBand;
public int thermalIntegration; public int thermalIntegration;
public Set<Uuid> vifStates; public Set<Uuid> vifStates;
public String channelMode;
public Uuid _uuid;
public Uuid version;
public OpensyncAPRadioState() { public OpensyncAPRadioState() {
super();
allowedChannels = new HashSet<>(); allowedChannels = new HashSet<>();
hwConfig = new HashMap<>(); hwConfig = new HashMap<>();
channels = new HashMap<>(); channels = new HashMap<>();
@@ -67,334 +59,252 @@ public class OpensyncAPRadioState extends OpensyncAPBase {
vifStates = new HashSet<>(); vifStates = new HashSet<>();
} }
public OpensyncAPRadioState(Row row) { public String channelMode;
this(); public Uuid _uuid;
public Uuid version;
Map<String, Value> map = row.getColumns();
if ((map.get("mac") != null)
&& map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setMac(row.getStringColumn("mac"));
}
if ((map.get("channel") != null)
&& map.get("channel").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setChannel(row.getIntegerColumn("channel").intValue());
}
if ((map.get("freq_band") != null)
&& map.get("freq_band").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
String frequencyBand = row.getStringColumn("freq_band");
switch (frequencyBand) {
case "2.4G":
this.setFreqBand(RadioType.is2dot4GHz);
break;
case "5G":
this.setFreqBand(RadioType.is5GHz);
break;
case "5GL":
this.setFreqBand(RadioType.is5GHzL);
break;
case "5GU":
this.setFreqBand(RadioType.is5GHzU);
break;
default:
this.setFreqBand(RadioType.UNSUPPORTED);
}
}
if ((map.get("if_name") != null)
&& map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setIfName(row.getStringColumn("if_name"));
}
if ((map.get("channel_mode") != null)
&& map.get("channel_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setChannelMode(row.getStringColumn("channel_mode"));
}
if ((map.get("country") != null)
&& map.get("country").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setCountry(row.getStringColumn("country").toUpperCase());
}
if ((map.get("enabled") != null)
&& map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setEnabled(row.getBooleanColumn("enabled"));
}
if ((map.get("ht_mode") != null)
&& map.get("ht_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setHtMode(row.getStringColumn("ht_mode"));
}
if ((map.get("tx_power") != null)
&& map.get("tx_power").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setTxPower(row.getIntegerColumn("tx_power").intValue());
}
if ((map.get("hw_config") != null)
&& map.get("hw_config").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Map.class)) {
this.setHwConfig(row.getMapColumn("hw_config"));
}
if ((map.get("_version") != null)
&& map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_version"));
}
if ((map.get("_uuid") != null)
&& map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_uuid"));
}
if (map.get("allowed_channels") != null) {
Set<Long> allowedChannels = getSet(row, "allowed_channels");
Set<Integer> allowed = new HashSet<>();
for (Long channel : allowedChannels) {
allowed.add(channel.intValue());
}
this.setAllowedChannels(allowed);
}
if (map.get("channels") != null) {
Map<String, String> channels = row.getMapColumn("channels");
this.setChannels(channels);
}
Set<Uuid> vifStates = row.getSetColumn("vif_states");
this.setVifStates(vifStates);
}
public Uuid get_uuid() {
return _uuid;
}
public Set<Integer> getAllowedChannels() {
return allowedChannels;
}
public int getBcnInt() {
return bcnInt;
}
public int getChannel() {
return channel;
}
public String getChannelMode() {
return channelMode;
}
public Map<String, String> getChannels() {
return channels;
}
public int getChannelSync() {
return channelSync;
}
public String getCountry() {
return country;
}
public RadioType getFreqBand() {
return freqBand;
}
public String getHtMode() {
return htMode;
}
public Map<String, String> getHwConfig() {
return hwConfig;
}
public String getHwMode() {
return hwMode;
}
public Map<String, String> getHwParams() {
return hwParams;
}
public int getHwType() {
return hwType;
}
public String getIfName() {
return ifName;
}
public String getMac() {
return mac;
}
public String getRadar() {
return radar;
}
public int getTemperatureControl() { public int getTemperatureControl() {
return temperatureControl; return temperatureControl;
} }
public int getThermalDowngradeTemp() {
return thermalDowngradeTemp;
}
public int getThermalIntegration() {
return thermalIntegration;
}
public int getThermalShutdown() {
return thermalShutdown;
}
public int getThermalTxChainmask() {
return thermalTxChainmask;
}
public int getThermalUpgradeTemp() {
return thermalUpgradeTemp;
}
public int getTxChainmask() {
return txChainmask;
}
public int getTxPower() {
return txPower;
}
public Uuid getVersion() {
return version;
}
public Set<Uuid> getVifStates() {
return vifStates;
}
public boolean isDfsDemo() {
return dfsDemo;
}
public boolean isEnabled() {
return enabled;
}
public boolean isThermalDowngraded() {
return thermalDowngraded;
}
public void set_uuid(Uuid _uuid) {
this._uuid = _uuid;
}
public void setAllowedChannels(Set<Integer> allowedChannels) {
this.allowedChannels = allowedChannels;
}
public void setBcnInt(int bcnInt) {
this.bcnInt = bcnInt;
}
public void setChannel(int channel) {
this.channel = channel;
}
public void setChannelMode(String channelMode) {
this.channelMode = channelMode;
}
public void setChannels(Map<String, String> channels) {
this.channels = channels;
}
public void setChannelSync(int channelSync) {
this.channelSync = channelSync;
}
public void setCountry(String country) {
this.country = country;
}
public void setDfsDemo(boolean dfsDemo) {
this.dfsDemo = dfsDemo;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public void setFreqBand(RadioType freqBand) {
this.freqBand = freqBand;
}
public void setHtMode(String htMode) {
this.htMode = htMode;
}
public void setHwConfig(Map<String, String> hwConfig) {
this.hwConfig = hwConfig;
}
public void setHwMode(String hwMode) {
this.hwMode = hwMode;
}
public void setHwParams(Map<String, String> hwParams) {
this.hwParams = hwParams;
}
public void setHwType(int hwType) {
this.hwType = hwType;
}
public void setIfName(String ifName) {
this.ifName = ifName;
}
public void setMac(String mac) {
this.mac = mac;
}
public void setRadar(String radar) {
this.radar = radar;
}
public void setTemperatureControl(int temperatureControl) { public void setTemperatureControl(int temperatureControl) {
this.temperatureControl = temperatureControl; this.temperatureControl = temperatureControl;
} }
public boolean isThermalDowngraded() {
return thermalDowngraded;
}
public void setThermalDowngraded(boolean thermalDowngraded) { public void setThermalDowngraded(boolean thermalDowngraded) {
this.thermalDowngraded = thermalDowngraded; this.thermalDowngraded = thermalDowngraded;
} }
public void setThermalDowngradeTemp(int thermalDowngradeTemp) { public boolean isDfsDemo() {
this.thermalDowngradeTemp = thermalDowngradeTemp; return dfsDemo;
} }
public void setThermalIntegration(int thermalIntegration) { public void setDfsDemo(boolean dfsDemo) {
this.thermalIntegration = thermalIntegration; this.dfsDemo = dfsDemo;
} }
public void setThermalShutdown(int thermalShutdown) { public String getIfName() {
this.thermalShutdown = thermalShutdown; return ifName;
} }
public void setThermalTxChainmask(int thermalTxChainmask) { public void setIfName(String ifName) {
this.thermalTxChainmask = thermalTxChainmask; this.ifName = ifName;
} }
public void setThermalUpgradeTemp(int thermalUpgradeTemp) { public String getMac() {
this.thermalUpgradeTemp = thermalUpgradeTemp; return mac;
} }
public void setTxChainmask(int txChainmask) { public void setMac(String mac) {
this.txChainmask = txChainmask; this.mac = mac;
} }
public void setTxPower(int txPower) { public Set<Uuid> getVifStates() {
this.txPower = txPower; return vifStates;
}
public void setVersion(Uuid version) {
this.version = version;
} }
public void setVifStates(Set<Uuid> vifStates) { public void setVifStates(Set<Uuid> vifStates) {
this.vifStates = vifStates; this.vifStates = vifStates;
} }
public int getBcnInt() {
return bcnInt;
}
public void setBcnInt(int bcnInt) {
this.bcnInt = bcnInt;
}
public int getThermalTxChainmask() {
return thermalTxChainmask;
}
public void setThermalTxChainmask(int thermalTxChainmask) {
this.thermalTxChainmask = thermalTxChainmask;
}
public Set<Integer> getAllowedChannels() {
return allowedChannels;
}
public void setAllowedChannels(Set<Integer> allowedChannels) {
this.allowedChannels = allowedChannels;
}
public int getThermalShutdown() {
return thermalShutdown;
}
public void setThermalShutdown(int thermalShutdown) {
this.thermalShutdown = thermalShutdown;
}
public int getChannelSync() {
return channelSync;
}
public void setChannelSync(int channelSync) {
this.channelSync = channelSync;
}
public int getHwType() {
return hwType;
}
public void setHwType(int hwType) {
this.hwType = hwType;
}
public int getTxChainmask() {
return txChainmask;
}
public void setTxChainmask(int txChainmask) {
this.txChainmask = txChainmask;
}
public String getRadar() {
return radar;
}
public void setRadar(String radar) {
this.radar = radar;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public Map<String, String> getHwConfig() {
return hwConfig;
}
public void setHwConfig(Map<String, String> hwConfig) {
this.hwConfig = hwConfig;
}
public int getChannel() {
return channel;
}
public void setChannel(int channel) {
this.channel = channel;
}
public int getTxPower() {
return txPower;
}
public void setTxPower(int txPower) {
this.txPower = txPower;
}
public String getHtMode() {
return htMode;
}
public void setHtMode(String htMode) {
this.htMode = htMode;
}
public int getThermalDowngradeTemp() {
return thermalDowngradeTemp;
}
public void setThermalDowngradeTemp(int thermalDowngradeTemp) {
this.thermalDowngradeTemp = thermalDowngradeTemp;
}
public String getHwMode() {
return hwMode;
}
public void setHwMode(String hwMode) {
this.hwMode = hwMode;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public Map<String, String> getChannels() {
return channels;
}
public void setChannels(Map<String, String> channels) {
this.channels = channels;
}
public int getThermalUpgradeTemp() {
return thermalUpgradeTemp;
}
public void setThermalUpgradeTemp(int thermalUpgradeTemp) {
this.thermalUpgradeTemp = thermalUpgradeTemp;
}
public Map<String, String> getHwParams() {
return hwParams;
}
public void setHwParams(Map<String, String> hwParams) {
this.hwParams = hwParams;
}
public RadioType getFreqBand() {
return freqBand;
}
public void setFreqBand(RadioType freqBand) {
this.freqBand = freqBand;
}
public int getThermalIntegration() {
return thermalIntegration;
}
public void setThermalIntegration(int thermalIntegration) {
this.thermalIntegration = thermalIntegration;
}
public String getChannelMode() {
return channelMode;
}
public void setChannelMode(String channelMode) {
this.channelMode = channelMode;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public Uuid get_uuid() {
return _uuid;
}
public void set_uuid(Uuid _uuid) {
this._uuid = _uuid;
}
public Uuid getVersion() {
return version;
}
public void setVersion(Uuid version) {
this.version = version;
}
} }

View File

@@ -1,8 +1,9 @@
package com.telecominfraproject.wlan.opensync.external.integration.models; package com.telecominfraproject.wlan.opensync.external.integration.models;
import com.telecominfraproject.wlan.core.model.equipment.RadioType; import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
public class OpensyncAPSsidConfig extends OpensyncAPBase { public class OpensyncAPSsidConfig extends BaseJsonModel {
private static final long serialVersionUID = -8540144450360788799L; private static final long serialVersionUID = -8540144450360788799L;
@@ -12,30 +13,45 @@ public class OpensyncAPSsidConfig extends OpensyncAPBase {
private String key; private String key;
private String mode; private String mode;
private boolean broadcast; private boolean broadcast;
public RadioType getRadioType() {
return radioType;
}
@Override public void setRadioType(RadioType radioType) {
public OpensyncAPSsidConfig clone() { this.radioType = radioType;
return (OpensyncAPSsidConfig) super.clone(); }
public String getSsid() {
return ssid;
}
public void setSsid(String ssid) {
this.ssid = ssid;
} }
public String getEncryption() { public String getEncryption() {
return encryption; return encryption;
} }
public void setEncryption(String encryption) {
this.encryption = encryption;
}
public String getKey() { public String getKey() {
return key; return key;
} }
public void setKey(String key) {
this.key = key;
}
public String getMode() { public String getMode() {
return mode; return mode;
} }
public RadioType getRadioType() { public void setMode(String mode) {
return radioType; this.mode = mode;
}
public String getSsid() {
return ssid;
} }
public boolean isBroadcast() { public boolean isBroadcast() {
@@ -46,24 +62,9 @@ public class OpensyncAPSsidConfig extends OpensyncAPBase {
this.broadcast = broadcast; this.broadcast = broadcast;
} }
public void setEncryption(String encryption) { @Override
this.encryption = encryption; public OpensyncAPSsidConfig clone() {
} return (OpensyncAPSsidConfig)super.clone();
public void setKey(String key) {
this.key = key;
}
public void setMode(String mode) {
this.mode = mode;
}
public void setRadioType(RadioType radioType) {
this.radioType = radioType;
}
public void setSsid(String ssid) {
this.ssid = ssid;
} }
} }

View File

@@ -6,18 +6,13 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import com.vmware.ovsdb.protocol.operation.notation.Row; import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.vmware.ovsdb.protocol.operation.notation.Uuid; import com.vmware.ovsdb.protocol.operation.notation.Uuid;
import com.vmware.ovsdb.protocol.operation.notation.Value;
public class OpensyncAPVIFState extends OpensyncAPBase { public class OpensyncAPVIFState extends BaseJsonModel {
private static final long serialVersionUID = -4916251246542770881L; private static final long serialVersionUID = -4916251246542770881L;
public static long getSerialversionuid() {
return serialVersionUID;
}
public String ifName; public String ifName;
public int vifRadioIdx; public int vifRadioIdx;
public String parent; public String parent;
@@ -29,8 +24,8 @@ public class OpensyncAPVIFState extends OpensyncAPBase {
public String ssid; public String ssid;
public Map<String, String> security; public Map<String, String> security;
public String macList; public String macList;
public List<Uuid> associatedClients; public List<Uuid> associatedClients;
public boolean enabled; public boolean enabled;
public int vlanId; public int vlanId;
public int btm; public int btm;
@@ -45,321 +40,232 @@ public class OpensyncAPVIFState extends OpensyncAPBase {
public boolean dynamicBeacon; public boolean dynamicBeacon;
public int channel; public int channel;
public Uuid _uuid; public Uuid _uuid;
public Uuid version; public Uuid version;
public OpensyncAPVIFState() {
security = new HashMap<>();
associatedClients = new ArrayList<>();
}
public OpensyncAPVIFState(Row row) {
Map<String, Value> map = row.getColumns();
if ((map.get("mac") != null)
&& map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setMac(row.getStringColumn("mac"));
}
if ((map.get("bridge") != null)
&& map.get("bridge").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setBridge(row.getStringColumn("bridge"));
}
if ((map.get("btm") != null)
&& map.get("btm").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setBtm(row.getIntegerColumn("btm").intValue());
}
if ((map.get("channel") != null)
&& map.get("channel").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setChannel(row.getIntegerColumn("channel").intValue());
}
if ((map.get("enabled") != null)
&& map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setEnabled(row.getBooleanColumn("enabled"));
}
Long ftPsk = getSingleValueFromSet(row, "ft_psk");
if (ftPsk != null) {
this.setFtPsk(ftPsk.intValue());
}
Long ftMobilityDomain = getSingleValueFromSet(row, "ft_mobility_domain");
if (ftMobilityDomain != null) {
this.setFtMobilityDomain(ftMobilityDomain.intValue());
}
if ((map.get("group_rekey") != null)
&& map.get("group_rekey").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setGroupRekey(row.getIntegerColumn("group_rekey").intValue());
}
if ((map.get("if_name") != null)
&& map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setIfName(row.getStringColumn("if_name"));
}
if ((map.get("mode") != null)
&& map.get("mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setMode(row.getStringColumn("mode"));
}
if ((map.get("rrm") != null)
&& map.get("rrm").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setRrm(row.getIntegerColumn("rrm").intValue());
}
if ((map.get("ssid") != null)
&& map.get("ssid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setSsid(row.getStringColumn("ssid"));
}
if ((map.get("ssid_broadcast") != null) && map.get("ssid_broadcast").getClass()
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setSsidBroadcast(row.getStringColumn("ssid_broadcast"));
}
if ((map.get("uapsd_enable") != null)
&& map.get("uapsd_enable").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setUapsdEnable(row.getBooleanColumn("uapsd_enable"));
}
if ((map.get("vif_radio_idx") != null) && map.get("vif_radio_idx").getClass()
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVifRadioIdx(row.getIntegerColumn("vif_radio_idx").intValue());
}
List<Uuid> associatedClientsList = new ArrayList<>();
Set<Uuid> clients = row.getSetColumn("associated_clients");
associatedClientsList.addAll(clients);
this.setAssociatedClients(associatedClientsList);
if (map.get("security") != null) {
this.setSecurity(row.getMapColumn("security"));
}
if ((map.get("_version") != null)
&& map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_version"));
}
if ((map.get("_uuid") != null)
&& map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_uuid"));
}
}
public Uuid get_uuid() {
return _uuid;
}
public List<Uuid> getAssociatedClients() {
return associatedClients;
}
public String getBridge() {
return bridge;
}
public int getBtm() {
return btm;
}
public int getChannel() {
return channel;
}
public int getFtMobilityDomain() {
return ftMobilityDomain;
}
public int getFtPsk() {
return ftPsk;
}
public int getGroupRekey() {
return groupRekey;
}
public String getIfName() { public String getIfName() {
return ifName; return ifName;
} }
public String getMac() { public OpensyncAPVIFState() {
return mac; super();
} security = new HashMap<>();
associatedClients = new ArrayList<>();
public String getMacList() {
return macList;
}
public String getMinHwMode() {
return minHwMode;
}
public String getMode() {
return mode;
}
public String getParent() {
return parent;
}
public int getRrm() {
return rrm;
}
public Map<String, String> getSecurity() {
return security;
}
public String getSsid() {
return ssid;
}
public String getSsidBroadcast() {
return ssidBroadcast;
}
public String getState() {
return state;
}
public Uuid getVersion() {
return version;
}
public int getVifRadioIdx() {
return vifRadioIdx;
}
public int getVlanId() {
return vlanId;
}
public boolean isApBridge() {
return apBridge;
}
public boolean isDynamicBeacon() {
return dynamicBeacon;
}
public boolean isEnabled() {
return enabled;
}
public boolean isUapsdEnable() {
return uapsdEnable;
}
public boolean isWds() {
return wds;
}
public void set_uuid(Uuid _uuid) {
this._uuid = _uuid;
}
public void setApBridge(boolean apBridge) {
this.apBridge = apBridge;
}
public void setAssociatedClients(List<Uuid> list) {
this.associatedClients = list;
}
public void setBridge(String bridge) {
this.bridge = bridge;
}
public void setBtm(int btm) {
this.btm = btm;
}
public void setChannel(int channel) {
this.channel = channel;
}
public void setDynamicBeacon(boolean dynamicBeacon) {
this.dynamicBeacon = dynamicBeacon;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public void setFtMobilityDomain(int ftMobilityDomain) {
this.ftMobilityDomain = ftMobilityDomain;
}
public void setFtPsk(int ftPsk) {
this.ftPsk = ftPsk;
}
public void setGroupRekey(int groupRekey) {
this.groupRekey = groupRekey;
} }
public void setIfName(String ifName) { public void setIfName(String ifName) {
this.ifName = ifName; this.ifName = ifName;
} }
public void setMac(String mac) { public int getVifRadioIdx() {
this.mac = mac; return vifRadioIdx;
}
public void setMacList(String macList) {
this.macList = macList;
}
public void setMinHwMode(String minHwMode) {
this.minHwMode = minHwMode;
}
public void setMode(String mode) {
this.mode = mode;
}
public void setParent(String parent) {
this.parent = parent;
}
public void setRrm(int rrm) {
this.rrm = rrm;
}
public void setSecurity(Map<String, String> security) {
this.security = security;
}
public void setSsid(String ssid) {
this.ssid = ssid;
}
public void setSsidBroadcast(String ssidBroadcast) {
this.ssidBroadcast = ssidBroadcast;
}
public void setState(String state) {
this.state = state;
}
public void setUapsdEnable(boolean uapsdEnable) {
this.uapsdEnable = uapsdEnable;
}
public void setVersion(Uuid version) {
this.version = version;
} }
public void setVifRadioIdx(int vifRadioIdx) { public void setVifRadioIdx(int vifRadioIdx) {
this.vifRadioIdx = vifRadioIdx; this.vifRadioIdx = vifRadioIdx;
} }
public void setVlanId(int vlanId) { public String getParent() {
this.vlanId = vlanId; return parent;
}
public void setParent(String parent) {
this.parent = parent;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getMac() {
return mac;
}
public void setMac(String mac) {
this.mac = mac;
}
public boolean isApBridge() {
return apBridge;
}
public void setApBridge(boolean apBridge) {
this.apBridge = apBridge;
}
public boolean isUapsdEnable() {
return uapsdEnable;
}
public void setUapsdEnable(boolean uapsdEnable) {
this.uapsdEnable = uapsdEnable;
}
public boolean isWds() {
return wds;
} }
public void setWds(boolean wds) { public void setWds(boolean wds) {
this.wds = wds; this.wds = wds;
} }
public String getSsid() {
return ssid;
}
public void setSsid(String ssid) {
this.ssid = ssid;
}
public Map<String, String> getSecurity() {
return security;
}
public void setSecurity(Map<String, String> security) {
this.security = security;
}
public String getMacList() {
return macList;
}
public void setMacList(String macList) {
this.macList = macList;
}
public List<Uuid> getAssociatedClients() {
return associatedClients;
}
public void setAssociatedClients(List<Uuid> list) {
this.associatedClients = list;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public int getVlanId() {
return vlanId;
}
public void setVlanId(int vlanId) {
this.vlanId = vlanId;
}
public int getBtm() {
return btm;
}
public void setBtm(int btm) {
this.btm = btm;
}
public String getMinHwMode() {
return minHwMode;
}
public void setMinHwMode(String minHwMode) {
this.minHwMode = minHwMode;
}
public String getSsidBroadcast() {
return ssidBroadcast;
}
public void setSsidBroadcast(String ssidBroadcast) {
this.ssidBroadcast = ssidBroadcast;
}
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
}
public String getBridge() {
return bridge;
}
public void setBridge(String bridge) {
this.bridge = bridge;
}
public int getGroupRekey() {
return groupRekey;
}
public void setGroupRekey(int groupRekey) {
this.groupRekey = groupRekey;
}
public int getFtMobilityDomain() {
return ftMobilityDomain;
}
public void setFtMobilityDomain(int ftMobilityDomain) {
this.ftMobilityDomain = ftMobilityDomain;
}
public int getFtPsk() {
return ftPsk;
}
public void setFtPsk(int ftPsk) {
this.ftPsk = ftPsk;
}
public int getRrm() {
return rrm;
}
public void setRrm(int rrm) {
this.rrm = rrm;
}
public boolean isDynamicBeacon() {
return dynamicBeacon;
}
public void setDynamicBeacon(boolean dynamicBeacon) {
this.dynamicBeacon = dynamicBeacon;
}
public int getChannel() {
return channel;
}
public void setChannel(int channel) {
this.channel = channel;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public Uuid get_uuid() {
return _uuid;
}
public void set_uuid(Uuid _uuid) {
this._uuid = _uuid;
}
public Uuid getVersion() {
return version;
}
public void setVersion(Uuid version) {
this.version = version;
}
} }

View File

@@ -1,28 +1,22 @@
/** /**
* *
*/ */
package com.telecominfraproject.wlan.opensync.external.integration.models; package com.telecominfraproject.wlan.opensync.external.integration.models;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.vmware.ovsdb.protocol.operation.notation.Row; import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.vmware.ovsdb.protocol.operation.notation.Uuid; import com.vmware.ovsdb.protocol.operation.notation.Uuid;
import com.vmware.ovsdb.protocol.operation.notation.Value;
/** /**
* @author mikehansen * @author mikehansen
* *
*/ */
public class OpensyncAWLANNode extends OpensyncAPBase { public class OpensyncAWLANNode extends BaseJsonModel {
private static final long serialVersionUID = -6172956297643126710L; private static final long serialVersionUID = -6172956297643126710L;
public static long getSerialversionuid() {
return serialVersionUID;
}
public Map<Object, Object> mqttSettings; public Map<Object, Object> mqttSettings;
public String model; public String model;
public String skuNumber; public String skuNumber;
@@ -46,19 +40,11 @@ public class OpensyncAWLANNode extends OpensyncAPBase {
public String revision; public String revision;
public String managerAddr; public String managerAddr;
public boolean factoryReset; public boolean factoryReset;
public String referenceDesign;
public Map<String, String> qrCode;
public String modelDescription;
public String manufacturerUrl;
public String manufacturerName;
public String manufacturerDate;
public String certificationRegion;
public Uuid _uuid; public Uuid _uuid;
public Uuid version; public Uuid version;
public OpensyncAWLANNode() { public OpensyncAWLANNode() {
super();
mqttSettings = new HashMap<>(); mqttSettings = new HashMap<>();
versionMatrix = new HashMap<>(); versionMatrix = new HashMap<>();
ledConfig = new HashMap<>(); ledConfig = new HashMap<>();
@@ -66,391 +52,208 @@ public class OpensyncAWLANNode extends OpensyncAPBase {
mqttTopics = new HashMap<>(); mqttTopics = new HashMap<>();
} }
public OpensyncAWLANNode(Row row) {
this();
// mqtt_settings {"key":"string","max":"unlimited","min":0,"value":"string"}
// model {"key":"string","min":0}
// sku_number {"key":"string","min":0}
// version_matrix {"key":"string","max":"unlimited","min":0,"value":{"maxLength":128,"type":"string"}}
// model_description "string"
// certification_region "string"
// id "string"
// firmware_version "string"
// firmware_url {"key":{"maxLength":256,"type":"string"}}
// _uuid "uuid"
// upgrade_dl_timer "integer"
// reference_design "string"
// platform_version "string"
// firmware_pass {"key":{"maxLength":256,"type":"string"}}
// upgrade_timer "integer"
// redirector_addr "string"
// led_config {"key":"string","max":"unlimited","min":0,"value":"string"}
// max_backoff "integer"
// mqtt_headers {"key":"string","max":"unlimited","min":0,"value":"string"}
// serial_number {"key":"string","min":0}
// _version "uuid"
// upgrade_status "integer"
// device_mode {"key":{"enum":["set",["battery","cloud","custom","monitor"]],"type":"string"},"min":0}
// min_backoff "integer"
// manufacturer_date "string"
// mqtt_topics {"key":"string","max":"unlimited","min":0,"value":{"maxLength":128,"type":"string"}}
// revision "string"
// manufacturer_name "string"
// manufacturer_url "string"
// manager_addr "string"
// factory_reset {"key":"boolean","min":0}
Map<String, Value> map = row.getColumns();
if (map.get("mqtt_settings") != null) {
this.setMqttSettings(row.getMapColumn("mqtt_settings"));
}
if (map.get("mqtt_headers") != null) {
this.setMqttHeaders(row.getMapColumn("mqtt_headers"));
}
if (map.get("mqtt_topics") != null) {
this.setMqttHeaders(row.getMapColumn("mqtt_topics"));
}
if ((map.get("model") != null) && map.get("model").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setModel(row.getStringColumn("model"));
}
if ((map.get("sku_number") != null) && map.get("sku_number").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setSkuNumber(row.getStringColumn("sku_number"));
}
if (map.get("id") != null) {
this.setId(getSingleValueFromSet(row, "id"));
}
if (map.get("reference_design") != null) {
this.setReferenceDesign(row.getStringColumn("reference_design"));
}
if (map.get("qr_code") != null) {
this.setQrCode(row.getMapColumn("qr_code"));
}
if ((map.get("model_description") != null)) {
this.setModelDescription(row.getStringColumn("model_description"));
}
if ((map.get("manufacturer_url") != null)) {
this.setManufacturerUrl(row.getStringColumn("manufacturer_url"));
}
if ((map.get("manufacturer_name") != null)) {
this.setManufacturerName(row.getStringColumn("manufacturer_name"));
}
if ((map.get("manufacturer_date") != null)) {
this.setManufacturerDate(row.getStringColumn("manufacturer_date"));
}
if (map.get("certification_region") != null) {
this.setCertificationRegion(row.getStringColumn("certification_region"));
}
if (map.get("version_matrix") != null) {
this.setVersionMatrix(row.getMapColumn("version_matrix"));
}
if ((map.get("firmware_version") != null) && map.get("firmware_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setFirmwareVersion(row.getStringColumn("firmware_version"));
}
if ((map.get("firmware_url") != null) && map.get("firmware_url").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setFirmwareUrl(row.getStringColumn("firmware_url"));
}
if ((map.get("_uuid") != null) && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_uuid"));
}
if ((map.get("upgrade_dl_timer") != null) && map.get("upgrade_dl_timer").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setUpgradeDlTimer(row.getIntegerColumn("upgrade_dl_timer").intValue());
}
if ((map.get("platform_version") != null) && map.get("platform_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setPlatformVersion(row.getStringColumn("platform_version"));
}
if ((map.get("firmware_pass") != null) && map.get("firmware_pass").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setFirmwarePass(row.getStringColumn("firmware_pass"));
}
if ((map.get("upgrade_timer") != null) && map.get("upgrade_timer").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setUpgradeTimer(row.getIntegerColumn("upgrade_timer").intValue());
}
if ((map.get("max_backoff") != null) && map.get("max_backoff").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setMaxBackoff(row.getIntegerColumn("max_backoff").intValue());
}
if (map.get("led_config") != null) {
this.setLedConfig(row.getMapColumn("led_config"));
}
if ((map.get("redirector_addr") != null) && map.get("redirector_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setRedirectorAddr(row.getStringColumn("redirector_addr"));
}
if ((map.get("serial_number") != null) && map.get("serial_number").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setSerialNumber(row.getStringColumn("serial_number"));
}
if ((map.get("_version") != null) && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_version"));
}
this.setUpgradeStatus(row.getIntegerColumn("upgrade_status").intValue());
if ((map.get("device_mode") != null) && map.get("device_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setDeviceMode(row.getStringColumn("device_mode"));
}
if ((map.get("min_backoff") != null) && map.get("min_backoff").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setMinBackoff(row.getIntegerColumn("min_backoff").intValue());
}
if ((map.get("revision") != null) && map.get("revision").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setRevision(row.getStringColumn("revision"));
}
if ((map.get("manager_addr") != null) && map.get("manager_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setManagerAddr(row.getStringColumn("manager_addr"));
}
if ((map.get("factory_reset") != null) && map.get("factory_reset").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setFactoryReset(row.getBooleanColumn("factory_reset"));
}
}
public Uuid get_uuid() {
return _uuid;
}
public String getDeviceMode() {
return deviceMode;
}
public String getFirmwarePass() {
return firmwarePass;
}
public String getFirmwareUrl() {
return firmwareUrl;
}
public String getFirmwareVersion() {
return firmwareVersion;
}
public String getId() {
return id;
}
public Map<String, String> getLedConfig() {
return ledConfig;
}
public String getManagerAddr() {
return managerAddr;
}
public int getMaxBackoff() {
return maxBackoff;
}
public int getMinBackoff() {
return minBackoff;
}
public String getModel() {
return model;
}
public Map<String, String> getMqttHeaders() {
return mqttHeaders;
}
public Map<Object, Object> getMqttSettings() { public Map<Object, Object> getMqttSettings() {
return mqttSettings; return mqttSettings;
} }
public Map<String, String> getMqttTopics() {
return mqttTopics;
}
public String getPlatformVersion() {
return platformVersion;
}
public String getRedirectorAddr() {
return redirectorAddr;
}
public String getRevision() {
return revision;
}
public String getSerialNumber() {
return serialNumber;
}
public String getSkuNumber() {
return skuNumber;
}
public int getUpgradeDlTimer() {
return upgradeDlTimer;
}
public int getUpgradeStatus() {
return upgradeStatus;
}
public int getUpgradeTimer() {
return upgradeTimer;
}
public Uuid getVersion() {
return version;
}
public Map<String, String> getVersionMatrix() {
return versionMatrix;
}
public boolean isFactoryReset() {
return factoryReset;
}
public String getReferenceDesign() {
return referenceDesign;
}
public void setReferenceDesign(String referenceDesign) {
this.referenceDesign = referenceDesign;
}
public Map<String, String> getQrCode() {
return qrCode;
}
public void setQrCode(Map<String, String> qrCode) {
this.qrCode = qrCode;
}
public String getModelDescription() {
return modelDescription;
}
public void setModelDescription(String modelDescription) {
this.modelDescription = modelDescription;
}
public String getManufacturerUrl() {
return manufacturerUrl;
}
public void setManufacturerUrl(String manufacturerUrl) {
this.manufacturerUrl = manufacturerUrl;
}
public String getManufacturerName() {
return manufacturerName;
}
public void setManufacturerName(String manufacturerName) {
this.manufacturerName = manufacturerName;
}
public String getManufacturerDate() {
return manufacturerDate;
}
public void setManufacturerDate(String manufacturerDate) {
this.manufacturerDate = manufacturerDate;
}
public String getCertificationRegion() {
return certificationRegion;
}
public void setCertificationRegion(String certificationRegion) {
this.certificationRegion = certificationRegion;
}
public void set_uuid(Uuid _uuid) {
this._uuid = _uuid;
}
public void setDeviceMode(String deviceMode) {
this.deviceMode = deviceMode;
}
public void setFactoryReset(boolean factoryReset) {
this.factoryReset = factoryReset;
}
public void setFirmwarePass(String firmwarePass) {
this.firmwarePass = firmwarePass;
}
public void setFirmwareUrl(String firmwareUrl) {
this.firmwareUrl = firmwareUrl;
}
public void setFirmwareVersion(String firmwareVersion) {
this.firmwareVersion = firmwareVersion;
}
public void setId(String id) {
this.id = id;
}
public void setLedConfig(Map<String, String> ledConfig) {
this.ledConfig = ledConfig;
}
public void setManagerAddr(String managerAddr) {
this.managerAddr = managerAddr;
}
public void setMaxBackoff(int maxBackoff) {
this.maxBackoff = maxBackoff;
}
public void setMinBackoff(int minBackoff) {
this.minBackoff = minBackoff;
}
public void setModel(String model) {
this.model = model;
}
public void setMqttHeaders(Map<String, String> mqttHeaders) {
this.mqttHeaders = mqttHeaders;
}
public void setMqttSettings(Map<Object, Object> map) { public void setMqttSettings(Map<Object, Object> map) {
this.mqttSettings = map; this.mqttSettings = map;
} }
public void setMqttTopics(Map<String, String> mqttTopics) { public String getModel() {
this.mqttTopics = mqttTopics; return model;
} }
public void setPlatformVersion(String platformVersion) { public void setModel(String model) {
this.platformVersion = platformVersion; this.model = model;
} }
public void setRedirectorAddr(String redirectorAddr) { public String getSkuNumber() {
this.redirectorAddr = redirectorAddr; return skuNumber;
}
public void setRevision(String revision) {
this.revision = revision;
}
public void setSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
} }
public void setSkuNumber(String skuNumber) { public void setSkuNumber(String skuNumber) {
this.skuNumber = skuNumber; this.skuNumber = skuNumber;
} }
public void setUpgradeDlTimer(int upgradeDlTimer) { public String getId() {
this.upgradeDlTimer = upgradeDlTimer; return id;
} }
public void setUpgradeStatus(int upgradeStatus) { public void setId(String id) {
this.upgradeStatus = upgradeStatus; this.id = id;
} }
public void setUpgradeTimer(int upgradeTimer) { public Map<String, String> getVersionMatrix() {
this.upgradeTimer = upgradeTimer; return versionMatrix;
}
public void setVersion(Uuid version) {
this.version = version;
} }
public void setVersionMatrix(Map<String, String> versionMatrix) { public void setVersionMatrix(Map<String, String> versionMatrix) {
this.versionMatrix = versionMatrix; this.versionMatrix = versionMatrix;
} }
public String getFirmwareVersion() {
return firmwareVersion;
}
public void setFirmwareVersion(String firmwareVersion) {
this.firmwareVersion = firmwareVersion;
}
public String getFirmwareUrl() {
return firmwareUrl;
}
public void setFirmwareUrl(String firmwareUrl) {
this.firmwareUrl = firmwareUrl;
}
public int getUpgradeDlTimer() {
return upgradeDlTimer;
}
public void setUpgradeDlTimer(int upgradeDlTimer) {
this.upgradeDlTimer = upgradeDlTimer;
}
public String getPlatformVersion() {
return platformVersion;
}
public void setPlatformVersion(String platformVersion) {
this.platformVersion = platformVersion;
}
public String getFirmwarePass() {
return firmwarePass;
}
public void setFirmwarePass(String firmwarePass) {
this.firmwarePass = firmwarePass;
}
public int getUpgradeTimer() {
return upgradeTimer;
}
public void setUpgradeTimer(int upgradeTimer) {
this.upgradeTimer = upgradeTimer;
}
public int getMaxBackoff() {
return maxBackoff;
}
public void setMaxBackoff(int maxBackoff) {
this.maxBackoff = maxBackoff;
}
public Map<String, String> getLedConfig() {
return ledConfig;
}
public void setLedConfig(Map<String, String> ledConfig) {
this.ledConfig = ledConfig;
}
public String getRedirectorAddr() {
return redirectorAddr;
}
public void setRedirectorAddr(String redirectorAddr) {
this.redirectorAddr = redirectorAddr;
}
public Map<String, String> getMqttHeaders() {
return mqttHeaders;
}
public void setMqttHeaders(Map<String, String> mqttHeaders) {
this.mqttHeaders = mqttHeaders;
}
public String getSerialNumber() {
return serialNumber;
}
public void setSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
}
public int getUpgradeStatus() {
return upgradeStatus;
}
public void setUpgradeStatus(int upgradeStatus) {
this.upgradeStatus = upgradeStatus;
}
public String getDeviceMode() {
return deviceMode;
}
public void setDeviceMode(String deviceMode) {
this.deviceMode = deviceMode;
}
public int getMinBackoff() {
return minBackoff;
}
public void setMinBackoff(int minBackoff) {
this.minBackoff = minBackoff;
}
public Map<String, String> getMqttTopics() {
return mqttTopics;
}
public void setMqttTopics(Map<String, String> mqttTopics) {
this.mqttTopics = mqttTopics;
}
public String getRevision() {
return revision;
}
public void setRevision(String revision) {
this.revision = revision;
}
public String getManagerAddr() {
return managerAddr;
}
public void setManagerAddr(String managerAddr) {
this.managerAddr = managerAddr;
}
public boolean isFactoryReset() {
return factoryReset;
}
public void setFactoryReset(boolean factoryReset) {
this.factoryReset = factoryReset;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public Uuid get_uuid() {
return _uuid;
}
public void set_uuid(Uuid _uuid) {
this._uuid = _uuid;
}
public Uuid getVersion() {
return version;
}
public void setVersion(Uuid version) {
this.version = version;
}
} }

View File

@@ -1,28 +1,22 @@
/** /**
* *
*/ */
package com.telecominfraproject.wlan.opensync.external.integration.models; package com.telecominfraproject.wlan.opensync.external.integration.models;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map;
import java.util.Set; import java.util.Set;
import com.vmware.ovsdb.protocol.operation.notation.Row; import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.vmware.ovsdb.protocol.operation.notation.Uuid; import com.vmware.ovsdb.protocol.operation.notation.Uuid;
import com.vmware.ovsdb.protocol.operation.notation.Value;
/** /**
* @author mikehansen * @author mikehansen
* *
*/ */
public class OpensyncWifiAssociatedClients extends OpensyncAPBase { public class OpensyncWifiAssociatedClients extends BaseJsonModel {
private static final long serialVersionUID = -7088651136971662138L; private static final long serialVersionUID = -7088651136971662138L;
public static long getSerialversionuid() {
return serialVersionUID;
}
public String keyId; public String keyId;
public String mac; public String mac;
public String state; public String state;
@@ -31,105 +25,83 @@ public class OpensyncWifiAssociatedClients extends OpensyncAPBase {
public String kick; public String kick;
public String oftag; public String oftag;
public Uuid _uuid; public Uuid _uuid;
public Uuid version; public Uuid version;
public OpensyncWifiAssociatedClients() { public OpensyncWifiAssociatedClients() {
super();
capabilities = new HashSet<>(); capabilities = new HashSet<>();
} }
public OpensyncWifiAssociatedClients(Row row) {
this();
Map<String, Value> map = row.getColumns();
if ((map.get("mac") != null)
&& map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setMac(row.getStringColumn("mac"));
}
if (row.getSetColumn("capabilities") != null) {
this.setCapabilities(row.getSetColumn("capabilities"));
}
if ((map.get("state") != null)
&& map.get("state").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setState(row.getStringColumn("state"));
}
if ((map.get("_version") != null)
&& map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_version"));
}
if ((map.get("_uuid") != null)
&& map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_uuid"));
}
}
public Uuid get_uuid() {
return _uuid;
}
public Set<String> getCapabilities() {
return capabilities;
}
public String getKeyId() { public String getKeyId() {
return keyId; return keyId;
} }
public String getKick() { public void setKeyId(String keyId) {
return kick; this.keyId = keyId;
} }
public String getMac() { public String getMac() {
return mac; return mac;
} }
public String getOftag() { public void setMac(String mac) {
return oftag; this.mac = mac;
} }
public String getState() { public String getState() {
return state; return state;
} }
public int getUapsd() { public void setState(String state) {
return uapsd; this.state = state;
} }
public Uuid getVersion() { public Set<String> getCapabilities() {
return version; return capabilities;
}
public void set_uuid(Uuid _uuid) {
this._uuid = _uuid;
} }
public void setCapabilities(Set<String> set) { public void setCapabilities(Set<String> set) {
this.capabilities = set; this.capabilities = set;
} }
public void setKeyId(String keyId) { public int getUapsd() {
this.keyId = keyId; return uapsd;
}
public void setUapsd(int uapsd) {
this.uapsd = uapsd;
}
public String getKick() {
return kick;
} }
public void setKick(String kick) { public void setKick(String kick) {
this.kick = kick; this.kick = kick;
} }
public void setMac(String mac) { public String getOftag() {
this.mac = mac; return oftag;
} }
public void setOftag(String oftag) { public void setOftag(String oftag) {
this.oftag = oftag; this.oftag = oftag;
} }
public void setState(String state) { public static long getSerialversionuid() {
this.state = state; return serialVersionUID;
} }
public void setUapsd(int uapsd) { public Uuid get_uuid() {
this.uapsd = uapsd; return _uuid;
}
public void set_uuid(Uuid _uuid) {
this._uuid = _uuid;
}
public Uuid getVersion() {
return version;
} }
public void setVersion(Uuid version) { public void setVersion(Uuid version) {

View File

@@ -1,14 +0,0 @@
package com.telecominfraproject.wlan.opensync.external.integration.utils;
import com.telecominfraproject.wlan.systemevent.models.SystemEvent;
import sts.OpensyncStats.Report;
public interface StatsPublisherInterface {
void processMqttMessage(String topic, Report report);
void publishSystemEventFromTableStateMonitor(SystemEvent event);
}

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-ext-static</artifactId> <artifactId>opensync-ext-static</artifactId>
@@ -13,7 +13,7 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway</artifactId> <artifactId>opensync-gateway</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -2,6 +2,7 @@ package com.telecominfraproject.wlan.opensync.external.integration;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -17,6 +18,7 @@ import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.location.models.Location; import com.telecominfraproject.wlan.location.models.Location;
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo; import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPHotspot20Config;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState; import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
@@ -45,9 +47,30 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
@Value("${tip.wlan.ovsdb.ssidProfileFileName:/app/config/ProfileSsid.json}") @Value("${tip.wlan.ovsdb.ssidProfileFileName:/app/config/ProfileSsid.json}")
private String ssidProfileFileName; private String ssidProfileFileName;
@Value("${tip.wlan.ovsdb.metricsProfileFileName:/app/config/ProfileMetrics.json}")
private String metricsProfileFileName;
@Value("${tip.wlan.ovsdb.venueProfileFileName:/app/config/ProfileVenue.json}")
private String venueProfileFileName;
@Value("${tip.wlan.ovsdb.operatorProfileFileName:/app/config/ProfileOperator.json}")
private String operatorProfileFileName;
@Value("${tip.wlan.ovsdb.hotspot20ProfileFileName:/app/config/ProfileHotspot20.json}")
private String hotspot20ProfileFileName;
@Value("${tip.wlan.ovsdb.idProviderProfileFileName:/app/config/ProfileIdProvider.json}")
private String idProviderProfileFileName;
@Value("${tip.wlan.ovsdb.radiusProfileFileName:/app/config/ProfileRadius.json}") @Value("${tip.wlan.ovsdb.radiusProfileFileName:/app/config/ProfileRadius.json}")
private String radiusProfileFileName; private String radiusProfileFileName;
@Value("${tip.wlan.ovsdb.captiveProfileFileName:/app/config/ProfileCaptive.json}")
private String captiveProfileFileName;
@Value("${tip.wlan.ovsdb.bonjourProfileFileName:/app/config/ProfileBonjour.json}")
private String bonjourProfileFileName;
@Value("${tip.wlan.ovsdb.locationFileName:/app/config/LocationBuildingExample.json}") @Value("${tip.wlan.ovsdb.locationFileName:/app/config/LocationBuildingExample.json}")
private String locationFileName; private String locationFileName;
@@ -62,6 +85,7 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
serialNumber = connectNodeInfo.serialNumber; serialNumber = connectNodeInfo.serialNumber;
LOG.info("AP {} got connected to the gateway", apId); LOG.info("AP {} got connected to the gateway", apId);
LOG.info("ConnectNodeInfo {}", connectNodeInfo); LOG.info("ConnectNodeInfo {}", connectNodeInfo);
} }
public void apDisconnected(String apId) { public void apDisconnected(String apId) {
@@ -71,41 +95,97 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
public OpensyncAPConfig getApConfig(String apId) { public OpensyncAPConfig getApConfig(String apId) {
LOG.info("Retrieving config for AP {}", apId); LOG.info("Retrieving config for AP {}", apId);
OpensyncAPConfig ret = null; OpensyncAPConfig ret = null;
try { try {
Equipment equipment = Equipment.fromFile(customerEquipmentFileName, Equipment.class); Equipment equipment = Equipment.fromFile(customerEquipmentFileName, Equipment.class);
equipment.setInventoryId(apId); equipment.setInventoryId(apId);
equipment.setName(apId); equipment.setName(apId);
equipment.setSerial(serialNumber); equipment.setSerial(serialNumber);
com.telecominfraproject.wlan.profile.models.Profile apProfile = com.telecominfraproject.wlan.profile.models.Profile com.telecominfraproject.wlan.profile.models.Profile apProfile = com.telecominfraproject.wlan.profile.models.Profile
.fromFile(apProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); .fromFile(apProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
com.telecominfraproject.wlan.profile.models.Profile rfProfile = com.telecominfraproject.wlan.profile.models.Profile com.telecominfraproject.wlan.profile.models.Profile rfProfile = com.telecominfraproject.wlan.profile.models.Profile
.fromFile(rfProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); .fromFile(rfProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
apProfile.getChildProfileIds().add(rfProfile.getId()); apProfile.getChildProfileIds().add(rfProfile.getId());
List<com.telecominfraproject.wlan.profile.models.Profile> ssidProfiles = com.telecominfraproject.wlan.profile.models.Profile List<com.telecominfraproject.wlan.profile.models.Profile> ssidProfiles = com.telecominfraproject.wlan.profile.models.Profile
.listFromFile(ssidProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class); .listFromFile(ssidProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
List<com.telecominfraproject.wlan.profile.models.Profile> hotspot20Profiles = com.telecominfraproject.wlan.profile.models.Profile
.listFromFile(hotspot20ProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
List<com.telecominfraproject.wlan.profile.models.Profile> operatorProfiles = com.telecominfraproject.wlan.profile.models.Profile
.listFromFile(operatorProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
List<com.telecominfraproject.wlan.profile.models.Profile> venueProfiles = com.telecominfraproject.wlan.profile.models.Profile
.listFromFile(venueProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
List<com.telecominfraproject.wlan.profile.models.Profile> providerProfiles = com.telecominfraproject.wlan.profile.models.Profile
.listFromFile(idProviderProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
ssidProfiles.stream().forEach(p -> apProfile.getChildProfileIds().add(p.getId())); ssidProfiles.stream().forEach(p -> apProfile.getChildProfileIds().add(p.getId()));
List<com.telecominfraproject.wlan.profile.models.Profile> metricsProfiles = com.telecominfraproject.wlan.profile.models.Profile
.listFromFile(metricsProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
List<com.telecominfraproject.wlan.profile.models.Profile> radiusProfiles = com.telecominfraproject.wlan.profile.models.Profile
.listFromFile(radiusProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
List<com.telecominfraproject.wlan.profile.models.Profile> captiveProfiles = null;
File captiveFile = new File(captiveProfileFileName);
if (captiveFile.exists()) {
captiveProfiles = com.telecominfraproject.wlan.profile.models.Profile.listFromFile(
captiveProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
} else {
LOG.info("Captive file is not provided");
}
List<com.telecominfraproject.wlan.profile.models.Profile> bonjourProfiles = null;
File bonjourFile = new File(bonjourProfileFileName);
if (bonjourFile.exists()) {
bonjourProfiles = com.telecominfraproject.wlan.profile.models.Profile.listFromFile(
bonjourProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
} else {
LOG.info("Bonjour file is not provided");
}
equipment.setProfileId(apProfile.getId()); equipment.setProfileId(apProfile.getId());
Location location = Location.fromFile(locationFileName, Location.class); Location location = Location.fromFile(locationFileName, Location.class);
equipment.setLocationId(location.getId()); equipment.setLocationId(location.getId());
OpensyncAPHotspot20Config hotspotConfig = new OpensyncAPHotspot20Config();
hotspotConfig.setHotspot20ProfileSet(
new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(hotspot20Profiles));
hotspotConfig.setHotspot20OperatorSet(
new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(operatorProfiles));
hotspotConfig.setHotspot20VenueSet(
new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(venueProfiles));
hotspotConfig.setHotspot20ProviderSet(
new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(providerProfiles));
ret = new OpensyncAPConfig(); ret = new OpensyncAPConfig();
ret.setCustomerEquipment(equipment); ret.setCustomerEquipment(equipment);
ret.setApProfile(apProfile); ret.setApProfile(apProfile);
ret.setRfProfile(rfProfile); ret.setRfProfile(rfProfile);
ret.setMetricsProfiles(metricsProfiles);
ret.setSsidProfile(ssidProfiles); ret.setSsidProfile(ssidProfiles);
File radiusFile = new File(radiusProfileFileName); ret.setRadiusProfiles(radiusProfiles);
if (radiusFile.exists()) {
List<com.telecominfraproject.wlan.profile.models.Profile> radiusProfiles = com.telecominfraproject.wlan.profile.models.Profile
.listFromFile(radiusProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
ret.setRadiusProfiles(radiusProfiles);
} else {
LOG.debug("No radius file present at {}", radiusFile.getAbsolutePath());
}
ret.setEquipmentLocation(location); ret.setEquipmentLocation(location);
ret.setCaptiveProfiles(captiveProfiles);
ret.setBonjourGatewayProfiles(bonjourProfiles);
ret.setHotspotConfig(hotspotConfig);
} catch (IOException e) { } catch (IOException e) {
LOG.error("Cannot read config file", e); LOG.error("Cannot read config file", e);
} }
LOG.debug("Config content : {}", ret); LOG.debug("Config content : {}", ret);
return ret; return ret;
} }
@@ -119,6 +199,7 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
LOG.info("Received EventReport {}", e); LOG.info("Received EventReport {}", e);
}); });
} }
public void processMqttMessage(String topic, FlowReport flowReport) { public void processMqttMessage(String topic, FlowReport flowReport) {
@@ -194,22 +275,4 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
} }
@Override
public void clearEquipmentStatus(String apId) {
LOG.info("Received clearEquipmentStatus for ap {}", apId);
}
@Override
public void apcStateDbTableUpdate(Map<String, String> apcStateAttributes, String apId,
RowUpdateOperation rowUpdateOperation) {
LOG.info("Received APC_State {} for operation {}", apcStateAttributes, rowUpdateOperation);
}
@Override
public void nodeStateDbTableUpdate(List<Map<String, String>> nodeStateAttributes, String apId) {
LOG.info("nodeStateDbTableUpdate for AP {}", apId);
}
} }

View File

@@ -1,472 +1,221 @@
{ {
"model_type": "Equipment", "model_type": "Equipment",
"id": 1, "id": 51,
"customerId": 2, "customerId": 2,
"profileId": 8, "profileId": 12,
"locationId": 8, "locationId": 8,
"equipmentType": "AP",
"inventoryId": "Test_Client_21P10C68818122",
"name": "Test_Client_21P10C68818122",
"details": {
"model_type": "ApElementConfiguration",
"equipmentModel": "EA8300-CA",
"elementConfigVersion": "AP-V1",
"equipmentType": "AP", "equipmentType": "AP",
"inventoryId": "Open_AP_21P10C68818122", "deviceMode": "standaloneAP",
"name": "Open_AP_21P10C68818122", "gettingIP": "dhcp",
"details": { "staticIP": null,
"model_type": "ApElementConfiguration", "staticIpMaskCidr": null,
"equipmentModel": "EA8300-CA", "staticIpGw": null,
"elementConfigVersion": "AP-V1", "gettingDNS": "dhcp",
"equipmentType": "AP", "staticDnsIp1": null,
"deviceMode": "standaloneAP", "staticDnsIp2": null,
"gettingIP": "dhcp", "peerInfoList": [],
"staticIP": null, "deviceName": "Default Device Name",
"staticIpMaskCidr": null, "locationData": null,
"staticIpGw": null, "locallyConfiguredMgmtVlan": 0,
"gettingDNS": "dhcp", "locallyConfigured": false,
"staticDnsIp1": null, "deploymentType": "CEILING",
"staticDnsIp2": null, "syntheticClientEnabled": null,
"peerInfoList": [], "frameReportThrottleEnabled": true,
"deviceName": "Open_AP_21P10C68818122", "antennaType": "OMNI",
"locationData": null, "costSavingEventsEnabled": true,
"locallyConfiguredMgmtVlan": 0, "forwardMode": "BRIDGE",
"locallyConfigured": false, "radioMap": {
"deploymentType": "CEILING", "is2dot4GHz": {
"syntheticClientEnabled": null, "model_type": "ElementRadioConfiguration",
"frameReportThrottleEnabled": true, "radioType": "is2dot4GHz",
"antennaType": "OMNI", "channelNumber": 6,
"costSavingEventsEnabled": true, "manualChannelNumber": 6,
"forwardMode": "BRIDGE", "backupChannelNumber": 11,
"radioMap": { "bannedChannels": [],
"is5GHzU": { "allowedChannels": [],
"model_type": "ElementRadioConfiguration", "rxCellSizeDb": {
"radioType": "is5GHzU", "model_type": "SourceSelectionValue",
"channelNumber": 149, "source": "auto",
"manualChannelNumber": 149, "value": -90
"backupChannelNumber": 157,
"manualBackupChannelNumber": 157,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 161,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 100,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 132,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 165,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 104,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 136,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 108,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 140,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 112,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 144,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 116,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 149,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 153,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 157,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
},
"is2dot4GHz": {
"model_type": "ElementRadioConfiguration",
"radioType": "is2dot4GHz",
"channelNumber": 6,
"manualChannelNumber": 6,
"backupChannelNumber": 11,
"manualBackupChannelNumber": 11,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 1,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 2,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 3,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 4,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 5,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 6,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 7,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 8,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 9,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 10,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 11,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
}
]
},
"is5GHzL": {
"model_type": "ElementRadioConfiguration",
"radioType": "is5GHzL",
"channelNumber": 36,
"manualChannelNumber": 36,
"backupChannelNumber": 44,
"manualBackupChannelNumber": 44,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 52,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 36,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 56,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 40,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 60,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 44,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 64,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 48,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
}
}, },
"advancedRadioMap": { "probeResponseThresholdDb": {
"is2dot4GHz": { "model_type": "SourceSelectionValue",
"model_type": "RadioConfiguration", "source": "auto",
"radioType": "is2dot4GHz", "value": -90
"radioAdminState": "enabled", },
"fragmentationThresholdBytes": 2346, "clientDisconnectThresholdDb": {
"uapsdState": "enabled", "model_type": "SourceSelectionValue",
"stationIsolation": "disabled", "source": "auto",
"multicastRate": { "value": -90
"model_type": "SourceSelectionMulticast", },
"source": "profile", "eirpTxPower": {
"value": "auto" "model_type": "SourceSelectionValue",
}, "source": "auto",
"managementRate": { "value": 32
"model_type": "SourceSelectionManagement", },
"source": "profile", "perimeterDetectionEnabled": true,
"value": "auto" "bestAPSteerType": "both",
}, "deauthAttackDetection": null,
"bestApSettings": { "allowedChannelsPowerLevels": [],
"model_type": "SourceSelectionSteering", "activeChannel": 6
"source": "manual", },
"value": { "is5GHzU": {
"model_type": "RadioBestApSettings", "model_type": "ElementRadioConfiguration",
"mlComputed": true, "radioType": "is5GHzU",
"dropInSnrPercentage": 20, "channelNumber": 149,
"minLoadFactor": 50 "manualChannelNumber": 149,
} "backupChannelNumber": 154,
}, "bannedChannels": [],
"legacyBSSRate": "enabled", "allowedChannels": [],
"dtimPeriod": 2, "rxCellSizeDb": {
"deauthAttackDetection": null "model_type": "SourceSelectionValue",
}, "source": "auto",
"is5GHzU": { "value": -90
"model_type": "RadioConfiguration", },
"radioType": "is5GHzU", "probeResponseThresholdDb": {
"radioAdminState": "enabled", "model_type": "SourceSelectionValue",
"fragmentationThresholdBytes": 2346, "source": "auto",
"uapsdState": "enabled", "value": -90
"stationIsolation": "disabled", },
"multicastRate": { "clientDisconnectThresholdDb": {
"model_type": "SourceSelectionMulticast", "model_type": "SourceSelectionValue",
"source": "profile", "source": "auto",
"value": "auto" "value": -90
}, },
"managementRate": { "eirpTxPower": {
"model_type": "SourceSelectionManagement", "model_type": "SourceSelectionValue",
"source": "profile", "source": "auto",
"value": "auto" "value": 32
}, },
"bestApSettings": { "perimeterDetectionEnabled": true,
"model_type": "SourceSelectionSteering", "bestAPSteerType": "both",
"source": "manual", "deauthAttackDetection": null,
"value": { "allowedChannelsPowerLevels": [],
"model_type": "RadioBestApSettings", "activeChannel": 149
"mlComputed": true, },
"dropInSnrPercentage": 30, "is5GHzL": {
"minLoadFactor": 40 "model_type": "ElementRadioConfiguration",
} "radioType": "is5GHzL",
}, "channelNumber": 36,
"legacyBSSRate": "enabled", "manualChannelNumber": 36,
"dtimPeriod": 2, "backupChannelNumber": 44,
"deauthAttackDetection": null "bannedChannels": [],
}, "allowedChannels": [],
"is5GHzL": { "rxCellSizeDb": {
"model_type": "RadioConfiguration", "model_type": "SourceSelectionValue",
"radioType": "is5GHzL", "source": "auto",
"radioAdminState": "enabled", "value": -90
"fragmentationThresholdBytes": 2346, },
"uapsdState": "enabled", "probeResponseThresholdDb": {
"stationIsolation": "disabled", "model_type": "SourceSelectionValue",
"multicastRate": { "source": "auto",
"model_type": "SourceSelectionMulticast", "value": -90
"source": "profile", },
"value": "auto" "clientDisconnectThresholdDb": {
}, "model_type": "SourceSelectionValue",
"managementRate": { "source": "auto",
"model_type": "SourceSelectionManagement", "value": -90
"source": "profile", },
"value": "auto" "eirpTxPower": {
}, "model_type": "SourceSelectionValue",
"bestApSettings": { "source": "auto",
"model_type": "SourceSelectionSteering", "value": 32
"source": "manual", },
"value": { "perimeterDetectionEnabled": true,
"model_type": "RadioBestApSettings", "bestAPSteerType": "both",
"mlComputed": true, "deauthAttackDetection": null,
"dropInSnrPercentage": 30, "allowedChannelsPowerLevels": [],
"minLoadFactor": 40 "activeChannel": 36
} }
},
"legacyBSSRate": "enabled",
"dtimPeriod": 2,
"deauthAttackDetection": null
}
}
}, },
"latitude": null, "advancedRadioMap": {
"longitude": null, "is2dot4GHz": {
"baseMacAddress": { "model_type": "RadioConfiguration",
"model_type": "MacAddress", "radioType": "is2dot4GHz",
"address": "JPWi7y5T", "radioAdminState": "enabled",
"addressAsString": "24:f5:a2:ef:2e:53" "fragmentationThresholdBytes": 2346,
}, "uapsdState": "enabled",
"serial": "21P10C68818122", "stationIsolation": "disabled",
"createdTimestamp": 1612285288821, "managementRate": {
"lastModifiedTimestamp": 1612285293922 "model_type": "SourceSelectionManagement",
} "source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
},
"is5GHzU": {
"model_type": "RadioConfiguration",
"radioType": "is5GHzU",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"uapsdState": "enabled",
"stationIsolation": "disabled",
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
},
"is5GHzL": {
"model_type": "RadioConfiguration",
"radioType": "is5GHzL",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"uapsdState": "enabled",
"stationIsolation": "disabled",
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
}
}
},
"latitude": null,
"longitude": null,
"serial": "21P10C68818122",
"createdTimestamp": 1591653239821,
"lastModifiedTimestamp": 1591653241398
}

View File

@@ -1,61 +1,60 @@
{ {
"model_type": "Location", "model_type" : "Location",
"id": 8, "id" : 8,
"parentId": 0, "parentId" : 0,
"locationType": "SITE", "locationType" : "SITE",
"customerId": 2, "customerId" : 2,
"name": "Ottawa", "name" : "Ottawa",
"details": { "details" : {
"model_type": "LocationDetails", "model_type" : "LocationDetails",
"countryCode": "CA", "countryCode" : "ca",
"dailyActivityDetails": { "maintenanceWindow" : null,
"SUNDAY": { "rrmEnabled" : true,
"model_type": "LocationActivityDetails", "dailyActivityDetails" : {
"busyTime": "13:30", "SUNDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"MONDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "MONDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"TUESDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "TUESDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"WEDNESDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "WEDNESDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"THURSDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "THURSDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"FRIDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "FRIDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"SATURDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "SATURDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
} "quietTime" : "3:30",
}, "timezone" : "US/Eastern"
"maintenanceWindow": null, }
"rrmEnabled": true, }
"timezone": "US/Eastern" },
}, "createdTimestamp" : 1590607043540,
"createdTimestamp": 1612285243534, "lastModifiedTimestamp" : 1590607043540
"lastModifiedTimestamp": 1612285243534
} }

View File

@@ -1,6 +1,6 @@
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 8, "id": 12,
"customerId": 2, "customerId": 2,
"profileType": "equipment_ap", "profileType": "equipment_ap",
"name": "ApProfile-3-radios", "name": "ApProfile-3-radios",
@@ -20,6 +20,11 @@
"syntheticClientEnabled": true, "syntheticClientEnabled": true,
"ledControlEnabled": true, "ledControlEnabled": true,
"equipmentDiscovery": false, "equipmentDiscovery": false,
"greTunnelName": null,
"greParentIfName": null,
"greLocalInetAddr": null,
"greRemoteInetAddr": null,
"greRemoteMacAddr": null,
"radioMap": { "radioMap": {
"is2dot4GHz": { "is2dot4GHz": {
"model_type": "RadioProfileConfiguration", "model_type": "RadioProfileConfiguration",
@@ -37,22 +42,15 @@
"bestAPSteerType": "both" "bestAPSteerType": "both"
} }
}, },
"greTunnelConfigurations": [
{
"model_type": "GreTunnelConfiguration",
"greTunnelName": "gre1",
"greRemoteInetAddr": "192.168.1.101",
"vlanIdsInGreTunnel": [
100
]
}
],
"profileType": "equipment_ap" "profileType": "equipment_ap"
}, },
"createdTimestamp": 1612285248925, "createdTimestamp": 1606778369934,
"lastModifiedTimestamp": 1612285628377, "lastModifiedTimestamp": 1606778443413,
"childProfileIds": [ "childProfileIds": [
2, 16,
4 5,
10,
11,
15
] ]
} }

View File

@@ -0,0 +1,29 @@
[
{
"model_type": "Profile",
"id": 100,
"customerId": 2,
"profileType": "bonjour",
"name": "Bonjour-gateway",
"details": {
"model_type": "BonjourGatewayProfile",
"profileDescription": "Bonjour Gateway Configuration for Design Testing",
"profileType": "bonjour",
"bonjourServices": [
{
"model_type": "BonjourServiceSet",
"vlanId": 1,
"supportAllServices": false,
"serviceNames": [
"AirPort",
"SFTP",
"SSH"
]
}
]
},
"createdTimestamp": 1599234550774,
"lastModifiedTimestamp": 1599234550774,
"childProfileIds": []
}
]

View File

@@ -1,58 +1,135 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 5, "id": 14,
"customerId": 2, "customerId": 2,
"profileType": "captive_portal", "profileType": "captive_portal",
"name": "Captive-portal", "name": "Captive-portal",
"details": { "details": {
"model_type": "CaptivePortalConfiguration", "model_type": "CaptivePortalConfiguration",
"name": "Default", "name": "Captive-portal",
"browserTitle": "Captive-portal", "browserTitle": "Access the network as Guest",
"headerContent": "Captive Portal", "headerContent": "Captive Portal",
"userAcceptancePolicy": "Please agree to the following terms for using this network:", "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
"successPageMarkdownText": "You are now authorized and connected to the network.", "successPageMarkdownText": "Welcome to the network",
"redirectURL": "https://www.google.com", "redirectURL": "",
"externalCaptivePortalURL": null, "externalCaptivePortalURL": null,
"sessionTimeoutInMinutes": 10, "sessionTimeoutInMinutes": 60,
"logoFile": { "logoFile": null,
"model_type": "ManagedFileInfo", "backgroundFile": null,
"md5checksum": null, "walledGardenAllowlist": [],
"lastModifiedTimestamp": null, "usernamePasswordFile": {
"apExportUrl": "/filestore/tip-logo-mobile", "model_type": "ManagedFileInfo",
"fileCategory": "CaptivePortalLogo", "md5checksum": null,
"fileType": "PNG", "lastModifiedTimestamp": null,
"altSlot": false "apExportUrl": "userList",
}, "fileCategory": "UsernamePasswordList",
"backgroundFile": { "fileType": "TEXT",
"model_type": "ManagedFileInfo", "altSlot": true
"md5checksum": null, },
"lastModifiedTimestamp": null, "authenticationType": "guest",
"apExportUrl": "/filestore/tip-logo", "radiusAuthMethod": "CHAP",
"fileCategory": "CaptivePortalBackground", "maxUsersWithSameCredentials": 42,
"fileType": "PNG", "externalPolicyFile": null,
"altSlot": false "backgroundPosition": "left_top",
}, "backgroundRepeat": "no_repeat",
"walledGardenAllowlist": [ "radiusServiceName": null,
], "expiryType": "unlimited",
"usernamePasswordFile": null, "userList": [
"authenticationType": "guest", {
"radiusAuthMethod": "CHAP", "model_type": "TimedAccessUserRecord",
"maxUsersWithSameCredentials": 3, "username": "customer",
"externalPolicyFile": null, "password": "testing123",
"backgroundPosition": "left_top", "activationTime": 1602183994956,
"backgroundRepeat": "no_repeat", "expirationTime": 1602212794956,
"radiusServiceId": 0, "numDevices": 1,
"expiryType": "time_limited", "userDetails": {
"userList": [ "model_type": "TimedAccessUserDetails",
], "firstName": "Pac",
"macAllowList": [ "lastName": "Man",
], "passwordNeedsReset": false
"profileType": "captive_portal" },
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "fKtg5upO",
"addressAsString": "7c:ab:60:e6:ea:4e"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer",
"password": "testing123",
"activationTime": 1602183994957,
"expirationTime": 1602187594957,
"numDevices": 0,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Q",
"lastName": "Bert",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "wJrQdqho",
"addressAsString": "c0:9a:d0:76:a8:68"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer2",
"password": "testing1234",
"activationTime": 1602183994957,
"expirationTime": 1602788794957,
"numDevices": 1,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Duke",
"lastName": "Nukem",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "fKtg5upN",
"addressAsString": "7c:ab:60:e6:ea:4d"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer2",
"password": "testing1234",
"activationTime": 1602183994957,
"expirationTime": 1602270394957,
"numDevices": 0,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Missile",
"lastName": "Commander",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "wJrQdqhj",
"addressAsString": "c0:9a:d0:76:a8:63"
}
],
"lastModifiedTimestamp": 0
}
],
"macAllowList": [],
"profileType": "captive_portal"
}, },
"createdTimestamp": 1611857459118, "createdTimestamp": 1602183994959,
"lastModifiedTimestamp": 1611857459118, "lastModifiedTimestamp": 1602183994959,
"childProfileIds": [ "childProfileIds": []
] }
} ]
]

View File

@@ -0,0 +1,71 @@
[
{
"model_type": "Profile",
"id": 24,
"customerId": 2,
"profileType": "passpoint",
"name": "TipWlan-Passpoint-Config",
"details": {
"model_type": "PasspointProfile",
"enableInterworkingAndHs20": true,
"hessid": null,
"passpointAccessNetworkType": "free_public_network",
"passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
"additionalStepsRequiredForAccess": 0,
"deauthRequestTimeout": 0,
"operatingClass": 0,
"termsAndConditionsFile": {
"model_type": "ManagedFileInfo",
"md5checksum": null,
"lastModifiedTimestamp": null,
"apExportUrl": "https://localhost:9091/filestore/termsAndConditions",
"fileCategory": "ExternalPolicyConfiguration",
"fileType": "TEXT",
"altSlot": false
},
"whitelistDomain": null,
"emergencyServicesReachable": true,
"unauthenticatedEmergencyServiceAccessible": false,
"internetConnectivity": true,
"connectionCapabilitySet": [
{
"model_type": "PasspointConnectionCapability",
"connectionCapabilitiesPortNumber": 8888,
"connectionCapabilitiesStatus": "open",
"connectionCapabilitiesIpProtocol": "TCP"
}
],
"ipAddressTypeAvailability": "public_IPv4_address_available",
"qosMapSetConfiguration": null,
"apGeospatialLocation": null,
"apCivicLocation": null,
"apPublicLocationIdUri": null,
"gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest",
"anqpDomainId": 1234,
"disableDownstreamGroupAddressedForwarding": false,
"enable2pt4GHz": true,
"enable5GHz": true,
"associatedAccessSsidProfileIds": [
15
],
"osuSsidProfileId": 16,
"passpointOperatorProfileId": 17,
"passpointVenueProfileId": 18,
"passpointOsuProviderProfileIds": [
19,
20
],
"accessNetworkType": "free_public_network",
"networkAuthenticationType": "acceptance_of_terms_and_conditions",
"profileType": "passpoint"
},
"createdTimestamp": 1606778370807,
"lastModifiedTimestamp": 1606778370807,
"childProfileIds": [
17,
18,
19,
20
]
}
]

View File

@@ -0,0 +1,270 @@
[
{
"model_type": "Profile",
"id": 19,
"customerId": 2,
"profileType": "passpoint_osu_id_provider",
"name": "TipWlan-Passpoint-OSU-Provider",
"details": {
"model_type": "PasspointOsuProviderProfile",
"domainName": "rogers.com",
"mccMncList": [
{
"model_type": "PasspointMccMnc",
"mcc": 302,
"mnc": 720,
"iso": "ca",
"country": "Canada",
"countryCode": 1,
"network": "Rogers AT&T Wireless",
"mccMncPairing": "302,720"
}
],
"naiRealmList": [
{
"model_type": "PasspointNaiRealmInformation",
"naiRealms": [
"rogers.com"
],
"encoding": 0,
"eapMethods": [
"EAP-TTLS with username/password",
"EAP-TLS with certificate"
],
"eapMap": {
"EAP-TTLS with username/password": [
"Credential Type:username/password",
"Non-EAP Inner Authentication Type:MSCHAPV2"
],
"EAP-TLS with certificate": [
"Credential Type:Certificate"
]
}
}
],
"osuIconList": [
{
"model_type": "PasspointOsuIcon",
"iconWidth": 32,
"iconHeight": 32,
"languageCode": "eng",
"iconLocale": "en_CA",
"iconName": "icon32eng",
"filePath": "/tmp/icon32eng.png",
"imageUrl": "https://localhost:9096/icon32eng.png",
"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
},
{
"model_type": "PasspointOsuIcon",
"iconWidth": 32,
"iconHeight": 32,
"languageCode": "fra",
"iconLocale": "fr_CA",
"iconName": "icon32fra",
"filePath": "/tmp/icon32fra.png",
"imageUrl": "https://localhost:9096/icon32fra.png",
"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
},
{
"model_type": "PasspointOsuIcon",
"iconWidth": 32,
"iconHeight": 32,
"languageCode": "eng",
"iconLocale": "en_US",
"iconName": "icon32usa",
"filePath": "/tmp/icon32usa.png",
"imageUrl": "https://localhost:9096/icon32usa.png",
"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
}
],
"osuServerUri": "https://example.com/osu/rogers",
"osuFriendlyName": [
{
"model_type": "PasspointDuple",
"locale": "en_CA",
"dupleIso3Language": "eng",
"dupleName": "Example provider rogers",
"defaultDupleSeparator": ":",
"asDuple": "eng:Example provider rogers"
},
{
"model_type": "PasspointDuple",
"locale": "fr_CA",
"dupleIso3Language": "fra",
"dupleName": "Exemple de fournisseur rogers",
"defaultDupleSeparator": ":",
"asDuple": "fra:Exemple de fournisseur rogers"
}
],
"osuNaiStandalone": "anonymous@rogers.com",
"osuNaiShared": "anonymous@rogers.com",
"osuMethodList": [
1,
0
],
"osuServiceDescription": [
{
"model_type": "PasspointDuple",
"locale": "en_CA",
"dupleIso3Language": "eng",
"dupleName": "Example services rogers",
"defaultDupleSeparator": ":",
"asDuple": "eng:Example services rogers"
},
{
"model_type": "PasspointDuple",
"locale": "fr_CA",
"dupleIso3Language": "fra",
"dupleName": "Exemples de services rogers",
"defaultDupleSeparator": ":",
"asDuple": "fra:Exemples de services rogers"
}
],
"roamingOi": [
1,
2,
3,
4
],
"profileType": "passpoint_osu_id_provider"
},
"createdTimestamp": 1606778370345,
"lastModifiedTimestamp": 1606778370345,
"childProfileIds": [
]
},
{
"model_type": "Profile",
"id": 20,
"customerId": 2,
"profileType": "passpoint_osu_id_provider",
"name": "TipWlan-Passpoint-OSU-Provider-2",
"details": {
"model_type": "PasspointOsuProviderProfile",
"domainName": "telus.com",
"mccMncList": [
{
"model_type": "PasspointMccMnc",
"mcc": 302,
"mnc": 220,
"iso": "ca",
"country": "Canada",
"countryCode": 1,
"network": "Telus Mobility",
"mccMncPairing": "302,220"
}
],
"naiRealmList": [
{
"model_type": "PasspointNaiRealmInformation",
"naiRealms": [
"telus.com"
],
"encoding": 0,
"eapMethods": [
"EAP-TTLS with username/password",
"EAP-TLS with certificate"
],
"eapMap": {
"EAP-TTLS with username/password": [
"Credential Type:username/password",
"Non-EAP Inner Authentication Type:MSCHAPV2"
],
"EAP-TLS with certificate": [
"Credential Type:Certificate"
]
}
}
],
"osuIconList": [
{
"model_type": "PasspointOsuIcon",
"iconWidth": 32,
"iconHeight": 32,
"languageCode": "eng",
"iconLocale": "en_CA",
"iconName": "icon32eng",
"filePath": "/tmp/icon32eng.png",
"imageUrl": "https://localhost:9096/icon32eng.png",
"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
},
{
"model_type": "PasspointOsuIcon",
"iconWidth": 32,
"iconHeight": 32,
"languageCode": "fra",
"iconLocale": "fr_CA",
"iconName": "icon32fra",
"filePath": "/tmp/icon32fra.png",
"imageUrl": "https://localhost:9096/icon32fra.png",
"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
},
{
"model_type": "PasspointOsuIcon",
"iconWidth": 32,
"iconHeight": 32,
"languageCode": "eng",
"iconLocale": "en_US",
"iconName": "icon32usa",
"filePath": "/tmp/icon32usa.png",
"imageUrl": "https://localhost:9096/icon32usa.png",
"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
}
],
"osuServerUri": "https://example.com/osu/telus",
"osuFriendlyName": [
{
"model_type": "PasspointDuple",
"locale": "en_CA",
"dupleIso3Language": "eng",
"dupleName": "Example provider telus",
"defaultDupleSeparator": ":",
"asDuple": "eng:Example provider telus"
},
{
"model_type": "PasspointDuple",
"locale": "fr_CA",
"dupleIso3Language": "fra",
"dupleName": "Exemple de fournisseur telus",
"defaultDupleSeparator": ":",
"asDuple": "fra:Exemple de fournisseur telus"
}
],
"osuNaiStandalone": "anonymous@telus.com",
"osuNaiShared": "anonymous@telus.com",
"osuMethodList": [
1,
0
],
"osuServiceDescription": [
{
"model_type": "PasspointDuple",
"locale": "en_CA",
"dupleIso3Language": "eng",
"dupleName": "Example services telus",
"defaultDupleSeparator": ":",
"asDuple": "eng:Example services telus"
},
{
"model_type": "PasspointDuple",
"locale": "fr_CA",
"dupleIso3Language": "fra",
"dupleName": "Exemples de services telus",
"defaultDupleSeparator": ":",
"asDuple": "fra:Exemples de services telus"
}
],
"roamingOi": [
1,
2,
3,
4
],
"profileType": "passpoint_osu_id_provider"
},
"createdTimestamp": 1606778370351,
"lastModifiedTimestamp": 1606778370351,
"childProfileIds": [
]
}
]

View File

@@ -0,0 +1,299 @@
[
{
"model_type": "Profile",
"id": 10,
"customerId": 2,
"profileType": "service_metrics_collection_config",
"name": "Metrics-Profile-3-Radios",
"details": {
"model_type": "ServiceMetricsCollectionConfigProfile",
"radioTypes": [
"is5GHzL",
"is2dot4GHz",
"is5GHzU"
],
"serviceMetricDataTypes": [
"ApNode",
"ApSsid",
"Client",
"Channel",
"Neighbour"
],
"metricConfigParameterMap": {
"ApNode": [
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 120,
"channelSurveyType": "OFF_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is5GHzL",
"serviceMetricDataType": "ApNode",
"statsReportFormat": "RAW"
},
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 120,
"channelSurveyType": "OFF_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is5GHzU",
"serviceMetricDataType": "ApNode",
"statsReportFormat": "RAW"
},
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 120,
"channelSurveyType": "OFF_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is2dot4GHz",
"serviceMetricDataType": "ApNode",
"statsReportFormat": "RAW"
},
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"channelSurveyType": "ON_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is5GHzU",
"serviceMetricDataType": "ApNode",
"statsReportFormat": "RAW"
},
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"channelSurveyType": "ON_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is2dot4GHz",
"serviceMetricDataType": "ApNode",
"statsReportFormat": "RAW"
},
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"channelSurveyType": "ON_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is5GHzL",
"serviceMetricDataType": "ApNode",
"statsReportFormat": "RAW"
}
],
"ApSsid": [
{
"model_type": "ServiceMetricRadioConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"radioType": "is5GHzU",
"serviceMetricDataType": "ApSsid"
},
{
"model_type": "ServiceMetricRadioConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"radioType": "is5GHzL",
"serviceMetricDataType": "ApSsid"
},
{
"model_type": "ServiceMetricRadioConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"radioType": "is2dot4GHz",
"serviceMetricDataType": "ApSsid"
}
],
"Client": [
{
"model_type": "ServiceMetricRadioConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"radioType": "is5GHzU",
"serviceMetricDataType": "Client"
},
{
"model_type": "ServiceMetricRadioConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"radioType": "is5GHzL",
"serviceMetricDataType": "Client"
},
{
"model_type": "ServiceMetricRadioConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"radioType": "is2dot4GHz",
"serviceMetricDataType": "Client"
}
],
"Channel": [
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 120,
"channelSurveyType": "OFF_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is5GHzL",
"serviceMetricDataType": "Channel",
"statsReportFormat": "RAW"
},
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 120,
"channelSurveyType": "OFF_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "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",
"statsReportFormat": "RAW"
}
],
"Neighbour": [
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 120,
"channelSurveyType": "OFF_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is5GHzU",
"serviceMetricDataType": "Neighbour",
"statsReportFormat": "RAW"
},
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"channelSurveyType": "ON_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is5GHzL",
"serviceMetricDataType": "Neighbour",
"statsReportFormat": "RAW"
},
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 120,
"channelSurveyType": "OFF_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is2dot4GHz",
"serviceMetricDataType": "Neighbour",
"statsReportFormat": "RAW"
},
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"channelSurveyType": "ON_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is5GHzU",
"serviceMetricDataType": "Neighbour",
"statsReportFormat": "RAW"
},
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 120,
"channelSurveyType": "OFF_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is5GHzL",
"serviceMetricDataType": "Neighbour",
"statsReportFormat": "RAW"
},
{
"model_type": "ServiceMetricSurveyConfigParameters",
"samplingInterval": 30,
"reportingIntervalSeconds": 60,
"channelSurveyType": "ON_CHANNEL",
"scanIntervalMillis": 0,
"percentUtilizationThreshold": 10,
"delayMillisecondsThreshold": 600,
"radioType": "is2dot4GHz",
"serviceMetricDataType": "Neighbour",
"statsReportFormat": "RAW"
}
]
},
"profileType": "service_metrics_collection_config"
},
"createdTimestamp": 1606778369931,
"lastModifiedTimestamp": 1606778369931,
"childProfileIds": [
]
}
]

View File

@@ -0,0 +1,37 @@
[
{
"model_type": "Profile",
"id": 17,
"customerId": 2,
"profileType": "passpoint_operator",
"name": "TipWlan-Passpoint-Operator",
"details": {
"model_type": "PasspointOperatorProfile",
"serverOnlyAuthenticatedL2EncryptionNetwork": false,
"x509CertificateLocation": "/etc/ca.pem",
"operatorFriendlyName": [
{
"model_type": "PasspointDuple",
"locale": "en_CA",
"dupleIso3Language": "eng",
"dupleName": "Default friendly passpoint_operator name",
"defaultDupleSeparator": ":",
"asDuple": "eng:Default friendly passpoint_operator name"
},
{
"model_type": "PasspointDuple",
"locale": "fr_CA",
"dupleIso3Language": "fra",
"dupleName": "Nom de l'opérateur convivial par défaut",
"defaultDupleSeparator": ":",
"asDuple": "fra:Nom de l'opérateur convivial par défaut"
}
],
"profileType": "passpoint_operator"
},
"createdTimestamp": 1606778369945,
"lastModifiedTimestamp": 1606778369945,
"childProfileIds": [
]
}
]

View File

@@ -0,0 +1,34 @@
[
{
"model_type": "Profile",
"id": 1,
"customerId": 2,
"profileType": "radius",
"name": "Radius-Profile",
"details": {
"model_type": "RadiusProfile",
"subnetConfiguration": null,
"serviceRegionMap": {
"Ottawa": {
"model_type": "RadiusServiceRegion",
"serverMap": {
"Radius-Profile": [
{
"model_type": "RadiusServer",
"ipAddress": "192.168.0.1",
"secret": "testing123",
"authPort": 1812,
"timeout": null
}
]
},
"regionName": "Ottawa"
}
},
"profileType": "radius"
},
"createdTimestamp": 1601961451668,
"lastModifiedTimestamp": 1601961451668,
"childProfileIds": []
}
]

View File

@@ -1,6 +1,6 @@
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 4, "id": 11,
"customerId": 2, "customerId": 2,
"profileType": "rf", "profileType": "rf",
"name": "TipWlan-rf", "name": "TipWlan-rf",
@@ -198,7 +198,7 @@
}, },
"profileType": "rf" "profileType": "rf"
}, },
"createdTimestamp": 1612285248650, "createdTimestamp": 1606778369933,
"lastModifiedTimestamp": 1612285248650, "lastModifiedTimestamp": 1606778369933,
"childProfileIds": [] "childProfileIds": []
} }

View File

@@ -1,75 +1,203 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 2, "id": 5,
"customerId": 2, "customerId": 2,
"profileType": "ssid", "profileType": "ssid",
"name": "TipWlan-cloud-3-radios", "name": "TipWlan-cloud-3-radios",
"details": { "details": {
"model_type": "SsidConfiguration", "model_type": "SsidConfiguration",
"ssid": "TipWlan-cloud-3-radios", "ssid": "TipWlan-cloud-3-radios",
"appliedRadios": [ "appliedRadios": [
"is5GHzU", "is5GHzL",
"is2dot4GHz", "is2dot4GHz",
"is5GHzL" "is5GHzU"
], ],
"ssidAdminState": "enabled", "ssidAdminState": "enabled",
"secureMode": "wpa2OnlyPSK", "secureMode": "wpa2OnlyPSK",
"vlanId": 1, "vlanId": 1,
"keyStr": "openwifi", "keyStr": "openwifi",
"broadcastSsid": "enabled", "broadcastSsid": "enabled",
"keyRefresh": 0, "keyRefresh": 0,
"noLocalSubnets": false, "noLocalSubnets": false,
"radiusServiceId": 0, "radiusServiceName": null,
"radiusAcountingServiceInterval": 60, "radiusAccountingServiceName": null,
"captivePortalId": null, "radiusAcountingServiceInterval": null,
"bandwidthLimitDown": 0, "captivePortalId": null,
"bandwidthLimitUp": 0, "bandwidthLimitDown": 0,
"clientBandwidthLimitDown": 0, "bandwidthLimitUp": 0,
"clientBandwidthLimitUp": 0, "clientBandwidthLimitDown": 0,
"videoTrafficOnly": false, "clientBandwidthLimitUp": 0,
"radioBasedConfigs": { "videoTrafficOnly": false,
"is5GHzU": { "radioBasedConfigs": {
"model_type": "RadioBasedSsidConfiguration", "is5GHzL": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is2dot4GHz": { },
"model_type": "RadioBasedSsidConfiguration", "is2dot4GHz": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is5GHz": { },
"model_type": "RadioBasedSsidConfiguration", "is5GHz": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is5GHzL": { },
"model_type": "RadioBasedSsidConfiguration", "is5GHzU": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
} "enable80211v": null
}, }
"bonjourGatewayProfileId": null, },
"enable80211w": null, "bonjourGatewayProfileId": null,
"wepConfig": null, "enable80211w": null,
"forwardMode": "BRIDGE", "wepConfig": null,
"profileType": "ssid", "forwardMode": "BRIDGE",
"radiusClientConfiguration": { "profileType": "ssid"
"model_type": "RadiusNasConfiguration", },
"nasClientId": "DEFAULT", "createdTimestamp": 1606778369598,
"nasClientIp": "WAN_IP", "lastModifiedTimestamp": 1606778369598,
"userDefinedNasId": null, "childProfileIds": [
"userDefinedNasIp": null, ]
"operatorId": null },
} {
}, "model_type": "Profile",
"createdTimestamp": 1612285248638, "id": 15,
"lastModifiedTimestamp": 1612285248638, "customerId": 2,
"childProfileIds": [] "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,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1606778369943,
"lastModifiedTimestamp": 1606778370811,
"childProfileIds": [
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
]
}
] ]

View File

@@ -0,0 +1,43 @@
[
{
"model_type": "Profile",
"id": 18,
"customerId": 2,
"profileType": "passpoint_venue",
"name": "TipWlan-Passpoint-Venue",
"details": {
"model_type": "PasspointVenueProfile",
"venueNameSet": [
{
"model_type": "PasspointVenueName",
"locale": "fr_CA",
"dupleIso3Language": "fra",
"dupleName": "Exemple de lieu",
"defaultDupleSeparator": ":",
"venueUrl": "http://www.example.com/info-fra",
"asDuple": "fra:Exemple de lieu"
},
{
"model_type": "PasspointVenueName",
"locale": "en_CA",
"dupleIso3Language": "eng",
"dupleName": "Example passpoint_venue",
"defaultDupleSeparator": ":",
"venueUrl": "http://www.example.com/info-eng",
"asDuple": "eng:Example passpoint_venue"
}
],
"venueTypeAssignment": {
"model_type": "PasspointVenueTypeAssignment",
"venueDescription": "Research and Development Facility",
"venueGroupId": 2,
"venueTypeId": 8
},
"profileType": "passpoint_venue"
},
"createdTimestamp": 1606778369950,
"lastModifiedTimestamp": 1606778369950,
"childProfileIds": [
]
}
]

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway-build</artifactId> <artifactId>opensync-gateway-build</artifactId>

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway-cloud-docker</artifactId> <artifactId>opensync-gateway-cloud-docker</artifactId>
@@ -22,7 +22,7 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway-cloud-process</artifactId> <artifactId>opensync-gateway-cloud-process</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -30,22 +30,6 @@
</triggeringPolicy> </triggeringPolicy>
</appender> </appender>
<appender name="mqttMsgTracer" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/app/logs/mqttMsgTracer.log</file>
<append>true</append>
<encoder>
<pattern>%date %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>/app/logs/mqttMsgTracer.%i.log.gz</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>20MB</maxFileSize>
</triggeringPolicy>
</appender>
<appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/app/logs/opensyncgw.log</file> <file>/app/logs/opensyncgw.log</file>
<append>true</append> <append>true</append>
@@ -83,7 +67,7 @@
<logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/> <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
<logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/> <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
<logger name="MQTT_DATA" level="INFO" additivity="false"> <logger name="MQTT_DATA" level="DEBUG" additivity="false">
<appender-ref ref="mqttDataFile"/> <appender-ref ref="mqttDataFile"/>
</logger> </logger>

View File

@@ -22,8 +22,6 @@ FILE_STORE_DIRECTORY="${FILE_STORE_DIRECTORY_INTERNAL:=/tmp/filestore}"
FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}" FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}"
MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_EXTERNAL_PORT}" MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_EXTERNAL_PORT}"
OVSDB_EXTERNAL_PORT="${OVSDB_EXTERNAL_PORT}" OVSDB_EXTERNAL_PORT="${OVSDB_EXTERNAL_PORT}"
OFF_CHANNEL_REPORTING_INTERVAL_SECONDS="${OFF_CHANNEL_REPORTING_INTERVAL_SECONDS:=120}"
REPORTING_INTERVAL_SECONDS="${REPORTING_INTERVAL_SECONDS:=60}"
@@ -108,8 +106,6 @@ PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$DEFAULT_WAN_TYPE"
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$DEFAULT_WAN_NAME" PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$DEFAULT_WAN_NAME"
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$DEFAULT_LAN_TYPE" PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$DEFAULT_LAN_TYPE"
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$DEFAULT_LAN_NAME" PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$DEFAULT_LAN_NAME"
PROV_PROPS+=" -Dtip.wlan.defaultOffChannelReportingIntervalSeconds=$OFF_CHANNEL_REPORTING_INTERVAL_SECONDS"
PROV_PROPS+=" -Dtip.wlan.defaultReportingIntervalSeconds=$REPORTING_INTERVAL_SECONDS"
PROV_PROPS+=" -Dtip.wlan.ovsdb.autoProvisionedCustomerId=$AUTO_PROV_CUSTOMER_ID" PROV_PROPS+=" -Dtip.wlan.ovsdb.autoProvisionedCustomerId=$AUTO_PROV_CUSTOMER_ID"
@@ -117,16 +113,9 @@ FILE_STORE_PROPS=" "
FILE_STORE_PROPS+=" -Dtip.wlan.fileStoreDirectory=$FILE_STORE_DIRECTORY" FILE_STORE_PROPS+=" -Dtip.wlan.fileStoreDirectory=$FILE_STORE_DIRECTORY"
FILE_STORE_PROPS+=" -Dtip.wlan.externalFileStoreURL=$FILE_STORE_EXTERNAL_URL" FILE_STORE_PROPS+=" -Dtip.wlan.externalFileStoreURL=$FILE_STORE_EXTERNAL_URL"
REMOTE_DEBUG_PORT=${REMOTE_DEBUG_PORT:-'5005'} REMOTE_DEBUG_PORT=5005
if [ "x$REMOTE_DEBUG_ENABLE" == "xtrue" ] REMOTE_DEBUG=" -agentlib:jdwp=transport=dt_socket,server=y,address=*:$REMOTE_DEBUG_PORT,suspend=n"
then
REMOTE_DEBUG=" -agentlib:jdwp=transport=dt_socket,server=y,address=*:$REMOTE_DEBUG_PORT,suspend=n"
else
REMOTE_DEBUG=" "
fi
JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } " export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS $HOST_PROPS $PROV_PROPS $FILE_STORE_PROPS $REMOTE_DEBUG"
export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS $HOST_PROPS $PROV_PROPS $FILE_STORE_PROPS $REMOTE_DEBUG"
java $ALL_PROPS -jar app.jar java $ALL_PROPS -jar app.jar

View File

@@ -1,9 +1,11 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway-cloud-process</artifactId> <artifactId>opensync-gateway-cloud-process</artifactId>
@@ -16,99 +18,99 @@
<dependencies> <dependencies>
<!-- <dependency> <groupId>com.telecominfraproject.wlan</groupId> <artifactId>opensync-gateway</artifactId> <!-- <dependency> <groupId>com.telecominfraproject.wlan</groupId> <artifactId>opensync-gateway</artifactId>
<version>0.0.1-SNAPSHOT</version> </dependency> --> <version>${tip-wlan-cloud.release.version}</version> </dependency> -->
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-ext-cloud</artifactId> <artifactId>opensync-ext-cloud</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>filestore-service</artifactId> <artifactId>filestore-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>customer-service-remote</artifactId> <artifactId>customer-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>location-service-remote</artifactId> <artifactId>location-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>equipment-service-remote</artifactId> <artifactId>equipment-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>profile-service-remote</artifactId> <artifactId>profile-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>portal-user-service-remote</artifactId> <artifactId>portal-user-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>service-metric-service-remote</artifactId> <artifactId>service-metric-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>system-event-service-remote</artifactId> <artifactId>system-event-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>alarm-service-remote</artifactId> <artifactId>alarm-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>status-service-remote</artifactId> <artifactId>status-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>client-service-remote</artifactId> <artifactId>client-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>routing-service-remote</artifactId> <artifactId>routing-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>firmware-service-remote</artifactId> <artifactId>firmware-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>manufacturer-service-remote</artifactId> <artifactId>manufacturer-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>cloud-event-dispatcher-remote</artifactId> <artifactId>cloud-event-dispatcher-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -136,7 +136,7 @@ tip.wlan.manufacturerServiceBaseUrl=https://localhost:9092
tip.wlan.portalUserServiceBaseUrl=https://localhost:9092 tip.wlan.portalUserServiceBaseUrl=https://localhost:9092
tip.wlan.fileStoreDirectory=/tmp/tip-wlan-filestore tip.wlan.fileStoreDirectory=/tmp/tip-wlan-filestore
tip.wlan.externalFileStoreURL=https://localhost:9092 tip.wlan.externalFileStoreURL=https://localhost:9096
#server.session-timeout= # session timeout in seconds #server.session-timeout= # session timeout in seconds
#server.tomcat.max-threads = 0 # number of threads in protocol handler #server.tomcat.max-threads = 0 # number of threads in protocol handler

View File

@@ -63,7 +63,7 @@
<logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/> <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
<logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/> <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
<logger name="MQTT_DATA" level="INFO"/> <logger name="MQTT_DATA" level="DEBUG"/>
<!-- <!--
<logger name="org.springframework.security.web.authentication.preauth" level="DEBUG"/> <logger name="org.springframework.security.web.authentication.preauth" level="DEBUG"/>

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway-static-docker</artifactId> <artifactId>opensync-gateway-static-docker</artifactId>
@@ -22,7 +22,7 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway-static-process</artifactId> <artifactId>opensync-gateway-static-process</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -1,472 +1,221 @@
{ {
"model_type": "Equipment", "model_type": "Equipment",
"id": 1, "id": 51,
"customerId": 2, "customerId": 2,
"profileId": 8, "profileId": 12,
"locationId": 8, "locationId": 8,
"equipmentType": "AP",
"inventoryId": "Test_Client_21P10C68818122",
"name": "Test_Client_21P10C68818122",
"details": {
"model_type": "ApElementConfiguration",
"equipmentModel": "EA8300-CA",
"elementConfigVersion": "AP-V1",
"equipmentType": "AP", "equipmentType": "AP",
"inventoryId": "Open_AP_21P10C68818122", "deviceMode": "standaloneAP",
"name": "Open_AP_21P10C68818122", "gettingIP": "dhcp",
"details": { "staticIP": null,
"model_type": "ApElementConfiguration", "staticIpMaskCidr": null,
"equipmentModel": "EA8300-CA", "staticIpGw": null,
"elementConfigVersion": "AP-V1", "gettingDNS": "dhcp",
"equipmentType": "AP", "staticDnsIp1": null,
"deviceMode": "standaloneAP", "staticDnsIp2": null,
"gettingIP": "dhcp", "peerInfoList": [],
"staticIP": null, "deviceName": "Default Device Name",
"staticIpMaskCidr": null, "locationData": null,
"staticIpGw": null, "locallyConfiguredMgmtVlan": 0,
"gettingDNS": "dhcp", "locallyConfigured": false,
"staticDnsIp1": null, "deploymentType": "CEILING",
"staticDnsIp2": null, "syntheticClientEnabled": null,
"peerInfoList": [], "frameReportThrottleEnabled": true,
"deviceName": "Open_AP_21P10C68818122", "antennaType": "OMNI",
"locationData": null, "costSavingEventsEnabled": true,
"locallyConfiguredMgmtVlan": 0, "forwardMode": "BRIDGE",
"locallyConfigured": false, "radioMap": {
"deploymentType": "CEILING", "is2dot4GHz": {
"syntheticClientEnabled": null, "model_type": "ElementRadioConfiguration",
"frameReportThrottleEnabled": true, "radioType": "is2dot4GHz",
"antennaType": "OMNI", "channelNumber": 6,
"costSavingEventsEnabled": true, "manualChannelNumber": 6,
"forwardMode": "BRIDGE", "backupChannelNumber": 11,
"radioMap": { "bannedChannels": [],
"is5GHzU": { "allowedChannels": [],
"model_type": "ElementRadioConfiguration", "rxCellSizeDb": {
"radioType": "is5GHzU", "model_type": "SourceSelectionValue",
"channelNumber": 149, "source": "auto",
"manualChannelNumber": 149, "value": -90
"backupChannelNumber": 157,
"manualBackupChannelNumber": 157,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 161,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 100,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 132,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 165,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 104,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 136,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 108,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 140,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 112,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 144,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 116,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 149,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 153,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 157,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
},
"is2dot4GHz": {
"model_type": "ElementRadioConfiguration",
"radioType": "is2dot4GHz",
"channelNumber": 6,
"manualChannelNumber": 6,
"backupChannelNumber": 11,
"manualBackupChannelNumber": 11,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 1,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 2,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 3,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 4,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 5,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 6,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 7,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 8,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 9,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 10,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 11,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
}
]
},
"is5GHzL": {
"model_type": "ElementRadioConfiguration",
"radioType": "is5GHzL",
"channelNumber": 36,
"manualChannelNumber": 36,
"backupChannelNumber": 44,
"manualBackupChannelNumber": 44,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 52,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 36,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 56,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 40,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 60,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 44,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 64,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 48,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
}
}, },
"advancedRadioMap": { "probeResponseThresholdDb": {
"is2dot4GHz": { "model_type": "SourceSelectionValue",
"model_type": "RadioConfiguration", "source": "auto",
"radioType": "is2dot4GHz", "value": -90
"radioAdminState": "enabled", },
"fragmentationThresholdBytes": 2346, "clientDisconnectThresholdDb": {
"uapsdState": "enabled", "model_type": "SourceSelectionValue",
"stationIsolation": "disabled", "source": "auto",
"multicastRate": { "value": -90
"model_type": "SourceSelectionMulticast", },
"source": "profile", "eirpTxPower": {
"value": "auto" "model_type": "SourceSelectionValue",
}, "source": "auto",
"managementRate": { "value": 32
"model_type": "SourceSelectionManagement", },
"source": "profile", "perimeterDetectionEnabled": true,
"value": "auto" "bestAPSteerType": "both",
}, "deauthAttackDetection": null,
"bestApSettings": { "allowedChannelsPowerLevels": [],
"model_type": "SourceSelectionSteering", "activeChannel": 6
"source": "manual", },
"value": { "is5GHzU": {
"model_type": "RadioBestApSettings", "model_type": "ElementRadioConfiguration",
"mlComputed": true, "radioType": "is5GHzU",
"dropInSnrPercentage": 20, "channelNumber": 149,
"minLoadFactor": 50 "manualChannelNumber": 149,
} "backupChannelNumber": 154,
}, "bannedChannels": [],
"legacyBSSRate": "enabled", "allowedChannels": [],
"dtimPeriod": 2, "rxCellSizeDb": {
"deauthAttackDetection": null "model_type": "SourceSelectionValue",
}, "source": "auto",
"is5GHzU": { "value": -90
"model_type": "RadioConfiguration", },
"radioType": "is5GHzU", "probeResponseThresholdDb": {
"radioAdminState": "enabled", "model_type": "SourceSelectionValue",
"fragmentationThresholdBytes": 2346, "source": "auto",
"uapsdState": "enabled", "value": -90
"stationIsolation": "disabled", },
"multicastRate": { "clientDisconnectThresholdDb": {
"model_type": "SourceSelectionMulticast", "model_type": "SourceSelectionValue",
"source": "profile", "source": "auto",
"value": "auto" "value": -90
}, },
"managementRate": { "eirpTxPower": {
"model_type": "SourceSelectionManagement", "model_type": "SourceSelectionValue",
"source": "profile", "source": "auto",
"value": "auto" "value": 32
}, },
"bestApSettings": { "perimeterDetectionEnabled": true,
"model_type": "SourceSelectionSteering", "bestAPSteerType": "both",
"source": "manual", "deauthAttackDetection": null,
"value": { "allowedChannelsPowerLevels": [],
"model_type": "RadioBestApSettings", "activeChannel": 149
"mlComputed": true, },
"dropInSnrPercentage": 30, "is5GHzL": {
"minLoadFactor": 40 "model_type": "ElementRadioConfiguration",
} "radioType": "is5GHzL",
}, "channelNumber": 36,
"legacyBSSRate": "enabled", "manualChannelNumber": 36,
"dtimPeriod": 2, "backupChannelNumber": 44,
"deauthAttackDetection": null "bannedChannels": [],
}, "allowedChannels": [],
"is5GHzL": { "rxCellSizeDb": {
"model_type": "RadioConfiguration", "model_type": "SourceSelectionValue",
"radioType": "is5GHzL", "source": "auto",
"radioAdminState": "enabled", "value": -90
"fragmentationThresholdBytes": 2346, },
"uapsdState": "enabled", "probeResponseThresholdDb": {
"stationIsolation": "disabled", "model_type": "SourceSelectionValue",
"multicastRate": { "source": "auto",
"model_type": "SourceSelectionMulticast", "value": -90
"source": "profile", },
"value": "auto" "clientDisconnectThresholdDb": {
}, "model_type": "SourceSelectionValue",
"managementRate": { "source": "auto",
"model_type": "SourceSelectionManagement", "value": -90
"source": "profile", },
"value": "auto" "eirpTxPower": {
}, "model_type": "SourceSelectionValue",
"bestApSettings": { "source": "auto",
"model_type": "SourceSelectionSteering", "value": 32
"source": "manual", },
"value": { "perimeterDetectionEnabled": true,
"model_type": "RadioBestApSettings", "bestAPSteerType": "both",
"mlComputed": true, "deauthAttackDetection": null,
"dropInSnrPercentage": 30, "allowedChannelsPowerLevels": [],
"minLoadFactor": 40 "activeChannel": 36
} }
},
"legacyBSSRate": "enabled",
"dtimPeriod": 2,
"deauthAttackDetection": null
}
}
}, },
"latitude": null, "advancedRadioMap": {
"longitude": null, "is2dot4GHz": {
"baseMacAddress": { "model_type": "RadioConfiguration",
"model_type": "MacAddress", "radioType": "is2dot4GHz",
"address": "JPWi7y5T", "radioAdminState": "enabled",
"addressAsString": "24:f5:a2:ef:2e:53" "fragmentationThresholdBytes": 2346,
}, "uapsdState": "enabled",
"serial": "21P10C68818122", "stationIsolation": "disabled",
"createdTimestamp": 1612285288821, "managementRate": {
"lastModifiedTimestamp": 1612285293922 "model_type": "SourceSelectionManagement",
} "source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
},
"is5GHzU": {
"model_type": "RadioConfiguration",
"radioType": "is5GHzU",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"uapsdState": "enabled",
"stationIsolation": "disabled",
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
},
"is5GHzL": {
"model_type": "RadioConfiguration",
"radioType": "is5GHzL",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"uapsdState": "enabled",
"stationIsolation": "disabled",
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
}
}
},
"latitude": null,
"longitude": null,
"serial": "21P10C68818122",
"createdTimestamp": 1591653239821,
"lastModifiedTimestamp": 1591653241398
}

View File

@@ -1,61 +1,60 @@
{ {
"model_type": "Location", "model_type" : "Location",
"id": 8, "id" : 8,
"parentId": 0, "parentId" : 0,
"locationType": "SITE", "locationType" : "SITE",
"customerId": 2, "customerId" : 2,
"name": "Ottawa", "name" : "Ottawa",
"details": { "details" : {
"model_type": "LocationDetails", "model_type" : "LocationDetails",
"countryCode": "CA", "countryCode" : "ca",
"dailyActivityDetails": { "maintenanceWindow" : null,
"SUNDAY": { "rrmEnabled" : true,
"model_type": "LocationActivityDetails", "dailyActivityDetails" : {
"busyTime": "13:30", "SUNDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"MONDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "MONDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"TUESDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "TUESDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"WEDNESDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "WEDNESDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"THURSDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "THURSDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"FRIDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "FRIDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"SATURDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "SATURDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
} "quietTime" : "3:30",
}, "timezone" : "US/Eastern"
"maintenanceWindow": null, }
"rrmEnabled": true, }
"timezone": "US/Eastern" },
}, "createdTimestamp" : 1590607043540,
"createdTimestamp": 1612285243534, "lastModifiedTimestamp" : 1590607043540
"lastModifiedTimestamp": 1612285243534
} }

View File

@@ -1,6 +1,6 @@
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 8, "id": 12,
"customerId": 2, "customerId": 2,
"profileType": "equipment_ap", "profileType": "equipment_ap",
"name": "ApProfile-3-radios", "name": "ApProfile-3-radios",
@@ -20,6 +20,11 @@
"syntheticClientEnabled": true, "syntheticClientEnabled": true,
"ledControlEnabled": true, "ledControlEnabled": true,
"equipmentDiscovery": false, "equipmentDiscovery": false,
"greTunnelName": null,
"greParentIfName": null,
"greLocalInetAddr": null,
"greRemoteInetAddr": null,
"greRemoteMacAddr": null,
"radioMap": { "radioMap": {
"is2dot4GHz": { "is2dot4GHz": {
"model_type": "RadioProfileConfiguration", "model_type": "RadioProfileConfiguration",
@@ -37,22 +42,15 @@
"bestAPSteerType": "both" "bestAPSteerType": "both"
} }
}, },
"greTunnelConfigurations": [
{
"model_type": "GreTunnelConfiguration",
"greTunnelName": "gre1",
"greRemoteInetAddr": "192.168.1.101",
"vlanIdsInGreTunnel": [
100
]
}
],
"profileType": "equipment_ap" "profileType": "equipment_ap"
}, },
"createdTimestamp": 1612285248925, "createdTimestamp": 1606778369934,
"lastModifiedTimestamp": 1612285628377, "lastModifiedTimestamp": 1606778443413,
"childProfileIds": [ "childProfileIds": [
2, 16,
4 5,
10,
11,
15
] ]
} }

View File

@@ -1,58 +1,135 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 5, "id": 14,
"customerId": 2, "customerId": 2,
"profileType": "captive_portal", "profileType": "captive_portal",
"name": "Captive-portal", "name": "Captive-portal",
"details": { "details": {
"model_type": "CaptivePortalConfiguration", "model_type": "CaptivePortalConfiguration",
"name": "Default", "name": "Captive-portal",
"browserTitle": "Captive-portal", "browserTitle": "Access the network as Guest",
"headerContent": "Captive Portal", "headerContent": "Captive Portal",
"userAcceptancePolicy": "Please agree to the following terms for using this network:", "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
"successPageMarkdownText": "You are now authorized and connected to the network.", "successPageMarkdownText": "Welcome to the network",
"redirectURL": "https://www.google.com", "redirectURL": "",
"externalCaptivePortalURL": null, "externalCaptivePortalURL": null,
"sessionTimeoutInMinutes": 10, "sessionTimeoutInMinutes": 60,
"logoFile": { "logoFile": null,
"model_type": "ManagedFileInfo", "backgroundFile": null,
"md5checksum": null, "walledGardenAllowlist": [],
"lastModifiedTimestamp": null, "usernamePasswordFile": {
"apExportUrl": "/filestore/tip-logo-mobile", "model_type": "ManagedFileInfo",
"fileCategory": "CaptivePortalLogo", "md5checksum": null,
"fileType": "PNG", "lastModifiedTimestamp": null,
"altSlot": false "apExportUrl": "userList",
}, "fileCategory": "UsernamePasswordList",
"backgroundFile": { "fileType": "TEXT",
"model_type": "ManagedFileInfo", "altSlot": true
"md5checksum": null, },
"lastModifiedTimestamp": null, "authenticationType": "guest",
"apExportUrl": "/filestore/tip-logo", "radiusAuthMethod": "CHAP",
"fileCategory": "CaptivePortalBackground", "maxUsersWithSameCredentials": 42,
"fileType": "PNG", "externalPolicyFile": null,
"altSlot": false "backgroundPosition": "left_top",
}, "backgroundRepeat": "no_repeat",
"walledGardenAllowlist": [ "radiusServiceName": null,
], "expiryType": "unlimited",
"usernamePasswordFile": null, "userList": [
"authenticationType": "guest", {
"radiusAuthMethod": "CHAP", "model_type": "TimedAccessUserRecord",
"maxUsersWithSameCredentials": 3, "username": "customer",
"externalPolicyFile": null, "password": "testing123",
"backgroundPosition": "left_top", "activationTime": 1602183994956,
"backgroundRepeat": "no_repeat", "expirationTime": 1602212794956,
"radiusServiceId": 0, "numDevices": 1,
"expiryType": "time_limited", "userDetails": {
"userList": [ "model_type": "TimedAccessUserDetails",
], "firstName": "Pac",
"macAllowList": [ "lastName": "Man",
], "passwordNeedsReset": false
"profileType": "captive_portal" },
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "fKtg5upO",
"addressAsString": "7c:ab:60:e6:ea:4e"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer",
"password": "testing123",
"activationTime": 1602183994957,
"expirationTime": 1602187594957,
"numDevices": 0,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Q",
"lastName": "Bert",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "wJrQdqho",
"addressAsString": "c0:9a:d0:76:a8:68"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer2",
"password": "testing1234",
"activationTime": 1602183994957,
"expirationTime": 1602788794957,
"numDevices": 1,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Duke",
"lastName": "Nukem",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "fKtg5upN",
"addressAsString": "7c:ab:60:e6:ea:4d"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer2",
"password": "testing1234",
"activationTime": 1602183994957,
"expirationTime": 1602270394957,
"numDevices": 0,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Missile",
"lastName": "Commander",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "wJrQdqhj",
"addressAsString": "c0:9a:d0:76:a8:63"
}
],
"lastModifiedTimestamp": 0
}
],
"macAllowList": [],
"profileType": "captive_portal"
}, },
"createdTimestamp": 1611857459118, "createdTimestamp": 1602183994959,
"lastModifiedTimestamp": 1611857459118, "lastModifiedTimestamp": 1602183994959,
"childProfileIds": [ "childProfileIds": []
] }
} ]
]

View File

@@ -1,71 +1,71 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 37, "id": 24,
"customerId": 2, "customerId": 2,
"profileType": "passpoint", "profileType": "passpoint",
"name": "hotspot20-profile-2021-01-21T21:28:59.171Z", "name": "TipWlan-Passpoint-Config",
"details": { "details": {
"model_type": "PasspointProfile", "model_type": "PasspointProfile",
"enableInterworkingAndHs20": true, "enableInterworkingAndHs20": true,
"hessid": null, "hessid": null,
"passpointAccessNetworkType": "free_public_network", "passpointAccessNetworkType": "free_public_network",
"passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions", "passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
"additionalStepsRequiredForAccess": 0, "additionalStepsRequiredForAccess": 0,
"deauthRequestTimeout": 0, "deauthRequestTimeout": 0,
"operatingClass": 0, "operatingClass": 0,
"termsAndConditionsFile": { "termsAndConditionsFile": {
"model_type": "ManagedFileInfo", "model_type": "ManagedFileInfo",
"md5checksum": null, "md5checksum": null,
"lastModifiedTimestamp": null, "lastModifiedTimestamp": null,
"apExportUrl": "https://localhost:9091/filestore/termsAndConditions", "apExportUrl": "https://localhost:9091/filestore/termsAndConditions",
"fileCategory": "ExternalPolicyConfiguration", "fileCategory": "ExternalPolicyConfiguration",
"fileType": "TEXT", "fileType": "TEXT",
"altSlot": false "altSlot": false
}, },
"whitelistDomain": null, "whitelistDomain": null,
"emergencyServicesReachable": true, "emergencyServicesReachable": true,
"unauthenticatedEmergencyServiceAccessible": false, "unauthenticatedEmergencyServiceAccessible": false,
"internetConnectivity": true, "internetConnectivity": true,
"connectionCapabilitySet": [ "connectionCapabilitySet": [
{ {
"model_type": "PasspointConnectionCapability", "model_type": "PasspointConnectionCapability",
"connectionCapabilitiesPortNumber": 8888, "connectionCapabilitiesPortNumber": 8888,
"connectionCapabilitiesIpProtocol": "TCP", "connectionCapabilitiesStatus": "open",
"connectionCapabilitiesStatus": "open" "connectionCapabilitiesIpProtocol": "TCP"
} }
], ],
"ipAddressTypeAvailability": "public_IPv4_address_available", "ipAddressTypeAvailability": "public_IPv4_address_available",
"qosMapSetConfiguration": null, "qosMapSetConfiguration": null,
"apGeospatialLocation": null, "apGeospatialLocation": null,
"apCivicLocation": null, "apCivicLocation": null,
"apPublicLocationIdUri": null, "apPublicLocationIdUri": null,
"gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest",
"anqpDomainId": 1234, "anqpDomainId": 1234,
"disableDownstreamGroupAddressedForwarding": false, "disableDownstreamGroupAddressedForwarding": false,
"enable2pt4GHz": true, "enable2pt4GHz": true,
"enable5GHz": true, "enable5GHz": true,
"associatedAccessSsidProfileIds": [ "associatedAccessSsidProfileIds": [
32 15
], ],
"osuSsidProfileId": 31, "osuSsidProfileId": 16,
"passpointOperatorProfileId": 34, "passpointOperatorProfileId": 17,
"passpointVenueProfileId": 33, "passpointVenueProfileId": 18,
"passpointOsuProviderProfileIds": [ "passpointOsuProviderProfileIds": [
35, 19,
36 20
], ],
"accessNetworkType": "free_public_network", "accessNetworkType": "free_public_network",
"networkAuthenticationType": "acceptance_of_terms_and_conditions", "networkAuthenticationType": "acceptance_of_terms_and_conditions",
"profileType": "passpoint" "profileType": "passpoint"
}, },
"createdTimestamp": 0, "createdTimestamp": 1606778370807,
"lastModifiedTimestamp": 1611264539331, "lastModifiedTimestamp": 1606778370807,
"childProfileIds": [ "childProfileIds": [
33, 17,
34, 18,
35, 19,
36 20
] ]
} }
] ]

View File

@@ -1,263 +1,270 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 35, "id": 19,
"customerId": 2, "customerId": 2,
"profileType": "passpoint_osu_id_provider", "profileType": "passpoint_osu_id_provider",
"name": "provider1-profile-2021-01-21T21:28:59.057Z", "name": "TipWlan-Passpoint-OSU-Provider",
"details": { "details": {
"model_type": "PasspointOsuProviderProfile", "model_type": "PasspointOsuProviderProfile",
"mccMncList": [ "domainName": "rogers.com",
{ "mccMncList": [
"model_type": "PasspointMccMnc", {
"mcc": 302, "model_type": "PasspointMccMnc",
"mnc": 720, "mcc": 302,
"iso": "ca", "mnc": 720,
"country": "Canada", "iso": "ca",
"countryCode": 1, "country": "Canada",
"network": "Rogers AT&T Wireless", "countryCode": 1,
"mccMncPairing": "302,720" "network": "Rogers AT&T Wireless",
} "mccMncPairing": "302,720"
], }
"naiRealmList": [ ],
{ "naiRealmList": [
"model_type": "PasspointNaiRealmInformation", {
"naiRealms": [ "model_type": "PasspointNaiRealmInformation",
"rogers.com" "naiRealms": [
], "rogers.com"
"encoding": 0, ],
"eapMethods": [ "encoding": 0,
"EAP-TTLS with username/password", "eapMethods": [
"EAP-TLS with certificate" "EAP-TTLS with username/password",
], "EAP-TLS with certificate"
"eapMap": { ],
"EAP-TTLS with username/password": [ "eapMap": {
"Credential Type:username/password", "EAP-TTLS with username/password": [
"Non-EAP Inner Authentication Type:MSCHAPV2" "Credential Type:username/password",
], "Non-EAP Inner Authentication Type:MSCHAPV2"
"EAP-TLS with certificate": [ ],
"Credential Type:Certificate" "EAP-TLS with certificate": [
] "Credential Type:Certificate"
} ]
} }
], }
"osuIconList": [ ],
{ "osuIconList": [
"model_type": "PasspointOsuIcon", {
"iconWidth": 32, "model_type": "PasspointOsuIcon",
"iconHeight": 32, "iconWidth": 32,
"languageCode": "eng", "iconHeight": 32,
"iconLocale": "en_CA", "languageCode": "eng",
"iconName": "icon32eng", "iconLocale": "en_CA",
"filePath": "/tmp/icon32eng.png", "iconName": "icon32eng",
"imageUrl": "https://localhost:9096/icon32eng.png", "filePath": "/tmp/icon32eng.png",
"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" "imageUrl": "https://localhost:9096/icon32eng.png",
}, "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
{ },
"model_type": "PasspointOsuIcon", {
"iconWidth": 32, "model_type": "PasspointOsuIcon",
"iconHeight": 32, "iconWidth": 32,
"languageCode": "fra", "iconHeight": 32,
"iconLocale": "fr_CA", "languageCode": "fra",
"iconName": "icon32fra", "iconLocale": "fr_CA",
"filePath": "/tmp/icon32fra.png", "iconName": "icon32fra",
"imageUrl": "https://localhost:9096/icon32fra.png", "filePath": "/tmp/icon32fra.png",
"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" "imageUrl": "https://localhost:9096/icon32fra.png",
}, "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
{ },
"model_type": "PasspointOsuIcon", {
"iconWidth": 32, "model_type": "PasspointOsuIcon",
"iconHeight": 32, "iconWidth": 32,
"languageCode": "eng", "iconHeight": 32,
"iconLocale": "en_US", "languageCode": "eng",
"iconName": "icon32usa", "iconLocale": "en_US",
"filePath": "/tmp/icon32usa.png", "iconName": "icon32usa",
"imageUrl": "https://localhost:9096/icon32usa.png", "filePath": "/tmp/icon32usa.png",
"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" "imageUrl": "https://localhost:9096/icon32usa.png",
} "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
], }
"osuServerUri": "https://example.com/osu/rogers", ],
"osuFriendlyName": [ "osuServerUri": "https://example.com/osu/rogers",
{ "osuFriendlyName": [
"model_type": "PasspointDuple", {
"locale": "eng", "model_type": "PasspointDuple",
"dupleIso3Language": "eng", "locale": "en_CA",
"dupleName": "Example provider rogers", "dupleIso3Language": "eng",
"defaultDupleSeparator": ":", "dupleName": "Example provider rogers",
"asDuple": "eng:Example provider rogers" "defaultDupleSeparator": ":",
}, "asDuple": "eng:Example provider rogers"
{ },
"model_type": "PasspointDuple", {
"locale": "fra", "model_type": "PasspointDuple",
"dupleIso3Language": "fra", "locale": "fr_CA",
"dupleName": "Exemple de fournisseur rogers", "dupleIso3Language": "fra",
"defaultDupleSeparator": ":", "dupleName": "Exemple de fournisseur rogers",
"asDuple": "fra:Exemple de fournisseur rogers" "defaultDupleSeparator": ":",
} "asDuple": "fra:Exemple de fournisseur rogers"
], }
"osuNaiStandalone": "anonymous@rogers.com", ],
"osuNaiShared": "anonymous@rogers.com", "osuNaiStandalone": "anonymous@rogers.com",
"osuMethodList": [ "osuNaiShared": "anonymous@rogers.com",
1, "osuMethodList": [
0 1,
], 0
"osuServiceDescription": [ ],
{ "osuServiceDescription": [
"model_type": "PasspointDuple", {
"locale": "eng", "model_type": "PasspointDuple",
"dupleIso3Language": "eng", "locale": "en_CA",
"dupleName": "Example services rogers", "dupleIso3Language": "eng",
"defaultDupleSeparator": ":", "dupleName": "Example services rogers",
"asDuple": "eng:Example services rogers" "defaultDupleSeparator": ":",
}, "asDuple": "eng:Example services rogers"
{ },
"model_type": "PasspointDuple", {
"locale": "fra", "model_type": "PasspointDuple",
"dupleIso3Language": "fra", "locale": "fr_CA",
"dupleName": "Exemples de services rogers", "dupleIso3Language": "fra",
"defaultDupleSeparator": ":", "dupleName": "Exemples de services rogers",
"asDuple": "fra:Exemples de services rogers" "defaultDupleSeparator": ":",
} "asDuple": "fra:Exemples de services rogers"
], }
"roamingOi": [ ],
"BAA2D00100", "roamingOi": [
"BAA2D00000" 1,
], 2,
"profileType": "passpoint_osu_id_provider" 3,
}, 4
"createdTimestamp": 1611264539070, ],
"lastModifiedTimestamp": 1611264539070, "profileType": "passpoint_osu_id_provider"
"childProfileIds": [] },
}, "createdTimestamp": 1606778370345,
{ "lastModifiedTimestamp": 1606778370345,
"model_type": "Profile", "childProfileIds": [
"id": 36, ]
"customerId": 2, },
"profileType": "passpoint_osu_id_provider", {
"name": "provider2-profile-2021-01-21T21:28:59.118Z", "model_type": "Profile",
"details": { "id": 20,
"model_type": "PasspointOsuProviderProfile", "customerId": 2,
"mccMncList": [ "profileType": "passpoint_osu_id_provider",
{ "name": "TipWlan-Passpoint-OSU-Provider-2",
"model_type": "PasspointMccMnc", "details": {
"mcc": 302, "model_type": "PasspointOsuProviderProfile",
"mnc": 220, "domainName": "telus.com",
"iso": "ca", "mccMncList": [
"country": "Canada", {
"countryCode": 1, "model_type": "PasspointMccMnc",
"network": "Telus Mobility", "mcc": 302,
"mccMncPairing": "302,220" "mnc": 220,
} "iso": "ca",
], "country": "Canada",
"naiRealmList": [ "countryCode": 1,
{ "network": "Telus Mobility",
"model_type": "PasspointNaiRealmInformation", "mccMncPairing": "302,220"
"naiRealms": [ }
"telus.com" ],
], "naiRealmList": [
"encoding": 0, {
"eapMethods": [ "model_type": "PasspointNaiRealmInformation",
"EAP-TTLS with username/password", "naiRealms": [
"EAP-TLS with certificate" "telus.com"
], ],
"eapMap": { "encoding": 0,
"EAP-TTLS with username/password": [ "eapMethods": [
"Credential Type:username/password", "EAP-TTLS with username/password",
"Non-EAP Inner Authentication Type:MSCHAPV2" "EAP-TLS with certificate"
], ],
"EAP-TLS with certificate": [ "eapMap": {
"Credential Type:Certificate" "EAP-TTLS with username/password": [
] "Credential Type:username/password",
} "Non-EAP Inner Authentication Type:MSCHAPV2"
} ],
], "EAP-TLS with certificate": [
"osuIconList": [ "Credential Type:Certificate"
{ ]
"model_type": "PasspointOsuIcon", }
"iconWidth": 32, }
"iconHeight": 32, ],
"languageCode": "eng", "osuIconList": [
"iconLocale": "en_CA", {
"iconName": "icon32eng", "model_type": "PasspointOsuIcon",
"filePath": "/tmp/icon32eng.png", "iconWidth": 32,
"imageUrl": "https://localhost:9096/icon32eng.png", "iconHeight": 32,
"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" "languageCode": "eng",
}, "iconLocale": "en_CA",
{ "iconName": "icon32eng",
"model_type": "PasspointOsuIcon", "filePath": "/tmp/icon32eng.png",
"iconWidth": 32, "imageUrl": "https://localhost:9096/icon32eng.png",
"iconHeight": 32, "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
"languageCode": "fra", },
"iconLocale": "fr_CA", {
"iconName": "icon32fra", "model_type": "PasspointOsuIcon",
"filePath": "/tmp/icon32fra.png", "iconWidth": 32,
"imageUrl": "https://localhost:9096/icon32fra.png", "iconHeight": 32,
"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" "languageCode": "fra",
}, "iconLocale": "fr_CA",
{ "iconName": "icon32fra",
"model_type": "PasspointOsuIcon", "filePath": "/tmp/icon32fra.png",
"iconWidth": 32, "imageUrl": "https://localhost:9096/icon32fra.png",
"iconHeight": 32, "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
"languageCode": "eng", },
"iconLocale": "en_US", {
"iconName": "icon32usa", "model_type": "PasspointOsuIcon",
"filePath": "/tmp/icon32usa.png", "iconWidth": 32,
"imageUrl": "https://localhost:9096/icon32usa.png", "iconHeight": 32,
"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" "languageCode": "eng",
} "iconLocale": "en_US",
], "iconName": "icon32usa",
"osuServerUri": "https://example.com/osu/telus", "filePath": "/tmp/icon32usa.png",
"osuFriendlyName": [ "imageUrl": "https://localhost:9096/icon32usa.png",
{ "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
"model_type": "PasspointDuple", }
"locale": "eng", ],
"dupleIso3Language": "eng", "osuServerUri": "https://example.com/osu/telus",
"dupleName": "Example provider telus", "osuFriendlyName": [
"defaultDupleSeparator": ":", {
"asDuple": "eng:Example provider telus" "model_type": "PasspointDuple",
}, "locale": "en_CA",
{ "dupleIso3Language": "eng",
"model_type": "PasspointDuple", "dupleName": "Example provider telus",
"locale": "fra", "defaultDupleSeparator": ":",
"dupleIso3Language": "fra", "asDuple": "eng:Example provider telus"
"dupleName": "Exemple de fournisseur telus", },
"defaultDupleSeparator": ":", {
"asDuple": "fra:Exemple de fournisseur telus" "model_type": "PasspointDuple",
} "locale": "fr_CA",
], "dupleIso3Language": "fra",
"osuNaiStandalone": "anonymous@telus.com", "dupleName": "Exemple de fournisseur telus",
"osuNaiShared": "anonymous@telus.com", "defaultDupleSeparator": ":",
"osuMethodList": [ "asDuple": "fra:Exemple de fournisseur telus"
1, }
0 ],
], "osuNaiStandalone": "anonymous@telus.com",
"osuServiceDescription": [ "osuNaiShared": "anonymous@telus.com",
{ "osuMethodList": [
"model_type": "PasspointDuple", 1,
"locale": "eng", 0
"dupleIso3Language": "eng", ],
"dupleName": "Example services telus", "osuServiceDescription": [
"defaultDupleSeparator": ":", {
"asDuple": "eng:Example services telus" "model_type": "PasspointDuple",
}, "locale": "en_CA",
{ "dupleIso3Language": "eng",
"model_type": "PasspointDuple", "dupleName": "Example services telus",
"locale": "fra", "defaultDupleSeparator": ":",
"dupleIso3Language": "fra", "asDuple": "eng:Example services telus"
"dupleName": "Exemples de services telus", },
"defaultDupleSeparator": ":", {
"asDuple": "fra:Exemples de services telus" "model_type": "PasspointDuple",
} "locale": "fr_CA",
], "dupleIso3Language": "fra",
"roamingOi": [ "dupleName": "Exemples de services telus",
"004096", "defaultDupleSeparator": ":",
"005014", "asDuple": "fra:Exemples de services telus"
"F4F5E8F5F4" }
], ],
"profileType": "passpoint_osu_id_provider" "roamingOi": [
}, 1,
"createdTimestamp": 1611264539131, 2,
"lastModifiedTimestamp": 1611264539131, 3,
"childProfileIds": [] 4
} ],
] "profileType": "passpoint_osu_id_provider"
},
"createdTimestamp": 1606778370351,
"lastModifiedTimestamp": 1606778370351,
"childProfileIds": [
]
}
]

View File

@@ -1,41 +1,37 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 34, "id": 17,
"customerId": 2, "customerId": 2,
"profileType": "passpoint_operator", "profileType": "passpoint_operator",
"name": "operator-profile-2021-01-21T21:28:58.994Z", "name": "TipWlan-Passpoint-Operator",
"details": { "details": {
"model_type": "PasspointOperatorProfile", "model_type": "PasspointOperatorProfile",
"serverOnlyAuthenticatedL2EncryptionNetwork": false, "serverOnlyAuthenticatedL2EncryptionNetwork": false,
"x509CertificateLocation": "/etc/ca.pem", "x509CertificateLocation": "/etc/ca.pem",
"operatorFriendlyName": [ "operatorFriendlyName": [
{ {
"model_type": "PasspointDuple", "model_type": "PasspointDuple",
"locale": "fra", "locale": "en_CA",
"dupleIso3Language": "fra", "dupleIso3Language": "eng",
"dupleName": "Nom de l'opérateur convivial par défaut", "dupleName": "Default friendly passpoint_operator name",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"asDuple": "fra:Nom de l'opérateur convivial par défaut" "asDuple": "eng:Default friendly passpoint_operator name"
}, },
{ {
"model_type": "PasspointDuple", "model_type": "PasspointDuple",
"locale": "eng", "locale": "fr_CA",
"dupleIso3Language": "eng", "dupleIso3Language": "fra",
"dupleName": "Default friendly passpoint_operator name", "dupleName": "Nom de l'opérateur convivial par défaut",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"asDuple": "eng:Default friendly passpoint_operator name" "asDuple": "fra:Nom de l'opérateur convivial par défaut"
} }
], ],
"domainNameList": [ "profileType": "passpoint_operator"
"bell.ca", },
"telus.com", "createdTimestamp": 1606778369945,
"rogers.com" "lastModifiedTimestamp": 1606778369945,
], "childProfileIds": [
"profileType": "passpoint_operator" ]
}, }
"createdTimestamp": 1611264539004, ]
"lastModifiedTimestamp": 1611264539004,
"childProfileIds": []
}
]

View File

@@ -1,24 +1,34 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 1, "id": 1,
"customerId": 2, "customerId": 2,
"profileType": "radius", "profileType": "radius",
"name": "Radius-Profile", "name": "Radius-Profile",
"details": { "details": {
"model_type": "RadiusProfile", "model_type": "RadiusProfile",
"primaryRadiusAuthServer": { "subnetConfiguration": null,
"model_type": "RadiusServer", "serviceRegionMap": {
"ipAddress": "192.168.0.1", "Ottawa": {
"secret": "testing123", "model_type": "RadiusServiceRegion",
"port": 1812, "serverMap": {
"timeout": null "Radius-Profile": [
}, {
"profileType": "radius" "model_type": "RadiusServer",
}, "ipAddress": "192.168.0.1",
"createdTimestamp": 1611262628767, "secret": "testing123",
"lastModifiedTimestamp": 1611262628767, "authPort": 1812,
"childProfileIds": [ "timeout": null
] }
} ]
] },
"regionName": "Ottawa"
}
},
"profileType": "radius"
},
"createdTimestamp": 1601961451668,
"lastModifiedTimestamp": 1601961451668,
"childProfileIds": []
}
]

View File

@@ -1,6 +1,6 @@
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 4, "id": 11,
"customerId": 2, "customerId": 2,
"profileType": "rf", "profileType": "rf",
"name": "TipWlan-rf", "name": "TipWlan-rf",
@@ -198,7 +198,7 @@
}, },
"profileType": "rf" "profileType": "rf"
}, },
"createdTimestamp": 1612285248650, "createdTimestamp": 1606778369933,
"lastModifiedTimestamp": 1612285248650, "lastModifiedTimestamp": 1606778369933,
"childProfileIds": [] "childProfileIds": []
} }

View File

@@ -1,75 +1,203 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 2, "id": 5,
"customerId": 2, "customerId": 2,
"profileType": "ssid", "profileType": "ssid",
"name": "TipWlan-cloud-3-radios", "name": "TipWlan-cloud-3-radios",
"details": { "details": {
"model_type": "SsidConfiguration", "model_type": "SsidConfiguration",
"ssid": "TipWlan-cloud-3-radios", "ssid": "TipWlan-cloud-3-radios",
"appliedRadios": [ "appliedRadios": [
"is5GHzU", "is5GHzL",
"is2dot4GHz", "is2dot4GHz",
"is5GHzL" "is5GHzU"
], ],
"ssidAdminState": "enabled", "ssidAdminState": "enabled",
"secureMode": "wpa2OnlyPSK", "secureMode": "wpa2OnlyPSK",
"vlanId": 1, "vlanId": 1,
"keyStr": "openwifi", "keyStr": "openwifi",
"broadcastSsid": "enabled", "broadcastSsid": "enabled",
"keyRefresh": 0, "keyRefresh": 0,
"noLocalSubnets": false, "noLocalSubnets": false,
"radiusServiceId": 0, "radiusServiceName": null,
"radiusAcountingServiceInterval": 60, "radiusAccountingServiceName": null,
"captivePortalId": null, "radiusAcountingServiceInterval": null,
"bandwidthLimitDown": 0, "captivePortalId": null,
"bandwidthLimitUp": 0, "bandwidthLimitDown": 0,
"clientBandwidthLimitDown": 0, "bandwidthLimitUp": 0,
"clientBandwidthLimitUp": 0, "clientBandwidthLimitDown": 0,
"videoTrafficOnly": false, "clientBandwidthLimitUp": 0,
"radioBasedConfigs": { "videoTrafficOnly": false,
"is5GHzU": { "radioBasedConfigs": {
"model_type": "RadioBasedSsidConfiguration", "is5GHzL": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is2dot4GHz": { },
"model_type": "RadioBasedSsidConfiguration", "is2dot4GHz": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is5GHz": { },
"model_type": "RadioBasedSsidConfiguration", "is5GHz": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is5GHzL": { },
"model_type": "RadioBasedSsidConfiguration", "is5GHzU": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
} "enable80211v": null
}, }
"bonjourGatewayProfileId": null, },
"enable80211w": null, "bonjourGatewayProfileId": null,
"wepConfig": null, "enable80211w": null,
"forwardMode": "BRIDGE", "wepConfig": null,
"profileType": "ssid", "forwardMode": "BRIDGE",
"radiusClientConfiguration": { "profileType": "ssid"
"model_type": "RadiusNasConfiguration", },
"nasClientId": "DEFAULT", "createdTimestamp": 1606778369598,
"nasClientIp": "WAN_IP", "lastModifiedTimestamp": 1606778369598,
"userDefinedNasId": null, "childProfileIds": [
"userDefinedNasIp": null, ]
"operatorId": null },
} {
}, "model_type": "Profile",
"createdTimestamp": 1612285248638, "id": 15,
"lastModifiedTimestamp": 1612285248638, "customerId": 2,
"childProfileIds": [] "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,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1606778369943,
"lastModifiedTimestamp": 1606778370811,
"childProfileIds": [
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
]
}
] ]

View File

@@ -1,42 +1,43 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 33, "id": 18,
"customerId": 2, "customerId": 2,
"profileType": "passpoint_venue", "profileType": "passpoint_venue",
"name": "venue-profile-2021-01-21T21:28:58.934Z", "name": "TipWlan-Passpoint-Venue",
"details": { "details": {
"model_type": "PasspointVenueProfile", "model_type": "PasspointVenueProfile",
"venueNameSet": [ "venueNameSet": [
{ {
"model_type": "PasspointVenueName", "model_type": "PasspointVenueName",
"locale": "fra", "locale": "fr_CA",
"dupleIso3Language": "fra", "dupleIso3Language": "fra",
"dupleName": "Exemple de lieu", "dupleName": "Exemple de lieu",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"venueUrl": "http://www.example.com/info-fra", "venueUrl": "http://www.example.com/info-fra",
"asDuple": "fra:Exemple de lieu" "asDuple": "fra:Exemple de lieu"
}, },
{ {
"model_type": "PasspointVenueName", "model_type": "PasspointVenueName",
"locale": "eng", "locale": "en_CA",
"dupleIso3Language": "eng", "dupleIso3Language": "eng",
"dupleName": "Example passpoint_venue", "dupleName": "Example passpoint_venue",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"venueUrl": "http://www.example.com/info-eng", "venueUrl": "http://www.example.com/info-eng",
"asDuple": "eng:Example passpoint_venue" "asDuple": "eng:Example passpoint_venue"
} }
], ],
"venueTypeAssignment": { "venueTypeAssignment": {
"model_type": "PasspointVenueTypeAssignment", "model_type": "PasspointVenueTypeAssignment",
"venueDescription": "Research and Development Facility", "venueDescription": "Research and Development Facility",
"venueGroupId": 2, "venueGroupId": 2,
"venueTypeId": 8 "venueTypeId": 8
}, },
"profileType": "passpoint_venue" "profileType": "passpoint_venue"
}, },
"createdTimestamp": 1611264538947, "createdTimestamp": 1606778369950,
"lastModifiedTimestamp": 1611264538947, "lastModifiedTimestamp": 1606778369950,
"childProfileIds": [] "childProfileIds": [
} ]
] }
]

View File

@@ -174,9 +174,7 @@ RESTAPI_PROPS="$RESTAPI_PROPS -Dserver.port=4043"
SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED" SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } " export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS "
export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS "
echo Starting opensync wifi controller echo Starting opensync wifi controller

View File

@@ -1,472 +1,221 @@
{ {
"model_type": "Equipment", "model_type": "Equipment",
"id": 1, "id": 51,
"customerId": 2, "customerId": 2,
"profileId": 8, "profileId": 12,
"locationId": 8, "locationId": 8,
"equipmentType": "AP",
"inventoryId": "Test_Client_21P10C68818122",
"name": "Test_Client_21P10C68818122",
"details": {
"model_type": "ApElementConfiguration",
"equipmentModel": "EA8300-CA",
"elementConfigVersion": "AP-V1",
"equipmentType": "AP", "equipmentType": "AP",
"inventoryId": "Open_AP_21P10C68818122", "deviceMode": "standaloneAP",
"name": "Open_AP_21P10C68818122", "gettingIP": "dhcp",
"details": { "staticIP": null,
"model_type": "ApElementConfiguration", "staticIpMaskCidr": null,
"equipmentModel": "EA8300-CA", "staticIpGw": null,
"elementConfigVersion": "AP-V1", "gettingDNS": "dhcp",
"equipmentType": "AP", "staticDnsIp1": null,
"deviceMode": "standaloneAP", "staticDnsIp2": null,
"gettingIP": "dhcp", "peerInfoList": [],
"staticIP": null, "deviceName": "Default Device Name",
"staticIpMaskCidr": null, "locationData": null,
"staticIpGw": null, "locallyConfiguredMgmtVlan": 0,
"gettingDNS": "dhcp", "locallyConfigured": false,
"staticDnsIp1": null, "deploymentType": "CEILING",
"staticDnsIp2": null, "syntheticClientEnabled": null,
"peerInfoList": [], "frameReportThrottleEnabled": true,
"deviceName": "Open_AP_21P10C68818122", "antennaType": "OMNI",
"locationData": null, "costSavingEventsEnabled": true,
"locallyConfiguredMgmtVlan": 0, "forwardMode": "BRIDGE",
"locallyConfigured": false, "radioMap": {
"deploymentType": "CEILING", "is2dot4GHz": {
"syntheticClientEnabled": null, "model_type": "ElementRadioConfiguration",
"frameReportThrottleEnabled": true, "radioType": "is2dot4GHz",
"antennaType": "OMNI", "channelNumber": 6,
"costSavingEventsEnabled": true, "manualChannelNumber": 6,
"forwardMode": "BRIDGE", "backupChannelNumber": 11,
"radioMap": { "bannedChannels": [],
"is5GHzU": { "allowedChannels": [],
"model_type": "ElementRadioConfiguration", "rxCellSizeDb": {
"radioType": "is5GHzU", "model_type": "SourceSelectionValue",
"channelNumber": 149, "source": "auto",
"manualChannelNumber": 149, "value": -90
"backupChannelNumber": 157,
"manualBackupChannelNumber": 157,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 161,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 100,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 132,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 165,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 104,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 136,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 108,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 140,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 112,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 144,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 116,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 149,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 153,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 157,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
},
"is2dot4GHz": {
"model_type": "ElementRadioConfiguration",
"radioType": "is2dot4GHz",
"channelNumber": 6,
"manualChannelNumber": 6,
"backupChannelNumber": 11,
"manualBackupChannelNumber": 11,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 1,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 2,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 3,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 4,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 5,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 6,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 7,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 8,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 9,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 10,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 11,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
}
]
},
"is5GHzL": {
"model_type": "ElementRadioConfiguration",
"radioType": "is5GHzL",
"channelNumber": 36,
"manualChannelNumber": 36,
"backupChannelNumber": 44,
"manualBackupChannelNumber": 44,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 52,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 36,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 56,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 40,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 60,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 44,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 64,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 48,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
}
}, },
"advancedRadioMap": { "probeResponseThresholdDb": {
"is2dot4GHz": { "model_type": "SourceSelectionValue",
"model_type": "RadioConfiguration", "source": "auto",
"radioType": "is2dot4GHz", "value": -90
"radioAdminState": "enabled", },
"fragmentationThresholdBytes": 2346, "clientDisconnectThresholdDb": {
"uapsdState": "enabled", "model_type": "SourceSelectionValue",
"stationIsolation": "disabled", "source": "auto",
"multicastRate": { "value": -90
"model_type": "SourceSelectionMulticast", },
"source": "profile", "eirpTxPower": {
"value": "auto" "model_type": "SourceSelectionValue",
}, "source": "auto",
"managementRate": { "value": 32
"model_type": "SourceSelectionManagement", },
"source": "profile", "perimeterDetectionEnabled": true,
"value": "auto" "bestAPSteerType": "both",
}, "deauthAttackDetection": null,
"bestApSettings": { "allowedChannelsPowerLevels": [],
"model_type": "SourceSelectionSteering", "activeChannel": 6
"source": "manual", },
"value": { "is5GHzU": {
"model_type": "RadioBestApSettings", "model_type": "ElementRadioConfiguration",
"mlComputed": true, "radioType": "is5GHzU",
"dropInSnrPercentage": 20, "channelNumber": 149,
"minLoadFactor": 50 "manualChannelNumber": 149,
} "backupChannelNumber": 154,
}, "bannedChannels": [],
"legacyBSSRate": "enabled", "allowedChannels": [],
"dtimPeriod": 2, "rxCellSizeDb": {
"deauthAttackDetection": null "model_type": "SourceSelectionValue",
}, "source": "auto",
"is5GHzU": { "value": -90
"model_type": "RadioConfiguration", },
"radioType": "is5GHzU", "probeResponseThresholdDb": {
"radioAdminState": "enabled", "model_type": "SourceSelectionValue",
"fragmentationThresholdBytes": 2346, "source": "auto",
"uapsdState": "enabled", "value": -90
"stationIsolation": "disabled", },
"multicastRate": { "clientDisconnectThresholdDb": {
"model_type": "SourceSelectionMulticast", "model_type": "SourceSelectionValue",
"source": "profile", "source": "auto",
"value": "auto" "value": -90
}, },
"managementRate": { "eirpTxPower": {
"model_type": "SourceSelectionManagement", "model_type": "SourceSelectionValue",
"source": "profile", "source": "auto",
"value": "auto" "value": 32
}, },
"bestApSettings": { "perimeterDetectionEnabled": true,
"model_type": "SourceSelectionSteering", "bestAPSteerType": "both",
"source": "manual", "deauthAttackDetection": null,
"value": { "allowedChannelsPowerLevels": [],
"model_type": "RadioBestApSettings", "activeChannel": 149
"mlComputed": true, },
"dropInSnrPercentage": 30, "is5GHzL": {
"minLoadFactor": 40 "model_type": "ElementRadioConfiguration",
} "radioType": "is5GHzL",
}, "channelNumber": 36,
"legacyBSSRate": "enabled", "manualChannelNumber": 36,
"dtimPeriod": 2, "backupChannelNumber": 44,
"deauthAttackDetection": null "bannedChannels": [],
}, "allowedChannels": [],
"is5GHzL": { "rxCellSizeDb": {
"model_type": "RadioConfiguration", "model_type": "SourceSelectionValue",
"radioType": "is5GHzL", "source": "auto",
"radioAdminState": "enabled", "value": -90
"fragmentationThresholdBytes": 2346, },
"uapsdState": "enabled", "probeResponseThresholdDb": {
"stationIsolation": "disabled", "model_type": "SourceSelectionValue",
"multicastRate": { "source": "auto",
"model_type": "SourceSelectionMulticast", "value": -90
"source": "profile", },
"value": "auto" "clientDisconnectThresholdDb": {
}, "model_type": "SourceSelectionValue",
"managementRate": { "source": "auto",
"model_type": "SourceSelectionManagement", "value": -90
"source": "profile", },
"value": "auto" "eirpTxPower": {
}, "model_type": "SourceSelectionValue",
"bestApSettings": { "source": "auto",
"model_type": "SourceSelectionSteering", "value": 32
"source": "manual", },
"value": { "perimeterDetectionEnabled": true,
"model_type": "RadioBestApSettings", "bestAPSteerType": "both",
"mlComputed": true, "deauthAttackDetection": null,
"dropInSnrPercentage": 30, "allowedChannelsPowerLevels": [],
"minLoadFactor": 40 "activeChannel": 36
} }
},
"legacyBSSRate": "enabled",
"dtimPeriod": 2,
"deauthAttackDetection": null
}
}
}, },
"latitude": null, "advancedRadioMap": {
"longitude": null, "is2dot4GHz": {
"baseMacAddress": { "model_type": "RadioConfiguration",
"model_type": "MacAddress", "radioType": "is2dot4GHz",
"address": "JPWi7y5T", "radioAdminState": "enabled",
"addressAsString": "24:f5:a2:ef:2e:53" "fragmentationThresholdBytes": 2346,
}, "uapsdState": "enabled",
"serial": "21P10C68818122", "stationIsolation": "disabled",
"createdTimestamp": 1612285288821, "managementRate": {
"lastModifiedTimestamp": 1612285293922 "model_type": "SourceSelectionManagement",
} "source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
},
"is5GHzU": {
"model_type": "RadioConfiguration",
"radioType": "is5GHzU",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"uapsdState": "enabled",
"stationIsolation": "disabled",
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
},
"is5GHzL": {
"model_type": "RadioConfiguration",
"radioType": "is5GHzL",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"uapsdState": "enabled",
"stationIsolation": "disabled",
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
}
}
},
"latitude": null,
"longitude": null,
"serial": "21P10C68818122",
"createdTimestamp": 1591653239821,
"lastModifiedTimestamp": 1591653241398
}

View File

@@ -1,61 +1,60 @@
{ {
"model_type": "Location", "model_type" : "Location",
"id": 8, "id" : 8,
"parentId": 0, "parentId" : 0,
"locationType": "SITE", "locationType" : "SITE",
"customerId": 2, "customerId" : 2,
"name": "Ottawa", "name" : "Ottawa",
"details": { "details" : {
"model_type": "LocationDetails", "model_type" : "LocationDetails",
"countryCode": "CA", "countryCode" : "ca",
"dailyActivityDetails": { "maintenanceWindow" : null,
"SUNDAY": { "rrmEnabled" : true,
"model_type": "LocationActivityDetails", "dailyActivityDetails" : {
"busyTime": "13:30", "SUNDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"MONDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "MONDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"TUESDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "TUESDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"WEDNESDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "WEDNESDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"THURSDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "THURSDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"FRIDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "FRIDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"SATURDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "SATURDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
} "quietTime" : "3:30",
}, "timezone" : "US/Eastern"
"maintenanceWindow": null, }
"rrmEnabled": true, }
"timezone": "US/Eastern" },
}, "createdTimestamp" : 1590607043540,
"createdTimestamp": 1612285243534, "lastModifiedTimestamp" : 1590607043540
"lastModifiedTimestamp": 1612285243534
} }

View File

@@ -1,6 +1,6 @@
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 8, "id": 12,
"customerId": 2, "customerId": 2,
"profileType": "equipment_ap", "profileType": "equipment_ap",
"name": "ApProfile-3-radios", "name": "ApProfile-3-radios",
@@ -20,6 +20,11 @@
"syntheticClientEnabled": true, "syntheticClientEnabled": true,
"ledControlEnabled": true, "ledControlEnabled": true,
"equipmentDiscovery": false, "equipmentDiscovery": false,
"greTunnelName": null,
"greParentIfName": null,
"greLocalInetAddr": null,
"greRemoteInetAddr": null,
"greRemoteMacAddr": null,
"radioMap": { "radioMap": {
"is2dot4GHz": { "is2dot4GHz": {
"model_type": "RadioProfileConfiguration", "model_type": "RadioProfileConfiguration",
@@ -37,22 +42,15 @@
"bestAPSteerType": "both" "bestAPSteerType": "both"
} }
}, },
"greTunnelConfigurations": [
{
"model_type": "GreTunnelConfiguration",
"greTunnelName": "gre1",
"greRemoteInetAddr": "192.168.1.101",
"vlanIdsInGreTunnel": [
100
]
}
],
"profileType": "equipment_ap" "profileType": "equipment_ap"
}, },
"createdTimestamp": 1612285248925, "createdTimestamp": 1606778369934,
"lastModifiedTimestamp": 1612285628377, "lastModifiedTimestamp": 1606778443413,
"childProfileIds": [ "childProfileIds": [
2, 16,
4 5,
10,
11,
15
] ]
} }

View File

@@ -1,58 +1,135 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 5, "id": 14,
"customerId": 2, "customerId": 2,
"profileType": "captive_portal", "profileType": "captive_portal",
"name": "Captive-portal", "name": "Captive-portal",
"details": { "details": {
"model_type": "CaptivePortalConfiguration", "model_type": "CaptivePortalConfiguration",
"name": "Default", "name": "Captive-portal",
"browserTitle": "Captive-portal", "browserTitle": "Access the network as Guest",
"headerContent": "Captive Portal", "headerContent": "Captive Portal",
"userAcceptancePolicy": "Please agree to the following terms for using this network:", "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
"successPageMarkdownText": "You are now authorized and connected to the network.", "successPageMarkdownText": "Welcome to the network",
"redirectURL": "https://www.google.com", "redirectURL": "",
"externalCaptivePortalURL": null, "externalCaptivePortalURL": null,
"sessionTimeoutInMinutes": 10, "sessionTimeoutInMinutes": 60,
"logoFile": { "logoFile": null,
"model_type": "ManagedFileInfo", "backgroundFile": null,
"md5checksum": null, "walledGardenAllowlist": [],
"lastModifiedTimestamp": null, "usernamePasswordFile": {
"apExportUrl": "/filestore/tip-logo-mobile", "model_type": "ManagedFileInfo",
"fileCategory": "CaptivePortalLogo", "md5checksum": null,
"fileType": "PNG", "lastModifiedTimestamp": null,
"altSlot": false "apExportUrl": "userList",
}, "fileCategory": "UsernamePasswordList",
"backgroundFile": { "fileType": "TEXT",
"model_type": "ManagedFileInfo", "altSlot": true
"md5checksum": null, },
"lastModifiedTimestamp": null, "authenticationType": "guest",
"apExportUrl": "/filestore/tip-logo", "radiusAuthMethod": "CHAP",
"fileCategory": "CaptivePortalBackground", "maxUsersWithSameCredentials": 42,
"fileType": "PNG", "externalPolicyFile": null,
"altSlot": false "backgroundPosition": "left_top",
}, "backgroundRepeat": "no_repeat",
"walledGardenAllowlist": [ "radiusServiceName": null,
], "expiryType": "unlimited",
"usernamePasswordFile": null, "userList": [
"authenticationType": "guest", {
"radiusAuthMethod": "CHAP", "model_type": "TimedAccessUserRecord",
"maxUsersWithSameCredentials": 3, "username": "customer",
"externalPolicyFile": null, "password": "testing123",
"backgroundPosition": "left_top", "activationTime": 1602183994956,
"backgroundRepeat": "no_repeat", "expirationTime": 1602212794956,
"radiusServiceId": 0, "numDevices": 1,
"expiryType": "time_limited", "userDetails": {
"userList": [ "model_type": "TimedAccessUserDetails",
], "firstName": "Pac",
"macAllowList": [ "lastName": "Man",
], "passwordNeedsReset": false
"profileType": "captive_portal" },
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "fKtg5upO",
"addressAsString": "7c:ab:60:e6:ea:4e"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer",
"password": "testing123",
"activationTime": 1602183994957,
"expirationTime": 1602187594957,
"numDevices": 0,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Q",
"lastName": "Bert",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "wJrQdqho",
"addressAsString": "c0:9a:d0:76:a8:68"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer2",
"password": "testing1234",
"activationTime": 1602183994957,
"expirationTime": 1602788794957,
"numDevices": 1,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Duke",
"lastName": "Nukem",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "fKtg5upN",
"addressAsString": "7c:ab:60:e6:ea:4d"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer2",
"password": "testing1234",
"activationTime": 1602183994957,
"expirationTime": 1602270394957,
"numDevices": 0,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Missile",
"lastName": "Commander",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "wJrQdqhj",
"addressAsString": "c0:9a:d0:76:a8:63"
}
],
"lastModifiedTimestamp": 0
}
],
"macAllowList": [],
"profileType": "captive_portal"
}, },
"createdTimestamp": 1611857459118, "createdTimestamp": 1602183994959,
"lastModifiedTimestamp": 1611857459118, "lastModifiedTimestamp": 1602183994959,
"childProfileIds": [ "childProfileIds": []
] }
} ]
]

View File

@@ -1,71 +1,71 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 37, "id": 24,
"customerId": 2, "customerId": 2,
"profileType": "passpoint", "profileType": "passpoint",
"name": "hotspot20-profile-2021-01-21T21:28:59.171Z", "name": "TipWlan-Passpoint-Config",
"details": { "details": {
"model_type": "PasspointProfile", "model_type": "PasspointProfile",
"enableInterworkingAndHs20": true, "enableInterworkingAndHs20": true,
"hessid": null, "hessid": null,
"passpointAccessNetworkType": "free_public_network", "passpointAccessNetworkType": "free_public_network",
"passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions", "passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
"additionalStepsRequiredForAccess": 0, "additionalStepsRequiredForAccess": 0,
"deauthRequestTimeout": 0, "deauthRequestTimeout": 0,
"operatingClass": 0, "operatingClass": 0,
"termsAndConditionsFile": { "termsAndConditionsFile": {
"model_type": "ManagedFileInfo", "model_type": "ManagedFileInfo",
"md5checksum": null, "md5checksum": null,
"lastModifiedTimestamp": null, "lastModifiedTimestamp": null,
"apExportUrl": "https://localhost:9091/filestore/termsAndConditions", "apExportUrl": "https://localhost:9091/filestore/termsAndConditions",
"fileCategory": "ExternalPolicyConfiguration", "fileCategory": "ExternalPolicyConfiguration",
"fileType": "TEXT", "fileType": "TEXT",
"altSlot": false "altSlot": false
}, },
"whitelistDomain": null, "whitelistDomain": null,
"emergencyServicesReachable": true, "emergencyServicesReachable": true,
"unauthenticatedEmergencyServiceAccessible": false, "unauthenticatedEmergencyServiceAccessible": false,
"internetConnectivity": true, "internetConnectivity": true,
"connectionCapabilitySet": [ "connectionCapabilitySet": [
{ {
"model_type": "PasspointConnectionCapability", "model_type": "PasspointConnectionCapability",
"connectionCapabilitiesPortNumber": 8888, "connectionCapabilitiesPortNumber": 8888,
"connectionCapabilitiesIpProtocol": "TCP", "connectionCapabilitiesStatus": "open",
"connectionCapabilitiesStatus": "open" "connectionCapabilitiesIpProtocol": "TCP"
} }
], ],
"ipAddressTypeAvailability": "public_IPv4_address_available", "ipAddressTypeAvailability": "public_IPv4_address_available",
"qosMapSetConfiguration": null, "qosMapSetConfiguration": null,
"apGeospatialLocation": null, "apGeospatialLocation": null,
"apCivicLocation": null, "apCivicLocation": null,
"apPublicLocationIdUri": null, "apPublicLocationIdUri": null,
"gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest",
"anqpDomainId": 1234, "anqpDomainId": 1234,
"disableDownstreamGroupAddressedForwarding": false, "disableDownstreamGroupAddressedForwarding": false,
"enable2pt4GHz": true, "enable2pt4GHz": true,
"enable5GHz": true, "enable5GHz": true,
"associatedAccessSsidProfileIds": [ "associatedAccessSsidProfileIds": [
32 15
], ],
"osuSsidProfileId": 31, "osuSsidProfileId": 16,
"passpointOperatorProfileId": 34, "passpointOperatorProfileId": 17,
"passpointVenueProfileId": 33, "passpointVenueProfileId": 18,
"passpointOsuProviderProfileIds": [ "passpointOsuProviderProfileIds": [
35, 19,
36 20
], ],
"accessNetworkType": "free_public_network", "accessNetworkType": "free_public_network",
"networkAuthenticationType": "acceptance_of_terms_and_conditions", "networkAuthenticationType": "acceptance_of_terms_and_conditions",
"profileType": "passpoint" "profileType": "passpoint"
}, },
"createdTimestamp": 0, "createdTimestamp": 1606778370807,
"lastModifiedTimestamp": 1611264539331, "lastModifiedTimestamp": 1606778370807,
"childProfileIds": [ "childProfileIds": [
33, 17,
34, 18,
35, 19,
36 20
] ]
} }
] ]

View File

@@ -1,263 +1,270 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 35, "id": 19,
"customerId": 2, "customerId": 2,
"profileType": "passpoint_osu_id_provider", "profileType": "passpoint_osu_id_provider",
"name": "provider1-profile-2021-01-21T21:28:59.057Z", "name": "TipWlan-Passpoint-OSU-Provider",
"details": { "details": {
"model_type": "PasspointOsuProviderProfile", "model_type": "PasspointOsuProviderProfile",
"mccMncList": [ "domainName": "rogers.com",
{ "mccMncList": [
"model_type": "PasspointMccMnc", {
"mcc": 302, "model_type": "PasspointMccMnc",
"mnc": 720, "mcc": 302,
"iso": "ca", "mnc": 720,
"country": "Canada", "iso": "ca",
"countryCode": 1, "country": "Canada",
"network": "Rogers AT&T Wireless", "countryCode": 1,
"mccMncPairing": "302,720" "network": "Rogers AT&T Wireless",
} "mccMncPairing": "302,720"
], }
"naiRealmList": [ ],
{ "naiRealmList": [
"model_type": "PasspointNaiRealmInformation", {
"naiRealms": [ "model_type": "PasspointNaiRealmInformation",
"rogers.com" "naiRealms": [
], "rogers.com"
"encoding": 0, ],
"eapMethods": [ "encoding": 0,
"EAP-TTLS with username/password", "eapMethods": [
"EAP-TLS with certificate" "EAP-TTLS with username/password",
], "EAP-TLS with certificate"
"eapMap": { ],
"EAP-TTLS with username/password": [ "eapMap": {
"Credential Type:username/password", "EAP-TTLS with username/password": [
"Non-EAP Inner Authentication Type:MSCHAPV2" "Credential Type:username/password",
], "Non-EAP Inner Authentication Type:MSCHAPV2"
"EAP-TLS with certificate": [ ],
"Credential Type:Certificate" "EAP-TLS with certificate": [
] "Credential Type:Certificate"
} ]
} }
], }
"osuIconList": [ ],
{ "osuIconList": [
"model_type": "PasspointOsuIcon", {
"iconWidth": 32, "model_type": "PasspointOsuIcon",
"iconHeight": 32, "iconWidth": 32,
"languageCode": "eng", "iconHeight": 32,
"iconLocale": "en_CA", "languageCode": "eng",
"iconName": "icon32eng", "iconLocale": "en_CA",
"filePath": "/tmp/icon32eng.png", "iconName": "icon32eng",
"imageUrl": "https://localhost:9096/icon32eng.png", "filePath": "/tmp/icon32eng.png",
"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" "imageUrl": "https://localhost:9096/icon32eng.png",
}, "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
{ },
"model_type": "PasspointOsuIcon", {
"iconWidth": 32, "model_type": "PasspointOsuIcon",
"iconHeight": 32, "iconWidth": 32,
"languageCode": "fra", "iconHeight": 32,
"iconLocale": "fr_CA", "languageCode": "fra",
"iconName": "icon32fra", "iconLocale": "fr_CA",
"filePath": "/tmp/icon32fra.png", "iconName": "icon32fra",
"imageUrl": "https://localhost:9096/icon32fra.png", "filePath": "/tmp/icon32fra.png",
"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" "imageUrl": "https://localhost:9096/icon32fra.png",
}, "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
{ },
"model_type": "PasspointOsuIcon", {
"iconWidth": 32, "model_type": "PasspointOsuIcon",
"iconHeight": 32, "iconWidth": 32,
"languageCode": "eng", "iconHeight": 32,
"iconLocale": "en_US", "languageCode": "eng",
"iconName": "icon32usa", "iconLocale": "en_US",
"filePath": "/tmp/icon32usa.png", "iconName": "icon32usa",
"imageUrl": "https://localhost:9096/icon32usa.png", "filePath": "/tmp/icon32usa.png",
"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" "imageUrl": "https://localhost:9096/icon32usa.png",
} "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
], }
"osuServerUri": "https://example.com/osu/rogers", ],
"osuFriendlyName": [ "osuServerUri": "https://example.com/osu/rogers",
{ "osuFriendlyName": [
"model_type": "PasspointDuple", {
"locale": "eng", "model_type": "PasspointDuple",
"dupleIso3Language": "eng", "locale": "en_CA",
"dupleName": "Example provider rogers", "dupleIso3Language": "eng",
"defaultDupleSeparator": ":", "dupleName": "Example provider rogers",
"asDuple": "eng:Example provider rogers" "defaultDupleSeparator": ":",
}, "asDuple": "eng:Example provider rogers"
{ },
"model_type": "PasspointDuple", {
"locale": "fra", "model_type": "PasspointDuple",
"dupleIso3Language": "fra", "locale": "fr_CA",
"dupleName": "Exemple de fournisseur rogers", "dupleIso3Language": "fra",
"defaultDupleSeparator": ":", "dupleName": "Exemple de fournisseur rogers",
"asDuple": "fra:Exemple de fournisseur rogers" "defaultDupleSeparator": ":",
} "asDuple": "fra:Exemple de fournisseur rogers"
], }
"osuNaiStandalone": "anonymous@rogers.com", ],
"osuNaiShared": "anonymous@rogers.com", "osuNaiStandalone": "anonymous@rogers.com",
"osuMethodList": [ "osuNaiShared": "anonymous@rogers.com",
1, "osuMethodList": [
0 1,
], 0
"osuServiceDescription": [ ],
{ "osuServiceDescription": [
"model_type": "PasspointDuple", {
"locale": "eng", "model_type": "PasspointDuple",
"dupleIso3Language": "eng", "locale": "en_CA",
"dupleName": "Example services rogers", "dupleIso3Language": "eng",
"defaultDupleSeparator": ":", "dupleName": "Example services rogers",
"asDuple": "eng:Example services rogers" "defaultDupleSeparator": ":",
}, "asDuple": "eng:Example services rogers"
{ },
"model_type": "PasspointDuple", {
"locale": "fra", "model_type": "PasspointDuple",
"dupleIso3Language": "fra", "locale": "fr_CA",
"dupleName": "Exemples de services rogers", "dupleIso3Language": "fra",
"defaultDupleSeparator": ":", "dupleName": "Exemples de services rogers",
"asDuple": "fra:Exemples de services rogers" "defaultDupleSeparator": ":",
} "asDuple": "fra:Exemples de services rogers"
], }
"roamingOi": [ ],
"BAA2D00100", "roamingOi": [
"BAA2D00000" 1,
], 2,
"profileType": "passpoint_osu_id_provider" 3,
}, 4
"createdTimestamp": 1611264539070, ],
"lastModifiedTimestamp": 1611264539070, "profileType": "passpoint_osu_id_provider"
"childProfileIds": [] },
}, "createdTimestamp": 1606778370345,
{ "lastModifiedTimestamp": 1606778370345,
"model_type": "Profile", "childProfileIds": [
"id": 36, ]
"customerId": 2, },
"profileType": "passpoint_osu_id_provider", {
"name": "provider2-profile-2021-01-21T21:28:59.118Z", "model_type": "Profile",
"details": { "id": 20,
"model_type": "PasspointOsuProviderProfile", "customerId": 2,
"mccMncList": [ "profileType": "passpoint_osu_id_provider",
{ "name": "TipWlan-Passpoint-OSU-Provider-2",
"model_type": "PasspointMccMnc", "details": {
"mcc": 302, "model_type": "PasspointOsuProviderProfile",
"mnc": 220, "domainName": "telus.com",
"iso": "ca", "mccMncList": [
"country": "Canada", {
"countryCode": 1, "model_type": "PasspointMccMnc",
"network": "Telus Mobility", "mcc": 302,
"mccMncPairing": "302,220" "mnc": 220,
} "iso": "ca",
], "country": "Canada",
"naiRealmList": [ "countryCode": 1,
{ "network": "Telus Mobility",
"model_type": "PasspointNaiRealmInformation", "mccMncPairing": "302,220"
"naiRealms": [ }
"telus.com" ],
], "naiRealmList": [
"encoding": 0, {
"eapMethods": [ "model_type": "PasspointNaiRealmInformation",
"EAP-TTLS with username/password", "naiRealms": [
"EAP-TLS with certificate" "telus.com"
], ],
"eapMap": { "encoding": 0,
"EAP-TTLS with username/password": [ "eapMethods": [
"Credential Type:username/password", "EAP-TTLS with username/password",
"Non-EAP Inner Authentication Type:MSCHAPV2" "EAP-TLS with certificate"
], ],
"EAP-TLS with certificate": [ "eapMap": {
"Credential Type:Certificate" "EAP-TTLS with username/password": [
] "Credential Type:username/password",
} "Non-EAP Inner Authentication Type:MSCHAPV2"
} ],
], "EAP-TLS with certificate": [
"osuIconList": [ "Credential Type:Certificate"
{ ]
"model_type": "PasspointOsuIcon", }
"iconWidth": 32, }
"iconHeight": 32, ],
"languageCode": "eng", "osuIconList": [
"iconLocale": "en_CA", {
"iconName": "icon32eng", "model_type": "PasspointOsuIcon",
"filePath": "/tmp/icon32eng.png", "iconWidth": 32,
"imageUrl": "https://localhost:9096/icon32eng.png", "iconHeight": 32,
"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" "languageCode": "eng",
}, "iconLocale": "en_CA",
{ "iconName": "icon32eng",
"model_type": "PasspointOsuIcon", "filePath": "/tmp/icon32eng.png",
"iconWidth": 32, "imageUrl": "https://localhost:9096/icon32eng.png",
"iconHeight": 32, "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
"languageCode": "fra", },
"iconLocale": "fr_CA", {
"iconName": "icon32fra", "model_type": "PasspointOsuIcon",
"filePath": "/tmp/icon32fra.png", "iconWidth": 32,
"imageUrl": "https://localhost:9096/icon32fra.png", "iconHeight": 32,
"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" "languageCode": "fra",
}, "iconLocale": "fr_CA",
{ "iconName": "icon32fra",
"model_type": "PasspointOsuIcon", "filePath": "/tmp/icon32fra.png",
"iconWidth": 32, "imageUrl": "https://localhost:9096/icon32fra.png",
"iconHeight": 32, "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
"languageCode": "eng", },
"iconLocale": "en_US", {
"iconName": "icon32usa", "model_type": "PasspointOsuIcon",
"filePath": "/tmp/icon32usa.png", "iconWidth": 32,
"imageUrl": "https://localhost:9096/icon32usa.png", "iconHeight": 32,
"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" "languageCode": "eng",
} "iconLocale": "en_US",
], "iconName": "icon32usa",
"osuServerUri": "https://example.com/osu/telus", "filePath": "/tmp/icon32usa.png",
"osuFriendlyName": [ "imageUrl": "https://localhost:9096/icon32usa.png",
{ "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
"model_type": "PasspointDuple", }
"locale": "eng", ],
"dupleIso3Language": "eng", "osuServerUri": "https://example.com/osu/telus",
"dupleName": "Example provider telus", "osuFriendlyName": [
"defaultDupleSeparator": ":", {
"asDuple": "eng:Example provider telus" "model_type": "PasspointDuple",
}, "locale": "en_CA",
{ "dupleIso3Language": "eng",
"model_type": "PasspointDuple", "dupleName": "Example provider telus",
"locale": "fra", "defaultDupleSeparator": ":",
"dupleIso3Language": "fra", "asDuple": "eng:Example provider telus"
"dupleName": "Exemple de fournisseur telus", },
"defaultDupleSeparator": ":", {
"asDuple": "fra:Exemple de fournisseur telus" "model_type": "PasspointDuple",
} "locale": "fr_CA",
], "dupleIso3Language": "fra",
"osuNaiStandalone": "anonymous@telus.com", "dupleName": "Exemple de fournisseur telus",
"osuNaiShared": "anonymous@telus.com", "defaultDupleSeparator": ":",
"osuMethodList": [ "asDuple": "fra:Exemple de fournisseur telus"
1, }
0 ],
], "osuNaiStandalone": "anonymous@telus.com",
"osuServiceDescription": [ "osuNaiShared": "anonymous@telus.com",
{ "osuMethodList": [
"model_type": "PasspointDuple", 1,
"locale": "eng", 0
"dupleIso3Language": "eng", ],
"dupleName": "Example services telus", "osuServiceDescription": [
"defaultDupleSeparator": ":", {
"asDuple": "eng:Example services telus" "model_type": "PasspointDuple",
}, "locale": "en_CA",
{ "dupleIso3Language": "eng",
"model_type": "PasspointDuple", "dupleName": "Example services telus",
"locale": "fra", "defaultDupleSeparator": ":",
"dupleIso3Language": "fra", "asDuple": "eng:Example services telus"
"dupleName": "Exemples de services telus", },
"defaultDupleSeparator": ":", {
"asDuple": "fra:Exemples de services telus" "model_type": "PasspointDuple",
} "locale": "fr_CA",
], "dupleIso3Language": "fra",
"roamingOi": [ "dupleName": "Exemples de services telus",
"004096", "defaultDupleSeparator": ":",
"005014", "asDuple": "fra:Exemples de services telus"
"F4F5E8F5F4" }
], ],
"profileType": "passpoint_osu_id_provider" "roamingOi": [
}, 1,
"createdTimestamp": 1611264539131, 2,
"lastModifiedTimestamp": 1611264539131, 3,
"childProfileIds": [] 4
} ],
] "profileType": "passpoint_osu_id_provider"
},
"createdTimestamp": 1606778370351,
"lastModifiedTimestamp": 1606778370351,
"childProfileIds": [
]
}
]

View File

@@ -1,41 +1,37 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 34, "id": 17,
"customerId": 2, "customerId": 2,
"profileType": "passpoint_operator", "profileType": "passpoint_operator",
"name": "operator-profile-2021-01-21T21:28:58.994Z", "name": "TipWlan-Passpoint-Operator",
"details": { "details": {
"model_type": "PasspointOperatorProfile", "model_type": "PasspointOperatorProfile",
"serverOnlyAuthenticatedL2EncryptionNetwork": false, "serverOnlyAuthenticatedL2EncryptionNetwork": false,
"x509CertificateLocation": "/etc/ca.pem", "x509CertificateLocation": "/etc/ca.pem",
"operatorFriendlyName": [ "operatorFriendlyName": [
{ {
"model_type": "PasspointDuple", "model_type": "PasspointDuple",
"locale": "fra", "locale": "en_CA",
"dupleIso3Language": "fra", "dupleIso3Language": "eng",
"dupleName": "Nom de l'opérateur convivial par défaut", "dupleName": "Default friendly passpoint_operator name",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"asDuple": "fra:Nom de l'opérateur convivial par défaut" "asDuple": "eng:Default friendly passpoint_operator name"
}, },
{ {
"model_type": "PasspointDuple", "model_type": "PasspointDuple",
"locale": "eng", "locale": "fr_CA",
"dupleIso3Language": "eng", "dupleIso3Language": "fra",
"dupleName": "Default friendly passpoint_operator name", "dupleName": "Nom de l'opérateur convivial par défaut",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"asDuple": "eng:Default friendly passpoint_operator name" "asDuple": "fra:Nom de l'opérateur convivial par défaut"
} }
], ],
"domainNameList": [ "profileType": "passpoint_operator"
"bell.ca", },
"telus.com", "createdTimestamp": 1606778369945,
"rogers.com" "lastModifiedTimestamp": 1606778369945,
], "childProfileIds": [
"profileType": "passpoint_operator" ]
}, }
"createdTimestamp": 1611264539004, ]
"lastModifiedTimestamp": 1611264539004,
"childProfileIds": []
}
]

View File

@@ -1,24 +1,34 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 1, "id": 1,
"customerId": 2, "customerId": 2,
"profileType": "radius", "profileType": "radius",
"name": "Radius-Profile", "name": "Radius-Profile",
"details": { "details": {
"model_type": "RadiusProfile", "model_type": "RadiusProfile",
"primaryRadiusAuthServer": { "subnetConfiguration": null,
"model_type": "RadiusServer", "serviceRegionMap": {
"ipAddress": "192.168.0.1", "Ottawa": {
"secret": "testing123", "model_type": "RadiusServiceRegion",
"port": 1812, "serverMap": {
"timeout": null "Radius-Profile": [
}, {
"profileType": "radius" "model_type": "RadiusServer",
}, "ipAddress": "192.168.0.1",
"createdTimestamp": 1611262628767, "secret": "testing123",
"lastModifiedTimestamp": 1611262628767, "authPort": 1812,
"childProfileIds": [ "timeout": null
] }
} ]
] },
"regionName": "Ottawa"
}
},
"profileType": "radius"
},
"createdTimestamp": 1601961451668,
"lastModifiedTimestamp": 1601961451668,
"childProfileIds": []
}
]

View File

@@ -1,6 +1,6 @@
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 4, "id": 11,
"customerId": 2, "customerId": 2,
"profileType": "rf", "profileType": "rf",
"name": "TipWlan-rf", "name": "TipWlan-rf",
@@ -198,7 +198,7 @@
}, },
"profileType": "rf" "profileType": "rf"
}, },
"createdTimestamp": 1612285248650, "createdTimestamp": 1606778369933,
"lastModifiedTimestamp": 1612285248650, "lastModifiedTimestamp": 1606778369933,
"childProfileIds": [] "childProfileIds": []
} }

View File

@@ -1,75 +1,203 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 2, "id": 5,
"customerId": 2, "customerId": 2,
"profileType": "ssid", "profileType": "ssid",
"name": "TipWlan-cloud-3-radios", "name": "TipWlan-cloud-3-radios",
"details": { "details": {
"model_type": "SsidConfiguration", "model_type": "SsidConfiguration",
"ssid": "TipWlan-cloud-3-radios", "ssid": "TipWlan-cloud-3-radios",
"appliedRadios": [ "appliedRadios": [
"is5GHzU", "is5GHzL",
"is2dot4GHz", "is2dot4GHz",
"is5GHzL" "is5GHzU"
], ],
"ssidAdminState": "enabled", "ssidAdminState": "enabled",
"secureMode": "wpa2OnlyPSK", "secureMode": "wpa2OnlyPSK",
"vlanId": 1, "vlanId": 1,
"keyStr": "openwifi", "keyStr": "openwifi",
"broadcastSsid": "enabled", "broadcastSsid": "enabled",
"keyRefresh": 0, "keyRefresh": 0,
"noLocalSubnets": false, "noLocalSubnets": false,
"radiusServiceId": 0, "radiusServiceName": null,
"radiusAcountingServiceInterval": 60, "radiusAccountingServiceName": null,
"captivePortalId": null, "radiusAcountingServiceInterval": null,
"bandwidthLimitDown": 0, "captivePortalId": null,
"bandwidthLimitUp": 0, "bandwidthLimitDown": 0,
"clientBandwidthLimitDown": 0, "bandwidthLimitUp": 0,
"clientBandwidthLimitUp": 0, "clientBandwidthLimitDown": 0,
"videoTrafficOnly": false, "clientBandwidthLimitUp": 0,
"radioBasedConfigs": { "videoTrafficOnly": false,
"is5GHzU": { "radioBasedConfigs": {
"model_type": "RadioBasedSsidConfiguration", "is5GHzL": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is2dot4GHz": { },
"model_type": "RadioBasedSsidConfiguration", "is2dot4GHz": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is5GHz": { },
"model_type": "RadioBasedSsidConfiguration", "is5GHz": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is5GHzL": { },
"model_type": "RadioBasedSsidConfiguration", "is5GHzU": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
} "enable80211v": null
}, }
"bonjourGatewayProfileId": null, },
"enable80211w": null, "bonjourGatewayProfileId": null,
"wepConfig": null, "enable80211w": null,
"forwardMode": "BRIDGE", "wepConfig": null,
"profileType": "ssid", "forwardMode": "BRIDGE",
"radiusClientConfiguration": { "profileType": "ssid"
"model_type": "RadiusNasConfiguration", },
"nasClientId": "DEFAULT", "createdTimestamp": 1606778369598,
"nasClientIp": "WAN_IP", "lastModifiedTimestamp": 1606778369598,
"userDefinedNasId": null, "childProfileIds": [
"userDefinedNasIp": null, ]
"operatorId": null },
} {
}, "model_type": "Profile",
"createdTimestamp": 1612285248638, "id": 15,
"lastModifiedTimestamp": 1612285248638, "customerId": 2,
"childProfileIds": [] "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,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1606778369943,
"lastModifiedTimestamp": 1606778370811,
"childProfileIds": [
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
]
}
] ]

View File

@@ -1,42 +1,43 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 33, "id": 18,
"customerId": 2, "customerId": 2,
"profileType": "passpoint_venue", "profileType": "passpoint_venue",
"name": "venue-profile-2021-01-21T21:28:58.934Z", "name": "TipWlan-Passpoint-Venue",
"details": { "details": {
"model_type": "PasspointVenueProfile", "model_type": "PasspointVenueProfile",
"venueNameSet": [ "venueNameSet": [
{ {
"model_type": "PasspointVenueName", "model_type": "PasspointVenueName",
"locale": "fra", "locale": "fr_CA",
"dupleIso3Language": "fra", "dupleIso3Language": "fra",
"dupleName": "Exemple de lieu", "dupleName": "Exemple de lieu",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"venueUrl": "http://www.example.com/info-fra", "venueUrl": "http://www.example.com/info-fra",
"asDuple": "fra:Exemple de lieu" "asDuple": "fra:Exemple de lieu"
}, },
{ {
"model_type": "PasspointVenueName", "model_type": "PasspointVenueName",
"locale": "eng", "locale": "en_CA",
"dupleIso3Language": "eng", "dupleIso3Language": "eng",
"dupleName": "Example passpoint_venue", "dupleName": "Example passpoint_venue",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"venueUrl": "http://www.example.com/info-eng", "venueUrl": "http://www.example.com/info-eng",
"asDuple": "eng:Example passpoint_venue" "asDuple": "eng:Example passpoint_venue"
} }
], ],
"venueTypeAssignment": { "venueTypeAssignment": {
"model_type": "PasspointVenueTypeAssignment", "model_type": "PasspointVenueTypeAssignment",
"venueDescription": "Research and Development Facility", "venueDescription": "Research and Development Facility",
"venueGroupId": 2, "venueGroupId": 2,
"venueTypeId": 8 "venueTypeId": 8
}, },
"profileType": "passpoint_venue" "profileType": "passpoint_venue"
}, },
"createdTimestamp": 1611264538947, "createdTimestamp": 1606778369950,
"lastModifiedTimestamp": 1611264538947, "lastModifiedTimestamp": 1606778369950,
"childProfileIds": [] "childProfileIds": [
} ]
] }
]

View File

@@ -56,8 +56,6 @@ RESTAPI_PROPS+=" -Dserver.port=443"
SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED" SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } " export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS"
export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS"
java $ALL_PROPS -jar app.jar java $ALL_PROPS -jar app.jar

View File

@@ -3,7 +3,7 @@
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway-static-process</artifactId> <artifactId>opensync-gateway-static-process</artifactId>
@@ -18,7 +18,7 @@
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-ext-static</artifactId> <artifactId>opensync-ext-static</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -1,472 +1,221 @@
{ {
"model_type": "Equipment", "model_type": "Equipment",
"id": 1, "id": 51,
"customerId": 2, "customerId": 2,
"profileId": 8, "profileId": 12,
"locationId": 8, "locationId": 8,
"equipmentType": "AP",
"inventoryId": "Test_Client_21P10C68818122",
"name": "Test_Client_21P10C68818122",
"details": {
"model_type": "ApElementConfiguration",
"equipmentModel": "EA8300-CA",
"elementConfigVersion": "AP-V1",
"equipmentType": "AP", "equipmentType": "AP",
"inventoryId": "Open_AP_21P10C68818122", "deviceMode": "standaloneAP",
"name": "Open_AP_21P10C68818122", "gettingIP": "dhcp",
"details": { "staticIP": null,
"model_type": "ApElementConfiguration", "staticIpMaskCidr": null,
"equipmentModel": "EA8300-CA", "staticIpGw": null,
"elementConfigVersion": "AP-V1", "gettingDNS": "dhcp",
"equipmentType": "AP", "staticDnsIp1": null,
"deviceMode": "standaloneAP", "staticDnsIp2": null,
"gettingIP": "dhcp", "peerInfoList": [],
"staticIP": null, "deviceName": "Default Device Name",
"staticIpMaskCidr": null, "locationData": null,
"staticIpGw": null, "locallyConfiguredMgmtVlan": 0,
"gettingDNS": "dhcp", "locallyConfigured": false,
"staticDnsIp1": null, "deploymentType": "CEILING",
"staticDnsIp2": null, "syntheticClientEnabled": null,
"peerInfoList": [], "frameReportThrottleEnabled": true,
"deviceName": "Open_AP_21P10C68818122", "antennaType": "OMNI",
"locationData": null, "costSavingEventsEnabled": true,
"locallyConfiguredMgmtVlan": 0, "forwardMode": "BRIDGE",
"locallyConfigured": false, "radioMap": {
"deploymentType": "CEILING", "is2dot4GHz": {
"syntheticClientEnabled": null, "model_type": "ElementRadioConfiguration",
"frameReportThrottleEnabled": true, "radioType": "is2dot4GHz",
"antennaType": "OMNI", "channelNumber": 6,
"costSavingEventsEnabled": true, "manualChannelNumber": 6,
"forwardMode": "BRIDGE", "backupChannelNumber": 11,
"radioMap": { "bannedChannels": [],
"is5GHzU": { "allowedChannels": [],
"model_type": "ElementRadioConfiguration", "rxCellSizeDb": {
"radioType": "is5GHzU", "model_type": "SourceSelectionValue",
"channelNumber": 149, "source": "auto",
"manualChannelNumber": 149, "value": -90
"backupChannelNumber": 157,
"manualBackupChannelNumber": 157,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 161,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 100,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 132,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 165,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 104,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 136,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 108,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 140,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 112,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 144,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 116,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 149,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 153,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 157,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
},
"is2dot4GHz": {
"model_type": "ElementRadioConfiguration",
"radioType": "is2dot4GHz",
"channelNumber": 6,
"manualChannelNumber": 6,
"backupChannelNumber": 11,
"manualBackupChannelNumber": 11,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 1,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 2,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 3,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 4,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 5,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 6,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 7,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 8,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 9,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 10,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 11,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
}
]
},
"is5GHzL": {
"model_type": "ElementRadioConfiguration",
"radioType": "is5GHzL",
"channelNumber": 36,
"manualChannelNumber": 36,
"backupChannelNumber": 44,
"manualBackupChannelNumber": 44,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 52,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 36,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 56,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 40,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 60,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 44,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 64,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 48,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
}
}, },
"advancedRadioMap": { "probeResponseThresholdDb": {
"is2dot4GHz": { "model_type": "SourceSelectionValue",
"model_type": "RadioConfiguration", "source": "auto",
"radioType": "is2dot4GHz", "value": -90
"radioAdminState": "enabled", },
"fragmentationThresholdBytes": 2346, "clientDisconnectThresholdDb": {
"uapsdState": "enabled", "model_type": "SourceSelectionValue",
"stationIsolation": "disabled", "source": "auto",
"multicastRate": { "value": -90
"model_type": "SourceSelectionMulticast", },
"source": "profile", "eirpTxPower": {
"value": "auto" "model_type": "SourceSelectionValue",
}, "source": "auto",
"managementRate": { "value": 32
"model_type": "SourceSelectionManagement", },
"source": "profile", "perimeterDetectionEnabled": true,
"value": "auto" "bestAPSteerType": "both",
}, "deauthAttackDetection": null,
"bestApSettings": { "allowedChannelsPowerLevels": [],
"model_type": "SourceSelectionSteering", "activeChannel": 6
"source": "manual", },
"value": { "is5GHzU": {
"model_type": "RadioBestApSettings", "model_type": "ElementRadioConfiguration",
"mlComputed": true, "radioType": "is5GHzU",
"dropInSnrPercentage": 20, "channelNumber": 149,
"minLoadFactor": 50 "manualChannelNumber": 149,
} "backupChannelNumber": 154,
}, "bannedChannels": [],
"legacyBSSRate": "enabled", "allowedChannels": [],
"dtimPeriod": 2, "rxCellSizeDb": {
"deauthAttackDetection": null "model_type": "SourceSelectionValue",
}, "source": "auto",
"is5GHzU": { "value": -90
"model_type": "RadioConfiguration", },
"radioType": "is5GHzU", "probeResponseThresholdDb": {
"radioAdminState": "enabled", "model_type": "SourceSelectionValue",
"fragmentationThresholdBytes": 2346, "source": "auto",
"uapsdState": "enabled", "value": -90
"stationIsolation": "disabled", },
"multicastRate": { "clientDisconnectThresholdDb": {
"model_type": "SourceSelectionMulticast", "model_type": "SourceSelectionValue",
"source": "profile", "source": "auto",
"value": "auto" "value": -90
}, },
"managementRate": { "eirpTxPower": {
"model_type": "SourceSelectionManagement", "model_type": "SourceSelectionValue",
"source": "profile", "source": "auto",
"value": "auto" "value": 32
}, },
"bestApSettings": { "perimeterDetectionEnabled": true,
"model_type": "SourceSelectionSteering", "bestAPSteerType": "both",
"source": "manual", "deauthAttackDetection": null,
"value": { "allowedChannelsPowerLevels": [],
"model_type": "RadioBestApSettings", "activeChannel": 149
"mlComputed": true, },
"dropInSnrPercentage": 30, "is5GHzL": {
"minLoadFactor": 40 "model_type": "ElementRadioConfiguration",
} "radioType": "is5GHzL",
}, "channelNumber": 36,
"legacyBSSRate": "enabled", "manualChannelNumber": 36,
"dtimPeriod": 2, "backupChannelNumber": 44,
"deauthAttackDetection": null "bannedChannels": [],
}, "allowedChannels": [],
"is5GHzL": { "rxCellSizeDb": {
"model_type": "RadioConfiguration", "model_type": "SourceSelectionValue",
"radioType": "is5GHzL", "source": "auto",
"radioAdminState": "enabled", "value": -90
"fragmentationThresholdBytes": 2346, },
"uapsdState": "enabled", "probeResponseThresholdDb": {
"stationIsolation": "disabled", "model_type": "SourceSelectionValue",
"multicastRate": { "source": "auto",
"model_type": "SourceSelectionMulticast", "value": -90
"source": "profile", },
"value": "auto" "clientDisconnectThresholdDb": {
}, "model_type": "SourceSelectionValue",
"managementRate": { "source": "auto",
"model_type": "SourceSelectionManagement", "value": -90
"source": "profile", },
"value": "auto" "eirpTxPower": {
}, "model_type": "SourceSelectionValue",
"bestApSettings": { "source": "auto",
"model_type": "SourceSelectionSteering", "value": 32
"source": "manual", },
"value": { "perimeterDetectionEnabled": true,
"model_type": "RadioBestApSettings", "bestAPSteerType": "both",
"mlComputed": true, "deauthAttackDetection": null,
"dropInSnrPercentage": 30, "allowedChannelsPowerLevels": [],
"minLoadFactor": 40 "activeChannel": 36
} }
},
"legacyBSSRate": "enabled",
"dtimPeriod": 2,
"deauthAttackDetection": null
}
}
}, },
"latitude": null, "advancedRadioMap": {
"longitude": null, "is2dot4GHz": {
"baseMacAddress": { "model_type": "RadioConfiguration",
"model_type": "MacAddress", "radioType": "is2dot4GHz",
"address": "JPWi7y5T", "radioAdminState": "enabled",
"addressAsString": "24:f5:a2:ef:2e:53" "fragmentationThresholdBytes": 2346,
}, "uapsdState": "enabled",
"serial": "21P10C68818122", "stationIsolation": "disabled",
"createdTimestamp": 1612285288821, "managementRate": {
"lastModifiedTimestamp": 1612285293922 "model_type": "SourceSelectionManagement",
} "source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
},
"is5GHzU": {
"model_type": "RadioConfiguration",
"radioType": "is5GHzU",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"uapsdState": "enabled",
"stationIsolation": "disabled",
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
},
"is5GHzL": {
"model_type": "RadioConfiguration",
"radioType": "is5GHzL",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"uapsdState": "enabled",
"stationIsolation": "disabled",
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "auto",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "auto",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"legacyBSSRate": "enabled",
"deauthAttackDetection": null
}
}
},
"latitude": null,
"longitude": null,
"serial": "21P10C68818122",
"createdTimestamp": 1591653239821,
"lastModifiedTimestamp": 1591653241398
}

View File

@@ -1,61 +1,60 @@
{ {
"model_type": "Location", "model_type" : "Location",
"id": 8, "id" : 8,
"parentId": 0, "parentId" : 0,
"locationType": "SITE", "locationType" : "SITE",
"customerId": 2, "customerId" : 2,
"name": "Ottawa", "name" : "Ottawa",
"details": { "details" : {
"model_type": "LocationDetails", "model_type" : "LocationDetails",
"countryCode": "CA", "countryCode" : "ca",
"dailyActivityDetails": { "maintenanceWindow" : null,
"SUNDAY": { "rrmEnabled" : true,
"model_type": "LocationActivityDetails", "dailyActivityDetails" : {
"busyTime": "13:30", "SUNDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"MONDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "MONDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"TUESDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "TUESDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"WEDNESDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "WEDNESDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"THURSDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "THURSDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"FRIDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "FRIDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
}, "quietTime" : "3:30",
"SATURDAY": { "timezone" : "US/Eastern"
"model_type": "LocationActivityDetails", },
"busyTime": "13:30", "SATURDAY" : {
"quietTime": "3:00", "model_type" : "LocationActivityDetails",
"timezone": "US/Eastern" "busyTime" : "13:30",
} "quietTime" : "3:30",
}, "timezone" : "US/Eastern"
"maintenanceWindow": null, }
"rrmEnabled": true, }
"timezone": "US/Eastern" },
}, "createdTimestamp" : 1590607043540,
"createdTimestamp": 1612285243534, "lastModifiedTimestamp" : 1590607043540
"lastModifiedTimestamp": 1612285243534
} }

View File

@@ -1,6 +1,6 @@
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 8, "id": 12,
"customerId": 2, "customerId": 2,
"profileType": "equipment_ap", "profileType": "equipment_ap",
"name": "ApProfile-3-radios", "name": "ApProfile-3-radios",
@@ -20,6 +20,11 @@
"syntheticClientEnabled": true, "syntheticClientEnabled": true,
"ledControlEnabled": true, "ledControlEnabled": true,
"equipmentDiscovery": false, "equipmentDiscovery": false,
"greTunnelName": null,
"greParentIfName": null,
"greLocalInetAddr": null,
"greRemoteInetAddr": null,
"greRemoteMacAddr": null,
"radioMap": { "radioMap": {
"is2dot4GHz": { "is2dot4GHz": {
"model_type": "RadioProfileConfiguration", "model_type": "RadioProfileConfiguration",
@@ -37,22 +42,15 @@
"bestAPSteerType": "both" "bestAPSteerType": "both"
} }
}, },
"greTunnelConfigurations": [
{
"model_type": "GreTunnelConfiguration",
"greTunnelName": "gre1",
"greRemoteInetAddr": "192.168.1.101",
"vlanIdsInGreTunnel": [
100
]
}
],
"profileType": "equipment_ap" "profileType": "equipment_ap"
}, },
"createdTimestamp": 1612285248925, "createdTimestamp": 1606778369934,
"lastModifiedTimestamp": 1612285628377, "lastModifiedTimestamp": 1606778443413,
"childProfileIds": [ "childProfileIds": [
2, 16,
4 5,
10,
11,
15
] ]
} }

View File

@@ -1,58 +1,135 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 5, "id": 14,
"customerId": 2, "customerId": 2,
"profileType": "captive_portal", "profileType": "captive_portal",
"name": "Captive-portal", "name": "Captive-portal",
"details": { "details": {
"model_type": "CaptivePortalConfiguration", "model_type": "CaptivePortalConfiguration",
"name": "Default", "name": "Captive-portal",
"browserTitle": "Captive-portal", "browserTitle": "Access the network as Guest",
"headerContent": "Captive Portal", "headerContent": "Captive Portal",
"userAcceptancePolicy": "Please agree to the following terms for using this network:", "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
"successPageMarkdownText": "You are now authorized and connected to the network.", "successPageMarkdownText": "Welcome to the network",
"redirectURL": "https://www.google.com", "redirectURL": "",
"externalCaptivePortalURL": null, "externalCaptivePortalURL": null,
"sessionTimeoutInMinutes": 10, "sessionTimeoutInMinutes": 60,
"logoFile": { "logoFile": null,
"model_type": "ManagedFileInfo", "backgroundFile": null,
"md5checksum": null, "walledGardenAllowlist": [],
"lastModifiedTimestamp": null, "usernamePasswordFile": {
"apExportUrl": "/filestore/tip-logo-mobile", "model_type": "ManagedFileInfo",
"fileCategory": "CaptivePortalLogo", "md5checksum": null,
"fileType": "PNG", "lastModifiedTimestamp": null,
"altSlot": false "apExportUrl": "userList",
}, "fileCategory": "UsernamePasswordList",
"backgroundFile": { "fileType": "TEXT",
"model_type": "ManagedFileInfo", "altSlot": true
"md5checksum": null, },
"lastModifiedTimestamp": null, "authenticationType": "guest",
"apExportUrl": "/filestore/tip-logo", "radiusAuthMethod": "CHAP",
"fileCategory": "CaptivePortalBackground", "maxUsersWithSameCredentials": 42,
"fileType": "PNG", "externalPolicyFile": null,
"altSlot": false "backgroundPosition": "left_top",
}, "backgroundRepeat": "no_repeat",
"walledGardenAllowlist": [ "radiusServiceName": null,
], "expiryType": "unlimited",
"usernamePasswordFile": null, "userList": [
"authenticationType": "guest", {
"radiusAuthMethod": "CHAP", "model_type": "TimedAccessUserRecord",
"maxUsersWithSameCredentials": 3, "username": "customer",
"externalPolicyFile": null, "password": "testing123",
"backgroundPosition": "left_top", "activationTime": 1602183994956,
"backgroundRepeat": "no_repeat", "expirationTime": 1602212794956,
"radiusServiceId": 0, "numDevices": 1,
"expiryType": "time_limited", "userDetails": {
"userList": [ "model_type": "TimedAccessUserDetails",
], "firstName": "Pac",
"macAllowList": [ "lastName": "Man",
], "passwordNeedsReset": false
"profileType": "captive_portal" },
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "fKtg5upO",
"addressAsString": "7c:ab:60:e6:ea:4e"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer",
"password": "testing123",
"activationTime": 1602183994957,
"expirationTime": 1602187594957,
"numDevices": 0,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Q",
"lastName": "Bert",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "wJrQdqho",
"addressAsString": "c0:9a:d0:76:a8:68"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer2",
"password": "testing1234",
"activationTime": 1602183994957,
"expirationTime": 1602788794957,
"numDevices": 1,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Duke",
"lastName": "Nukem",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "fKtg5upN",
"addressAsString": "7c:ab:60:e6:ea:4d"
}
],
"lastModifiedTimestamp": 0
},
{
"model_type": "TimedAccessUserRecord",
"username": "customer2",
"password": "testing1234",
"activationTime": 1602183994957,
"expirationTime": 1602270394957,
"numDevices": 0,
"userDetails": {
"model_type": "TimedAccessUserDetails",
"firstName": "Missile",
"lastName": "Commander",
"passwordNeedsReset": false
},
"userMacAddresses": [
{
"model_type": "MacAddress",
"address": "wJrQdqhj",
"addressAsString": "c0:9a:d0:76:a8:63"
}
],
"lastModifiedTimestamp": 0
}
],
"macAllowList": [],
"profileType": "captive_portal"
}, },
"createdTimestamp": 1611857459118, "createdTimestamp": 1602183994959,
"lastModifiedTimestamp": 1611857459118, "lastModifiedTimestamp": 1602183994959,
"childProfileIds": [ "childProfileIds": []
] }
} ]
]

View File

@@ -1,71 +1,71 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 37, "id": 24,
"customerId": 2, "customerId": 2,
"profileType": "passpoint", "profileType": "passpoint",
"name": "hotspot20-profile-2021-01-21T21:28:59.171Z", "name": "TipWlan-Passpoint-Config",
"details": { "details": {
"model_type": "PasspointProfile", "model_type": "PasspointProfile",
"enableInterworkingAndHs20": true, "enableInterworkingAndHs20": true,
"hessid": null, "hessid": null,
"passpointAccessNetworkType": "free_public_network", "passpointAccessNetworkType": "free_public_network",
"passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions", "passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
"additionalStepsRequiredForAccess": 0, "additionalStepsRequiredForAccess": 0,
"deauthRequestTimeout": 0, "deauthRequestTimeout": 0,
"operatingClass": 0, "operatingClass": 0,
"termsAndConditionsFile": { "termsAndConditionsFile": {
"model_type": "ManagedFileInfo", "model_type": "ManagedFileInfo",
"md5checksum": null, "md5checksum": null,
"lastModifiedTimestamp": null, "lastModifiedTimestamp": null,
"apExportUrl": "https://localhost:9091/filestore/termsAndConditions", "apExportUrl": "https://localhost:9091/filestore/termsAndConditions",
"fileCategory": "ExternalPolicyConfiguration", "fileCategory": "ExternalPolicyConfiguration",
"fileType": "TEXT", "fileType": "TEXT",
"altSlot": false "altSlot": false
}, },
"whitelistDomain": null, "whitelistDomain": null,
"emergencyServicesReachable": true, "emergencyServicesReachable": true,
"unauthenticatedEmergencyServiceAccessible": false, "unauthenticatedEmergencyServiceAccessible": false,
"internetConnectivity": true, "internetConnectivity": true,
"connectionCapabilitySet": [ "connectionCapabilitySet": [
{ {
"model_type": "PasspointConnectionCapability", "model_type": "PasspointConnectionCapability",
"connectionCapabilitiesPortNumber": 8888, "connectionCapabilitiesPortNumber": 8888,
"connectionCapabilitiesIpProtocol": "TCP", "connectionCapabilitiesStatus": "open",
"connectionCapabilitiesStatus": "open" "connectionCapabilitiesIpProtocol": "TCP"
} }
], ],
"ipAddressTypeAvailability": "public_IPv4_address_available", "ipAddressTypeAvailability": "public_IPv4_address_available",
"qosMapSetConfiguration": null, "qosMapSetConfiguration": null,
"apGeospatialLocation": null, "apGeospatialLocation": null,
"apCivicLocation": null, "apCivicLocation": null,
"apPublicLocationIdUri": null, "apPublicLocationIdUri": null,
"gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest",
"anqpDomainId": 1234, "anqpDomainId": 1234,
"disableDownstreamGroupAddressedForwarding": false, "disableDownstreamGroupAddressedForwarding": false,
"enable2pt4GHz": true, "enable2pt4GHz": true,
"enable5GHz": true, "enable5GHz": true,
"associatedAccessSsidProfileIds": [ "associatedAccessSsidProfileIds": [
32 15
], ],
"osuSsidProfileId": 31, "osuSsidProfileId": 16,
"passpointOperatorProfileId": 34, "passpointOperatorProfileId": 17,
"passpointVenueProfileId": 33, "passpointVenueProfileId": 18,
"passpointOsuProviderProfileIds": [ "passpointOsuProviderProfileIds": [
35, 19,
36 20
], ],
"accessNetworkType": "free_public_network", "accessNetworkType": "free_public_network",
"networkAuthenticationType": "acceptance_of_terms_and_conditions", "networkAuthenticationType": "acceptance_of_terms_and_conditions",
"profileType": "passpoint" "profileType": "passpoint"
}, },
"createdTimestamp": 0, "createdTimestamp": 1606778370807,
"lastModifiedTimestamp": 1611264539331, "lastModifiedTimestamp": 1606778370807,
"childProfileIds": [ "childProfileIds": [
33, 17,
34, 18,
35, 19,
36 20
] ]
} }
] ]

View File

@@ -1,263 +1,270 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 35, "id": 19,
"customerId": 2, "customerId": 2,
"profileType": "passpoint_osu_id_provider", "profileType": "passpoint_osu_id_provider",
"name": "provider1-profile-2021-01-21T21:28:59.057Z", "name": "TipWlan-Passpoint-OSU-Provider",
"details": { "details": {
"model_type": "PasspointOsuProviderProfile", "model_type": "PasspointOsuProviderProfile",
"mccMncList": [ "domainName": "rogers.com",
{ "mccMncList": [
"model_type": "PasspointMccMnc", {
"mcc": 302, "model_type": "PasspointMccMnc",
"mnc": 720, "mcc": 302,
"iso": "ca", "mnc": 720,
"country": "Canada", "iso": "ca",
"countryCode": 1, "country": "Canada",
"network": "Rogers AT&T Wireless", "countryCode": 1,
"mccMncPairing": "302,720" "network": "Rogers AT&T Wireless",
} "mccMncPairing": "302,720"
], }
"naiRealmList": [ ],
{ "naiRealmList": [
"model_type": "PasspointNaiRealmInformation", {
"naiRealms": [ "model_type": "PasspointNaiRealmInformation",
"rogers.com" "naiRealms": [
], "rogers.com"
"encoding": 0, ],
"eapMethods": [ "encoding": 0,
"EAP-TTLS with username/password", "eapMethods": [
"EAP-TLS with certificate" "EAP-TTLS with username/password",
], "EAP-TLS with certificate"
"eapMap": { ],
"EAP-TTLS with username/password": [ "eapMap": {
"Credential Type:username/password", "EAP-TTLS with username/password": [
"Non-EAP Inner Authentication Type:MSCHAPV2" "Credential Type:username/password",
], "Non-EAP Inner Authentication Type:MSCHAPV2"
"EAP-TLS with certificate": [ ],
"Credential Type:Certificate" "EAP-TLS with certificate": [
] "Credential Type:Certificate"
} ]
} }
], }
"osuIconList": [ ],
{ "osuIconList": [
"model_type": "PasspointOsuIcon", {
"iconWidth": 32, "model_type": "PasspointOsuIcon",
"iconHeight": 32, "iconWidth": 32,
"languageCode": "eng", "iconHeight": 32,
"iconLocale": "en_CA", "languageCode": "eng",
"iconName": "icon32eng", "iconLocale": "en_CA",
"filePath": "/tmp/icon32eng.png", "iconName": "icon32eng",
"imageUrl": "https://localhost:9096/icon32eng.png", "filePath": "/tmp/icon32eng.png",
"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" "imageUrl": "https://localhost:9096/icon32eng.png",
}, "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
{ },
"model_type": "PasspointOsuIcon", {
"iconWidth": 32, "model_type": "PasspointOsuIcon",
"iconHeight": 32, "iconWidth": 32,
"languageCode": "fra", "iconHeight": 32,
"iconLocale": "fr_CA", "languageCode": "fra",
"iconName": "icon32fra", "iconLocale": "fr_CA",
"filePath": "/tmp/icon32fra.png", "iconName": "icon32fra",
"imageUrl": "https://localhost:9096/icon32fra.png", "filePath": "/tmp/icon32fra.png",
"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" "imageUrl": "https://localhost:9096/icon32fra.png",
}, "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
{ },
"model_type": "PasspointOsuIcon", {
"iconWidth": 32, "model_type": "PasspointOsuIcon",
"iconHeight": 32, "iconWidth": 32,
"languageCode": "eng", "iconHeight": 32,
"iconLocale": "en_US", "languageCode": "eng",
"iconName": "icon32usa", "iconLocale": "en_US",
"filePath": "/tmp/icon32usa.png", "iconName": "icon32usa",
"imageUrl": "https://localhost:9096/icon32usa.png", "filePath": "/tmp/icon32usa.png",
"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" "imageUrl": "https://localhost:9096/icon32usa.png",
} "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
], }
"osuServerUri": "https://example.com/osu/rogers", ],
"osuFriendlyName": [ "osuServerUri": "https://example.com/osu/rogers",
{ "osuFriendlyName": [
"model_type": "PasspointDuple", {
"locale": "eng", "model_type": "PasspointDuple",
"dupleIso3Language": "eng", "locale": "en_CA",
"dupleName": "Example provider rogers", "dupleIso3Language": "eng",
"defaultDupleSeparator": ":", "dupleName": "Example provider rogers",
"asDuple": "eng:Example provider rogers" "defaultDupleSeparator": ":",
}, "asDuple": "eng:Example provider rogers"
{ },
"model_type": "PasspointDuple", {
"locale": "fra", "model_type": "PasspointDuple",
"dupleIso3Language": "fra", "locale": "fr_CA",
"dupleName": "Exemple de fournisseur rogers", "dupleIso3Language": "fra",
"defaultDupleSeparator": ":", "dupleName": "Exemple de fournisseur rogers",
"asDuple": "fra:Exemple de fournisseur rogers" "defaultDupleSeparator": ":",
} "asDuple": "fra:Exemple de fournisseur rogers"
], }
"osuNaiStandalone": "anonymous@rogers.com", ],
"osuNaiShared": "anonymous@rogers.com", "osuNaiStandalone": "anonymous@rogers.com",
"osuMethodList": [ "osuNaiShared": "anonymous@rogers.com",
1, "osuMethodList": [
0 1,
], 0
"osuServiceDescription": [ ],
{ "osuServiceDescription": [
"model_type": "PasspointDuple", {
"locale": "eng", "model_type": "PasspointDuple",
"dupleIso3Language": "eng", "locale": "en_CA",
"dupleName": "Example services rogers", "dupleIso3Language": "eng",
"defaultDupleSeparator": ":", "dupleName": "Example services rogers",
"asDuple": "eng:Example services rogers" "defaultDupleSeparator": ":",
}, "asDuple": "eng:Example services rogers"
{ },
"model_type": "PasspointDuple", {
"locale": "fra", "model_type": "PasspointDuple",
"dupleIso3Language": "fra", "locale": "fr_CA",
"dupleName": "Exemples de services rogers", "dupleIso3Language": "fra",
"defaultDupleSeparator": ":", "dupleName": "Exemples de services rogers",
"asDuple": "fra:Exemples de services rogers" "defaultDupleSeparator": ":",
} "asDuple": "fra:Exemples de services rogers"
], }
"roamingOi": [ ],
"BAA2D00100", "roamingOi": [
"BAA2D00000" 1,
], 2,
"profileType": "passpoint_osu_id_provider" 3,
}, 4
"createdTimestamp": 1611264539070, ],
"lastModifiedTimestamp": 1611264539070, "profileType": "passpoint_osu_id_provider"
"childProfileIds": [] },
}, "createdTimestamp": 1606778370345,
{ "lastModifiedTimestamp": 1606778370345,
"model_type": "Profile", "childProfileIds": [
"id": 36, ]
"customerId": 2, },
"profileType": "passpoint_osu_id_provider", {
"name": "provider2-profile-2021-01-21T21:28:59.118Z", "model_type": "Profile",
"details": { "id": 20,
"model_type": "PasspointOsuProviderProfile", "customerId": 2,
"mccMncList": [ "profileType": "passpoint_osu_id_provider",
{ "name": "TipWlan-Passpoint-OSU-Provider-2",
"model_type": "PasspointMccMnc", "details": {
"mcc": 302, "model_type": "PasspointOsuProviderProfile",
"mnc": 220, "domainName": "telus.com",
"iso": "ca", "mccMncList": [
"country": "Canada", {
"countryCode": 1, "model_type": "PasspointMccMnc",
"network": "Telus Mobility", "mcc": 302,
"mccMncPairing": "302,220" "mnc": 220,
} "iso": "ca",
], "country": "Canada",
"naiRealmList": [ "countryCode": 1,
{ "network": "Telus Mobility",
"model_type": "PasspointNaiRealmInformation", "mccMncPairing": "302,220"
"naiRealms": [ }
"telus.com" ],
], "naiRealmList": [
"encoding": 0, {
"eapMethods": [ "model_type": "PasspointNaiRealmInformation",
"EAP-TTLS with username/password", "naiRealms": [
"EAP-TLS with certificate" "telus.com"
], ],
"eapMap": { "encoding": 0,
"EAP-TTLS with username/password": [ "eapMethods": [
"Credential Type:username/password", "EAP-TTLS with username/password",
"Non-EAP Inner Authentication Type:MSCHAPV2" "EAP-TLS with certificate"
], ],
"EAP-TLS with certificate": [ "eapMap": {
"Credential Type:Certificate" "EAP-TTLS with username/password": [
] "Credential Type:username/password",
} "Non-EAP Inner Authentication Type:MSCHAPV2"
} ],
], "EAP-TLS with certificate": [
"osuIconList": [ "Credential Type:Certificate"
{ ]
"model_type": "PasspointOsuIcon", }
"iconWidth": 32, }
"iconHeight": 32, ],
"languageCode": "eng", "osuIconList": [
"iconLocale": "en_CA", {
"iconName": "icon32eng", "model_type": "PasspointOsuIcon",
"filePath": "/tmp/icon32eng.png", "iconWidth": 32,
"imageUrl": "https://localhost:9096/icon32eng.png", "iconHeight": 32,
"hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png" "languageCode": "eng",
}, "iconLocale": "en_CA",
{ "iconName": "icon32eng",
"model_type": "PasspointOsuIcon", "filePath": "/tmp/icon32eng.png",
"iconWidth": 32, "imageUrl": "https://localhost:9096/icon32eng.png",
"iconHeight": 32, "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
"languageCode": "fra", },
"iconLocale": "fr_CA", {
"iconName": "icon32fra", "model_type": "PasspointOsuIcon",
"filePath": "/tmp/icon32fra.png", "iconWidth": 32,
"imageUrl": "https://localhost:9096/icon32fra.png", "iconHeight": 32,
"hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png" "languageCode": "fra",
}, "iconLocale": "fr_CA",
{ "iconName": "icon32fra",
"model_type": "PasspointOsuIcon", "filePath": "/tmp/icon32fra.png",
"iconWidth": 32, "imageUrl": "https://localhost:9096/icon32fra.png",
"iconHeight": 32, "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
"languageCode": "eng", },
"iconLocale": "en_US", {
"iconName": "icon32usa", "model_type": "PasspointOsuIcon",
"filePath": "/tmp/icon32usa.png", "iconWidth": 32,
"imageUrl": "https://localhost:9096/icon32usa.png", "iconHeight": 32,
"hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png" "languageCode": "eng",
} "iconLocale": "en_US",
], "iconName": "icon32usa",
"osuServerUri": "https://example.com/osu/telus", "filePath": "/tmp/icon32usa.png",
"osuFriendlyName": [ "imageUrl": "https://localhost:9096/icon32usa.png",
{ "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
"model_type": "PasspointDuple", }
"locale": "eng", ],
"dupleIso3Language": "eng", "osuServerUri": "https://example.com/osu/telus",
"dupleName": "Example provider telus", "osuFriendlyName": [
"defaultDupleSeparator": ":", {
"asDuple": "eng:Example provider telus" "model_type": "PasspointDuple",
}, "locale": "en_CA",
{ "dupleIso3Language": "eng",
"model_type": "PasspointDuple", "dupleName": "Example provider telus",
"locale": "fra", "defaultDupleSeparator": ":",
"dupleIso3Language": "fra", "asDuple": "eng:Example provider telus"
"dupleName": "Exemple de fournisseur telus", },
"defaultDupleSeparator": ":", {
"asDuple": "fra:Exemple de fournisseur telus" "model_type": "PasspointDuple",
} "locale": "fr_CA",
], "dupleIso3Language": "fra",
"osuNaiStandalone": "anonymous@telus.com", "dupleName": "Exemple de fournisseur telus",
"osuNaiShared": "anonymous@telus.com", "defaultDupleSeparator": ":",
"osuMethodList": [ "asDuple": "fra:Exemple de fournisseur telus"
1, }
0 ],
], "osuNaiStandalone": "anonymous@telus.com",
"osuServiceDescription": [ "osuNaiShared": "anonymous@telus.com",
{ "osuMethodList": [
"model_type": "PasspointDuple", 1,
"locale": "eng", 0
"dupleIso3Language": "eng", ],
"dupleName": "Example services telus", "osuServiceDescription": [
"defaultDupleSeparator": ":", {
"asDuple": "eng:Example services telus" "model_type": "PasspointDuple",
}, "locale": "en_CA",
{ "dupleIso3Language": "eng",
"model_type": "PasspointDuple", "dupleName": "Example services telus",
"locale": "fra", "defaultDupleSeparator": ":",
"dupleIso3Language": "fra", "asDuple": "eng:Example services telus"
"dupleName": "Exemples de services telus", },
"defaultDupleSeparator": ":", {
"asDuple": "fra:Exemples de services telus" "model_type": "PasspointDuple",
} "locale": "fr_CA",
], "dupleIso3Language": "fra",
"roamingOi": [ "dupleName": "Exemples de services telus",
"004096", "defaultDupleSeparator": ":",
"005014", "asDuple": "fra:Exemples de services telus"
"F4F5E8F5F4" }
], ],
"profileType": "passpoint_osu_id_provider" "roamingOi": [
}, 1,
"createdTimestamp": 1611264539131, 2,
"lastModifiedTimestamp": 1611264539131, 3,
"childProfileIds": [] 4
} ],
] "profileType": "passpoint_osu_id_provider"
},
"createdTimestamp": 1606778370351,
"lastModifiedTimestamp": 1606778370351,
"childProfileIds": [
]
}
]

View File

@@ -1,41 +1,37 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 34, "id": 17,
"customerId": 2, "customerId": 2,
"profileType": "passpoint_operator", "profileType": "passpoint_operator",
"name": "operator-profile-2021-01-21T21:28:58.994Z", "name": "TipWlan-Passpoint-Operator",
"details": { "details": {
"model_type": "PasspointOperatorProfile", "model_type": "PasspointOperatorProfile",
"serverOnlyAuthenticatedL2EncryptionNetwork": false, "serverOnlyAuthenticatedL2EncryptionNetwork": false,
"x509CertificateLocation": "/etc/ca.pem", "x509CertificateLocation": "/etc/ca.pem",
"operatorFriendlyName": [ "operatorFriendlyName": [
{ {
"model_type": "PasspointDuple", "model_type": "PasspointDuple",
"locale": "fra", "locale": "en_CA",
"dupleIso3Language": "fra", "dupleIso3Language": "eng",
"dupleName": "Nom de l'opérateur convivial par défaut", "dupleName": "Default friendly passpoint_operator name",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"asDuple": "fra:Nom de l'opérateur convivial par défaut" "asDuple": "eng:Default friendly passpoint_operator name"
}, },
{ {
"model_type": "PasspointDuple", "model_type": "PasspointDuple",
"locale": "eng", "locale": "fr_CA",
"dupleIso3Language": "eng", "dupleIso3Language": "fra",
"dupleName": "Default friendly passpoint_operator name", "dupleName": "Nom de l'opérateur convivial par défaut",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"asDuple": "eng:Default friendly passpoint_operator name" "asDuple": "fra:Nom de l'opérateur convivial par défaut"
} }
], ],
"domainNameList": [ "profileType": "passpoint_operator"
"bell.ca", },
"telus.com", "createdTimestamp": 1606778369945,
"rogers.com" "lastModifiedTimestamp": 1606778369945,
], "childProfileIds": [
"profileType": "passpoint_operator" ]
}, }
"createdTimestamp": 1611264539004, ]
"lastModifiedTimestamp": 1611264539004,
"childProfileIds": []
}
]

View File

@@ -1,24 +1,34 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 1, "id": 1,
"customerId": 2, "customerId": 2,
"profileType": "radius", "profileType": "radius",
"name": "Radius-Profile", "name": "Radius-Profile",
"details": { "details": {
"model_type": "RadiusProfile", "model_type": "RadiusProfile",
"primaryRadiusAuthServer": { "subnetConfiguration": null,
"model_type": "RadiusServer", "serviceRegionMap": {
"ipAddress": "192.168.0.1", "Ottawa": {
"secret": "testing123", "model_type": "RadiusServiceRegion",
"port": 1812, "serverMap": {
"timeout": null "Radius-Profile": [
}, {
"profileType": "radius" "model_type": "RadiusServer",
}, "ipAddress": "192.168.0.1",
"createdTimestamp": 1611262628767, "secret": "testing123",
"lastModifiedTimestamp": 1611262628767, "authPort": 1812,
"childProfileIds": [ "timeout": null
] }
} ]
] },
"regionName": "Ottawa"
}
},
"profileType": "radius"
},
"createdTimestamp": 1601961451668,
"lastModifiedTimestamp": 1601961451668,
"childProfileIds": []
}
]

View File

@@ -1,6 +1,6 @@
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 4, "id": 11,
"customerId": 2, "customerId": 2,
"profileType": "rf", "profileType": "rf",
"name": "TipWlan-rf", "name": "TipWlan-rf",
@@ -198,7 +198,7 @@
}, },
"profileType": "rf" "profileType": "rf"
}, },
"createdTimestamp": 1612285248650, "createdTimestamp": 1606778369933,
"lastModifiedTimestamp": 1612285248650, "lastModifiedTimestamp": 1606778369933,
"childProfileIds": [] "childProfileIds": []
} }

View File

@@ -1,75 +1,203 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 2, "id": 5,
"customerId": 2, "customerId": 2,
"profileType": "ssid", "profileType": "ssid",
"name": "TipWlan-cloud-3-radios", "name": "TipWlan-cloud-3-radios",
"details": { "details": {
"model_type": "SsidConfiguration", "model_type": "SsidConfiguration",
"ssid": "TipWlan-cloud-3-radios", "ssid": "TipWlan-cloud-3-radios",
"appliedRadios": [ "appliedRadios": [
"is5GHzU", "is5GHzL",
"is2dot4GHz", "is2dot4GHz",
"is5GHzL" "is5GHzU"
], ],
"ssidAdminState": "enabled", "ssidAdminState": "enabled",
"secureMode": "wpa2OnlyPSK", "secureMode": "wpa2OnlyPSK",
"vlanId": 1, "vlanId": 1,
"keyStr": "openwifi", "keyStr": "openwifi",
"broadcastSsid": "enabled", "broadcastSsid": "enabled",
"keyRefresh": 0, "keyRefresh": 0,
"noLocalSubnets": false, "noLocalSubnets": false,
"radiusServiceId": 0, "radiusServiceName": null,
"radiusAcountingServiceInterval": 60, "radiusAccountingServiceName": null,
"captivePortalId": null, "radiusAcountingServiceInterval": null,
"bandwidthLimitDown": 0, "captivePortalId": null,
"bandwidthLimitUp": 0, "bandwidthLimitDown": 0,
"clientBandwidthLimitDown": 0, "bandwidthLimitUp": 0,
"clientBandwidthLimitUp": 0, "clientBandwidthLimitDown": 0,
"videoTrafficOnly": false, "clientBandwidthLimitUp": 0,
"radioBasedConfigs": { "videoTrafficOnly": false,
"is5GHzU": { "radioBasedConfigs": {
"model_type": "RadioBasedSsidConfiguration", "is5GHzL": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is2dot4GHz": { },
"model_type": "RadioBasedSsidConfiguration", "is2dot4GHz": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is5GHz": { },
"model_type": "RadioBasedSsidConfiguration", "is5GHz": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
}, "enable80211v": null
"is5GHzL": { },
"model_type": "RadioBasedSsidConfiguration", "is5GHzU": {
"enable80211r": null, "model_type": "RadioBasedSsidConfiguration",
"enable80211k": null, "enable80211r": null,
"enable80211v": null "enable80211k": null,
} "enable80211v": null
}, }
"bonjourGatewayProfileId": null, },
"enable80211w": null, "bonjourGatewayProfileId": null,
"wepConfig": null, "enable80211w": null,
"forwardMode": "BRIDGE", "wepConfig": null,
"profileType": "ssid", "forwardMode": "BRIDGE",
"radiusClientConfiguration": { "profileType": "ssid"
"model_type": "RadiusNasConfiguration", },
"nasClientId": "DEFAULT", "createdTimestamp": 1606778369598,
"nasClientIp": "WAN_IP", "lastModifiedTimestamp": 1606778369598,
"userDefinedNasId": null, "childProfileIds": [
"userDefinedNasIp": null, ]
"operatorId": null },
} {
}, "model_type": "Profile",
"createdTimestamp": 1612285248638, "id": 15,
"lastModifiedTimestamp": 1612285248638, "customerId": 2,
"childProfileIds": [] "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,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1606778369943,
"lastModifiedTimestamp": 1606778370811,
"childProfileIds": [
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
]
}
] ]

View File

@@ -1,42 +1,43 @@
[ [
{ {
"model_type": "Profile", "model_type": "Profile",
"id": 33, "id": 18,
"customerId": 2, "customerId": 2,
"profileType": "passpoint_venue", "profileType": "passpoint_venue",
"name": "venue-profile-2021-01-21T21:28:58.934Z", "name": "TipWlan-Passpoint-Venue",
"details": { "details": {
"model_type": "PasspointVenueProfile", "model_type": "PasspointVenueProfile",
"venueNameSet": [ "venueNameSet": [
{ {
"model_type": "PasspointVenueName", "model_type": "PasspointVenueName",
"locale": "fra", "locale": "fr_CA",
"dupleIso3Language": "fra", "dupleIso3Language": "fra",
"dupleName": "Exemple de lieu", "dupleName": "Exemple de lieu",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"venueUrl": "http://www.example.com/info-fra", "venueUrl": "http://www.example.com/info-fra",
"asDuple": "fra:Exemple de lieu" "asDuple": "fra:Exemple de lieu"
}, },
{ {
"model_type": "PasspointVenueName", "model_type": "PasspointVenueName",
"locale": "eng", "locale": "en_CA",
"dupleIso3Language": "eng", "dupleIso3Language": "eng",
"dupleName": "Example passpoint_venue", "dupleName": "Example passpoint_venue",
"defaultDupleSeparator": ":", "defaultDupleSeparator": ":",
"venueUrl": "http://www.example.com/info-eng", "venueUrl": "http://www.example.com/info-eng",
"asDuple": "eng:Example passpoint_venue" "asDuple": "eng:Example passpoint_venue"
} }
], ],
"venueTypeAssignment": { "venueTypeAssignment": {
"model_type": "PasspointVenueTypeAssignment", "model_type": "PasspointVenueTypeAssignment",
"venueDescription": "Research and Development Facility", "venueDescription": "Research and Development Facility",
"venueGroupId": 2, "venueGroupId": 2,
"venueTypeId": 8 "venueTypeId": 8
}, },
"profileType": "passpoint_venue" "profileType": "passpoint_venue"
}, },
"createdTimestamp": 1611264538947, "createdTimestamp": 1606778369950,
"lastModifiedTimestamp": 1611264538947, "lastModifiedTimestamp": 1606778369950,
"childProfileIds": [] "childProfileIds": [
} ]
] }
]

View File

@@ -1,9 +1,11 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId> <artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath> <relativePath>../../wlan-cloud-root</relativePath>
</parent> </parent>
<artifactId>opensync-gateway</artifactId> <artifactId>opensync-gateway</artifactId>
@@ -14,22 +16,22 @@
<dependency> <dependency>
<artifactId>base-container</artifactId> <artifactId>base-container</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-ext-interface</artifactId> <artifactId>opensync-ext-interface</artifactId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>client-models</artifactId> <artifactId>client-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>customer-models</artifactId> <artifactId>customer-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.vmware.ovsdb</groupId> <groupId>com.vmware.ovsdb</groupId>
@@ -47,13 +49,13 @@
<dependency> <dependency>
<artifactId>service-metric-service-interface</artifactId> <artifactId>service-metric-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>status-service-interface</artifactId> <artifactId>status-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId> <groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version> <version>${tip-wlan-cloud.release.version}</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util --> <!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util -->

View File

@@ -1,4 +1,3 @@
package com.telecominfraproject.wlan.opensync.mqtt; package com.telecominfraproject.wlan.opensync.mqtt;
import java.nio.charset.Charset; import java.nio.charset.Charset;
@@ -6,15 +5,11 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import org.fusesource.mqtt.client.BlockingConnection; import org.fusesource.mqtt.client.FutureConnection;
import org.fusesource.mqtt.client.MQTT; import org.fusesource.mqtt.client.MQTT;
import org.fusesource.mqtt.client.Message; import org.fusesource.mqtt.client.Message;
import org.fusesource.mqtt.client.QoS; import org.fusesource.mqtt.client.QoS;
import org.fusesource.mqtt.client.Topic; import org.fusesource.mqtt.client.Topic;
import org.fusesource.mqtt.client.Tracer;
import org.fusesource.mqtt.codec.MQTTFrame;
import org.fusesource.mqtt.codec.PINGREQ;
import org.fusesource.mqtt.codec.PINGRESP;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -25,24 +20,18 @@ import org.springframework.context.event.ContextClosedEvent;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.google.protobuf.Descriptors; import com.google.protobuf.Descriptors;
import com.google.protobuf.TypeRegistry; import com.google.protobuf.MessageOrBuilder;
import com.google.protobuf.util.JsonFormat; import com.google.protobuf.util.JsonFormat;
import com.netflix.servo.DefaultMonitorRegistry; import com.google.protobuf.util.JsonFormat.TypeRegistry;
import com.netflix.servo.monitor.BasicCounter; import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface;
import com.netflix.servo.monitor.BasicTimer;
import com.netflix.servo.monitor.Counter;
import com.netflix.servo.monitor.MonitorConfig;
import com.netflix.servo.monitor.Stopwatch;
import com.netflix.servo.monitor.Timer;
import com.netflix.servo.tag.TagList;
import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
import com.telecominfraproject.wlan.opensync.external.integration.utils.StatsPublisherInterface;
import com.telecominfraproject.wlan.opensync.util.ZlibUtil; import com.telecominfraproject.wlan.opensync.util.ZlibUtil;
import sts.OpensyncStats; import sts.OpensyncStats;
import sts.OpensyncStats.Report; import sts.OpensyncStats.Report;
import traffic.NetworkMetadata;
import traffic.NetworkMetadata.FlowReport;
import wc.stats.IpDnsTelemetry;
import wc.stats.IpDnsTelemetry.WCStatsReport;
@Profile("mqtt_receiver") @Profile("mqtt_receiver")
@Component @Component
@@ -54,28 +43,8 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
public static Charset utf8 = Charset.forName("UTF-8"); public static Charset utf8 = Charset.forName("UTF-8");
private final TagList tags = CloudMetricsTags.commonTags;
private final Counter messagesReceived = new BasicCounter(MonitorConfig.builder("osgw-mqtt-messagesReceived").withTags(tags).build());
private final Counter messageBytesReceived = new BasicCounter(MonitorConfig.builder("osgw-mqtt-messageBytesReceived").withTags(tags).build());
private final Timer timerMessageProcess = new BasicTimer(MonitorConfig.builder("osgw-mqtt-messageProcessTimer").withTags(tags).build());
@Autowired @Autowired
private StatsPublisherInterface statsPublisher; private OpensyncExternalIntegrationInterface extIntegrationInterface;
@Autowired
private OvsdbSessionMapInterface ovsdbSessionMapInterface;
// dtop: use anonymous constructor to ensure that the following code always
// get executed,
// even when somebody adds another constructor in here
{
DefaultMonitorRegistry.getInstance().register(messagesReceived);
DefaultMonitorRegistry.getInstance().register(messageBytesReceived);
DefaultMonitorRegistry.getInstance().register(timerMessageProcess);
}
// //
// See https://github.com/fusesource/mqtt-client for the docs // See https://github.com/fusesource/mqtt-client for the docs
@@ -86,7 +55,8 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
public OpensyncMqttClient(@Autowired io.netty.handler.ssl.SslContext sslContext, public OpensyncMqttClient(@Autowired io.netty.handler.ssl.SslContext sslContext,
@Value("${tip.wlan.mqttBroker.address.internal:testportal.123wlan.com}") String mqttBrokerAddress, @Value("${tip.wlan.mqttBroker.address.internal:testportal.123wlan.com}") String mqttBrokerAddress,
@Value("${tip.wlan.mqttBroker.listenPort:1883}") int mqttBrokerListenPort, @Value("${tip.wlan.mqttBroker.user:admin}") String username, @Value("${tip.wlan.mqttBroker.listenPort:1883}") int mqttBrokerListenPort,
@Value("${tip.wlan.mqttBroker.user:admin}") String username,
@Value("${tip.wlan.mqttBroker.password:admin}") String password, @Value("${tip.wlan.mqttBroker.password:admin}") String password,
@Value("${mqtt.javax.net.ssl.keyStore:/opt/tip-wlan/certs/client_keystore.jks}") String jdkKeyStoreLocation, @Value("${mqtt.javax.net.ssl.keyStore:/opt/tip-wlan/certs/client_keystore.jks}") String jdkKeyStoreLocation,
@Value("${mqtt.javax.net.ssl.keyStorePassword:mypassword}") String jdkKeyStorePassword, @Value("${mqtt.javax.net.ssl.keyStorePassword:mypassword}") String jdkKeyStorePassword,
@@ -114,9 +84,9 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
@Override @Override
public void run() { public void run() {
while (keepReconnecting) { while (keepReconnecting) {
BlockingConnection blockingConnection = null; FutureConnection futureConnection = null;
try { try {
// Thread.sleep(5000); Thread.sleep(5000);
// Create a new MQTT connection to the broker. // Create a new MQTT connection to the broker.
/* /*
@@ -144,81 +114,133 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
*/ */
MQTT mqtt = new MQTT(); MQTT mqtt = new MQTT();
// mqtt.setHost("tcp://192.168.0.137:61616");
mqtt.setHost("tls://" + mqttBrokerAddress + ":" + mqttBrokerListenPort); mqtt.setHost("tls://" + mqttBrokerAddress + ":" + mqttBrokerListenPort);
LOG.info("Connecting to MQTT broker at {}", mqtt.getHost()); LOG.info("Connecting to MQTT broker at {}", mqtt.getHost());
mqtt.setClientId("opensync_mqtt"); mqtt.setClientId("opensync_mqtt");
mqtt.setUserName(username); mqtt.setUserName(username);
mqtt.setPassword(password); mqtt.setPassword(password);
blockingConnection = mqtt.blockingConnection(); // Note: the following does not work with the
blockingConnection.connect(); // serverContext,
// it has to be the
// clientContext
// mqtt.setSslContext(((JdkSslContext)
// sslContext).context());
// For now we'll rely on regular SSLContext from the JDK
LOG.debug("Connected to MQTT broker at {}", mqtt.getHost()); // TODO: revisit this blocking connection, change it to
// futureConnection
futureConnection = mqtt.futureConnection();
futureConnection.connect();
// NB. setting to AT_MOST_ONCE to match the APs message level LOG.info("Connected to MQTT broker at {}", mqtt.getHost());
Topic[] topics = {new Topic("/ap/#", QoS.AT_MOST_ONCE),};
blockingConnection.subscribe(topics); // Subscribe to topics:
//
// new Topic("mqtt/example/publish", QoS.AT_LEAST_ONCE),
// new Topic("#", QoS.AT_LEAST_ONCE),
// new Topic("test/#", QoS.EXACTLY_ONCE),
// new Topic("foo/+/bar", QoS.AT_LEAST_ONCE)
Topic[] topics = { new Topic("/ap/+/opensync", QoS.AT_LEAST_ONCE), };
futureConnection.subscribe(topics);
LOG.info("Subscribed to mqtt topics {}", Arrays.asList(topics)); LOG.info("Subscribed to mqtt topics {}", Arrays.asList(topics));
// prepare a JSONPrinter to format protobuf messages as // prepare a JSONPrinter to format protobuf messages as
// json // json
List<Descriptors.Descriptor> protobufDescriptors = new ArrayList<>(); List<Descriptors.Descriptor> protobufDescriptors = new ArrayList<>();
protobufDescriptors.addAll(OpensyncStats.getDescriptor().getMessageTypes()); protobufDescriptors.addAll(OpensyncStats.getDescriptor().getMessageTypes());
protobufDescriptors.addAll(IpDnsTelemetry.getDescriptor().getMessageTypes());
protobufDescriptors.addAll(NetworkMetadata.getDescriptor().getMessageTypes());
TypeRegistry oldRegistry = TypeRegistry.newBuilder().add(protobufDescriptors).build(); TypeRegistry oldRegistry = TypeRegistry.newBuilder().add(protobufDescriptors).build();
JsonFormat.Printer jsonPrinter = JsonFormat.Printer jsonPrinter = JsonFormat.printer().includingDefaultValueFields()
JsonFormat.printer().includingDefaultValueFields().omittingInsignificantWhitespace().usingTypeRegistry(oldRegistry); .omittingInsignificantWhitespace().usingTypeRegistry(oldRegistry);
// main loop - receive messages // main loop - receive messages
while (true) { while (true) {
LOG.debug("{} awaiting mqtt message from broker",mqttClientThread.getName()); Message mqttMsg = futureConnection.receive().await();
Message mqttMsg = blockingConnection.receive();
if (mqttMsg == null) { if (mqttMsg == null) {
if (LOG.isTraceEnabled())
LOG.trace("NULL message received for blocking connection");
continue; continue;
} }
Stopwatch stopwatchTimerMessageProcess = timerMessageProcess.start();
try {
byte payload[] = mqttMsg.getPayload();
messagesReceived.increment();
messageBytesReceived.increment(payload.length);
if (payload[0] == 0x78) { LOG.debug("MQTT Topic {}", mqttMsg.getTopic());
// looks like zlib-compressed data, let's
// decompress byte payload[] = mqttMsg.getPayload();
// it before deserializing // we acknowledge right after receive because:
payload = ZlibUtil.decompress(payload); // a. none of the stats messages are so important
} // that
// Only supported protobuf on the TIP opensync APs is Report // we cannot skip one
Report statsReport = Report.parseFrom(payload); // b. if there's some kind of problem with the
mqttMsg.ack(); // message
String apId = extractApIdFromTopic(mqttMsg.getTopic()); // (decoding or processing)
if (apId != null) { // - we want to move on as quickly as possible and
OvsdbSession ovsdbSession = ovsdbSessionMapInterface.getSession(extractApIdFromTopic(mqttMsg.getTopic())); // not
if (ovsdbSession != null) { // let it get stuck in the
ovsdbSession.setMostRecentStatsTimestamp(System.currentTimeMillis()); // queue
LOG.debug("Last metrics received from AP updated to {}",ovsdbSession.toString()); mqttMsg.ack();
} else {
LOG.debug("No ovsdb session exists for this AP {}",apId); LOG.trace("received message on topic {} size {}", mqttMsg.getTopic(), payload.length);
}
} if (payload[0] == 0x78) {
MQTT_LOG.info("Topic {}\n{}", mqttMsg.getTopic(), jsonPrinter.print(statsReport)); // looks like zlib-compressed data, let's
statsPublisher.processMqttMessage(mqttMsg.getTopic(), statsReport); // decompress
LOG.debug("Dispatched report for topic {} to backend for processing", mqttMsg.getTopic()); // it before deserializing
payload = ZlibUtil.decompress(payload);
}
// attempt to parse the message as protobuf
MessageOrBuilder encodedMsg = null;
try {
encodedMsg = Report.parseFrom(payload);
MQTT_LOG.info("topic = {} Report = {}", mqttMsg.getTopic(),
jsonPrinter.print(encodedMsg));
extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(), (Report) encodedMsg);
} catch (Exception e) { } catch (Exception e) {
LOG.error("Exception processing topic for message {}",mqttMsg, e); try {
} finally { // not a opensync_stats report, attempt to
stopwatchTimerMessageProcess.stop(); // deserialize as network_metadata
encodedMsg = FlowReport.parseFrom(payload);
MQTT_LOG.info("topic = {} FlowReport = {}", mqttMsg.getTopic(),
jsonPrinter.print(encodedMsg));
extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(),
(FlowReport) encodedMsg);
} catch (Exception e1) {
try {
// not a opensync_stats report and not
// network_metadata report, attempt to
// deserialize as WCStatsReport
encodedMsg = WCStatsReport.parseFrom(payload);
MQTT_LOG.info("topic = {} IpDnsTelemetry = {}", mqttMsg.getTopic(),
jsonPrinter.print(encodedMsg));
extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(),
(WCStatsReport) encodedMsg);
} catch (Exception e2) {
String msgStr = new String(mqttMsg.getPayload(), utf8);
MQTT_LOG.info("topic = {} message = {}", mqttMsg.getTopic(), msgStr);
}
}
} }
} }
} catch (Exception e) { } catch (Exception e) {
LOG.error("Exception in MQTT receiver", e); LOG.error("Exception in MQTT receiver", e);
} finally { } finally {
try { try {
if (blockingConnection != null) { if (futureConnection != null) {
blockingConnection.disconnect(); futureConnection.disconnect();
} }
} catch (Exception e1) { } catch (Exception e1) {
// do nothing // do nothing
@@ -244,26 +266,4 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
mqttClientThread.interrupt(); mqttClientThread.interrupt();
} }
} }
/**
* @param topic
* @return apId extracted from the topic name, or null if it cannot be
* extracted
*/
static String extractApIdFromTopic(String topic) {
// Topic is formatted as
// "/ap/"+clientCn+"_"+ret.serialNumber+"/opensync"
if (topic == null) {
return null;
}
String[] parts = topic.split("/");
if (parts.length < 3) {
return null;
}
// apId is the third element in the topic
return parts[2];
}
} }

View File

@@ -1,24 +1,13 @@
package com.telecominfraproject.wlan.opensync.ovsdb; package com.telecominfraproject.wlan.opensync.ovsdb;
import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.atomic.AtomicInteger;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import com.netflix.servo.DefaultMonitorRegistry;
import com.netflix.servo.monitor.BasicCounter;
import com.netflix.servo.monitor.Counter;
import com.netflix.servo.monitor.MonitorConfig;
import com.netflix.servo.monitor.NumberGauge;
import com.netflix.servo.tag.TagList;
import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener; import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener;
import com.vmware.ovsdb.service.impl.OvsdbPassiveConnectionListenerImpl; import com.vmware.ovsdb.service.impl.OvsdbPassiveConnectionListenerImpl;
@@ -27,68 +16,12 @@ public class OvsdbListenerConfig {
private static final Logger LOG = LoggerFactory.getLogger(OvsdbListenerConfig.class); private static final Logger LOG = LoggerFactory.getLogger(OvsdbListenerConfig.class);
private final TagList tags = CloudMetricsTags.commonTags;
final Counter rejectedTasks = new BasicCounter(MonitorConfig.builder("osgw-ovsdb-rejectedTasks").withTags(tags).build());
final Counter submittedTasks = new BasicCounter(MonitorConfig.builder("osgw-ovsdb-submittedTasks").withTags(tags).build());
final Counter completedTasks = new BasicCounter(MonitorConfig.builder("osgw-ovsdb-completedTasks").withTags(tags).build());
private AtomicInteger tasksInFlight = new AtomicInteger(0);
private final NumberGauge tasksInFlightGauge = new NumberGauge(
MonitorConfig.builder("osgw-ovsdb-tasksInFlight").withTags(tags).build(), tasksInFlight);
// dtop: use anonymous constructor to ensure that the following code always
// get executed,
// even when somebody adds another constructor in here
{
DefaultMonitorRegistry.getInstance().register(rejectedTasks);
DefaultMonitorRegistry.getInstance().register(submittedTasks);
DefaultMonitorRegistry.getInstance().register(completedTasks);
DefaultMonitorRegistry.getInstance().register(tasksInFlightGauge);
}
@Bean @Bean
public OvsdbPassiveConnectionListener ovsdbPassiveConnectionListener( public OvsdbPassiveConnectionListener ovsdbPassiveConnectionListener(
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listener.threadPoolSize:10}") @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listener.threadPoolSize:10}")
int threadPoolSize) { int threadPoolSize) {
LOG.debug("Configuring OvsdbPassiveConnectionListener with thread pool size {}", threadPoolSize); LOG.debug("Configuring OvsdbPassiveConnectionListener with thread pool size {}", threadPoolSize);
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(threadPoolSize);
ThreadFactory threadFactory = new ThreadFactory() {
private AtomicInteger thrNum = new AtomicInteger();
@Override
public Thread newThread(Runnable r) {
Thread thr = new Thread(r, "ovsdb-exec-pool-" + thrNum.incrementAndGet());
thr.setDaemon(true);
return thr;
}
};
RejectedExecutionHandler rejectedExecHandler = new ThreadPoolExecutor.AbortPolicy() {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
rejectedTasks.increment();
super.rejectedExecution(r, executor);
}
};
ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(threadPoolSize, threadFactory, rejectedExecHandler) {
@Override
protected void beforeExecute(Thread t, Runnable r) {
submittedTasks.increment();
tasksInFlight.incrementAndGet();
super.beforeExecute(t, r);
}
@Override
protected void afterExecute(Runnable r, Throwable t) {
completedTasks.increment();
tasksInFlight.decrementAndGet();
super.afterExecute(r, t);
}
};
OvsdbPassiveConnectionListener listener = new OvsdbPassiveConnectionListenerImpl(executorService); OvsdbPassiveConnectionListener listener = new OvsdbPassiveConnectionListenerImpl(executorService);
return listener; return listener;
} }

View File

@@ -1,21 +1,14 @@
package com.telecominfraproject.wlan.opensync.ovsdb; package com.telecominfraproject.wlan.opensync.ovsdb;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.netflix.servo.DefaultMonitorRegistry;
import com.netflix.servo.monitor.MonitorConfig;
import com.netflix.servo.monitor.Monitors;
import com.netflix.servo.monitor.NumberGauge;
import com.netflix.servo.tag.TagList;
import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession; import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface; import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
import com.vmware.ovsdb.service.OvsdbClient; import com.vmware.ovsdb.service.OvsdbClient;
@@ -24,23 +17,9 @@ import com.vmware.ovsdb.service.OvsdbClient;
public class OvsdbSessionMap implements OvsdbSessionMapInterface { public class OvsdbSessionMap implements OvsdbSessionMapInterface {
private static final Logger LOG = LoggerFactory.getLogger(OvsdbSessionMap.class); private static final Logger LOG = LoggerFactory.getLogger(OvsdbSessionMap.class);
private final TagList tags = CloudMetricsTags.commonTags;
private AtomicInteger totalEquipmentConnections = new AtomicInteger(0);
private final NumberGauge totalEquipmentConnectionsGauge = new NumberGauge(
MonitorConfig.builder("osgw-totalEquipmentConnections").withTags(tags).build(), totalEquipmentConnections);
private final ConcurrentHashMap<String, OvsdbSession> connectedClients = new ConcurrentHashMap<>(); private final ConcurrentHashMap<String, OvsdbSession> connectedClients = new ConcurrentHashMap<>();
// dtop: use anonymous constructor to ensure that the following code always
// get executed,
// even when somebody adds another constructor in here
{
DefaultMonitorRegistry.getInstance().register(totalEquipmentConnectionsGauge);
}
@Override @Override
public OvsdbSession getSession(String apId) { public OvsdbSession getSession(String apId) {
LOG.info("Get session for AP {}", apId); LOG.info("Get session for AP {}", apId);
@@ -50,11 +29,7 @@ public class OvsdbSessionMap implements OvsdbSessionMapInterface {
@Override @Override
public OvsdbSession removeSession(String apId) { public OvsdbSession removeSession(String apId) {
LOG.info("Removing session for AP {}", apId); LOG.info("Removing session for AP {}", apId);
OvsdbSession ret = connectedClients.remove(apId); return connectedClients.remove(apId);
if(ret!=null) {
totalEquipmentConnections.decrementAndGet();
}
return ret;
} }
@Override @Override
@@ -62,7 +37,7 @@ public class OvsdbSessionMap implements OvsdbSessionMapInterface {
try { try {
LOG.info("Close session for AP {}", apId); LOG.info("Close session for AP {}", apId);
connectedClients.get(apId).getOvsdbClient().shutdown(); connectedClients.get(apId).getOvsdbClient().shutdown();
removeSession(apId); connectedClients.remove(apId);
LOG.info("Closed ovsdb session for {}", apId); LOG.info("Closed ovsdb session for {}", apId);
}catch (Exception e) { }catch (Exception e) {
// do nothing // do nothing
@@ -83,8 +58,6 @@ public class OvsdbSessionMap implements OvsdbSessionMapInterface {
}catch (Exception e) { }catch (Exception e) {
// do nothing // do nothing
} }
} else {
totalEquipmentConnections.incrementAndGet();
} }
LOG.info("Created new ovsdb session for {}", apId); LOG.info("Created new ovsdb session for {}", apId);

View File

@@ -10,13 +10,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Profile; import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.netflix.servo.DefaultMonitorRegistry;
import com.netflix.servo.monitor.BasicCounter;
import com.netflix.servo.monitor.Counter;
import com.netflix.servo.monitor.MonitorConfig;
import com.netflix.servo.monitor.Monitors;
import com.netflix.servo.tag.TagList;
import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbDao; import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbDao;
import com.telecominfraproject.wlan.opensync.util.SslUtil; import com.telecominfraproject.wlan.opensync.util.SslUtil;
import com.vmware.ovsdb.callback.ConnectionCallback; import com.vmware.ovsdb.callback.ConnectionCallback;
@@ -31,20 +24,6 @@ public class TipWlanOvsdbRedirector {
private static final Logger LOG = LoggerFactory.getLogger(TipWlanOvsdbRedirector.class); private static final Logger LOG = LoggerFactory.getLogger(TipWlanOvsdbRedirector.class);
private final TagList tags = CloudMetricsTags.commonTags;
private final Counter connectionsAttempted = new BasicCounter(
MonitorConfig.builder("osgw-redirector-connectionsAttempted").withTags(tags).build());
private final Counter connectionsFailed = new BasicCounter(
MonitorConfig.builder("osgw-redirector-connectionsFailed").withTags(tags).build());
private final Counter connectionsCreated = new BasicCounter(
MonitorConfig.builder("osgw-redirector-connectionsCreated").withTags(tags).build());
private final Counter connectionsDropped = new BasicCounter(
MonitorConfig.builder("osgw-redirector-connectionsDropped").withTags(tags).build());
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.redirector.listenPort:6643}") @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.redirector.listenPort:6643}")
private int ovsdbRedirectorListenPort; private int ovsdbRedirectorListenPort;
@@ -62,21 +41,10 @@ public class TipWlanOvsdbRedirector {
listenForConnections(); listenForConnections();
} }
// dtop: use anonymous constructor to ensure that the following code always
// get executed,
// even when somebody adds another constructor in here
{
DefaultMonitorRegistry.getInstance().register(connectionsAttempted);
DefaultMonitorRegistry.getInstance().register(connectionsCreated);
DefaultMonitorRegistry.getInstance().register(connectionsDropped);
DefaultMonitorRegistry.getInstance().register(connectionsFailed);
}
public void listenForConnections() { public void listenForConnections() {
ConnectionCallback connectionCallback = new ConnectionCallback() { ConnectionCallback connectionCallback = new ConnectionCallback() {
public void connected(OvsdbClient ovsdbClient) { public void connected(OvsdbClient ovsdbClient) {
connectionsAttempted.increment();
String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress(); String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
int localPort = ovsdbClient.getConnectionInfo().getLocalPort(); int localPort = ovsdbClient.getConnectionInfo().getLocalPort();
String subjectDn = null; String subjectDn = null;
@@ -86,9 +54,8 @@ public class TipWlanOvsdbRedirector {
String clientCn = SslUtil.extractCN(subjectDn); String clientCn = SslUtil.extractCN(subjectDn);
LOG.info("ovsdbClient redirector connected from {} on port {} clientCn {}", remoteHost, localPort, clientCn); LOG.info("ovsdbClient redirector connected from {} on port {} clientCn {}", remoteHost, localPort, clientCn);
ovsdbDao.performRedirect(ovsdbClient, clientCn); ovsdbDao.performRedirect(ovsdbClient, clientCn);
connectionsCreated.increment();
} catch (Exception e) { } catch (Exception e) {
connectionsFailed.increment();
//something is wrong with the SSL or with the redirect //something is wrong with the SSL or with the redirect
ovsdbClient.shutdown(); ovsdbClient.shutdown();
return; return;
@@ -96,7 +63,6 @@ public class TipWlanOvsdbRedirector {
} }
public void disconnected(OvsdbClient ovsdbClient) { public void disconnected(OvsdbClient ovsdbClient) {
connectionsDropped.increment();
String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress(); String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
int localPort = ovsdbClient.getConnectionInfo().getLocalPort(); int localPort = ovsdbClient.getConnectionInfo().getLocalPort();
String subjectDn = null; String subjectDn = null;

View File

@@ -1,81 +0,0 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.vmware.ovsdb.exception.OvsdbClientException;
import com.vmware.ovsdb.protocol.operation.Insert;
import com.vmware.ovsdb.protocol.operation.Operation;
import com.vmware.ovsdb.protocol.operation.Update;
import com.vmware.ovsdb.protocol.operation.notation.Atom;
import com.vmware.ovsdb.protocol.operation.notation.Condition;
import com.vmware.ovsdb.protocol.operation.notation.Function;
import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.protocol.operation.notation.Value;
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.service.OvsdbClient;
@Component
public class OvsdbCommandConfig extends OvsdbDaoBase {
@Autowired
OvsdbGet ovsdbGet;
void configureCommands(OvsdbClient ovsdbClient, String command, Map<String, String> payload, Long delay,
Long duration) {
LOG.debug("OvsdbCommandConfig::configureCommands command {}, payload {}, delay {} duration {}", command,
payload, delay, duration);
List<Operation> operations = new ArrayList<>();
List<Condition> conditions = new ArrayList<>();
Map<String, Value> commandConfigColumns = new HashMap<>();
conditions.add(new Condition("command", Function.EQUALS, new Atom<>(command)));
commandConfigColumns.put("command", new Atom<>(command));
commandConfigColumns.put("payload", com.vmware.ovsdb.protocol.operation.notation.Map.of(payload));
commandConfigColumns.put("delay", new Atom<>(delay));
commandConfigColumns.put("duration", new Atom<>(duration));
commandConfigColumns.put("timestamp", new Atom<>(System.currentTimeMillis()));
Row row = new Row(commandConfigColumns);
insertOrUpdate(ovsdbClient, command, operations, conditions, row, commandConfigDbTable);
try {
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
LOG.debug(
"OvsdbCommandConfig::configureCommands successfully configured command {} for duration {} payload {}",
command, duration, payload);
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
LOG.error("OvsdbCommandConfig::configureCommands failed.", e);
throw new RuntimeException(e);
}
}
/**
* Update an existing entry, or insert a new one if entry not found
* satisfying conditions
*
* @param ovsdbClient
* @param command
* @param operations
* @param conditions
* @param row
* @param ovsdbTableName TODO
*/
void insertOrUpdate(OvsdbClient ovsdbClient, String command, List<Operation> operations, List<Condition> conditions,
Row row, String ovsdbTableName) {
if (ovsdbGet.getOvsdbTableRowsForCondition(ovsdbClient,commandConfigDbTable,conditions).isEmpty()) {
operations.add(new Insert(ovsdbTableName, row));
} else {
operations.add(new Update(ovsdbTableName, conditions, row));
}
}
}

View File

@@ -1,308 +0,0 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.enumerations.DhcpFpDbStatus;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.enumerations.DhcpFpDeviceType;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.enumerations.DhcpFpManufId;
import com.vmware.ovsdb.exception.OvsdbClientException;
import com.vmware.ovsdb.protocol.operation.Insert;
import com.vmware.ovsdb.protocol.operation.Operation;
import com.vmware.ovsdb.protocol.operation.Select;
import com.vmware.ovsdb.protocol.operation.Update;
import com.vmware.ovsdb.protocol.operation.notation.Atom;
import com.vmware.ovsdb.protocol.operation.notation.Condition;
import com.vmware.ovsdb.protocol.operation.notation.Function;
import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
import com.vmware.ovsdb.protocol.operation.notation.Value;
import com.vmware.ovsdb.protocol.operation.result.ErrorResult;
import com.vmware.ovsdb.protocol.operation.result.InsertResult;
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.protocol.operation.result.SelectResult;
import com.vmware.ovsdb.protocol.operation.result.UpdateResult;
import com.vmware.ovsdb.service.OvsdbClient;
public class OvsdbDaoBase {
static final int MAX_VIF_PER_FREQ = 8;
static final Logger LOG = LoggerFactory.getLogger(OvsdbDaoBase.class);
public static final String wifiRouteStateDbTable = "Wifi_Route_State";
public static final String wifiMasterStateDbTable = "Wifi_Master_State";
public static final String HTTP = "http";
public static final String ovsdbName = "Open_vSwitch";
public static final String awlanNodeDbTable = "AWLAN_Node";
public static final String wifiStatsConfigDbTable = "Wifi_Stats_Config";
public static final String interfaceDbTable = "Interface";
public static final String portDbTable = "Port";
public static final String bridgeDbTable = "Bridge";
public static final String wifiRadioConfigDbTable = "Wifi_Radio_Config";
public static final String wifiRadioStateDbTable = "Wifi_Radio_State";
public static final String wifiVifConfigDbTable = "Wifi_VIF_Config";
public static final String wifiVifStateDbTable = "Wifi_VIF_State";
public static final String wifiInetConfigDbTable = "Wifi_Inet_Config";
public static final String wifiInetStateDbTable = "Wifi_Inet_State";
public static final String wifiAssociatedClientsDbTable = "Wifi_Associated_Clients";
public static final String wifiRrmConfigDbTable = "Wifi_RRM_Config";
public static final String nodeConfigTable = "Node_Config";
public static final String nodeStateTable = "Node_State";
public static final String dhcpLeasedIpDbTable = "DHCP_leased_IP";
public static final String commandConfigDbTable = "Command_Config";
public static final String commandStateDbTable = "Command_State";
public static final String hotspot20IconConfigDbTable = "Hotspot20_Icon_Config";
public static final String hotspot20OsuProvidersDbTable = "Hotspot20_OSU_Providers";
public static final String hotspot20ConfigDbTable = "Hotspot20_Config";
public static final String radiusConfigDbTable = "Radius_Proxy_Config";
public static final String apcConfigDbTable = "APC_Config";
public static final String apcStateDbTable = "APC_State";
public static final String StartDebugEngineApCommand = "startPortForwardingSession";
public static final String StopDebugEngineApCommand = "stopSession";
public static <T> T getSingleValueFromSet(Row row, String columnName) {
Set<T> set = row != null ? row.getSetColumn(columnName) : null;
T ret = (set != null) && !set.isEmpty() ? set.iterator().next() : null;
return ret;
}
public static void translateDhcpFpValueToString(Entry<String, Value> c, Map<String, String> rowMap) {
if (c.getKey().equals("manuf_id")) {
rowMap.put(c.getKey(), DhcpFpManufId.getById(Integer.valueOf(c.getValue().toString())).getName());
} else if (c.getKey().equals("device_type")) {
rowMap.put(c.getKey(), DhcpFpDeviceType.getById(Integer.valueOf(c.getValue().toString())).getName());
} else if (c.getKey().equals("db_status")) {
rowMap.put(c.getKey(), DhcpFpDbStatus.getById(Integer.valueOf(c.getValue().toString())).getName());
} else {
rowMap.put(c.getKey(), c.getValue().toString());
}
}
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.managerAddr:3.88.149.10}")
String managerIpAddr;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.region:Ottawa}")
public String region;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listenPort:6640}")
int ovsdbListenPort;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.externalPort:6640}")
int ovsdbExternalPort;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.mqttBroker.address.external:testportal.123wlan.com}")
String mqttBrokerAddress;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.mqttBroker.listenPort:1883}")
int mqttBrokerListenPort;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.mqttBroker.externalPort:1883}")
int mqttBrokerExternalPort;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.timeoutSec:30}")
int ovsdbTimeoutSec;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_bridge:lan}")
public String bridgeNameVifInterfaces;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_lan_type:bridge}")
public String defaultLanInterfaceType;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_lan_name:lan}")
public String defaultLanInterfaceName;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_wan_type:bridge}")
public String defaultWanInterfaceType;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_wan_name:wan}")
public String defaultWanInterfaceName;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio0:wlan0}")
public String defaultRadio0;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio1:wlan1}")
public String defaultRadio1;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.default_radio2:wlan2}")
public String defaultRadio2;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-device.radio0:radio0}")
public String radio0;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-device.radio1:radio1}")
public String radio1;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-device.radio2:radio2}")
public String radio2;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.wifi-iface.max:8}")
public int maxInterfacesPerRadio;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.awlan-node.upgrade_dl_timer:60}")
public long upgradeDlTimerSeconds;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.awlan-node.upgrade_timer:90}")
public long upgradeTimerSeconds;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.awlan-node.reboot_or_reset_timer:10}")
public long rebootOrResetTimerSeconds;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.externalFileStoreURL:https://localhost:9096}")
String externalFileStoreURL;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.fileStoreDirectory:/tmp/tip-wlan-filestore}")
String fileStoreDirectoryName;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.defaultReportingIntervalSeconds:60}")
public int defaultReportingIntervalSeconds;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.defaultOffChannelReportingIntervalSeconds:120}")
public int defaultOffChannelReportingIntervalSeconds;
public OvsdbDaoBase() {
}
public <T> Set<T> getSet(Row row, String columnName) {
Set<T> set = row != null ? row.getSetColumn(columnName) : null;
return set;
}
public void updateEventReportingInterval(OvsdbClient ovsdbClient, long eventReportingIntervalSeconds) {
try {
List<Operation> operations = new ArrayList<>();
Map<String, Value> updateColumns = new HashMap<>();
// turn on stats collection over MQTT: (reporting_interval is in
// seconds)
// $ ovsh i Wifi_Stats_Config reporting_interval:=10
// radio_type:="2.4G" stats_type:="device"
updateColumns.put("reporting_interval", new Atom<>(eventReportingIntervalSeconds));
updateColumns.put("radio_type", new Atom<>("2.4G"));
updateColumns.put("stats_type", new Atom<>("event"));
Row row = new Row(updateColumns);
operations.add(new Insert(wifiStatsConfigDbTable, row));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
LOG.debug("Updated {}:", wifiStatsConfigDbTable);
for (OperationResult res : result) {
LOG.debug("updateEventReportingInterval Result {}", res);
if (res instanceof InsertResult) {
LOG.info("updateEventReportingInterval insert new row result {}", (res));
// for insert, make sure it is actually in the table
confirmRowExistsInTable(ovsdbClient, ((InsertResult) res).getUuid(), wifiStatsConfigDbTable);
}
}
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
throw new RuntimeException(e);
}
}
void configureWanInterfacesForDhcpSniffing(OvsdbClient ovsdbClient) {
List<Operation> operations = new ArrayList<>();
Map<String, Value> updateColumns = new HashMap<>();
List<Condition> conditions = new ArrayList<>();
// Going forward this will be only for WAN, and children will inherit
// conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(defaultWanInterfaceName)));
updateColumns.put("dhcp_sniff", new Atom<>(true));
Row row = new Row(updateColumns);
operations.add(new Update(wifiInetConfigDbTable, conditions, row));
try {
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
if (res instanceof UpdateResult) {
LOG.info("configureWanInterfacesForDhcpSniffing {}", ((UpdateResult) res).toString());
} else if (res instanceof ErrorResult) {
LOG.error("configureWanInterfacesForDhcpSniffing error {}", (res));
throw new RuntimeException("configureWanInterfacesForDhcpSniffing " + ((ErrorResult) res).getError()
+ " " + ((ErrorResult) res).getDetails());
}
}
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
LOG.error("OvsdbDao::configureWanInterfaces failed.", e);
throw new RuntimeException(e);
}
}
/**
* Check existence of row with a given Uuid in the specified ovsdb table
* Used primarily for operation validation.
*
* @param ovsdbClient
* @param rowUuid
* @param table
*/
void confirmRowExistsInTable(OvsdbClient ovsdbClient, Uuid rowUuid, String table) {
try {
List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("_uuid", Function.EQUALS, new Atom<>(rowUuid)));
List<Operation> operations = new ArrayList<>();
operations.add(new Select(table, conditions));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
if (res instanceof SelectResult) {
LOG.info("Select Result for confirmRowExistsInTable {} with Uuid {} {}", table, rowUuid,
((SelectResult) res).getRows());
} else if (res instanceof ErrorResult) {
LOG.error("confirmRowExistsInTable error {}", (res));
throw new RuntimeException("confirmRowExistsInTable " + ((ErrorResult) res).getError() + " "
+ ((ErrorResult) res).getDetails());
}
}
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
LOG.error("Unable to confirm existence of row in table {} for Uuid {}", table, rowUuid, e);
throw new RuntimeException(e);
}
}
void fillInRadioInterfaceNamesAndCountry(OvsdbClient ovsdbClient, ConnectNodeInfo ret) {
try {
List<Operation> operations = new ArrayList<>();
List<Condition> conditions = new ArrayList<>();
List<String> columns = new ArrayList<>();
columns.add("freq_band");
columns.add("if_name");
columns.add("country");
operations.add(new Select(wifiRadioStateDbTable, conditions, columns));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (LOG.isDebugEnabled()) {
LOG.debug("Select from {}:", wifiRadioStateDbTable);
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
}
if ((result != null) && (result.length > 0) && (result[0] instanceof SelectResult)
&& !((SelectResult) result[0]).getRows().isEmpty()) {
for (Row row : ((SelectResult) result[0]).getRows()) {
ret.wifiRadioStates.put(getSingleValueFromSet(row, "freq_band"),
getSingleValueFromSet(row, "if_name"));
ret.country = getSingleValueFromSet(row, "country");
}
}
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -1,66 +0,0 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import org.springframework.stereotype.Component;
import com.vmware.ovsdb.protocol.operation.Operation;
import com.vmware.ovsdb.protocol.operation.Update;
import com.vmware.ovsdb.protocol.operation.notation.Atom;
import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.protocol.operation.notation.Value;
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.service.OvsdbClient;
@Component
public class OvsdbFirmwareConfig extends OvsdbDaoBase {
void configureFirmwareDownload(OvsdbClient ovsdbClient, String apId, String firmwareUrl, String firmwareVersion,
String username) throws Exception {
try {
LOG.debug("configureFirmwareDownload for {} to version {} url {} username {}", apId,
firmwareVersion, firmwareUrl, username);
List<Operation> operations = new ArrayList<>();
Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("upgrade_dl_timer", new Atom<>(upgradeDlTimerSeconds));
updateColumns.put("firmware_url", new Atom<>(firmwareUrl));
updateColumns.put("upgrade_timer", new Atom<>(upgradeTimerSeconds));
Row row = new Row(updateColumns);
operations.add(new Update(awlanNodeDbTable, row));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult r : result) {
LOG.debug("Op Result {}", r);
}
} catch (Exception e) {
LOG.error("Could not download firmware {} to AP {}", firmwareVersion, apId, e);
throw new RuntimeException(e);
}
}
void configureFirmwareFlash(OvsdbClient ovsdbClient, String apId, String firmwareVersion, String username) {
try {
LOG.debug("configureFirmwareFlash on AP {} to load {} setting timer for {} seconds.", apId, firmwareVersion,
upgradeTimerSeconds);
List<Operation> operations = new ArrayList<>();
Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("upgrade_timer", new Atom<>(upgradeTimerSeconds));
Row row = new Row(updateColumns);
operations.add(new Update(awlanNodeDbTable, row));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.join();
for (OperationResult r : result) {
LOG.debug("Op Result {}", r);
}
} catch (Exception e) {
LOG.error("Could not configure timer for flashing firmware {} on AP {}", firmwareVersion, apId, e);
throw new RuntimeException(e);
}
}
}

View File

@@ -1,182 +0,0 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.springframework.stereotype.Component;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.CommandConfigInfo;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.Hotspot20Config;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.Hotspot20IconConfig;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.Hotspot20OsuProviders;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.NodeConfigInfo;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.RadiusProxyConfigInfo;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiInetConfigInfo;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiRadioConfigInfo;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiStatsConfigInfo;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiVifConfigInfo;
import com.vmware.ovsdb.exception.OvsdbClientException;
import com.vmware.ovsdb.protocol.operation.Operation;
import com.vmware.ovsdb.protocol.operation.Select;
import com.vmware.ovsdb.protocol.operation.notation.Atom;
import com.vmware.ovsdb.protocol.operation.notation.Condition;
import com.vmware.ovsdb.protocol.operation.notation.Function;
import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.protocol.operation.result.SelectResult;
import com.vmware.ovsdb.service.OvsdbClient;
@Component
public class OvsdbGet extends OvsdbDaoBase {
Map<String, Set<Integer>> getAllowedChannels(OvsdbClient ovsdbClient) {
Map<String, Set<Integer>> allowedChannels = new HashMap<>();
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, wifiRadioStateDbTable, null)) {
allowedChannels.put(getSingleValueFromSet(row, "freq_band"), row.getSetColumn("allowed_channels"));
}
return allowedChannels;
}
/**
* Get all Rows from given table that satisfy the conditions.
*
* @param ovsdbClient
* @param ovsdbTableName
* @param conditions
* @return Set of Rows in the table that satisfy the conditions, or all rows
* in table if conditions is null or empty.
*/
Set<Row> getOvsdbTableRowsForCondition(OvsdbClient ovsdbClient, String ovsdbTableName, List<Condition> conditions) {
Set<Row> ret = new HashSet<>();
List<Operation> operations = new ArrayList<>();
if (conditions == null || conditions.isEmpty()) {
operations.add(new Select(ovsdbTableName));
} else {
operations.add(new Select(ovsdbTableName, conditions));
}
try {
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (Row row : ((SelectResult) result[0]).getRows()) {
ret.add(row);
}
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
LOG.error("Transaction exception getting rows from {}.", ovsdbTableName, e);
throw new RuntimeException(e);
}
return ret;
}
NodeConfigInfo getNodeConfigInfo(OvsdbClient ovsdbClient) {
return new NodeConfigInfo(getOvsdbTableRowsForCondition(ovsdbClient, nodeConfigTable,
List.of(new Condition("module", Function.EQUALS, new Atom<>("ntp")))).iterator().next());
}
Map<String, CommandConfigInfo> getProvisionedCommandConfigs(OvsdbClient ovsdbClient) {
Map<String, CommandConfigInfo> ret = new HashMap<>();
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, commandConfigDbTable, null)) {
CommandConfigInfo commandConfigInfo = new CommandConfigInfo(row);
ret.put(commandConfigInfo.command, commandConfigInfo);
}
return ret;
}
Map<String, Hotspot20Config> getProvisionedHotspot20Configs(OvsdbClient ovsdbClient) {
Map<String, Hotspot20Config> ret = new HashMap<>();
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, hotspot20ConfigDbTable, null)) {
Hotspot20Config hotspot20Config = new Hotspot20Config(row);
ret.put(hotspot20Config.osuSsid, hotspot20Config);
}
return ret;
}
Map<String, Hotspot20IconConfig> getProvisionedHotspot20IconConfig(OvsdbClient ovsdbClient) {
Map<String, Hotspot20IconConfig> ret = new HashMap<>();
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, hotspot20IconConfigDbTable, null)) {
Hotspot20IconConfig hotspot20IconConfig = new Hotspot20IconConfig(row);
ret.put(hotspot20IconConfig.url, hotspot20IconConfig);
}
return ret;
}
Map<String, Hotspot20OsuProviders> getProvisionedHotspot20OsuProviders(OvsdbClient ovsdbClient) {
Map<String, Hotspot20OsuProviders> ret = new HashMap<>();
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, hotspot20OsuProvidersDbTable, null)) {
Hotspot20OsuProviders hotspot20OsuProviders = new Hotspot20OsuProviders(row);
ret.put(hotspot20OsuProviders.osuProviderName, hotspot20OsuProviders);
}
return ret;
}
Map<String, WifiInetConfigInfo> getProvisionedWifiInetConfigs(OvsdbClient ovsdbClient) {
Map<String, WifiInetConfigInfo> ret = new HashMap<>();
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, wifiInetConfigDbTable, null)) {
WifiInetConfigInfo wifiInetConfigInfo = new WifiInetConfigInfo(row);
ret.put(wifiInetConfigInfo.ifName, wifiInetConfigInfo);
}
return ret;
}
Map<String, WifiRadioConfigInfo> getProvisionedWifiRadioConfigs(OvsdbClient ovsdbClient) {
Map<String, WifiRadioConfigInfo> ret = new HashMap<>();
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, wifiRadioConfigDbTable, null)) {
WifiRadioConfigInfo wifiRadioConfigInfo = new WifiRadioConfigInfo(row);
ret.put(wifiRadioConfigInfo.ifName, wifiRadioConfigInfo);
}
return ret;
}
Map<String, WifiStatsConfigInfo> getProvisionedWifiStatsConfigs(OvsdbClient ovsdbClient) {
Map<String, WifiStatsConfigInfo> ret = new HashMap<>();
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, wifiStatsConfigDbTable, null)) {
WifiStatsConfigInfo wifiStatsConfigInfo = new WifiStatsConfigInfo(row);
if (wifiStatsConfigInfo.surveyType == null) {
ret.put(wifiStatsConfigInfo.radioType + "_" + wifiStatsConfigInfo.statsType, wifiStatsConfigInfo);
} else {
ret.put(wifiStatsConfigInfo.radioType + "_" + wifiStatsConfigInfo.statsType + "_"
+ wifiStatsConfigInfo.surveyType, wifiStatsConfigInfo);
}
}
return ret;
}
Map<String, WifiVifConfigInfo> getProvisionedWifiVifConfigs(OvsdbClient ovsdbClient) {
Map<String, WifiVifConfigInfo> ret = new HashMap<>();
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, wifiVifConfigDbTable, null)) {
WifiVifConfigInfo wifiVifConfigInfo = new WifiVifConfigInfo(row);
ret.put(wifiVifConfigInfo.ifName + '_' + wifiVifConfigInfo.ssid, wifiVifConfigInfo);
}
return ret;
}
List<String> getWifiVifStates(OvsdbClient ovsdbClient, String ssidName) {
List<String> ret = new ArrayList<>();
List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("ssid", Function.EQUALS, new Atom<>(ssidName)));
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, wifiVifStateDbTable, null)) {
String mac = getSingleValueFromSet(row, "mac");
if (mac != null) {
ret.add(mac);
}
}
return ret;
}
Map<String, RadiusProxyConfigInfo> getProvisionedRadiusConfigs(OvsdbClient ovsdbClient) {
Map<String, RadiusProxyConfigInfo> ret = new HashMap<>();
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, radiusConfigDbTable, null)) {
RadiusProxyConfigInfo radiusProxyConfigInfo = new RadiusProxyConfigInfo(row);
ret.put(radiusProxyConfigInfo.radiusConfigName, radiusProxyConfigInfo);
}
return ret;
}
}

View File

@@ -1,872 +0,0 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPHotspot20Config;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.Hotspot20Config;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.Hotspot20IconConfig;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.Hotspot20OsuProviders;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiVifConfigInfo;
import com.telecominfraproject.wlan.opensync.util.OvsdbToWlanCloudTypeMappingUtility;
import com.telecominfraproject.wlan.profile.models.Profile;
import com.telecominfraproject.wlan.profile.passpoint.models.PasspointDuple;
import com.telecominfraproject.wlan.profile.passpoint.models.PasspointIPv4AddressType;
import com.telecominfraproject.wlan.profile.passpoint.models.PasspointIPv6AddressType;
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.PasspointEapMethods;
import com.telecominfraproject.wlan.profile.passpoint.models.provider.PasspointNaiRealmEapAuthInnerNonEap;
import com.telecominfraproject.wlan.profile.passpoint.models.provider.PasspointNaiRealmEapAuthParam;
import com.telecominfraproject.wlan.profile.passpoint.models.provider.PasspointNaiRealmEapCredType;
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.PasspointVenueName;
import com.telecominfraproject.wlan.profile.passpoint.models.venue.PasspointVenueProfile;
import com.telecominfraproject.wlan.profile.passpoint.models.venue.PasspointVenueTypeAssignment;
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
import com.vmware.ovsdb.exception.OvsdbClientException;
import com.vmware.ovsdb.protocol.operation.Delete;
import com.vmware.ovsdb.protocol.operation.Insert;
import com.vmware.ovsdb.protocol.operation.Operation;
import com.vmware.ovsdb.protocol.operation.Update;
import com.vmware.ovsdb.protocol.operation.notation.Atom;
import com.vmware.ovsdb.protocol.operation.notation.Condition;
import com.vmware.ovsdb.protocol.operation.notation.Function;
import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
import com.vmware.ovsdb.protocol.operation.notation.Value;
import com.vmware.ovsdb.protocol.operation.result.InsertResult;
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.protocol.operation.result.UpdateResult;
import com.vmware.ovsdb.protocol.schema.DatabaseSchema;
import com.vmware.ovsdb.service.OvsdbClient;
@Component
public class OvsdbHotspotConfig extends OvsdbDaoBase {
@Autowired
OvsdbGet ovsdbGet;
protected void getNaiRealms(PasspointOsuProviderProfile providerProfile, Set<Atom<String>> naiRealms) {
providerProfile.getNaiRealmList().stream().forEach(c -> {
StringBuffer naiBuffer = new StringBuffer();
naiBuffer.append(Integer.toString(c.getEncoding()));
naiBuffer.append(",");
Iterator<String> realmsIterator = c.getNaiRealms().iterator();
if (realmsIterator != null) {
while (realmsIterator.hasNext()) {
String realm = realmsIterator.next();
naiBuffer.append(realm);
if (realmsIterator.hasNext()) {
naiBuffer.append(";");
}
}
}
if (c.getEapMap() == null || c.getEapMap().isEmpty()) {
naiRealms.add(new Atom<String>(naiBuffer.toString()));
} else {
naiBuffer.append(",");
Map<String, Set<String>> eapMap = c.getEapMap();
eapMap.entrySet().stream().forEach(e -> {
String eapMethodName = e.getKey();
String eapMethodId = String.valueOf(PasspointEapMethods.getByName(eapMethodName).getId());
naiBuffer.append(eapMethodId);
for (String credential : e.getValue()) {
String[] keyValue = credential.split(":");
String keyId = String.valueOf(PasspointNaiRealmEapAuthParam.getByName(keyValue[0]).getId());
if (keyValue[0].equals(
PasspointNaiRealmEapAuthParam.NAI_REALM_EAP_AUTH_NON_EAP_INNER_AUTH.getName())) {
String valueId = String
.valueOf(PasspointNaiRealmEapAuthInnerNonEap.getByName(keyValue[1]).getId());
naiBuffer.append("[");
naiBuffer.append(keyId);
naiBuffer.append(":");
naiBuffer.append(valueId);
naiBuffer.append("]");
} else if (keyValue[0]
.equals(PasspointNaiRealmEapAuthParam.NAI_REALM_EAP_AUTH_CRED_TYPE.getName())
|| keyValue[0]
.equals(PasspointNaiRealmEapAuthParam.NAI_REALM_EAP_AUTH_TUNNELED_CRED_TYPE
.getName())) {
String valueId = String
.valueOf(PasspointNaiRealmEapCredType.getByName(keyValue[1]).getId());
naiBuffer.append("[");
naiBuffer.append(keyId);
naiBuffer.append(":");
naiBuffer.append(valueId);
naiBuffer.append("]");
}
}
naiBuffer.append(",");
});
String naiRealm = naiBuffer.toString();
if (naiRealm.endsWith(",")) {
naiRealm = naiRealm.substring(0, naiRealm.lastIndexOf(","));
}
naiRealms.add(new Atom<String>(naiRealm));
}
});
}
protected void getOsuIconUuidsForOsuProvider(OvsdbClient ovsdbClient, PasspointOsuProviderProfile providerProfile,
Map<String, Value> rowColumns) {
Map<String, Hotspot20IconConfig> osuIconsMap = ovsdbGet.getProvisionedHotspot20IconConfig(ovsdbClient);
Set<Uuid> iconsSet = new HashSet<>();
if (osuIconsMap.size() > 0) {
for (PasspointOsuIcon icon : providerProfile.getOsuIconList()) {
if (osuIconsMap.containsKey(icon.getImageUrl())) {
iconsSet.add(osuIconsMap.get(icon.getImageUrl()).uuid);
}
}
}
if (iconsSet.size() > 0) {
com.vmware.ovsdb.protocol.operation.notation.Set iconUuidSet = com.vmware.ovsdb.protocol.operation.notation.Set
.of(iconsSet);
rowColumns.put("osu_icons", iconUuidSet);
}
}
protected void getOsuProviderFriendlyNames(PasspointOsuProviderProfile providerProfile,
Map<String, Value> rowColumns) {
Set<Atom<String>> providerFriendlyNames = new HashSet<>();
for (PasspointDuple friendlyName : providerProfile.getOsuFriendlyName()) {
providerFriendlyNames.add(new Atom<String>(friendlyName.getAsDuple()));
}
if (providerFriendlyNames.size() > 0) {
com.vmware.ovsdb.protocol.operation.notation.Set providerFriendlyNamesSet = com.vmware.ovsdb.protocol.operation.notation.Set
.of(providerFriendlyNames);
rowColumns.put("osu_friendly_name", providerFriendlyNamesSet);
}
}
protected void getOsuProviderMethodList(PasspointOsuProviderProfile providerProfile,
Map<String, Value> rowColumns) {
Set<Atom<Integer>> methods = new HashSet<>();
for (Integer method : providerProfile.getOsuMethodList()) {
methods.add(new Atom<Integer>(method));
}
if (methods.size() > 0) {
com.vmware.ovsdb.protocol.operation.notation.Set methodsSet = com.vmware.ovsdb.protocol.operation.notation.Set
.of(methods);
rowColumns.put("method_list", methodsSet);
}
}
protected void getOsuProviderServiceDescriptions(PasspointOsuProviderProfile providerProfile,
Map<String, Value> rowColumns) {
Set<Atom<String>> serviceDescriptions = new HashSet<>();
for (PasspointDuple serviceDescription : providerProfile.getOsuServiceDescription()) {
serviceDescriptions.add(new Atom<String>(serviceDescription.getAsDuple()));
}
if (serviceDescriptions.size() > 0) {
com.vmware.ovsdb.protocol.operation.notation.Set serviceDescriptionSet = com.vmware.ovsdb.protocol.operation.notation.Set
.of(serviceDescriptions);
rowColumns.put("service_description", serviceDescriptionSet);
}
}
void configureHotspots(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
provisionHotspot2IconConfig(ovsdbClient, opensyncApConfig);
provisionHotspot20OsuProviders(ovsdbClient, opensyncApConfig);
provisionHotspot20Config(ovsdbClient, opensyncApConfig);
}
/**
* Add the operator specific information, taken from the operator profile
* for the given hotspotProfile being configured.
*
* @param hs20cfg
* @param rowColumns
* @param hs2Profile
*/
void getOperatorInformationForPasspointConfiguration(OpensyncAPHotspot20Config hs20cfg,
Map<String, Value> rowColumns, PasspointProfile hs2Profile) {
PasspointOperatorProfile passpointOperatorProfile = getOperatorProfileForPasspoint(hs20cfg, hs2Profile);
Set<Atom<String>> domainNames = new HashSet<>();
for (String domainName : passpointOperatorProfile.getDomainNameList()) {
domainNames.add(new Atom<>(domainName));
}
if (domainNames.size() > 0) {
com.vmware.ovsdb.protocol.operation.notation.Set domainNameSet = com.vmware.ovsdb.protocol.operation.notation.Set
.of(domainNames);
rowColumns.put("domain_name", domainNameSet);
}
rowColumns.put("osen", new Atom<>(passpointOperatorProfile.isServerOnlyAuthenticatedL2EncryptionNetwork()));
Set<Atom<String>> operatorFriendlyName = new HashSet<>();
passpointOperatorProfile.getOperatorFriendlyName().stream()
.forEach(c -> operatorFriendlyName.add(new Atom<>(c.getAsDuple())));
com.vmware.ovsdb.protocol.operation.notation.Set operatorFriendlyNameSet = com.vmware.ovsdb.protocol.operation.notation.Set
.of(operatorFriendlyName);
rowColumns.put("operator_friendly_name", operatorFriendlyNameSet);
}
PasspointOperatorProfile getOperatorProfileForPasspoint(OpensyncAPHotspot20Config hs20cfg,
PasspointProfile hs2Profile) {
Profile operator = hs20cfg.getHotspot20OperatorSet().stream().filter(new Predicate<Profile>() {
@Override
public boolean test(Profile t) {
return t.getId() == hs2Profile.getPasspointOperatorProfileId();
}
}).findFirst().get();
PasspointOperatorProfile passpointOperatorProfile = (PasspointOperatorProfile) operator.getDetails();
return passpointOperatorProfile;
}
/**
* Adds map entries the UUIDs for the OSU Providers and Icons based on the
* entries in the for providers that are associated with this
* hotspotProfile.
*
* @param ovsdbClient
* @param hs20cfg
* @param hotspotProfile
* @param rowColumns
*/
void getOsuIconUuidsForPasspointConfiguration(OvsdbClient ovsdbClient, OpensyncAPHotspot20Config hs20cfg,
Profile hotspotProfile, Map<String, Value> rowColumns) {
Set<Uuid> osuIconUuids = getOsuProvidersInfoForPasspointConfiguration(ovsdbClient, hs20cfg, hotspotProfile,
rowColumns);
if (osuIconUuids.size() > 0) {
com.vmware.ovsdb.protocol.operation.notation.Set iconUuids = com.vmware.ovsdb.protocol.operation.notation.Set
.of(osuIconUuids);
rowColumns.put("operator_icons", iconUuids);
}
}
/**
* Get providers profiles. Helper method.
*
* @param hs20cfg
* @param hotspotProfile
* @return
*/
List<Profile> getOsuProvidersForPasspoint(OpensyncAPHotspot20Config hs20cfg, Profile hotspotProfile) {
List<Profile> providerList = new ArrayList<>();
if (hs20cfg.getHotspot20ProviderSet() != null) {
providerList = hs20cfg.getHotspot20ProviderSet().stream().filter(new Predicate<Profile>() {
@Override
public boolean test(Profile t) {
return hotspotProfile.getChildProfileIds().contains(t.getId());
}
}).collect(Collectors.toList());
}
return providerList;
}
/**
* Get's the OSU Provider related information for a given hotspot, the osu
* providers being configured on the ovsdb in Hotspot20_OSU_Providers and
* defined as children of the hotspot profile
*
* @param ovsdbClient
* @param hs20cfg
* @param hotspotProfile
* @param rowColumns
* @return
*/
Set<Uuid> getOsuProvidersInfoForPasspointConfiguration(OvsdbClient ovsdbClient, OpensyncAPHotspot20Config hs20cfg,
Profile hotspotProfile, Map<String, Value> rowColumns) {
Map<String, Hotspot20OsuProviders> osuProviders = ovsdbGet.getProvisionedHotspot20OsuProviders(ovsdbClient);
List<Profile> providerList = getOsuProvidersForPasspoint(hs20cfg, hotspotProfile);
Set<Uuid> osuProvidersUuids = new HashSet<>();
Set<Uuid> osuIconUuids = new HashSet<>();
StringBuffer mccMncBuffer = new StringBuffer();
Set<Atom<String>> naiRealms = new HashSet<>();
Set<Atom<String>> roamingOis = new HashSet<>();
for (Profile provider : providerList) {
PasspointOsuProviderProfile providerProfile = (PasspointOsuProviderProfile) provider.getDetails();
osuProviders.keySet().stream().filter(new Predicate<String>() {
@Override
public boolean test(String providerNameOnAp) {
return providerNameOnAp.startsWith(OvsdbToWlanCloudTypeMappingUtility
.getApOsuProviderStringFromOsuProviderName(provider.getName()));
}
}).forEach(p -> {
providerProfile.getRoamingOi().stream().forEach(o -> {
roamingOis.add(new Atom<>(o));
});
osuProvidersUuids.add(osuProviders.get(p).uuid);
osuIconUuids.addAll(osuProviders.get(p).osuIcons);
getNaiRealms(providerProfile, naiRealms);
for (PasspointMccMnc passpointMccMnc : providerProfile.getMccMncList()) {
mccMncBuffer.append(passpointMccMnc.getMccMncPairing());
mccMncBuffer.append(";");
}
});
}
String mccMncString = mccMncBuffer.toString();
if (mccMncString.endsWith(";")) {
mccMncString = mccMncString.substring(0, mccMncString.lastIndexOf(";"));
}
rowColumns.put("mcc_mnc", new Atom<>(mccMncString));
com.vmware.ovsdb.protocol.operation.notation.Set roamingOiSet = com.vmware.ovsdb.protocol.operation.notation.Set
.of(roamingOis);
rowColumns.put("roaming_oi", roamingOiSet);
com.vmware.ovsdb.protocol.operation.notation.Set naiRealmsSet = com.vmware.ovsdb.protocol.operation.notation.Set
.of(naiRealms);
rowColumns.put("nai_realm", naiRealmsSet);
if (osuProvidersUuids.size() > 0) {
com.vmware.ovsdb.protocol.operation.notation.Set providerUuids = com.vmware.ovsdb.protocol.operation.notation.Set
.of(osuProvidersUuids);
rowColumns.put("osu_providers", providerUuids);
}
return osuIconUuids;
}
/**
* Passpoint configuration requires profile information from children, as
* well as information from parent VIF Configurations These values are
* placed in the rowColumns map to be passed into the transaction creating
* the Hotspot20_Config in ovsdb.
*
* @param ovsdbClient
* @param opensyncApConfig
* @param hs20cfg
* @param hotspotProfile
* @param rowColumns
* @param hs2Profile
*/
void getPasspointConfigurationInformationFromDependencies(OvsdbClient ovsdbClient,
OpensyncAPConfig opensyncApConfig, OpensyncAPHotspot20Config hs20cfg, Profile hotspotProfile,
Map<String, Value> rowColumns, PasspointProfile hs2Profile) {
getOperatorInformationForPasspointConfiguration(hs20cfg, rowColumns, hs2Profile);
getVenueInformationForPasspointConfiguration(hs20cfg, rowColumns, hs2Profile);
getOsuIconUuidsForPasspointConfiguration(ovsdbClient, hs20cfg, hotspotProfile, rowColumns);
getVifInformationForPasspointConfiguration(ovsdbClient, opensyncApConfig, rowColumns, hs2Profile);
}
/**
* Add the venue specific information, taken from the venue profile for the
* given hotspotProfile being configured.
*
* @param hs20cfg
* @param rowColumns
* @param hs2Profile
*/
void getVenueInformationForPasspointConfiguration(OpensyncAPHotspot20Config hs20cfg, Map<String, Value> rowColumns,
PasspointProfile hs2Profile) {
PasspointVenueProfile passpointVenueProfile = getVenueProfileForPasspoint(hs20cfg, hs2Profile);
Set<Atom<String>> venueNames = new HashSet<>();
Set<Atom<String>> venueUrls = new HashSet<>();
int index = 1;
for (PasspointVenueName passpointVenueName : passpointVenueProfile.getVenueNameSet()) {
venueNames.add(new Atom<String>(passpointVenueName.getAsDuple()));
String url = String.valueOf(index) + ":" + passpointVenueName.getVenueUrl();
venueUrls.add(new Atom<String>(url));
index++;
}
com.vmware.ovsdb.protocol.operation.notation.Set venueNameSet = com.vmware.ovsdb.protocol.operation.notation.Set
.of(venueNames);
com.vmware.ovsdb.protocol.operation.notation.Set venueUrlSet = com.vmware.ovsdb.protocol.operation.notation.Set
.of(venueUrls);
rowColumns.put("venue_name", venueNameSet);
rowColumns.put("venue_url", venueUrlSet);
PasspointVenueTypeAssignment passpointVenueTypeAssignment = passpointVenueProfile.getVenueTypeAssignment();
String groupType = String.valueOf(passpointVenueTypeAssignment.getVenueGroupId()) + ":"
+ passpointVenueTypeAssignment.getVenueTypeId();
rowColumns.put("venue_group_type", new Atom<>(groupType));
}
/**
* Get's the Venue Profile for the hotspot, helper method
*
* @param hs20cfg
* @param hs2Profile
* @return
*/
PasspointVenueProfile getVenueProfileForPasspoint(OpensyncAPHotspot20Config hs20cfg, PasspointProfile hs2Profile) {
Profile venue = hs20cfg.getHotspot20VenueSet().stream().filter(new Predicate<Profile>() {
@Override
public boolean test(Profile t) {
return t.getId() == hs2Profile.getPasspointVenueProfileId();
}
}).findFirst().get();
PasspointVenueProfile passpointVenueProfile = (PasspointVenueProfile) venue.getDetails();
return passpointVenueProfile;
}
/**
* Get the UUIDs for the associated access Wifi_VIF_Config parents, as well
* as the osu_ssid for the "OPEN" Wifi_VIF_Config used to connect to the
* passpoint
*
* @param ovsdbClient
* @param opensyncApConfig
* @param rowColumns
* @param hs2Profile
*/
void getVifInformationForPasspointConfiguration(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig,
Map<String, Value> rowColumns, PasspointProfile hs2Profile) {
Map<String, WifiVifConfigInfo> vifConfigMap = ovsdbGet.getProvisionedWifiVifConfigs(ovsdbClient);
Set<Uuid> vifConfigs = new HashSet<>();
List<Atom<String>> hessids = new ArrayList<>();
for (Profile ssidProfile : opensyncApConfig.getSsidProfile()) {
if (hs2Profile.getAssociatedAccessSsidProfileIds().contains(ssidProfile.getId())) {
String accessSsidProfileName = ((SsidConfiguration) ssidProfile.getDetails()).getSsid();
for (WifiVifConfigInfo vifConfig : vifConfigMap.values()) {
if (vifConfig.ssid.equals(accessSsidProfileName)) {
vifConfigs.add(vifConfig.uuid);
}
}
List<String> vifStates = ovsdbGet.getWifiVifStates(ovsdbClient, accessSsidProfileName);
for (String mac : vifStates) {
hessids.add(new Atom<>(mac));
}
}
}
if (vifConfigs.size() > 0) {
com.vmware.ovsdb.protocol.operation.notation.Set vifConfigUuids = com.vmware.ovsdb.protocol.operation.notation.Set
.of(vifConfigs);
rowColumns.put("vif_config", vifConfigUuids);
}
if (hessids.size() > 0) {
rowColumns.put("hessid", new Atom<>(hessids.get(0)));
}
for (Profile ssidProfile : opensyncApConfig.getSsidProfile()) {
if (hs2Profile.getOsuSsidProfileId() != null) {
if (ssidProfile.getId() == hs2Profile.getOsuSsidProfileId()) {
rowColumns.put("osu_ssid", new Atom<>(((SsidConfiguration) ssidProfile.getDetails()).getSsid()));
break;
}
}
}
}
/**
* Configure a Hotspot20 Passpoint for AP
*
* @param ovsdbClient
* @param opensyncApConfig
*/
void provisionHotspot20Config(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
try {
DatabaseSchema schema = ovsdbClient.getSchema(ovsdbName).get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (schema.getTables().containsKey(hotspot20ConfigDbTable)
&& schema.getTables().get(hotspot20ConfigDbTable) != null) {
Map<String, Hotspot20Config> hotspot20ConfigMap = ovsdbGet.getProvisionedHotspot20Configs(ovsdbClient);
OpensyncAPHotspot20Config hs20cfg = opensyncApConfig.getHotspotConfig();
if (hs20cfg.getHotspot20ProfileSet() != null) {
List<Operation> operations = new ArrayList<>();
for (Profile hotspotProfile : hs20cfg.getHotspot20ProfileSet()) {
Map<String, Value> rowColumns = new HashMap<>();
PasspointProfile hs2Profile = (PasspointProfile) hotspotProfile.getDetails();
getPasspointConfigurationInformationFromDependencies(ovsdbClient, opensyncApConfig, hs20cfg,
hotspotProfile, rowColumns, hs2Profile);
rowColumns.put("deauth_request_timeout", new Atom<>(hs2Profile.getDeauthRequestTimeout()));
if (hs2Profile.getTermsAndConditionsFile() != null) {
rowColumns.put("tos", new Atom<>(hs2Profile.getTermsAndConditionsFile().getApExportUrl()));
}
rowColumns.put("enable", new Atom<>(hs2Profile.isEnableInterworkingAndHs20()));
rowColumns.put("network_auth_type",
new Atom<>("0" + hs2Profile.getNetworkAuthenticationType().getId()));
if (hs2Profile.getGasAddr3Behaviour() != null) {
rowColumns.put("gas_addr3_behavior", new Atom<>(hs2Profile.getGasAddr3Behaviour().getId()));
}
rowColumns.put("operating_class", new Atom<>(hs2Profile.getOperatingClass()));
rowColumns.put("anqp_domain_id", new Atom<>(hs2Profile.getAnqpDomainId()));
rowColumns.put("asra", new Atom<>(hs2Profile.getAdditionalStepsRequiredForAccess() == 1 ? true:false));
rowColumns.put("disable_dgaf", new Atom<>(hs2Profile.isDisableDownstreamGroupAddressedForwarding()));
rowColumns.put("esr", new Atom<>(hs2Profile.isEmergencyServicesReachable()));
if (hs2Profile.getHessid() != null) {
rowColumns.put("hessid", new Atom<>(hs2Profile.getHessid().getAddressAsString()));
}
rowColumns.put("internet", new Atom<>(hs2Profile.isInternetConnectivity()));
if (hs2Profile.getQosMapSetConfiguration() != null) {
rowColumns.put("qos_map_set", new Atom<>(String.join(",", hs2Profile.getQosMapSetConfiguration())));
}
rowColumns.put("uesa", new Atom<>(hs2Profile.isUnauthenticatedEmergencyServiceAccessible()));
Set<Atom<String>> connectionCapabilities = new HashSet<>();
hs2Profile.getConnectionCapabilitySet().stream()
.forEach(c -> connectionCapabilities
.add(new Atom<>(c.getConnectionCapabilitiesIpProtocol().getId() + ":"
+ c.getConnectionCapabilitiesPortNumber() + ":"
+ c.getConnectionCapabilitiesStatus().getId())));
com.vmware.ovsdb.protocol.operation.notation.Set connectionCapabilitySet = com.vmware.ovsdb.protocol.operation.notation.Set
.of(connectionCapabilities);
rowColumns.put("connection_capability", connectionCapabilitySet);
// access_network_type to add when supported by AP
if (ovsdbClient.getSchema(ovsdbName).get().getTables().get(hotspot20ConfigDbTable).getColumns().containsKey("access_network_type")) {
if (hs2Profile.getAccessNetworkType() != null) {
rowColumns.put("access_network_type", new Atom<>(hs2Profile.getAccessNetworkType().getId()));
}
}
// # format: <1-octet encoded value as hex str>
// # (ipv4_type & 0x3f) << 2 | (ipv6_type & 0x3)
// 0x3f = 63 in decimal
// 0x3 = 3 in decimal
if (PasspointIPv6AddressType.getByName(
hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv6AddressType.UNSUPPORTED) {
int availability = PasspointIPv6AddressType
.getByName(hs2Profile.getIpAddressTypeAvailability()).getId();
String hexString = String.format("%02x", (availability & 0x3));
rowColumns.put("ipaddr_type_availability", new Atom<>(hexString));
}else if (PasspointIPv4AddressType.getByName(
hs2Profile.getIpAddressTypeAvailability()) != PasspointIPv4AddressType.UNSUPPORTED) {
int availability = PasspointIPv4AddressType
.getByName(hs2Profile.getIpAddressTypeAvailability()).getId();
String hexString = String.format("%02x", ((availability & 0x3f) << 2));
rowColumns.put("ipaddr_type_availability", new Atom<>(hexString));
}
Row row = new Row(rowColumns);
Insert newHs20Config = new Insert(hotspot20ConfigDbTable, row);
operations.add(newHs20Config);
}
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
LOG.debug("provisionHotspot20Config Op Result {}", res);
if (res instanceof InsertResult) {
LOG.info("provisionHotspot20Config insert new row result {}", (res));
// for insert, make sure it is actually in the table
confirmRowExistsInTable(ovsdbClient, ((InsertResult) res).getUuid(),
hotspot20ConfigDbTable);
}
}
}
LOG.info("Current Hotspot20_Config {}", hotspot20ConfigMap);
} else {
LOG.info("Table {} not present in {}. Cannot provision Hotspot20_Config", hotspot20ConfigDbTable,
ovsdbName);
}
} catch (InterruptedException | ExecutionException | TimeoutException | OvsdbClientException e) {
LOG.error("Error in provisionHotspot20Config", e);
throw new RuntimeException(e);
}
}
/**
* Provision the OSU Providers in the Hotspot20_OSU_Providers ovsdb table.
*
* @param ovsdbClient
* @param opensyncApConfig
*/
void provisionHotspot20OsuProviders(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
try {
DatabaseSchema schema = ovsdbClient.getSchema(ovsdbName).get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (schema.getTables().containsKey(hotspot20OsuProvidersDbTable)
&& schema.getTables().get(hotspot20OsuProvidersDbTable) != null) {
Map<String, Hotspot20OsuProviders> osuProviders = ovsdbGet
.getProvisionedHotspot20OsuProviders(ovsdbClient);
OpensyncAPHotspot20Config hs20cfg = opensyncApConfig.getHotspotConfig();
Set<Operation> operations = new HashSet<>();
if (hs20cfg.getHotspot20ProviderSet() != null && hs20cfg.getHotspot20ProviderSet().size() > 0) {
for (Profile provider : hs20cfg.getHotspot20ProviderSet()) {
PasspointOsuProviderProfile providerProfile = (PasspointOsuProviderProfile) provider
.getDetails();
String apOsuProviderName = OvsdbToWlanCloudTypeMappingUtility
.getApOsuProviderStringFromOsuProviderName(provider.getName());
Map<String, Value> rowColumns = new HashMap<>();
rowColumns.put("osu_nai", new Atom<>(providerProfile.getOsuNaiStandalone()));
rowColumns.put("osu_nai2", new Atom<>(providerProfile.getOsuNaiShared()));
rowColumns.put("osu_provider_name", new Atom<>(apOsuProviderName));
getOsuIconUuidsForOsuProvider(ovsdbClient, providerProfile, rowColumns);
getOsuProviderFriendlyNames(providerProfile, rowColumns);
getOsuProviderMethodList(providerProfile, rowColumns);
if (providerProfile.getOsuServerUri() != null) {
rowColumns.put("server_uri", new Atom<>(providerProfile.getOsuServerUri()));
}
getOsuProviderServiceDescriptions(providerProfile, rowColumns);
Row row = new Row(rowColumns);
if (!osuProviders.containsKey(apOsuProviderName)) {
Insert newOsuProvider = new Insert(hotspot20OsuProvidersDbTable, row);
operations.add(newOsuProvider);
} else {
List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("osu_provider_name", Function.EQUALS,
new Atom<>(apOsuProviderName)));
Update updatedOsuProvider = new Update(hotspot20OsuProvidersDbTable, conditions, row);
operations.add(updatedOsuProvider);
}
}
}
if (operations.size() > 0) {
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName,
List.copyOf(operations));
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
LOG.debug("provisionHotspot20OsuProviders Op Result {}", res);
if (res instanceof InsertResult) {
LOG.info("provisionHotspot20OsuProviders insert new row result {}", (res));
// for insert, make sure it is actually in the table
confirmRowExistsInTable(ovsdbClient, ((InsertResult) res).getUuid(),
hotspot20OsuProvidersDbTable);
} else if (res instanceof UpdateResult) {
LOG.info("provisionHotspot20OsuProviders update row result {}", (res));
}
}
}
} else {
LOG.info("Table {} not present in {}. Cannot provision Hotspot20_OSU_Providers",
hotspot20OsuProvidersDbTable, ovsdbName);
}
} catch (InterruptedException | ExecutionException | TimeoutException | OvsdbClientException e) {
LOG.error("Error in provisionHotspot20OsuProviders", e);
throw new RuntimeException(e);
}
}
void provisionHotspot2IconConfig(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
try {
DatabaseSchema schema = ovsdbClient.getSchema(ovsdbName).get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (schema.getTables().containsKey(hotspot20IconConfigDbTable)
&& schema.getTables().get(hotspot20IconConfigDbTable) != null) {
Map<String, Hotspot20IconConfig> osuIconConfigs = ovsdbGet
.getProvisionedHotspot20IconConfig(ovsdbClient);
OpensyncAPHotspot20Config hs20cfg = opensyncApConfig.getHotspotConfig();
Set<Operation> operations = new HashSet<>();
if (hs20cfg.getHotspot20ProviderSet() != null && hs20cfg.getHotspot20ProviderSet().size() > 0) {
for (Profile provider : hs20cfg.getHotspot20ProviderSet()) {
PasspointOsuProviderProfile providerProfile = (PasspointOsuProviderProfile) provider
.getDetails();
for (PasspointOsuIcon passpointOsuIcon : providerProfile.getOsuIconList()) {
Map<String, Value> rowColumns = new HashMap<>();
rowColumns.put("name", new Atom<>(passpointOsuIcon.getIconName()));
if (schema.getTables().get(hotspot20IconConfigDbTable).getColumns().containsKey("path")) {
rowColumns.put("path", new Atom<>(passpointOsuIcon.getFilePath()));
}
rowColumns.put("url", new Atom<>(passpointOsuIcon.getImageUrl()));
rowColumns.put("lang_code", new Atom<>(passpointOsuIcon.getLanguageCode()));
rowColumns.put("height", new Atom<>(passpointOsuIcon.getIconHeight()));
rowColumns.put("img_type", new Atom<>(PasspointOsuIcon.ICON_TYPE));
rowColumns.put("width", new Atom<>(passpointOsuIcon.getIconWidth()));
if (passpointOsuIcon.getImageUrl() != null) {
String md5Hex = DigestUtils.md5Hex(passpointOsuIcon.getImageUrl()).toUpperCase();
if (schema.getTables().get(hotspot20IconConfigDbTable).getColumns()
.containsKey("icon_config_name")) {
rowColumns.put("icon_config_name", new Atom<>(md5Hex));
}
}
Row row = new Row(rowColumns);
if (!osuIconConfigs.containsKey(passpointOsuIcon.getImageUrl())) {
Insert newHs20Config = new Insert(hotspot20IconConfigDbTable, row);
operations.add(newHs20Config);
} else {
List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("url", Function.EQUALS,
new Atom<>(passpointOsuIcon.getImageUrl())));
Update newHs20Config = new Update(hotspot20IconConfigDbTable, conditions, row);
operations.add(newHs20Config);
}
}
}
}
if (operations.size() > 0) {
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName,
List.copyOf(operations));
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
LOG.debug("provisionHotspot20Config Op Result {}", res);
if (res instanceof InsertResult) {
LOG.info("provisionHotspot20Config insert new row result {}", (res));
} else if (res instanceof UpdateResult) {
LOG.info("provisionHotspot20Config update row result {}", (res));
}
}
}
} else {
LOG.info("Table {} not present in {}. Cannot provision Hotspot20_Icon_Config",
hotspot20IconConfigDbTable, ovsdbName);
}
} catch (InterruptedException | ExecutionException | TimeoutException | OvsdbClientException e) {
LOG.error("Error in provisionHotspot2IconConfig", e);
throw new RuntimeException(e);
}
}
void removeAllHotspot20Config(OvsdbClient ovsdbClient) {
try {
// DatabaseSchema schema = ovsdbClient.getSchema(ovsdbName).get(ovsdbTimeoutSec, TimeUnit.SECONDS);
// if (schema.getTables().containsKey(hotspot20ConfigDbTable)
// && schema.getTables().get(hotspot20ConfigDbTable) != null) {
List<Operation> operations = new ArrayList<>();
operations.add(new Delete(hotspot20ConfigDbTable));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (LOG.isDebugEnabled()) {
LOG.debug("Removed all existing hotspot configs from {}:", hotspot20ConfigDbTable);
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
}
// }
} catch (InterruptedException | ExecutionException | TimeoutException | OvsdbClientException e) {
LOG.error("Error in removeAllHotspot20Config", e);
throw new RuntimeException(e);
}
}
void removeAllHotspot20IconConfig(OvsdbClient ovsdbClient) {
try {
DatabaseSchema schema = ovsdbClient.getSchema(ovsdbName).get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (schema.getTables().containsKey(hotspot20IconConfigDbTable)
&& schema.getTables().get(hotspot20IconConfigDbTable) != null) {
List<Operation> operations = new ArrayList<>();
operations.add(new Delete(hotspot20IconConfigDbTable));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (LOG.isDebugEnabled()) {
LOG.debug("Removed all existing hotspot icon configs from {}:", hotspot20IconConfigDbTable);
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
}
}
} catch (InterruptedException | ExecutionException | TimeoutException | OvsdbClientException e) {
LOG.error("Error in removeAllHotspot20IconConfig", e);
throw new RuntimeException(e);
}
}
void removeAllHotspot20OsuProviders(OvsdbClient ovsdbClient) {
try {
DatabaseSchema schema = ovsdbClient.getSchema(ovsdbName).get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (schema.getTables().containsKey(hotspot20OsuProvidersDbTable)
&& schema.getTables().get(hotspot20OsuProvidersDbTable) != null) {
List<Operation> operations = new ArrayList<>();
operations.add(new Delete(hotspot20OsuProvidersDbTable));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (LOG.isDebugEnabled()) {
LOG.debug("Removed all existing hotspot osu providers from {}:", hotspot20OsuProvidersDbTable);
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
}
}
} catch (InterruptedException | ExecutionException | TimeoutException | OvsdbClientException e) {
LOG.error("Error in removeAllHotspot20OsuProviders", e);
throw new RuntimeException(e);
}
}
void removeAllPasspointConfigs(OvsdbClient ovsdbClient) {
removeAllHotspot20Config(ovsdbClient);
removeAllHotspot20OsuProviders(ovsdbClient);
removeAllHotspot20IconConfig(ovsdbClient);
}
}

View File

@@ -1,188 +0,0 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.UUID;
import org.springframework.stereotype.Component;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAWLANNode;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncWifiAssociatedClients;
import com.vmware.ovsdb.protocol.methods.RowUpdate;
import com.vmware.ovsdb.protocol.methods.TableUpdate;
import com.vmware.ovsdb.protocol.methods.TableUpdates;
import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.service.OvsdbClient;
@Component
public class OvsdbMonitor extends OvsdbDaoBase {
List<OpensyncAPInetState> getInitialOpensyncApInetStateForRowUpdate(TableUpdates tableUpdates, String apId,
OvsdbClient ovsdbClient) {
LOG.debug("getInitialOpensyncApInetStateForRowUpdate:");
List<OpensyncAPInetState> ret = new ArrayList<>();
try {
LOG.debug(wifiInetStateDbTable + "_" + apId + " initial monitor table state received {}", tableUpdates);
for (TableUpdate tableUpdate : tableUpdates.getTableUpdates().values()) {
for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
if (rowUpdate.getNew() != null) {
ret.addAll(getOpensyncApInetStateForRowUpdate(rowUpdate, apId, ovsdbClient));
}
}
}
} catch (Exception e) {
throw (e);
}
return ret;
}
List<OpensyncAPVIFState> getInitialOpensyncApVifStateForTableUpdates(TableUpdates tableUpdates, String apId,
OvsdbClient ovsdbClient) {
LOG.debug("getInitialOpensyncApVifStateForTableUpdates:");
List<OpensyncAPVIFState> ret = new ArrayList<>();
try {
LOG.debug(wifiVifStateDbTable + "_" + apId + " initial monitor table state received {}", tableUpdates);
for (TableUpdate tableUpdate : tableUpdates.getTableUpdates().values()) {
for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
if (rowUpdate.getNew() != null) {
ret.add(new OpensyncAPVIFState(rowUpdate.getNew()));
}
}
}
} catch (Exception e) {
throw (e);
}
return ret;
}
List<OpensyncWifiAssociatedClients> getInitialOpensyncWifiAssociatedClients(TableUpdates tableUpdates, String apId,
OvsdbClient ovsdbClient) {
LOG.debug("getInitialOpensyncWifiAssociatedClients:");
List<OpensyncWifiAssociatedClients> ret = new ArrayList<>();
try {
LOG.debug(wifiAssociatedClientsDbTable + "_" + apId + " initial monitor table state received {}",
tableUpdates);
for (TableUpdate tableUpdate : tableUpdates.getTableUpdates().values()) {
for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
if (rowUpdate.getNew() != null) {
ret.addAll(getOpensyncWifiAssociatedClients(rowUpdate, apId, ovsdbClient));
}
}
}
} catch (Exception e) {
throw (e);
}
return ret;
}
List<OpensyncAPInetState> getOpensyncApInetStateForRowUpdate(RowUpdate rowUpdate, String apId,
OvsdbClient ovsdbClient) {
List<OpensyncAPInetState> ret = new ArrayList<>();
LOG.debug("OvsdbDao::getOpensyncApInetStateForRowUpdate {} for apId {}", rowUpdate, apId);
Row row = null;
if (rowUpdate.getNew() != null) {
if (rowUpdate.getOld() != null) {
row = rowUpdate.getOld();
row.getColumns().putAll(rowUpdate.getNew().getColumns());
}
} else {
row = rowUpdate.getOld();
}
if (row != null) {
ret.add(new OpensyncAPInetState(row));
}
return ret;
}
List<OpensyncAPRadioState> getOpensyncAPRadioState(TableUpdates tableUpdates, String apId,
OvsdbClient ovsdbClient) {
List<OpensyncAPRadioState> ret = new ArrayList<>();
try {
for (Entry<String, TableUpdate> tableUpdate : tableUpdates.getTableUpdates().entrySet()) {
for (Entry<UUID, RowUpdate> rowUpdate : tableUpdate.getValue().getRowUpdates().entrySet()) {
Row row = rowUpdate.getValue().getNew();
if (row != null) {
ret.add(new OpensyncAPRadioState(row));
}
}
}
} catch (Exception e) {
LOG.error("Could not parse update for Wifi_Radio_State", e);
throw new RuntimeException(e);
}
return ret;
}
List<OpensyncAPVIFState> getOpensyncApVifStateForRowUpdate(RowUpdate rowUpdate, String apId,
OvsdbClient ovsdbClient) {
List<OpensyncAPVIFState> ret = new ArrayList<>();
try {
Row row = rowUpdate.getNew(); // add/modify/init
if (row == null) {
row = rowUpdate.getOld(); // delete/modify
}
if (row != null) {
ret.add(new OpensyncAPVIFState(row));
}
} catch (Exception e) {
LOG.error("Could not parse update for Wifi_VIF_State", e);
throw new RuntimeException(e);
}
return ret;
}
OpensyncAWLANNode getOpensyncAWLANNode(TableUpdates tableUpdates, String apId, OvsdbClient ovsdbClient) {
OpensyncAWLANNode tableState = new OpensyncAWLANNode();
try {
for (TableUpdate tableUpdate : tableUpdates.getTableUpdates().values()) {
for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
Row row = rowUpdate.getNew();
if (row != null) {
tableState = new OpensyncAWLANNode(row);
}
}
}
} catch (Exception e) {
LOG.error("Failed to handle AWLAN_Node update", e);
throw new RuntimeException(e);
}
return tableState;
}
List<OpensyncWifiAssociatedClients> getOpensyncWifiAssociatedClients(RowUpdate rowUpdate, String apId,
OvsdbClient ovsdbClient) {
Row row = rowUpdate.getNew();
if (row == null) {
row = rowUpdate.getOld();
}
if (row != null) {
return List.of(new OpensyncWifiAssociatedClients(row));
} else {
return List.of();
}
}
Map<String, String> getAPCState(RowUpdate rowUpdate, String apId) {
Map<String, String> ret = new HashMap<>();
if (rowUpdate.getNew() != null) {
Row row = rowUpdate.getNew();
ret.put("designatedRouterIp", getSingleValueFromSet(row, "dr_addr"));
ret.put("backupDesignatedRouterIp", getSingleValueFromSet(row, "bdr_addr"));
ret.put("enabled", getSingleValueFromSet(row, "enabled").toString());
ret.put("mode", getSingleValueFromSet(row, "mode"));
}
return ret;
}
}

View File

@@ -1,356 +0,0 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.telecominfraproject.wlan.equipment.models.NetworkForwardMode;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiInetConfigInfo;
import com.telecominfraproject.wlan.profile.models.Profile;
import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
import com.telecominfraproject.wlan.profile.network.models.GreTunnelConfiguration;
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
import com.vmware.ovsdb.exception.OvsdbClientException;
import com.vmware.ovsdb.protocol.operation.Delete;
import com.vmware.ovsdb.protocol.operation.Insert;
import com.vmware.ovsdb.protocol.operation.Operation;
import com.vmware.ovsdb.protocol.operation.Update;
import com.vmware.ovsdb.protocol.operation.notation.Atom;
import com.vmware.ovsdb.protocol.operation.notation.Condition;
import com.vmware.ovsdb.protocol.operation.notation.Function;
import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.protocol.operation.notation.Value;
import com.vmware.ovsdb.protocol.operation.result.ErrorResult;
import com.vmware.ovsdb.protocol.operation.result.InsertResult;
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.protocol.operation.result.UpdateResult;
import com.vmware.ovsdb.service.OvsdbClient;
@Component
public class OvsdbNetworkConfig extends OvsdbDaoBase {
@Autowired
OvsdbGet ovsdbGet;
void configureGreTunnel(OvsdbClient ovsdbClient, Profile apNetworkConfiguration) {
try {
LOG.debug("Configure Gre Tunnel {}", apNetworkConfiguration);
List<Operation> operations = new ArrayList<>();
ApNetworkConfiguration details = (ApNetworkConfiguration) apNetworkConfiguration.getDetails();
for (GreTunnelConfiguration greTunnelConfiguration : details.getGreTunnelConfigurations()) {
if (greTunnelConfiguration.getGreRemoteInetAddr() == null) {
LOG.info("Cannot configure GRE profile without gre_remote_inet_addr");
continue;
}
if (greTunnelConfiguration.getGreTunnelName() == null) {
LOG.info("Cannot configure GRE profile without if_name");
continue;
}
Map<String, Value> tableColumns = new HashMap<>();
tableColumns.put("gre_remote_inet_addr",
new Atom<>(greTunnelConfiguration.getGreRemoteInetAddr().getHostAddress()));
tableColumns.put("if_name", new Atom<>(greTunnelConfiguration.getGreTunnelName()));
tableColumns.put("if_type", new Atom<>("gre"));
tableColumns.put("enabled", new Atom<>(true));
tableColumns.put("network", new Atom<>(true));
operations.add(new Insert(wifiInetConfigDbTable, new Row(tableColumns)));
}
if (operations.isEmpty()) {
LOG.info("No GRE tunnels to be configured.");
return;
}
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
if (res instanceof InsertResult) {
LOG.info("configureGreTunnel {}", ((InsertResult) res).toString());
} else if (res instanceof UpdateResult) {
LOG.info("configureGreTunnel {}", ((UpdateResult) res).toString());
} else if (res instanceof ErrorResult) {
LOG.error("configureGreTunnel error {}", (res));
throw new RuntimeException("configureGreTunnel " + ((ErrorResult) res).getError() + " "
+ ((ErrorResult) res).getDetails());
}
}
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
LOG.error("Couldn't configure Gre Tunnel {}", apNetworkConfiguration, e);
throw new RuntimeException(e);
}
}
void configureGreTunnels(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
LOG.info("Configure Gre tunnels {}", opensyncApConfig.getApProfile());
if (opensyncApConfig.getApProfile() != null) {
configureGreTunnel(ovsdbClient, opensyncApConfig.getApProfile());
}
}
/**
* Insert or update Wifi_Inet_Interface for Wifi_VIF_Config table entry
*
* @param ovsdbClient
* @param ifName
* @param enabled
* @param ifType
* @param isUpdate
* @param isNat
*/
void configureInetInterface(OvsdbClient ovsdbClient, String ifName, boolean enabled, String ifType,
boolean isUpdate, boolean isNat, List<Operation> operations) {
Map<String, Value> tableColumns = new HashMap<>();
tableColumns.put("if_type", new Atom<>(ifType));
tableColumns.put("enabled", new Atom<>(enabled));
tableColumns.put("network", new Atom<>(true));
tableColumns.put("if_name", new Atom<>(ifName));
tableColumns.put("NAT", new Atom<>(isNat));
Row row = new Row(tableColumns);
if (isUpdate) {
List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(ifName)));
operations.add(new Update(wifiInetConfigDbTable, conditions, row));
} else {
operations.add(new Insert(wifiInetConfigDbTable, row));
}
}
/**
* @param ovsdbClient
* @param vifInterfaceName
* @param enabled
* @param networkForwardMode
* @param operations
*/
void configureInetVifInterface(OvsdbClient ovsdbClient, String vifInterfaceName, boolean enabled,
NetworkForwardMode networkForwardMode, List<Operation> operations) {
Map<String, WifiInetConfigInfo> inetConfigs = ovsdbGet.getProvisionedWifiInetConfigs(ovsdbClient);
if (inetConfigs.containsKey(vifInterfaceName)) {
configureInetInterface(ovsdbClient, vifInterfaceName, enabled, "vif", true,
(networkForwardMode == NetworkForwardMode.NAT), operations);
} else {
configureInetInterface(ovsdbClient, vifInterfaceName, enabled, "vif", false,
(networkForwardMode == NetworkForwardMode.NAT), operations);
}
}
/*
* Use this to do any post configuration interface adjustment (i.e. turn on
* dhcp_sniff, etc.)
*/
void configureInterfaces(OvsdbClient ovsdbClient) {
configureWanInterfacesForDhcpSniffing(ovsdbClient);
}
void createVlanInterfaceInGreTunnel(OvsdbClient ovsdbClient, int vlanId, String greTunnel) {
try {
List<Operation> operations = new ArrayList<>();
Map<String, Value> tableColumns = new HashMap<>();
Map<String, WifiInetConfigInfo> inetConfigMap = ovsdbGet.getProvisionedWifiInetConfigs(ovsdbClient);
WifiInetConfigInfo parentTunnel = inetConfigMap.get(greTunnel);
if (parentTunnel == null) {
throw new RuntimeException("Cannot get tunnel interface " + parentTunnel + " for vlan " + vlanId);
}
tableColumns = new HashMap<>();
tableColumns.put("if_type", new Atom<>("bridge"));
tableColumns.put("vlan_id", new Atom<>(vlanId));
tableColumns.put("if_name", new Atom<>(parentTunnel.ifName + "_" + Integer.toString(vlanId)));
tableColumns.put("parent_ifname", new Atom<>(parentTunnel.ifName));
tableColumns.put("enabled", new Atom<>(true));
tableColumns.put("network", new Atom<>(true));
Row row = new Row(tableColumns);
operations.add(new Insert(wifiInetConfigDbTable, row));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
if (res instanceof InsertResult) {
LOG.info("createVlanNetworkInterfaces {}", ((InsertResult) res).toString());
} else if (res instanceof UpdateResult) {
LOG.info("createVlanNetworkInterfaces {}", ((UpdateResult) res).toString());
} else if (res instanceof ErrorResult) {
LOG.error("createVlanNetworkInterfaces error {}", (res));
throw new RuntimeException("createVlanNetworkInterfaces " + ((ErrorResult) res).getError() + " "
+ ((ErrorResult) res).getDetails());
}
}
inetConfigMap = ovsdbGet.getProvisionedWifiInetConfigs(ovsdbClient);
LOG.debug("Provisioned vlan on greTunnel {}",
inetConfigMap.get(parentTunnel.ifName + "_" + Integer.toString(vlanId)));
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
LOG.error("Error in provisioning Vlan", e);
throw new RuntimeException(e);
}
}
void createVlanNetworkInterfaces(OvsdbClient ovsdbClient, int vlanId) {
try {
List<Operation> operations = new ArrayList<>();
Map<String, Value> tableColumns = new HashMap<>();
Map<String, WifiInetConfigInfo> inetConfigMap = ovsdbGet.getProvisionedWifiInetConfigs(ovsdbClient);
WifiInetConfigInfo parentLanInterface = inetConfigMap.get(defaultLanInterfaceName);
if (parentLanInterface == null) {
throw new RuntimeException(
"Cannot get lan interface " + defaultLanInterfaceName + " for vlan " + vlanId);
}
tableColumns.put("if_type", new Atom<>("vlan"));
tableColumns.put("vlan_id", new Atom<>(vlanId));
tableColumns.put("if_name", new Atom<>(parentLanInterface.ifName + "_" + Integer.toString(vlanId)));
tableColumns.put("parent_ifname", new Atom<>(parentLanInterface.ifName));
tableColumns.put("enabled", new Atom<>(true));
tableColumns.put("network", new Atom<>(true));
tableColumns.put("ip_assign_scheme", new Atom<>(parentLanInterface.ipAssignScheme));
tableColumns.put("NAT", new Atom<>(parentLanInterface.nat));
tableColumns.put("mtu", new Atom<>(1500));
String[] inetAddress = parentLanInterface.inetAddr.split("\\.");
String vlanAddress = inetAddress[0] + "." + inetAddress[1] + "." + vlanId + "." + inetAddress[3];
tableColumns.put("inet_addr", new Atom<>(vlanAddress));
tableColumns.put("netmask", new Atom<>(parentLanInterface.netmask));
tableColumns.put("dhcpd", com.vmware.ovsdb.protocol.operation.notation.Map.of(parentLanInterface.dhcpd));
Row row = new Row(tableColumns);
if (inetConfigMap.containsKey(parentLanInterface.ifName + "_" + Integer.toString(vlanId))) {
List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("vlan_id", Function.EQUALS, new Atom<>(vlanId)));
conditions.add(new Condition("parent_ifname", Function.EQUALS, new Atom<>(parentLanInterface.ifName)));
operations.add(new Update(wifiInetConfigDbTable, conditions, row));
} else {
operations.add(new Insert(wifiInetConfigDbTable, row));
}
WifiInetConfigInfo parentWanInterface = inetConfigMap.get(defaultWanInterfaceName);
if (parentWanInterface == null) {
throw new RuntimeException(
"Cannot get wan interface " + defaultWanInterfaceName + " for vlan " + vlanId);
}
tableColumns = new HashMap<>();
tableColumns.put("if_type", new Atom<>("vlan"));
tableColumns.put("vlan_id", new Atom<>(vlanId));
tableColumns.put("if_name", new Atom<>(parentWanInterface.ifName + "_" + Integer.toString(vlanId)));
tableColumns.put("parent_ifname", new Atom<>(parentWanInterface.ifName));
tableColumns.put("enabled", new Atom<>(true));
tableColumns.put("network", new Atom<>(true));
tableColumns.put("ip_assign_scheme", new Atom<>(parentWanInterface.ipAssignScheme));
tableColumns.put("NAT", new Atom<>(parentWanInterface.nat));
tableColumns.put("mtu", new Atom<>(1500));
row = new Row(tableColumns);
if (inetConfigMap.containsKey(parentWanInterface.ifName + "_" + Integer.toString(vlanId))) {
List<Condition> conditions = new ArrayList<>();
conditions.add(new Condition("vlan_id", Function.EQUALS, new Atom<>(vlanId)));
conditions.add(new Condition("parent_ifname", Function.EQUALS, new Atom<>(parentWanInterface.ifName)));
} else {
operations.add(new Insert(wifiInetConfigDbTable, row));
}
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
if (res instanceof InsertResult) {
LOG.info("createVlanNetworkInterfaces {}", ((InsertResult) res).toString());
} else if (res instanceof UpdateResult) {
LOG.info("createVlanNetworkInterfaces {}", ((UpdateResult) res).toString());
} else if (res instanceof ErrorResult) {
LOG.error("createVlanNetworkInterfaces error {}", (res));
throw new RuntimeException("createVlanNetworkInterfaces " + ((ErrorResult) res).getError() + " "
+ ((ErrorResult) res).getDetails());
}
}
inetConfigMap = ovsdbGet.getProvisionedWifiInetConfigs(ovsdbClient);
LOG.debug("Provisioned vlan on wan {} and lan {}",
inetConfigMap.get(parentWanInterface.ifName + "_" + Integer.toString(vlanId)),
inetConfigMap.get(parentLanInterface.ifName + "_" + Integer.toString(vlanId)));
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
LOG.error("Error in provisioning Vlan", e);
throw new RuntimeException(e);
}
}
void createVlanNetworkInterfaces(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
Set<Integer> vlans = new HashSet<>();
for (Profile ssidProfile : opensyncApConfig.getSsidProfile()) {
Integer vlanId = ((SsidConfiguration) ssidProfile.getDetails()).getVlanId();
if (vlanId != null && vlanId > 1) {
vlans.add(vlanId);
}
}
for (Integer vlanId : vlans) {
Optional<GreTunnelConfiguration> tunnelConfiguration = ((ApNetworkConfiguration) opensyncApConfig
.getApProfile().getDetails()).getGreTunnelConfigurations().stream()
.filter(new Predicate<GreTunnelConfiguration>() {
@Override
public boolean test(GreTunnelConfiguration t) {
return t.getVlanIdsInGreTunnel().contains(vlanId);
}
}).findFirst();
if (tunnelConfiguration.isPresent()) {
createVlanInterfaceInGreTunnel(ovsdbClient, vlanId, tunnelConfiguration.get().getGreTunnelName());
} else {
createVlanNetworkInterfaces(ovsdbClient, vlanId);
}
}
}
void removeAllInetConfigs(OvsdbClient ovsdbClient) {
try {
Collection<WifiInetConfigInfo> provisionedWifiInetConfigs = ovsdbGet
.getProvisionedWifiInetConfigs(ovsdbClient).values();
List<Operation> operations = new ArrayList<>();
List<Condition> conditions = new ArrayList<>();
for (WifiInetConfigInfo wifiInetConfigInfo : provisionedWifiInetConfigs) {
if (wifiInetConfigInfo.vlanId > 1 || wifiInetConfigInfo.ifType.equals("vif")
|| wifiInetConfigInfo.ifName.startsWith("gre") || wifiInetConfigInfo.ifType.equals("gre")) {
conditions = new ArrayList<>();
conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(wifiInetConfigInfo.ifName)));
operations.add(new Delete(wifiInetConfigDbTable, conditions));
}
}
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
LOG.info("Removed all existing vif, vlan, and gre interface configs from {}:", wifiInetConfigDbTable);
for (OperationResult res : result) {
LOG.info("Op Result {}", res);
}
provisionedWifiInetConfigs = ovsdbGet.getProvisionedWifiInetConfigs(ovsdbClient).values();
for (WifiInetConfigInfo inetConfigInfo : provisionedWifiInetConfigs) {
if (inetConfigInfo.ifType.equals("vif") || inetConfigInfo.ifType.equals("gre")) {
throw new RuntimeException(
"Failed to remove all vif and gre interface configurations from Wifi_Inet_Config dbTable, still has "
+ provisionedWifiInetConfigs.stream().filter(new Predicate<WifiInetConfigInfo>() {
@Override
public boolean test(WifiInetConfigInfo t) {
if ((t.ifType.equals("vif")) || (t.ifType.equals("gre"))) {
return true;
}
return false;
}
}).collect(Collectors.toList()));
}
}
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
LOG.error("Error in removeAllInetConfigs", e);
throw new RuntimeException(e);
}
}
}

View File

@@ -1,420 +0,0 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.springframework.stereotype.Component;
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
import com.telecominfraproject.wlan.opensync.util.OvsdbToWlanCloudTypeMappingUtility;
import com.vmware.ovsdb.exception.OvsdbClientException;
import com.vmware.ovsdb.protocol.operation.Operation;
import com.vmware.ovsdb.protocol.operation.Select;
import com.vmware.ovsdb.protocol.operation.Update;
import com.vmware.ovsdb.protocol.operation.notation.Atom;
import com.vmware.ovsdb.protocol.operation.notation.Condition;
import com.vmware.ovsdb.protocol.operation.notation.Function;
import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.protocol.operation.notation.Value;
import com.vmware.ovsdb.protocol.operation.result.ErrorResult;
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.protocol.operation.result.SelectResult;
import com.vmware.ovsdb.protocol.schema.DatabaseSchema;
import com.vmware.ovsdb.service.OvsdbClient;
@Component
public class OvsdbNode extends OvsdbDaoBase {
String changeRedirectorAddress(OvsdbClient ovsdbClient, String apId, String newRedirectorAddress) {
try {
List<Operation> operations = new ArrayList<>();
Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("redirector_addr", new Atom<>(newRedirectorAddress));
Row row = new Row(updateColumns);
operations.add(new Update(awlanNodeDbTable, row));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (LOG.isDebugEnabled()) {
LOG.debug("Updated {} redirector_addr = {}", awlanNodeDbTable, newRedirectorAddress);
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
}
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
throw new RuntimeException(e);
}
return newRedirectorAddress;
}
void fillInLanIpAddressAndMac(OvsdbClient ovsdbClient, ConnectNodeInfo connectNodeInfo, String ifType) {
try {
List<Operation> operations = new ArrayList<>();
List<Condition> conditions = new ArrayList<>();
List<String> columns = new ArrayList<>();
// populate macAddress, ipV4Address from Wifi_Inet_State
columns.add("inet_addr");
columns.add("hwaddr");
columns.add("if_type");
columns.add("if_name");
conditions.add(new Condition("if_type", Function.EQUALS, new Atom<>(ifType)));
conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(defaultLanInterfaceName)));
operations.add(new Select(wifiInetStateDbTable, conditions, columns));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (LOG.isDebugEnabled()) {
LOG.debug("Select from {}:", wifiInetStateDbTable);
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
}
Row row = null;
if ((result != null) && (result.length > 0) && (result[0] instanceof SelectResult) && !((SelectResult) result[0]).getRows().isEmpty()) {
row = ((SelectResult) result[0]).getRows().iterator().next();
connectNodeInfo.lanIpV4Address = getSingleValueFromSet(row, "inet_addr");
connectNodeInfo.lanIfName = row.getStringColumn("if_name");
connectNodeInfo.lanIfType = getSingleValueFromSet(row, "if_type");
connectNodeInfo.lanMacAddress = getSingleValueFromSet(row, "hwaddr");
} else if ((result != null) && (result.length > 0) && (result[0] instanceof ErrorResult)) {
LOG.warn("Error reading from {} table: {}", wifiInetStateDbTable, result[0]);
}
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
throw new RuntimeException(e);
}
}
void fillInWanIpAddressAndMac(OvsdbClient ovsdbClient, ConnectNodeInfo connectNodeInfo, String ifType, String ifName) {
try {
List<Operation> operations = new ArrayList<>();
List<Condition> conditions = new ArrayList<>();
List<String> columns = new ArrayList<>();
// populate macAddress, ipV4Address from Wifi_Inet_State
columns.add("inet_addr");
columns.add("hwaddr");
columns.add("if_name");
columns.add("if_type");
conditions.add(new Condition("if_type", Function.EQUALS, new Atom<>(ifType)));
conditions.add(new Condition("if_name", Function.EQUALS, new Atom<>(ifName)));
operations.add(new Select(wifiInetStateDbTable, conditions, columns));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (LOG.isDebugEnabled()) {
LOG.debug("Select from {}:", wifiInetStateDbTable);
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
}
Row row = null;
if ((result != null) && (result.length > 0) && (result[0] instanceof SelectResult) && !((SelectResult) result[0]).getRows().isEmpty()) {
row = ((SelectResult) result[0]).getRows().iterator().next();
connectNodeInfo.ipV4Address = getSingleValueFromSet(row, "inet_addr");
connectNodeInfo.ifName = row.getStringColumn("if_name");
connectNodeInfo.ifType = getSingleValueFromSet(row, "if_type");
connectNodeInfo.macAddress = getSingleValueFromSet(row, "hwaddr");
}
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
throw new RuntimeException(e);
}
}
ConnectNodeInfo getConnectNodeInfo(OvsdbClient ovsdbClient) {
ConnectNodeInfo ret = new ConnectNodeInfo();
try {
List<Operation> operations = new ArrayList<>();
List<Condition> conditions = new ArrayList<>();
List<String> columns = new ArrayList<>();
columns.add("mqtt_settings");
columns.add("redirector_addr");
columns.add("manager_addr");
columns.add("sku_number");
columns.add("serial_number");
columns.add("model");
columns.add("firmware_version");
columns.add("platform_version");
columns.add("revision");
columns.add("version_matrix");
columns.add("id");
DatabaseSchema dbSchema = ovsdbClient.getSchema(ovsdbName).get();
Set<String> keys = dbSchema.getTables().get(awlanNodeDbTable).getColumns().keySet();
if (keys.containsAll(Set.of("reference_design", "model_description", "manufacturer_url", "manufacturer_name", "manufacturer_date",
"certification_region"))) {
columns.addAll(Set.of("reference_design", "model_description", "manufacturer_url", "manufacturer_name", "manufacturer_date",
"certification_region"));
}
if (keys.contains("qr_code")) {
columns.add("qr_code");
}
operations.add(new Select(awlanNodeDbTable, conditions, columns));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (LOG.isDebugEnabled()) {
LOG.debug("Select from {}:", awlanNodeDbTable);
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
}
Row row = null;
if ((result != null) && (result.length > 0) && (result[0] instanceof SelectResult) && !((SelectResult) result[0]).getRows().isEmpty()) {
row = ((SelectResult) result[0]).getRows().iterator().next();
}
ret.mqttSettings = row != null ? row.getMapColumn("mqtt_settings") : null;
ret.versionMatrix = row != null ? row.getMapColumn("version_matrix") : null;
ret.redirectorAddr = row != null ? row.getStringColumn("redirector_addr") : null;
ret.managerAddr = row != null ? row.getStringColumn("manager_addr") : null;
ret.platformVersion = row != null ? row.getStringColumn("platform_version") : null;
ret.firmwareVersion = row != null ? row.getStringColumn("firmware_version") : null;
ret.revision = row != null ? row.getStringColumn("revision") : null;
ret.skuNumber = getSingleValueFromSet(row, "sku_number");
ret.serialNumber = getSingleValueFromSet(row, "serial_number");
ret.model = getSingleValueFromSet(row, "model");
if (keys.containsAll(Set.of("reference_design", "model_description", "manufacturer_url", "manufacturer_name", "manufacturer_date",
"certification_region"))) {
ret.referenceDesign = row.getStringColumn("reference_design");
ret.modelDescription = row.getStringColumn("model_description");
ret.manufacturerUrl = row.getStringColumn("manufacturer_url");
ret.manufacturerName = row.getStringColumn("manufacturer_name");
ret.manufacturerDate = row.getStringColumn("manufacturer_date");
ret.certificationRegion = row.getStringColumn("certification_region");
}
if (keys.contains("qr_code")) {
ret.qrCode = row.getMapColumn("qr_code");
}
// now populate macAddress, ipV4Address from Wifi_Inet_State
// first look them up for if_name = br-wan
fillInWanIpAddressAndMac(ovsdbClient, ret, defaultWanInterfaceType, defaultWanInterfaceName);
if ((ret.ipV4Address == null) || (ret.macAddress == null)) {
// when not found - look them up for if_name = br-lan
fillInWanIpAddressAndMac(ovsdbClient, ret, defaultLanInterfaceType, defaultLanInterfaceName);
if (ret.ipV4Address == null) {
throw new RuntimeException("Could not get inet address for Lan and Wan network interfaces. Node is not ready to connect.");
}
}
fillInLanIpAddressAndMac(ovsdbClient, ret, defaultLanInterfaceType);
fillInRadioInterfaceNamesAndCountry(ovsdbClient, ret);
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
throw new RuntimeException(e);
}
LOG.debug("ConnectNodeInfo created {}", ret);
return ret;
}
void performRedirect(OvsdbClient ovsdbClient, String clientCn) {
List<Operation> operations = new ArrayList<>();
List<Condition> conditions = new ArrayList<>();
List<String> columns = new ArrayList<>();
columns.add("manager_addr");
columns.add("sku_number");
columns.add("serial_number");
columns.add("model");
columns.add("firmware_version");
try {
LOG.debug("Starting Redirect");
operations.add(new Select(awlanNodeDbTable, conditions, columns));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
LOG.debug("Select from AWLAN_Node:");
String skuNumber = null;
String serialNumber = null;
String model = null;
String firmwareVersion = null;
Row row = null;
if ((result != null) && (result.length > 0) && !((SelectResult) result[0]).getRows().isEmpty()) {
row = ((SelectResult) result[0]).getRows().iterator().next();
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
}
firmwareVersion = row != null ? row.getStringColumn("firmware_version") : null;
skuNumber = getSingleValueFromSet(row, "sku_number");
serialNumber = getSingleValueFromSet(row, "serial_number");
model = getSingleValueFromSet(row, "model");
LOG.info("Redirecting AP Node: clientCn {} serialNumber {} model {} firmwareVersion {} skuNumber {}", clientCn, serialNumber, model,
firmwareVersion, skuNumber);
// Update table AWLAN_Node - set manager_addr
operations.clear();
Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("manager_addr", new Atom<>("ssl:" + managerIpAddr + ":" + ovsdbExternalPort));
row = new Row(updateColumns);
operations.add(new Update(awlanNodeDbTable, row));
fResult = ovsdbClient.transact(ovsdbName, operations);
result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
LOG.debug("Updated AWLAN_Node:");
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
LOG.debug("Redirect Done");
} catch (ExecutionException | InterruptedException | OvsdbClientException | TimeoutException e) {
LOG.error("Error when redirecting AP Node", e);
throw new RuntimeException(e);
}
}
void rebootOrResetAp(OvsdbClient ovsdbClient, String desiredApAction) {
try {
LOG.debug("rebootOrResetAp on AP perform {}, setting timer for {} seconds.", desiredApAction, rebootOrResetTimerSeconds);
List<Operation> operations = new ArrayList<>();
Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("firmware_url", new Atom<>(desiredApAction));
updateColumns.put("upgrade_timer", new Atom<>(rebootOrResetTimerSeconds));
Row row = new Row(updateColumns);
operations.add(new Update(awlanNodeDbTable, row));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.join();
for (OperationResult r : result) {
LOG.debug("Op Result {}", r);
}
} catch (OvsdbClientException e) {
LOG.error("Could not trigger {}", desiredApAction, e);
throw new RuntimeException(e);
}
}
ConnectNodeInfo updateConnectNodeInfoOnConnect(OvsdbClient ovsdbClient, String clientCn, ConnectNodeInfo incomingConnectNodeInfo,
boolean preventCnAlteration) {
ConnectNodeInfo ret = incomingConnectNodeInfo.clone();
try {
List<Operation> operations = new ArrayList<>();
Map<String, Value> updateColumns = new HashMap<>();
// set device_mode = cloud - plume's APs do not use it
// updateColumns.put("device_mode", new Atom<String>("cloud") );
// update sku_number if it was empty
if (( ret.skuNumber == null) || ret.skuNumber.isEmpty() || ret.skuNumber.equals("unknown") || ret.skuNumber.startsWith("tip.wlan_")) {
if ((ret.certificationRegion != null && !ret.certificationRegion.equals("unknown") ) && (ret.model != null && !ret.model.equals("unknown"))) {
if (ret.model.endsWith("-" + ret.certificationRegion)) {
updateColumns.put("sku_number", new Atom<>("TIP-" + ret.model));
ret.skuNumber = "TIP-" + ret.model;
} else {
updateColumns.put("sku_number", new Atom<>("TIP-" + ret.model + "-" + ret.certificationRegion));
ret.skuNumber = "TIP-" + ret.model + "-" + ret.certificationRegion;
}
} else if ((ret.country != null ) && (ret.model != null && !ret.model.equals("unknown"))) {
if (ret.model.endsWith("-" + ret.country)) {
updateColumns.put("sku_number", new Atom<>("TIP-" + ret.model));
ret.skuNumber = "TIP-" + ret.model;
} else {
updateColumns.put("sku_number", new Atom<>("TIP-" + ret.model + "-" + ret.country));
ret.skuNumber = "TIP-" + ret.model + "-" + ret.country;
}
} else if (ret.model != null && !ret.model.equals("unknown")){
updateColumns.put("sku_number", new Atom<>("TIP-" + ret.model));
ret.skuNumber = "TIP-" + ret.model;
}
}
// Configure the MQTT connection
// ovsh u AWLAN_Node
// mqtt_settings:ins:'["map",[["broker","testportal.123wlan.com"],["topics","/ap/dev-ap-0300/opensync"],["qos","0"],["port","1883"],["remote_log","1"]]]'
Map<String, String> newMqttSettings = new HashMap<>();
newMqttSettings.put("broker", mqttBrokerAddress);
String mqttClientName = OvsdbToWlanCloudTypeMappingUtility.getAlteredClientCnIfRequired(clientCn, incomingConnectNodeInfo, preventCnAlteration);
newMqttSettings.put("topics", "/ap/" + mqttClientName + "/opensync");
newMqttSettings.put("port", "" + mqttBrokerExternalPort);
newMqttSettings.put("compress", "zlib");
newMqttSettings.put("qos", "0");
newMqttSettings.put("remote_log", "1");
if ((ret.mqttSettings == null) || !ret.mqttSettings.equals(newMqttSettings)) {
@SuppressWarnings("unchecked")
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> mgttSettings =
com.vmware.ovsdb.protocol.operation.notation.Map.of(newMqttSettings);
ret.mqttSettings = newMqttSettings;
updateColumns.put("mqtt_settings", mgttSettings);
}
if (!updateColumns.isEmpty()) {
Row row = new Row(updateColumns);
operations.add(new Update(awlanNodeDbTable, row));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
if (LOG.isDebugEnabled()) {
LOG.debug("Updated {}:", awlanNodeDbTable);
for (OperationResult res : result) {
LOG.debug("Op Result {}", res);
}
}
}
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
throw new RuntimeException(e);
}
return ret;
}
}

Some files were not shown because too many files have changed in this diff Show More